资源描述:
《微机原理第三章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章 指令系统3.1 寻址方式3.1.1 指令格式及操作数类型1.指令格式一般汇编指令格式如下:指令助记符[操作数1[,操作数2]][;注释]2.操作数类型8086/8088系统中的操作数可以分为:(1).立即数操作数(2).寄存器操作数(3).存储器操作数3.1.2 8086/8088的寻址方式1.立即寻址当需要的操作数为常数时,操作数可以在指令中直接给出,这种寻址方式称为立即寻址方式。2.寄存器寻址当指令所需要的操作数在寄存器中时,在指令中指出需访问的寄存器名字即可,这种寻址方式
2、称为寄存器寻址。其寻址方式如下图所示。3.直接寻址在这种寻址方式中,操作数在内存单元中,并且在指令中直接给出这一单元的逻辑地址。4.寄存器间接寻址图3-1寄存器寻址在这种寻址方式中,操作数在内存单元中,并且在指令中按如下方式给出这一单元的逻辑地址:段基址:段基址的给出同直接寻址。偏称量:以寄存器SI、DI、BP、BX之一的内容作为偏称量。5.变址寻址变址寻址基本上同寄存器间接寻址,只是逻辑地址中偏移量的给出方式不同:偏移量表达式由寄存器BX、BP、SI、DI之一和一常数共同构成。以这
3、二者之和作为被寻址内存单元的偏移量。6.基址加变址寻址基址加变址寻址中,操作数在内存中,且按以下方式给出其逻辑地址:段基址:段基址的给出仍同直接寻址。偏移量:由“一个常数”+“BX、BP之一的内容”+“SI、DI之一的内容”三者之和作为偏移量。3.2 8086/8088指令系统3.2.1 数据传送指令1.通用数据传送指令MOV格式:MOV OPD,OPS功能:OPD是目的操作数,OPS是源操作数,该指令的功能是将源操作数送至目的操作数中,即OPS→OPD。允许的操作数组合:OPS可为:立即数、
4、通用寄存器、存储器、段寄存器。OPD可为:通用寄存器、存储器、段寄存器OPS和OPD可以有9种组合,如下图所示:(1)通用寄存器到通用寄存器如:MOV AX,BX;(2)立即数到通用寄存器如:MOV AX,03H;(3)立即数到存储单元如:MOV BYTEPTR[2000H],12H(4)存储单元到通用寄存器如:MOV AX,[2000H];(5)通用寄存器到存储单元如:MOV[2000H],AX;图3-4MOV指令传送示意图(6)通用寄存器到除CS外的段寄存器如:MOV DS,AX;。(
5、7)段寄存器到通用寄存器如:MOV AX,DS;(8)存储器到除CS外的段寄存器如:MOV ES,[2000H];(9)段寄存器到存储器如:MOV [2000H],DS;2.堆栈及堆栈操作指令(1).堆栈的概念堆栈是内存的一个逻辑段,当这个段被指定为堆栈后,可用堆栈操作指令对它进行特殊规则的访问,这个规则就是:不论入栈还是出栈,都只能从栈顶处进行,堆栈内数据遵循先进后出,后进先出的原则。(2).堆栈的设置8086/8088中专门有2个寄存器用于堆栈操作:堆栈段寄存器SS和堆栈指针寄存器
6、SP。SS用来存放堆栈段的段基址,SP用于指示堆栈的顶部单元的段内偏移量,开始时堆栈内没有数据,栈顶就是栈底,故开始时要将栈底单元的偏移量赋给它,以指明栈低位置。(3).堆栈操作指令⊙入栈指令PUSH格式:PUSH OPS功能:将操作数OPS的内容压入堆栈中。允许的操作数:OPS可以是通用寄存器,段寄存器或存储器,必须为字操作数。操作过程:①SP←SP-1,OPS的高字节→栈顶单元;②再次SP←SP-1,OPS的低字节→栈顶单元。例如:PUSH AX执行前:AX=1234H,SP=2000H。
7、堆栈情况如图3-5(a),执行后:(1FFEH)=1B5DH,AX的内容不变。堆栈情况如图3-5(b)所示(图3-5见下页)。⊙出栈指令POP格式:POP OPS功能:将堆栈栈顶内容弹出到操作数OPS中。允许的操作数组合:OPS可以是通用寄存器,段寄存器(CS除外)或存储器,必须为字操作数。操作过程:①OPS的低字节←栈顶单元,SP←SP+1;②OPS的高字节←栈顶单元,再次SP←SP+1。例如:POP AX执行前:AX=1234H,堆栈情况如图3-5(b)所示。执行后:AX=1B5DH,堆栈情况
8、如图3-5(a)所示。图3-5栈操作命令示意图3.交换指令XCHG和换码指令(1).交换指令XCHG格式:XCHG OPD,OPS功能:将两个操作数OPD与OPS的内容互换.允许的操作数组合:交换可以在通用寄存器之间或通用寄存器与存储器之间进行,OPD与OPS可以同时是字节或字操作数。(2).换码指令XLAT格式:XLAT(格式1)或:XLAT OPS(格式2)功能:XLAT指令将一种代码转换成另一种代码,允许的