1、微机原理及接口,第二章 微型计算机指令系统第三节 8086指令系统,数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 控制转移指令 处理器控制指令,第二章 微型计算机指令系统 第三节 8086指令系统,(二)目标地址传送指令,1. LEA 偏移地址传送指令,例:,LEA AX , BPDI LEA BX , BUFFER LEA DX , BETABXSI LEA CX , SI+100AH,MOV BX , OFFSET BUFFER,第二章 微型计算机指令系统 第三节 8086指令系统,(二)目标地址传送指令,1. LEA 偏移地址传送指令,指令格式,LEA reg16 , me
2、m16,LEA BX,DI指令执行如图所示,数据段,4000H:0000H,4000H:0100H,EA=0100H,55H,66H,第二章 微型计算机指令系统 第三节 8086指令系统,(二)目标地址传送指令,1. LEA 偏移地址传送指令,LEA、MOV的区别,已知:DS: 2000H,SI: 0030H,12,34,10 3A,第二章 微型计算机指令系统 第三节 8086指令系统,(二)目标地址传送指令,2. LDS DS段指针装入指令,操作,REG16 (mem)+1:(mem) DS(mem)+3:(mem)+2),例:,LDS SI , 0010H,已知: DS: C000H,SI
3、:,0180H,DS:,2000H,第二章 微型计算机指令系统 第三节 8086指令系统,(二)目标地址传送指令,2. LDS DS段指针装入指令,LDS reg16 , mem32,数据段,4000H:0000H,4000H:0100H,双字,LDS BX,DI指令执行如图所示 :,REG16 (mem)+1:(mem) DS(mem)+3:(mem)+2),第二章 微型计算机指令系统 第三节 8086指令系统,(二)目标地址传送指令,3. LES ES段指针装入指令,操作,REG16 (mem)+1:(mem) ES(mem)+3:(mem)+2),例:,LES DI , BX,已知: D
4、S: B000H; BX:080AH,DI:,05A2H,ES:,4000H,第二章 微型计算机指令系统 第三节 8086指令系统,(三)标志传送指令,1. LAHF 将标志位装入AH指令,功能:将标志寄存器的低8位送入AH寄存器。,第二章 微型计算机指令系统 第三节 8086指令系统,(三)标志传送指令,2. SAHF 将AH存入标志位指令,功能:将AH寄存器送入标志寄存器的低8位。,第二章 微型计算机指令系统 第三节 8086指令系统,(三)标志传送指令,3. PUSHF 标志位入栈指令,4. POPF 标志位出栈指令,数据传送指令小结,一、数据传送指令,(一)通用传送指令,1. MOV
5、(Movement) 一般传送指令,2. PUSH 入栈指令,3. POP 出栈指令,XCHG(Exchange) 交换指令,5. XLAT(Translate) 字节查表指令,一、数据传送指令,二、算术运算指令,加法运算指令,减法运算指令,乘法运算指令,除法运算指令,转换指令,(一)加法运算指令,ADD、ADC、INC、AAA、DAA,1. ADD 不带进位加法指令,指令格式,ADD dest , src,; dest dest+src,寄存器 存储器,寄存器 存储器 立即数,第二章 微型计算机指令系统 第三节 8086指令系统,第三节 8086/8088指令系统,二、算术运算指令,(一)加
6、法运算指令,1. ADD 不带进位加法指令,例:,ADD CL , 10 ADD DX , DI ADD AX , DATASI ADD DATABX , AL ADD ALPHADI , 30H,MOV AL , 7EH MOV BL , 5BH ADD AL , BL,AL= ?,注:结果影响状态标志位,CF = ? PF = ? AF = ? ZF = ? SF = ? OF = ?,0D9H,0,0,1,0,1,1,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1. ADD 不带进位加法指令,2. ADC 带进位加法指令,指令格式,ADC dest , sr
7、c,; dest dest+src+CF,寄存器 存储器,寄存器 存储器 立即数,例:,ADC CX , 300 ADC AL , BL ADC DX , COUNTSI ADC BLOCKDI , BX ADC DATABX , 6,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,2. ADC 带进位加法指令,注:结果影响状态标志位,已知:CS=1000H , DS=2000H , SS =3000H , ES=4000H。 BX=1200H , 状态标志位均为1 执行程序 ADCBX+106BH,5678H,?H,求 :存储器物理地址 运算后结果 标志位内容,22
8、26BH,2226BH,89BDH,CF = ? PF = ? AF = ? ZF = ? SF = ? OF = ?,0,1,0,0,1,1,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1. ADD,3. INC 加1指令,2. ADC,注:结果影响除CF外状态标志位,例:,INC DL INC SI INC BYTE PTRBXSI INC WORD PTRDI,寄存器 存储器,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1. ADD,3. INC,2. ADC,4. DAA 十进制、压缩BCD码调整指令,注:结果影响状态标志位A
9、F、CF、SF、ZF、 PF、OF,压缩BCD码:一个字节存放两位BCD码,即低四位存放1位 BCD码,高四位存放1位。,例1:48H+39H,+,0000 0110B,+,AF=1,例2:47H+35H,+,0000 0110B,+,非法码制,调整,调整,BCD码的加减运算会出现非法码制和辅助进位,需要进行调整。,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1. ADD,3. INC,2. ADC,4. DAA 十进制、压缩BCD码调整指令,压缩BCD码:一个字节存放两位BCD码,即低四位存放1位 BCD码,高四位存放1位。,注:结果影响状态标志位AF、CF、S
10、F、ZF、 PF、OF,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,4. DAA 十进制、压缩BCD码调整指令,MOV AL , 07H MOV BL , 08H MOV AH , 00H ADD AL , BL DAA,;AL、BL各存放1个BCD码,;(AL)=15H,(AH)=00H, (AF)=1, (CF)=0,;(AL)=0FH, (CF)=(AF)=0,1. ADD,3. INC,2. ADC,计算两个十进制数之和 7+8=?,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1. ADD,3. INC 加1指令,2. ADC
11、,5. AAA 加法的ASCII码、非压缩BCD码调整指令,注:结果只影响标志位CF、AF。,4. DAA,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,5. AAA 加法的ASCII码、非压缩BCD码调整指令,(1)非压缩BCD码调整,非压缩BCD码:一个字节存放一位BCD码,即低四位存 放BCD码,高四位为0。,MOV AL , 07H MOV BL , 08H MOV AH , 00H ADD AL , BL AAA,;AL、BL各存放1个非压缩BCD码,;(AL)=05H,(AH)=01H, (CF)=(AF)=1,;(AL)=0FH, (CF)=(AF)=
12、0,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,5. AAA 加法的ASCII码、非压缩BCD码调整,(1)非压缩BCD码调整,(2)ASCII码调整,计算 4609+3875=?,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,SUB、SBB、DEC、NEG、CMP、AAS、DAS,1. SUB 不带借位减法指令,寄存器 存储器,寄存器 存储器 立即数,例:,SUB AL , 37H SUB BX , DX SUB CX , DATABP SUB ARRAYSI , AX SUB BETABXDI , 512,第三节
13、 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1. SUB 不带借位减法指令,2. SBB 带借位减法指令,寄存器 存储器,寄存器 存储器 立即数,例:,SBB BX , 1000 SBB CX , DX SBB AL , DATASI SBB DISPBP , BL SBB SI+6 , 96,第三节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,2. SBB 带借位减法指令,注:结果影响状态标志位,已知:CS=1000H , DS=2000H , SS =3000H , ES=4000H。 BP=4567H , BX=0FEDCH , 状态标志位均
14、为1 执行程序 SBB BP+2011H , BX,?H,求 :存储器物理地址 运算后结果 标志位内容,26578H,26578H,3467H,CF = ? PF = ? AF = ? ZF = ? SF = ? OF = ?,1,0,1,0,0,0,3. DEC 减1指令,注:结果影响除CF外状态标志位,例:,DEC BL DEC CX DEC BYTE PTRBX DEC WORD PTRBPDI,寄存器 存储器,第三节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1. SUB,2. SBB,3. DEC 减1指令,第三节 8086/8088指令系统,二、算术运算指令
15、,(二)减法运算指令,1. SUB,2. SBB,4. NEG 求补指令,寄存器 存储器,例:,NEG BL NEG AX NEG BYTE PTRBPSI NEG WORD PTRDI+20,3. DEC 减1指令,第三节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1. SUB,2. SBB,4. NEG 求补指令,注:结果影响状态标志位,作用:求负数绝对值,NEG AL ;AL=0FFH,AL=0-0FFH=01H,3. DEC 减1指令,第三节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1. SUB,2. SBB,4. NEG 求补指令,5
16、. CMP 比较指令,; d-s,寄存器 存储器,寄存器 存储器 立即数,注:只做减法,不存结果,影响状态标志位。,例:,CMP AL , 0AH CMP CX , DI CMP AX , DISPBP,CMP BX+5 , SI CMP BETBXDI , 100,3. DEC,第三节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1. SUB,2. SBB,5. CMP,6. AAS 减法的ASCII码、非压缩BCD码调整指令,4. NEG,注:结果只影响标志位CF、AF。,MOV AX , 0103H MOV BL , 04H SUB AL , BL AAS,3. D
17、EC,第三节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1. SUB,2. SBB,5. CMP,6. AAS 减法的ASCII码、非压缩BCD码调整指令,4. NEG,例:13 - 4=9,;(AX)=01FFH,(CF)=(AF)=1,;(AX)=0009H,(CF)=(AF)=1,3. DEC,第三节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1. SUB,2. SBB,5. CMP,6. AAS 减法的ASCII码、非压缩BCD码调整指令,4. NEG,7. DAS 减法的十进制、压缩BCD码调整指令,注:结果影响状态标志位AF、CF、S
18、F、ZF、 PF、OF。,3. DEC,第三节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1. SUB,2. SBB,5. CMP,6. AAS 减法的ASCII码、非压缩BCD码调整指令,4. NEG,7. DAS 减法的十进制、压缩BCD码调整指令,例:83 - 38=45,MOV AL , 83H MOV BL , 38H SUB AL , BL DAS,;(AL)=4BH, (AF)=1 (CF)=0,;(AL)=45H, (AF)=1 (CF)=0,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,ADD、ADC、I
19、NC、AAA、DAA,SUB、SBB、DEC、NEG、CMP、AAS、DAS,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,(三)乘法运算指令,MUL、IMUL、AAM,1. MUL 无符号数乘法指令,注:运算结果高位(AH、DX)为0,则OF=CF=0, 否则OF=CF=1。 标志位SF、ZF、AF、PF不确定。,第三节 8086/8088指令系统,二、算术运算指令,(三)乘法运算指令,1. MUL 无符号数乘法指令,寄存器 存储器,例:,MUL AL MUL BX MUL BYTE PTRDI+6 MUL WORD PTR ALPHA,MOV
20、 AL , 14H MOV CL , 05H MUL CL,;14H*05H=20*5=100=64H,;(AX)=0064H,(CF)=(OF)=0,第三节 8086/8088指令系统,二、算术运算指令,(三)乘法运算指令,1. MUL 无符号数乘法指令,2. IMUL 有符号数乘法指令,注:运算结果高位(AH、DX)为有效数字而非符号扩展,则OF=CF=1,否则OF=CF=0。 标志位SF、ZF、AF、PF不确定。,第三节 8086/8088指令系统,二、算术运算指令,(三)乘法运算指令,1. MUL,2. IMUL,3. AAM 乘法的ASCII码、非压缩BCD码调整指令,注:AL(低位
21、)影响标志位SF、ZF和PF,对AF、CF、OF不确定。,MOV AL , 07H MOV BL , 09H MUL BL AAM,;AL=07H*09H=63=3FH,;AH=06H,AL=03H; SF=0, ZF=0, PF=1,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,(三)乘法运算指令,(四)除法运算指令,DIV、IDIV、AAD,1. DIV 无符号数除法指令,注:状态标志位SF、ZF、AF、PF、CF和OF不确定。,第三节 8086/8088指令系统,二、算术运算指令,(四)除法运算指令,1. DIV 无符号数除法指令,寄存器
22、存储器,例:,DIV BL DIV CX DIV BYTE PTR DATA DIV WORD PTR DI+BX,MOV AX ,0F05H MOV DX ,068AH MOV CX ,08E9H DIV CX,;068A0F05H/08E9H=BBE1H073CH,;(AX)=BBE1H,(DX)=073CH,第三节 8086/8088指令系统,二、算术运算指令,(四)除法运算指令,1. DIV 无符号数除法指令,2. IDIV 有符号数除法指令,注:余数符号与被除数符号相同, 状态标志位SF、ZF、AF、PF、CF和OF不确定。,第三节 8086/8088指令系统,二、算术运算指令,(四
23、)除法运算指令,1. DIV,2. IDIV,3. AAD 除法的ASCII码、非压缩BCD码调整指令,注:影响标志位SF、ZF和PF,对AF、CF、OF不确定。,MOV AX , 0703H MOV BL , 02H AAD DIV BL AAM,;AL=07H*0AH+03H=73=49H,;AL=24H, AH=01H,指令顺序 AAD-DIV-AAM,;AH=AL/0AH=03H, AL=AL/0AH06H,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,(三)乘法运算指令,(四)除法运算指令,(五)转换指令,符号位扩展,1. CBW 字节
24、字转换指令,;AL AX,2. CWD 字双字转换指令,;AX DX:AX,第三节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,(三)乘法运算指令,(四)除法运算指令,(五)转换指令,编写程序段 (-2000)(- 421),MOV AX,-2000 MOV BX,-421 IDIV BX,MOV AX,-2000 CWD MOV BX,-421 IDIV BX,小结,数据传送指令:目标地址传送指令标志传送指令,算术运算指令:加法指令、减法指令、乘法指令、除法指令、转换指令,(一)通用传送指令,1. MOV (Movement) 一般传送指令,2. P
25、USH 入栈指令,3. POP 出栈指令,XCHG(Exchange) 交换指令,5. XLAT(Translate) 字节查表指令,课前回顾,(一)通用传送指令,2. PUSH 入栈指令,src:reg, mem, CS, DS, SS, ES,3. POP 出栈指令,dest:reg, mem, DS, SS, ES,课前回顾,(一)通用传送指令,4. XCHG(Exchange) 交换指令,指令格式,XCHG dest,src,;dest src,dest, src:reg, mem,课前回顾,MOV BX , OFFSET squ_table MOV AL , 03,XLAT,课前回顾,(一)通用传送指令,5. XLAT(Translate) 字节查表指令,指令格式,XLAT,; AL (BX+AL),