收藏 分享(赏)

8086指令总结.doc

上传人:HR专家 文档编号:6066849 上传时间:2019-03-26 格式:DOC 页数:10 大小:45.50KB
下载 相关 举报
8086指令总结.doc_第1页
第1页 / 共10页
8086指令总结.doc_第2页
第2页 / 共10页
8086指令总结.doc_第3页
第3页 / 共10页
8086指令总结.doc_第4页
第4页 / 共10页
8086指令总结.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、8086 指令系统总结学习微处理器及其程序设计,必须掌握微处理器的指令系统。本章以 8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。本章的重点难点内容是: 8086 的指令格式及寻址方式, 8086 的常用指令和 8086 指令前缀的使用。 下面我们分别进行总结:一8086 寻址方式(1)操作数是数字,指令中立即写出数字-立即数寻址 MOV AX,1234H 解释此

2、句意义(2)操作数是寄存器内容,指令中写出寄存器的符号-寄存器寻址MOV AX,BX(3)操作数是存储单元内容,用括号括出存储单元有效地址-直接寻址MOV AX,1234HMOV AX,ES:1234H(4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-间接寻址MOV AH,BXMOV AX,ES:SIMOV AL,BX+SI+5=5BX+SI=5BXSI 二8086 指令系统1.数据传送指令(一)通用传送指令(1)MOV 指令指令格式:MOV 目,源功能:将源操作数传送给目标操作数。(2)堆栈操作指令进栈指令: PUSH格式: PUSH 源功能:将

3、源操作数压入堆栈。例:用堆栈指令完成上例的功能。MOV AX,3000HMOV DS,AX ;段寄存器填充MOV SI,0100H ;基本指令执MOV DI,2000H ;行前的初值MOV CX,50NT: PUSH SI ;程序从这POP DI ;开始设计 INC SIINC SIINC DIINC DILOOP NTMOV AH,4CHINT 21H(3)交换指令 XCHG格式:XCHG 目,源功能:源和目标中的内容交换。(二)累加器专用传送指令(1)输入输出指令 IN,OUT输入指令格式: #1 IN AX|AL,8 位端口号#2 IN AX|AL,DX功能:从外设输入数据到 AX|AL

4、 寄存器。输出指令格式:#1 OUT 8 位端口号, AX|AL#2 OUT DX,AX|AL功能:将 AX|AL 中的数据输出到外设。该类指令是硬件功能与软件作用的结合。(2)查表转换指令 XLAT指令格式:XLAT功能:将内存单元BX+AL中的内容,置入 AL 寄存器中。(三)地址传送指令地址传送指令有两类:仅传送偏移地址指令及段地址与偏移地址同时传送指令。(1)仅传送偏移地址指令:LEA指令格式:LEA 目,源功能:将源操作数的偏移地址传送给目标寄存器。如:LEA BX,2000H执行后 BX=2000H。又如: LEA SI,BX+100H若执行前 BX=1000H,执行后 SI=11

5、00H。(2)段地址与偏移地址同时传送指令:LDS、LES指令格式:LDS 目,源LES 目,源功能:将源存储器操作数连续 4 个字节的内容传送给目标寄存器 DS 寄存器(LDS 指令)或 ES 寄存器(LES 指令)。如:LDS BX,2000H执行前2000H=1234H;2002H=5678H。执行后 BX=1234H;DS=5678H又如:LDS SI,BX+100H若执行前 BX=1000H,而1100H=4321H;1102=8765H。执行后 SI=4321H;DS=8765H。(四)标志传送指令(1)LAHF 指令指令格式:LAHF指令功能:将标致寄存器的低八位中以定义位,传送

6、给 AH 寄存器中对应的位。(2)SAHF 指令指令格式:SAHF指令功能:将 AH 寄存器中对应的位,传送给标致寄存器的低八位中以定义位。(3)PUSHF 指令指令格式:PUSHF指令功能:将标致寄存器内容进栈。(4)POPF 指令指令格式:POPF指令功能:从栈顶弹出一个字送入标致寄存器。2. 算术运算(一)加法指令加法指令有三类:不带进位加法指令、带进位加法指令和增一指令。它们均适合与无符号数和有符号数的加法。对于有符号数,其结果用补码表示。(1)不带进位的加法指令 ADD指令格式:ADD 目,源指令功能:源+ 目,其结果放到目标,并影响标志寄存器。如:ADD AL,50H ;(AL)+

7、50HAL(2)带进位的加法指令 ADC指令格式:ADC 目,源指令功能:源+ 目+CF,其结果放到目标,并影响标志寄存器。利用 ADC 指令可以实现两个多字节数的相加运算。如:1244AFDCH+9A12458FH。如:ADC AL,50H ;(AL)+50H+CFAL(3)增一指令 INC指令格式:INC 目指令功能:目+1 ,其结果放到目标,并影响标志寄存器。(二)减法指令减法指令包含有五类:不考虑借位减法指令、考虑借位减法指令、减一指令、求补指令和比较指令。它们均适合与无符号数和有符号数的减法。对于有符号数,其结果用补码表示。(1)不考虑借位减法指令 SUB指令格式:SUB 目,源指令

8、功能:目-源,其结果放到目标,并影响标志寄存器。(2)考虑借位减法指令 SBB指令格式:SBB 目,源指令功能:目-源-CF,其结果放到目标,并影响标志寄存器。利用 SBB 指令可以实现两个多字节数的相减运算。如:1244AFDCH-9A12458FH。(3)减一指令 DEC指令格式:DEC 目指令功能:目-1 ,其结果放到目标,并影响标志寄存器。(4)求补指令 NEG指令格式:NEG 目指令功能:0- 目,其结果放到目标,并影响标志寄存器。(5)比较指令 CMP指令格式:CMP 目,源指令功能:目-源,其结果不放到目标,但设置标志寄存器。用法:#1 对于两个无符号数的比较,根据 CF 标志判

9、断两数的大小。#2 对于两个有符号数比较大小,根据 SF 和 OF 标志位来判断两数的大小:OF 和 SF 相同(=0 或=1)则目 源;如果 OF 和 SF 相异,则源目。(三)乘法指令乘法指令有两类:无符号数乘法指令和有符号数乘法指令。(1)无符号乘法指令 MUL指令格式:MUL 源指令功能:(AL|AX)*源,其结果放到 AX|DX:AX(2)有符号乘法指令 IMUL指令格式:IMUL 源指令功能:(AL|AX)*源,其结果放到 AX|DX:AX(四)除法指令8086CPU 的除法指令有两类:无符号数除法指令和有符号数除法指令。它们均是不等长除法指令。即:被除数长度必须是除数长度的两倍。

10、所以,在进行除法运算前应根据除数长度将被除数变成它的两倍长度。 (1)无符号数除法指令 DIV指令格式:DIV 源指令功能:AX|DX:AX/ 源,其结果:商放在 AL|AX,余数放在 AH|DX 之中。(2)有符号数除法指令 IDIV指令格式:IDIV 源指令功能:AX|DX:AX/ 源,其结果:商放在 AL|AX,余数放在 AH|DX 之中。(3)将字节扩展成字的指令 CBW指令格式:CBW指令功能:将 AL 中有符号数的符号位扩展到 AH 之中。不影响标志位。用法:一般在两字节有符号数除法前,利用该指令,将符号位进行扩展,以使两数变成不等长数。(4)将字扩展成双字的指令 CWD指令格式:

11、CWD指令功能:将 AH 中有符号数的符号位扩展到 DX 之中。不影响标志位。用法:一般在执行两字长有符号数除法前,利用该指令,将符号位进行扩展,以使两数变成不等长数。(五)BCD 码运算指令BCD 码有两类:组合(压缩)型 BCD 码和未组合(非压缩)型 BCD 码。BCD 码的运算相应也有两种情况。(1)未组合 BCD 码加法十进制调整指令 AAA指令格式:AAA指令功能:对 AL 中的数进行校正:在 AX 中产生未组合十进制数和。如: MOV AL,7ADD AL,5AAA执行前两条后,AL=0CH,经 AAA 调整后,AX=0102H,CF=OF=1。(2)组合 BCD 码加法十进制调

12、整指令 DAA指令格式:DAA指令功能:对 AL 中的数进行校正:在 AL 中产生组合十进制数和。如: MOV AL,56H(BCD )ADD AL,47H (BCD)DAA执行前两条后,AL=9DH,经 DAA 调整后,AL=03H,CF=1。例:多字节组合 BCD 码十进制相加设两数长度均为 8 个字节,分别存放在 1000H 和 2000H 开始的 8 个单元中,要求将两数相加后,结果放在 2000H 开始的内存区域。MOV SI,1000HMOV DI,2000HMOV CX, 8CLCL1: MOV AL,SIADC AL,DIDAAMOV DI, ALINC SIINC DILOO

13、P L1MOV AH,4CHINT 21H(3)未组合 BCD 码减法十进制调整指令 AAS指令格式:AAS指令功能:对 AL 中的数进行校正:在 AX 中产生未组合十进制数差。如: MOV AL,“7“ ;“7“为 7 的 ASCII 码SUB AL,5AAS执行前两条后,AL=32H,经 AAS 调整后,AL=02H。(4)组合 BCD 码加减十进制调整指令 DAS指令格式:DAS指令功能:对 AL 中的数进行校正:在 AL 中产生组合十进制数差。如: MOV AL,56H(BCD )SUB AL,47H(BCD)DAS执行前两条后,AL=0FH,经 DAS 调整后,AL=09H,CF=1

14、。(5)未组合 BCD 码的乘法十进制调整指令 AAM指令格式:AAM指令功能:对 AL 中的数进行校正:在 AX 中产生未组合十进制数积。如: MOV AL,05H(BCD )MOV BL,06H(BCD)MUL BLAAM执行前三条后,AX=001EH,经 AAM 调整后, AX=0300H (BCD)。(6)未组合 BCD 码的除法十进制调整指令 AAD指令格式:AAD指令功能:对 AX 中的数进行校正:在 AX 中产生未组合十进制数。如: MOV AX,0300H(BCD)AADMOV BL,06H(BCD)DIV BL执行前两条后,AX=001EH,执行 DIV 指令后,AX=000

15、5H (BCD )。3. 逻辑运算(一)逻辑运算指令逻辑指令有三类:逻辑运算指令:NOT、AND 、OR 、XOR 及 TEST移位指令:SHL、 SAL、SHR 和 SHR循环移位指令:ROL、ROR、RCL 和 RCR1. 逻辑运算指令(1)求反指令 NOT指令格式: NOT 目指令功能: 将目标内容求反。(2)逻辑与指令 AND指令格式: AND 目,源指令功能: 将目标内容同源内容按位进行逻辑与运算。结果放在目标。如: AND AX,00FFH其结果 AH=0(被屛蔽);AL 内容不变。(3)逻辑或指令 OR指令格式: OR 目,源指令功能: 将目标内容同源内容按位进行逻辑或运算。结果

16、放在目标。如: OR AX,00FFH其结果 AH 内容不变; AL=0FFH(所有位为 1)。(4)逻辑 异或指令 XOR指令格式: XOR 目,源指令功能: 将目标内容同源内容按位进行逻辑异或运算。结果放在目标。如: OR AX,AX其结果 AX 被清 0。(5)测试指令 TEST指令格式: TEST 目,源指令功能: 将目标内容同源内容按位进行逻辑与运算。结果不放回目标,只影响标志位。如: TEST AL,80H执行后,如果 ZF=0,则 AL 的最高位为 1,反之,最高位为 0。(二)移位指令(1 )算术左移指令和逻辑左移指令 SAL 和 AHL 指令格式:#1 SAL 目,1#2 S

17、AL 目,CL指令功能:将目标操作数各数位依次左移一次,最高位进入 CF,且最低位补 0。若 CL 内容大于 1 时,重复前面的操作。除 AF 标志位不确定外,影响其它标志位。(2 )算术右移指令 SAR 指令格式:#1 SAR 目,1#2 SAR 目,CL指令功能:将目标操作数各数位依次右移一次。最低位进入 CF,且最高位不变。若 CL 内容大于 1 时,重复前面的操作。除 AF 标志位不确定,外影响其它标志位。(3 )逻辑右移指令 SHR 指令格式:#1 SHR 目,1#2 SHR 目,CL指令功能:将目标操作数各数位依次右移一次。最低位进入 CF,最高位补 0。若 CL 内容大于 1 时

18、,重复前面的操作。除 AF 标志位不确定,外影响其它标志位。(三)循环移位指令(1 )循环左移指令指令格式:#1 ROL 目,1#2 ROL 目,CL指令功能:将目标操作数各数位依次左移一位。最高位进入 CF,同时进入最低位。若 CL 内容大于 1,则重复前面的操作。除 AF 标志位不确定,外影响其它标志位:(2 )循环右移指令指令格式:#1 ROR 目,1#2 ROR 目,CL指令功能:将目标操作数各数位依次右移一位。最高低进入 CF,同时进入最高位。若 CL 内容大于 1,则重复前面的操作。除 AF标志位不确定,外影响其它标志位:(3 )带进位循环左移指令指令格式: #1 RCL 目,1#

19、2 RCL 目,CL指令功能:将目标操作数各数位依次左移一位。最高位进入 CF,CF 进入最低位。若 CL 内容大于 1,则重复前面的操作。除 AF 标志位不确定,外影响其它标志位:(4 )带进位循环右移指令指令格式:#1 RCR 目,1#2 RCR 目,CL指令功能:将目标操作数各数位依次右移一位。最低进入 CF,CF 进入最高位。若 CL 内容大于 1,则重复前面的操作。除 AF 标志位不确定,外影响其它标志位:4. 串操作指令(一)串传送指令串操作指令可以实现对一串数据的操作。 串操作指令有五类:串传送、串比较、串搜索、取串和存串等。串操作指令的共同点:(1 )串传送 MOVS指令格式:

20、#1 MOVSB ;字节串传送指令#2 MOVSW ;字串传送指令#3 MOVS 目标串符号首址,源串符号首址功能:将源串中一个字节(字)传送到目标串。不影响标志位。例:将 100 字节的数据从 3000H:100H,搬到 3000H:200HMOV AX,3000HMOV DS,AXMOV ES,AXMOV SI,0100HMOV DI,0200HMOV CX,50REP MOVSWMOV AH,4CHINT 21H(二)串比较指令(2 )串比较指令 CMPS指令格式:#1 CMPSB ;字节串比较指令#2 CMPSW ;字串比较指令#3 CMPS 目标串符号首址,源串符号首址功能:将源串中

21、一个字节(字)与目标串比较。影响标志位。(三)取串指令(3 )取串指令 LODS指令格式:#1 LODSB ;从串中取字节指令#2 LODSW ;从串中取字指令#3 LODS 源串符号首址功能:将源串中一个字节(字)传送到 AL(AX)中。不影响标志位。(四)存串指令(4 )存串指令 STOS指令格式:#1 STOSB ;存字节于目标串指令#2 STOSW ;存字于目标串指令#3 STOS 目标串符号首址功能:将 AL(AX)中的一个字节(字)存到目标串中。不影响标志位。(五)目标串搜索指令(5 )目标串搜索指令 SCAS指令格式:#1 SCASB ;从目标串中搜索字节指令#2 SCASW ;

22、从目标串中搜索字指令#3 SCAS 目标串符号首址功能:将 AL(AX)中的一个字节(字)与目标串中某字节(字)比较,不影响标目标串,只影响标志位。5. 控制转移指令(一)无条件转移指令及指令寻址在 8086CPU 的转移指令中,其目标操作数将给出下一条指令到哪儿去找。即给出指令的寻址方式。8086CPU 指令的寻址方式可分成两大类:段内转移寻址方式及段间转移寻址方式。段内和段间均又可分成两种:直接转移和间接转移。下面将通过无条件转移指令作详细分析。无条件转移指令指令格式: JMP 目指令功能:程序将转到由目标操作数指明的地址去执行。(二)条件转移指令条件转移指令一般是根据标志寄存器中某个标志

23、或几个标志的逻辑关系来决定是否转移。根据依据的条件,可分成三类条件转移指令:单标志条件转移指令;用于判断无符号数大小的条件转移指令;用于判断符号数大小的条件转移指令。(1)单标志条件转移指令除半进位标志 AF 之外的所有状态标志都有相应的条件转移指令。JZ|JEJNZ|JNEJCJNCJSJNSJOJNOJPJNP(2)判断无符号数大小的条件转移指令JA ;高于转移JNA ;不高于转移JB ;低于转移JNB(3)判断符号数大小的条件转移指令JG ;大于转移JNGJL ;小于转移JNL(三)子程序指令(1 )子程序调用指令 CALL指令格式:CALL 目功能:执行该指令时,CPU 先将该指令下面

24、一条指令的存放地址压入堆栈(该地址叫返回地址),然后,计算出目标地址的偏移地址并装入 IP,如果是远调用还要将目标地址的段地址装入 CS。其结果,程序将转到目标子程序去执行。(2)返回指令 RET指令格式:RET|RET N功能:从堆栈顶弹出两个(近过程调用)或四个(远过程调用)字,装入 IP 和 CS(远过程调用)。其结果是返回到主程序取执行。如果是 RET N,则还要使栈顶指针往上移 N 个字节。一般 N 取偶数值。(四)循环控制指令循环控制指令用来设计循环程序。此类指令有三条:(1)LOOP 指令指令格式:LOOP 短标号功能:该指令执行时,先将 CX 内容减 1,然后判断 CX 中内容

25、是否为 0,若不为 0,则返回到标号处去执行。若为 0,则执行该指令下面一条指令。(2)LOOPZ|LOOPE指令格式:LOOPZ|LOOPE 短标号功能:该指令执行时,先将 CX 内容减 1,然后判断 CX 中内容是否为 0 且 ZF 是否为 1,若不同时满足,则返回到标号处去执行,否则执行该指令下面一条指令。(3)LOOPNZ|LOOPNE指令格式:LOOPNZ|LOOPNE 短标号功能:该指令执行时,先将 CX 内容减 1,然后判断 CX 中内容是否为 0 且 ZF 是否为 0,若不同时满足,则返回到标号处去执行,否则执行该指令下面一条指令。(4)JCXZ指令格式:JCXZ 短标号功能:该指令执行时,只判断 CX 中内容是否为 0,若满足,则返回到标号处去执行,否则执行该指令下面一条指令。(五)中断指令8086 提供了软中断手段,这就是中断指令 INT 及中断返回指令 IRET。中断指令格式:INT N6. 处理器控制指令处理器控制指令只介绍部分指令及指令功能。( 1)标志操作指令CLC 清 CFSTC 置 CFCLD 清 DFSTD 置 DFCLI 清 IFCMC CF 取反( 2) CPU 暂停指令性 HLT( 3)空操作指令 NOP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报