8086指令归纳
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086指令系统总结
学习微处理器及其程序设计,必须掌握微处理器的指令系统。本章以8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。
本章的重点难点内容是:8086 的指令格式及寻址方式,8086 的常用指令和8086 指令前缀的使用。
下面我们分别进行总结:
一.8086寻址方式
(1)操作数是数字,指令中立即写出数字------------立即数寻址
MOV AX,1234H 解释此句意义
(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址
MOV AX,BX
(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址
MOV AX,[1234H]
MOV AX,ES:[1234H]
(4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX]
MOV AX,ES:[SI]
MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI]
二.8086指令系统
1.数据传送指令
(一)通用传送指令
(1)MOV指令
指令格式:MOV 目,源
功能:将源操作数传送给目标操作数。
(2)堆栈操作指令
进栈指令:PUSH
格式:PUSH 源
功能:将源操作数压入堆栈。
例:用堆栈指令完成上例的功能。
MOV AX,3000H
MOV DS,AX ;段寄存器填充
MOV SI,0100H ;基本指令执
MOV DI,2000H ;行前的初值
MOV CX,50
NT: PUSH [SI] ;程序从这
POP [DI] ;开始设计
INC SI
INC SI
INC DI
INC DI
LOOP NT
MOV AH,4CH
(3)交换指令XCHG
格式:XCHG 目,源
功能:源和目标中的内容交换。
(二)累加器专用传送指令
(1)输入输出指令IN,OUT
输入指令格式:#1 IN AX|AL,8位端口号
#2 IN AX|AL,DX
功能:从外设输入数据到AX|AL寄存器。
输出指令格式:
#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=1100H。
(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
指令功能:将标致寄存器的低八位中以定义位,传送给AH寄存器中对应的位。
(2)SAHF指令
指令格式:SAHF
指令功能:将AH寄存器中对应的位,传送给标致寄存器的低八位中以定义位。
指令格式:PUSHF
指令功能:将标致寄存器内容进栈。
(4)POPF指令
指令格式:POPF
指令功能:从栈顶弹出一个字送入标致寄存器。
2.算术运算
(一)加法指令
加法指令有三类:不带进位加法指令、带进位加法指令和增一指令。
它们均适合与无符号数和有符号数的加法。对于有符号数,其结果用补码表示。
(1)不带进位的加法指令ADD
指令格式:ADD 目,源
指令功能:源+目,其结果放到目标,并影响标志寄存器。
如:ADD AL,50H ;(AL)+50H→AL
(2)带进位的加法指令ADC
指令格式:ADC 目,源
指令功能:源+目+CF,其结果放到目标,并影响标志寄存器。
利用ADC指令可以实现两个多字节数的相加运算。如:1244AFDCH+9A12458FH。
如:ADC AL,50H ;(AL)+50H+CF→AL
(3)增一指令INC
指令格式:INC 目
指令功能:目+1,其结果放到目标,并影响标志寄存器。
(二)减法指令
减法指令包含有五类:不考虑借位减法指令、考虑借位减法指令、减一指令、求补指令和比较指令。它们均适合与无符号数和有符号数的减法。对于有符号数,其结果用补码表示。
(1)不考虑借位减法指令SUB
指令格式:SUB 目,源
指令功能:目-源,其结果放到目标,并影响标志寄存器。
(2)考虑借位减法指令SBB
指令格式:SBB 目,源
指令功能:目-源-CF,其结果放到目标,并影响标志寄存器。
利用SBB指令可以实现两个多字节数的相减运算。如:1244AFDCH-9A12458FH。
(3)减一指令DEC
指令格式:DEC 目
指令功能:目-1,其结果放到目标,并影响标志寄存器。
(4)求补指令NEG
指令格式:NEG 目
指令功能:0-目,其结果放到目标,并影响标志寄存器。
(5)比较指令CMP
指令格式:CMP 目,源
指令功能:目-源,其结果不放到目标,但设置标志寄存器。
用法:
#1 对于两个无符号数的比较,根据CF标志判断两数的大小。
#2 对于两个有符号数比较大小,根据SF和OF标志位来判断两数的大小: