当前位置:文档之家› 第3章 指令系统和寻址方式

第3章 指令系统和寻址方式

第3章 指令系统和寻址方式
3.1 寻址方式
3.1.1 与数据有关的寻址方式 1、立即寻址方式;2寄存器寻址方式;3、 直接寻址方式;4、寄存器间接寻址方式; 5、寄存器相对寻址方式;6、基址变址寻 址方式;7、相对基址变址寻址方式;8、 比例变址寻址方式;9、基址比例变址寻 址方式;10、相对基址比例变址寻址方式
6 基址变址寻址方式
MOV AX,[BX][DX]或MOV AX,[BX+DX] (DS)=2100,(BX)=0158,(DI)=10A5H
7 相对基址变址寻址方式
MOV AX,MASK[BX][SI]或MOV AX,MASK[BX+SI] 或MOV AX,[MASK+BX+SI]
(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK=0250H
3.3.3 逻辑指令(逻辑运算指令)
1、AND 2、OR 3、NOT 4、XOR 5、TEST 逻辑与 逻辑或 逻辑非 异或 测试
3.3.3 逻辑指令
位测试并修改指令 位扫描指令
2、OUT (output) 长格式: OUT OUT OUT 短格式: OUT OUT OUT 输出
PORT,AL PORT,AX PORT,EAX DX,AL DX,AX DX,EAX

把端口28的内容经过AX传送到存储单元DW中 IN AX,28H MOV DW,AX 把端口03FC的内容传送到EAX寄存器中 MOV DX,03FCH IN EAX,DX
8、XCHG (exchange) 如:XCHG AX,BX 交换
3.3.1数据传送指令(累加器)
1、IN (input) 长格式: IN IN IN 短格式: IN IN IN 输入 AL,PORT AX,PORT EAX,PORT AL,DX AX,DX EAX,DX
3.3.1数据传送指令(累加器)
3.3.2 算术指令(加法指令)
3、INC(increment) 自加1 如:INC CL 若: (CL)=05H 则: (CL)=06H 注:和ADD标志位设置一样,只是不影响 CF。
3.3.2 算术指令(加法指令)
4、XADD(exchange and add)交换并相加 如:XADD BL,DL 若: (BL)=12H,(DL)=02H 则: (BL)=14H,(DL)=12H
3.3.1数据传送指令(标志寄存器)
1、LAHF 标志送AH 2、SAHF AH送标志寄存器 3、PUSHF/PUSHFD 标志进栈 4、POPF/POPFD 标志出栈 操作时只操作标志寄存器(FLAGS)的低 字节
3.3.1数据传送指令(类型转换)
1、CBW 2、CWD/CWSE 3、CDQ 4、BSWAP 字节转换为字 字转换为双字 双字转换为4字 字节交换
例:
如(AL)=0B4H,(BL)=11H,则执行指 令 MUL BL和IMUL BL后的结果。
3.3.2 算术指令(除法指令)
1、DIV 无符号除法指令 (unsigned divide) DIV SRC 字节: (AL)<(AX)/(SRC)的商 (AH)<(AX)/(SRC)的余数 2、IDIV 带符号除法指令 (signed divide)
3.3.2 算术指令(加法指令)
1、ADD(add) 加法 如:ADD DX,0F0F0H 若: (DX)=4625H 则: (DX)=3724 且:ZF=0,SF=0,CF=1,OF=0。
3.3.2 算术指令(加法指令)
2、ADC(add with carry) 带进位加法 如:ADD AX,CX ADC DX,BX 若:(DX)=0002H,(AX)=0F365H (BX)=0005H,(CX)=0E024H 则:1 (AX)=0D389H,SF=1,ZF=0, CF=1,OF=0。 2 (DX)=0008H, SF=0,ZF=0, CF=0,OF=0。
3.3.2 算术指令(十进制调整指令)
AAM 乘法的ASCII调整指令 如:求BCD码运算6×9。 MOV AL,6 MOV BL,9 MUL BL AAM
3.3.2 算术指令(十进制调整指令)
AAD 除法的ASCII调整指令 如:求BCD码运算6×9/3
MOV AL,6 MOV BL,9 MUL BL AAM ADD MOV BL,3 DIV BL AAM
例:
设(AX)=0400H,(BL)=0B4H 求执行: DIV BL IDIV BL (AX)是多少?

计算(V-(X×Y+Z-540))/X,X,Y,Z,V 均为16位带符号数,将最终结果的商存放在 AX中,余数放在DX中。

有一个CPU连接两个设备,端口号分别为 02H和053DH,编写一条程序,让02H端 口的8位数乘以15H,再除以053DH端口 的8位数减3AH的差。结果放在AH和AX中。
3.1.2与转移地址有关的寻址方式
4 段间间接寻址
JMP DWORD PTR[INTERS+BX]
3.3 8086的指令系统
可以分为以下6组: 数据传送指令 逻辑指令 控制转移指令
算术指令 串处理指令 处理机控制指令
3.3.1 数据传送指令(通用数据)
1、MOV 传送 (move) 如: MOV AX,DATA_SEG MOV DS,AX 如: MOV AL,`E` 如:MOV AX,Y[BP][SI]
4、NEG 求补指令 (negate) (1)当操作数为0时,求补运算结果使CF=0, 其他情况均为1。 (2)当对-128,-32768等求补时,OF=1, 其他情况均为0。
3.3.2 算术指令(减法指令)
5、CMP 比较指令 (compare) 6、CMPXCHG 比较并交换 ( compare and exchange) 7、 CMPXCHG8B 比较并交换8字节指令 ( compare and exchange 8 byte)
3.3.1 数据传送指令(通用数据)
6、PUSHA/PUSHAD 所有寄存器进栈 (push all registers) 顺序:AX,CX,DX,BX,
EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI
7、POPA/POPAD (pop all registers)
所有寄存器出栈
3.3.1 数据传送指令(通用数据)
例:
设X、Y、Z为双精度数,他们分别存放在数 据段偏移地址为X,X+2;Y,Y+2;Z, Z+2的存储单元中,高位高地址。在8086 中实现 X+Y+24-Z,并存放在W,W+2单 元中。
3.3.2 算术指令(乘法指令)
1、MUL 无符号乘法指令 (unsigned multiple) MUL SRC 字节: (AX)<(AL)×(SRC) 字: ( DX,AX)<(AX)×(SRC) 双字: ( EDX,EAX)<(EAX)×(SRC) 2、IMUL 带符号乘法指令 (signed multiple)
比例寻址方式
8 比例变址寻址方式
(直接变址寻址方式)
9 基址比例变址寻址方式
(基址变址寻址方式)
10 相对基址比例变址寻址方式
(相对基址变址寻址方式)
例题
设有关寄存器及存储单元的内容如下:
DS=1000H,BX=0100H,SI=0002H [10100H]=12H,[10101H]=34H,[10102]=56H, [10103H]=78H,[11200H]=A1H,[11201]=B2H [11202H]=C3H,[11203H]=D4H 1、MOV CX,1200H CX=? 2、 MOV CX,BX CX=? 3、 MOV CX,[1200H] CX=? 4、 MOV CX,[BX] CX=? 5、 MOV CX,1100H[BX] CX=? 6、 MOV CX,[BI][SI] CX=? 7、 MOV CX,1100H[BI][SI] CX=?
2、SBB 带借位减法指令 (subtract with borrow) SBB DST,SRC 如: SUB AL,BL SBB AH,BH =SUB AX,BX
3.3.2 算术指令(减法指令)
3、DEC 减1指令 (decrement) 如: MOV AX,12H DEC AX
3.3.2 算术指令(减法指令)
3.3.2 算术指令(减法指令)
1、SUB 减法 (subtract) SUB DST,SRC 如:SUB [SI+14],0136 若:(DS)=3000H,(SI)=0040H, (30054H)=4336H 则:(30054)=4200,SF=0,ZF=0, CF=0,OF=0。
3.3.2 算术指令(减法指令)
3.3.2 算术指令(十进制调整指令)
1、 DAA 加法的十进制调整指令 如:求BCD码运算28+56,结果送AL。 MOV AL,28H ADD AL,56H DAA
3.3.2 算术指令(十进制调整指令)
DAS 减法的十进制调整指令 如:求BCD码运算56-28,结果送入AL。 MOV AL,56H SUB AL,28H DAS
3 直接寻址方式
MOV AX,[2000H] 如(DS)=3000H
4 寄存器间接寻址方式
MOV AX,[BX] (DS)=2000H,(BX)=1000H
5 寄存器相对寻址方式
(直接变址寻址方式) MOV AX,COUNT[SI]或MOV AX,[COUNT+SI] (DS)=3000H,(SI)=2000H,COUNT=3000H
3.3.2 算术指令(十进制调整指令)
AAA 加法的ASCII调整指令 如:求BCD码运算8+6。 MOV AH,0 MOV AL,8H ADD AL,6H AAA
相关主题