微机原理及应用CH3 8086的寻址方式和指令系统_第1页
微机原理及应用CH3 8086的寻址方式和指令系统_第2页
微机原理及应用CH3 8086的寻址方式和指令系统_第3页
微机原理及应用CH3 8086的寻址方式和指令系统_第4页
微机原理及应用CH3 8086的寻址方式和指令系统_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理及应用 第第3 3章章 80868086的寻址方式和指令系统的寻址方式和指令系统 3.1 8086/80883.1 8086/8088的寻址方式的寻址方式3.2 8086/80883.2 8086/8088的指令系统的指令系统微机原理及应用 计算机中指令由操作码字段和操作数字段两部分计算机中指令由操作码字段和操作数字段两部分组成,因此指令的一般格式如下:组成,因此指令的一般格式如下:操作码操作码 操作数操作数操作码字段操作码字段:指示计算机要执行的操作。指示计算机要执行的操作。操作数字段操作数字段:指出在指令执行操作过程中所需要的指出在指令执行操作过程中所需要的 操作数。操作数。3.1

2、 8086/80883.1 8086/8088的寻址方式的寻址方式微机原理及应用 3.1.1 3.1.1 与数据有关的寻址方式与数据有关的寻址方式1. 立即数寻址立即数寻址2. 寄存器寻址寄存器寻址3. 直接寻址直接寻址4. 寄存器间接寻址寄存器间接寻址5. 寄存器相对寻址寄存器相对寻址 6. 基址变址寻址基址变址寻址7. 相对基址变址寻址相对基址变址寻址微机原理及应用 定定 义:操作数直接存放在指令中,作为指令义:操作数直接存放在指令中,作为指令的一部分存放在代码段里,这种操作数称为立即的一部分存放在代码段里,这种操作数称为立即操作数,这种寻址方式就是立即数寻址方式。寻操作数,这种寻址方式就

3、是立即数寻址方式。寻址方式如图址方式如图3.13.1所示:所示: 图图3.1 3.1 立即数寻址立即数寻址操作数指令1 1立即数寻址立即数寻址微机原理及应用 v 立即数可以是位或立即数可以是位或1616位的。如果是位的。如果是1616位立位立即数,则高即数,则高8 8位放在高地址位放在高地址, ,低低8 8位放在低地址。位放在低地址。v 使用场合:立即数寻址方式经常用于给寄存器使用场合:立即数寻址方式经常用于给寄存器赋初值。赋初值。v 它只能用于源操作数字段,不能用于目的操作它只能用于源操作数字段,不能用于目的操作数字段。数字段。vCPUCPU不需要另外占用总线周期去取操作数,故立不需要另外占

4、用总线周期去取操作数,故立即数寻址方式显著的特点就是速度快。即数寻址方式显著的特点就是速度快。说明:说明:微机原理及应用 定义:操作数在指定的寄存器中,指令中指定定义:操作数在指定的寄存器中,指令中指定寄存器号。寻址方式如图寄存器号。寻址方式如图3.3所示:所示:图图3.3 寄存器寻址寄存器寻址操作数指令指令寄存器号2寄存器寻址寄存器寻址微机原理及应用 说明:说明: 对于对于16位操作数,可以用字寄存器,比如:、位操作数,可以用字寄存器,比如:、以及段、以及段寄存器寄存器 对于位操作数,可以用字节寄存器,比如:对于位操作数,可以用字节寄存器,比如:、 这种寻址方式因为操作数在寄存器中,不需要访

5、问这种寻址方式因为操作数在寄存器中,不需要访问存储器,所以运算速度较高。存储器,所以运算速度较高。微机原理及应用 定义:在指令中直接给出位移量,它存放在定义:在指令中直接给出位移量,它存放在代码段中指令操作码之后,它可能是一个数值地代码段中指令操作码之后,它可能是一个数值地址,也可能是符号地址。寻址方式如图址,也可能是符号地址。寻址方式如图3.5所示:所示: 图图3.5 直接寻址直接寻址指 令段 寄 存 器段 基 址操 作 数EA物 理 地 址位 移 量存 储 器3直接寻址直接寻址微机原理及应用 当操作数在内存中,必须先求出操作数的物理地址,然当操作数在内存中,必须先求出操作数的物理地址,然后

6、再根据物理地址访问存储器从而取得操作数。后再根据物理地址访问存储器从而取得操作数。物理地址物理地址PA16D(段寄存器段寄存器)+EA 操作数一般存放在内存数据段中,操作数一般存放在内存数据段中,物理地址物理地址PA16(DS)+EA=16(DS)+位移量位移量汇编语言中可以用变量名汇编语言中可以用变量名(符号地址符号地址)代替数值地址,但代替数值地址,但要注意变量的属性,在计算其物理地址时也默认以要注意变量的属性,在计算其物理地址时也默认以DS来来提供段基值。提供段基值。 IBM PC机允许数据存放在数据段以外的其它段中机允许数据存放在数据段以外的其它段中(可可以是以是CS,SS,ES),但

7、必须在指令中指定段跨越前缀。,但必须在指令中指定段跨越前缀。说明:说明:微机原理及应用 定义:操作数的有效地址定义:操作数的有效地址EA在基址寄存器在基址寄存器(BX/BP)或变址寄存器或变址寄存器(SI/DI)中,而操作数在中,而操作数在内存中。寻址方式如图内存中。寻址方式如图3.7所示:所示: 图图3.7 3.7 寄存器间接寻址寄存器间接寻址指 令基 或 变 地 址寄 存 器段 寄 存 器段 基 址操 作 数EA物 理 地 址寄 存 器 号存 储 器4寄存器间接寻址寄存器间接寻址微机原理及应用 q 若选择若选择BXBX或或SISI或或DIDI寄存器提供的间址,则操作数一寄存器提供的间址,则

8、操作数一般在数据段区域中,用般在数据段区域中,用DSDS提供段基址,即操作数物理提供段基址,即操作数物理地址地址PAPA为:为: PA=16 PA=16(DS)+EA=16(DS)+EA=16(DS)+(BX)(DS)+(BX)或或(SI)(SI)或或(DI)(DI)。q若选择若选择BPBP寄存器提供的间址,则操作数在堆栈段区寄存器提供的间址,则操作数在堆栈段区域中,用域中,用SSSS提供段基址,即操作数物理地址提供段基址,即操作数物理地址PAPA为:为: PA=16 PA=16(SS)+EA=16(SS)+EA=16(SS)+(BP)(SS)+(BP)q 用用SISI、DIDI、BXBX、B

9、PBP作为间接寻址时允许使用段跨越作为间接寻址时允许使用段跨越前缀,从而实现对其它段中数据的存取。前缀,从而实现对其它段中数据的存取。q 用途:这种寻址方法适用于数组、字符串、表格的用途:这种寻址方法适用于数组、字符串、表格的处理。处理。说明:说明:微机原理及应用 定义:操作数的有效地址是一个基址或变址定义:操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的寄存器的内容和指令中指定的8 8位或位或1616位位移量位位移量之和。寻址方式如图之和。寻址方式如图3.93.9所示:所示:图图3.9 3.9 寄存器相对寻址方式寄存器相对寻址方式指 令寄 存 器 号寄 存 器基 或 变 地 址段

10、基 址段 寄 存 器EA物 理 地 址操 作 数存 储 器位 移 量5 5寄存器相对寻址寄存器相对寻址微机原理及应用 若选择若选择BP寄存器提供的基地址,则操作数在堆栈寄存器提供的基地址,则操作数在堆栈段区域中,用段区域中,用SS提供段基址,即操作数物理地址提供段基址,即操作数物理地址PA为:为: PA=16D(SS)+EA=16D(SS)+位移量位移量+(BP) 若选择若选择BX或或SI或或DI寄存器提供的基地址或变地寄存器提供的基地址或变地址,则操作数一般在数据段区域中,用址,则操作数一般在数据段区域中,用DS提供段基提供段基址,即操作数物理地址址,即操作数物理地址PA为为: PA=16(

11、DS)+EA=16(DS)+位移量位移量+(BX)或或(SI)或或(DI) 寄存器相对寻址方式允许使用段跨越前缀。寄存器相对寻址方式允许使用段跨越前缀。 用途:也适用于数组、字符串、表格的处理。用途:也适用于数组、字符串、表格的处理。说明:说明:微机原理及应用 定义:操作数的有效地址是一个基址寄存器定义:操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,基址寄存器名和和一个变址寄存器的内容之和,基址寄存器名和变址寄存器名均由指令指定。寻址方式如图变址寄存器名均由指令指定。寻址方式如图3.113.11所示:所示:图图3.11 3.11 基址变址寻址基址变址寻址指令基址寄存器基址寄存器基

12、地址段基址段寄存器EA物理地址操作数存储器变化寄存器变基址变址寄存器6 6基址变址寻址基址变址寻址微机原理及应用 若选择若选择BX寄存器提供基地址,寄存器提供基地址,SI或或DI寄存器提寄存器提供变地址,则操作数一般在数据段区域中,用供变地址,则操作数一般在数据段区域中,用DS提提供段基址,即操作数物供段基址,即操作数物理地址理地址PA为:为: PA=16(DS)+EA=16(DS)+(BX)+(SI)或或(DI)若选择若选择BP寄存器提供基地址,寄存器提供基地址,SI或或DI寄存器提供寄存器提供变地址,则操作数在堆栈段区域中,用变地址,则操作数在堆栈段区域中,用SS提供段基提供段基址,即操作

13、数物理地址址,即操作数物理地址PA为:为: PA=16(SS)+EA=16(SS)+(BP)+(SI)或或(DI)必须是一个基址寄存器和一个变址寄存器的组合;必须是一个基址寄存器和一个变址寄存器的组合;寄存器相对寻址方式允许使用段跨越前缀,适用于寄存器相对寻址方式允许使用段跨越前缀,适用于数组、字符串、表格的处理。数组、字符串、表格的处理。说明:说明:微机原理及应用 定定 义:操作数的有效地址是一个基址寄存器义:操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和和一个变址寄存器的内容和8 8位或位或1616位位移量之和。位位移量之和。寻址方式如图寻址方式如图3.133.13所示:所示:图

14、图3.13 3.13 相对基址变址寻址相对基址变址寻址指 令基 址 寄 存 器基 址 寄 存 器基 地 址段 基 址段 寄 存 器EA物 理 地 址操 作 数存 储 器位 移 量变 址 寄 存 器变 址 寄 存 器变 地 址7 7相对基址变址寻址相对基址变址寻址微机原理及应用 q 若选择若选择BP寄存器提供基地址,寄存器提供基地址,SI或或DI寄存器寄存器提供变地址,则操作数在堆栈段区域中,用提供变地址,则操作数在堆栈段区域中,用SS提提供段基址。供段基址。q 若选择若选择BX寄存器提供基地址,寄存器提供基地址,SI或或DI寄存器寄存器提供变地址,则操作数一般在数据段区域中,用提供变地址,则操

15、作数一般在数据段区域中,用DS提供段基址。提供段基址。q 这种寻址方式为处理堆栈中的数组提供方便:这种寻址方式为处理堆栈中的数组提供方便:用用BPBP可指向栈顶,位移量表示数组第一个元素到可指向栈顶,位移量表示数组第一个元素到栈顶的距离,变址寄存器指向数组元素。栈顶的距离,变址寄存器指向数组元素。说明:说明:微机原理及应用 3.1.2 与转移地址有关的寻址方式与转移地址有关的寻址方式 定义:转向的有效地址定义:转向的有效地址EA是当前是当前IP寄存器的内寄存器的内容和指令中指定的容和指令中指定的8位或位或16位位移量之和。寻址位位移量之和。寻址方式如图方式如图3.15所示:所示:图图3.15

16、段内直接寻址段内直接寻址 指 令I P 寄 存 器符 号 地 址1段内直接寻址段内直接寻址微机原理及应用 v在机器指令中,转向的有效地址在机器指令中,转向的有效地址EA用相对于当前用相对于当前IP值的位移量来表示,位移量值的位移量来表示,位移量=转向有效地址转向有效地址(当当前前IP);v对于对于16位的位移量,它可正可负,取值范围是位的位移量,它可正可负,取值范围是3276832767;对于对于8位的位移量,它也可正位的位移量,它也可正可负,取值范围是可负,取值范围是128127;v这种寻址方式适用于条件转移、无条转移指令及这种寻址方式适用于条件转移、无条转移指令及调用指令调用指令CALL。

17、v指令汇编语言格式:指令汇编语言格式:JMP NEAR PTR LL1;(IP)(当前当前IP)+16位位位位移量移量JMP SHORT LL2;(IP)(当前当前IP)+8位位移量位位移量说明:说明:微机原理及应用 定义:转向的有效地址是一个寄存器或一个定义:转向的有效地址是一个寄存器或一个存储单元的内容,这内容可以用数据寻址方式存储单元的内容,这内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,然中除立即数以外的任何一种寻址方式取得,然后用得到的转向有效地址来取代后用得到的转向有效地址来取代IPIP寄存器的内寄存器的内容。寻址方式如图容。寻址方式如图3.173.17所示:所示:图

18、图3.17 3.17 段内间接寻址段内间接寻址寄存器或内存单元IP寄存器转向有效地址数据寻址方式指 令2 2段内间接寻址段内间接寻址微机原理及应用 这种寻址方式和以下二种段间寻址方式都不能这种寻址方式和以下二种段间寻址方式都不能用于条件转移指令,而无条件转移指令用于条件转移指令,而无条件转移指令JMPJMP和调用和调用指令指令CALLCALL则可用则可用4 4种寻址方式中的任意一种。种寻址方式中的任意一种。汇编格式:汇编格式:JMP BXJMP BX JMP WORD PTR BX JMP WORD PTR BX其中:其中:WORD PTRWORD PTR用以指出用以指出BXBX寻址所取得转向

19、地寻址所取得转向地址是一个字的有效地址。址是一个字的有效地址。以上两种寻址方式都是段内转移,所以直接把以上两种寻址方式都是段内转移,所以直接把求得的有效地址送到求得的有效地址送到IPIP寄存器就可以了。计算物寄存器就可以了。计算物理地理地址址PAPA公公式为:式为: PA=16 PA=16(CS)+ EA(CS)+ EA说明:说明:微机原理及应用 定义:指令中直接提供转向段基址和偏移地定义:指令中直接提供转向段基址和偏移地址,从而实现从一段转移到另一段的操作。寻址,从而实现从一段转移到另一段的操作。寻址方式如图址方式如图3.183.18所示:所示:指 令转 向 偏 移 量IP寄 存 器CS寄

20、存 器转 向 段 基 址图图3.18 3.18 段间直接寻址段间直接寻址3 3段间直接寻址段间直接寻址微机原理及应用 q用指令中指定的偏移地址用指令中指定的偏移地址IPIPq用指令中指定的段地址用指令中指定的段地址CSCSq指令的汇编语言格式:指令的汇编语言格式: JMP FAR PTR LLLJMP FAR PTR LLL说明:说明:微机原理及应用 4 4段间间接寻址段间间接寻址 定义:用内存中两个相继字的内容取代定义:用内存中两个相继字的内容取代IPIP、CSCS以达到段间转移目的。内存单元的地址是由紧跟在以达到段间转移目的。内存单元的地址是由紧跟在操作码之后除立即数方式和寄存器方式以外的

21、任何操作码之后除立即数方式和寄存器方式以外的任何一种寻址方式取得。寻址方式如图一种寻址方式取得。寻址方式如图3.203.20所示:所示:图图3.20 3.20 段间间接寻址段间间接寻址指 令内存双字单元数据寻址方式IP寄存器CS寄存器转向段基址(高字)计算出存放双字的物理地址转向偏移量(低字)微机原理及应用 v用内存中两个相继字用内存中两个相继字( (即双字即双字) )的低字取代的低字取代IPIP,高字,高字取代取代CSCS;v指令汇编语言格式:指令汇编语言格式:JMP DWORD PTR BXJMP DWORD PTR BX其中,其中,DWORD PTRDWORD PTR是双字操作符,转向地

22、址双字是双字操作符,转向地址双字( (段段间转移间转移) ),BXBX是数据寻址方式的寄存器间接寻址。是数据寻址方式的寄存器间接寻址。说明:说明:微机原理及应用 q数据传送指令数据传送指令(Data transfer Instruction)(Data transfer Instruction)q算术运算指令算术运算指令(Arithmetic Instruction)(Arithmetic Instruction)q逻辑运算和移位指令逻辑运算和移位指令(Logic & Shift Instruction)(Logic & Shift Instruction)q串操作指令串操作指

23、令(String manipulation Instruction)(String manipulation Instruction)q控制转移指令控制转移指令(Control Transfer Instruction)(Control Transfer Instruction)q处理器控制指令处理器控制指令(Processor Control Instruction)(Processor Control Instruction)3.2 80863.2 8086的指令系统的指令系统微机原理及应用 8086 8086数据传送指令用于实现数据传送指令用于实现CPUCPU的寄存器之间、的寄存器之间、

24、CPUCPU与存储器之间、以及与存储器之间、以及CPUCPU与与I/OI/O端口之间的数据传端口之间的数据传送。数据传送指令又可分为以下四种:送。数据传送指令又可分为以下四种:q通用传送指令通用传送指令q累加器专用传送指令累加器专用传送指令q地址传送指令地址传送指令q标志传送指令标志传送指令3.2.1 3.2.1 数据传送指令数据传送指令微机原理及应用 格格 式:式:MOV destMOV dest,srcsrc执行的操作:执行的操作:(dest)(src)(dest)(src) 即把源操作数的内容传送给目的操作数,目即把源操作数的内容传送给目的操作数,目的操作数原有的内容消失。它对标志位没有

25、影响;的操作数原有的内容消失。它对标志位没有影响;它可以完成字节它可以完成字节( (或字或字) )之间的传送,不过源操作之间的传送,不过源操作数和目的操作数之间的长度要匹配。数和目的操作数之间的长度要匹配。MOVMOV指令的数指令的数据传送方向如图据传送方向如图3.213.21所示:所示:(1)MOV (1)MOV 传送指令传送指令1 1通用传送指令通用传送指令 8086 8086提供方便灵活的通用的传送操作,适用于大提供方便灵活的通用的传送操作,适用于大多数操作数。通用传送指令多数操作数。通用传送指令( (除了除了XCHGXCHG以外以外) )是唯一允许是唯一允许以段寄存器为操作数的指令。以

26、段寄存器为操作数的指令。微机原理及应用 CS立 即 数存储器 段寄存器 DS、ES、SS 通用寄存器 AX、BX、CX、DXBP、SP、SI、DI图图3.21 MOV指令数据传送方向指令数据传送方向微机原理及应用 CPU CPU内部寄存器之间的数据的任意传送内部寄存器之间的数据的任意传送( (除了除了代码段寄存器代码段寄存器CSCS和指令指针和指令指针IPIP以外以外) ),段寄存器,段寄存器之间不能直接传送。之间不能直接传送。 立即数传送至立即数传送至CPUCPU内部通用寄存器组内部通用寄存器组(AX(AX、BXBX、CXCX、DXDX、BPBP、SPSP、SISI、DI)DI),用于给寄存

27、器赋初,用于给寄存器赋初值,不能直接给段寄存器赋值;立即数也可传送值,不能直接给段寄存器赋值;立即数也可传送给存储器。给存储器。 CPU CPU内部寄存器内部寄存器( (除除CSCS和和IPIP外外) )与存储器之间与存储器之间的数据传送,可以实现一字节或一个字的传送,的数据传送,可以实现一字节或一个字的传送,存储单元之间不能直接传送。存储单元之间不能直接传送。MOVMOV指令能实现以下操作:指令能实现以下操作:微机原理及应用 两个存储单元之间不能直接传送数据。两个存储单元之间不能直接传送数据。立即数不能直接传送给段寄存器。立即数不能直接传送给段寄存器。段寄存器之间不能直接传送数据。段寄存器之

28、间不能直接传送数据。CSCS和和IPIP不能作为目的操作数;不能作为目的操作数;MOV MOV CSCS,AX AX ;( (非法非法) )对于对于MOVMOV指令使用,应注意以下几点:指令使用,应注意以下几点:微机原理及应用 (2)PUSH 2)PUSH 进栈指令进栈指令 格格 式:式:PUSH srcPUSH src 执行的操作:执行的操作:(SP)(SP)(SP)(SP)2 2 (SP)+1(SP)+1,(SP)(src)(SP)(src)微机原理及应用 (3)POP (3)POP 出栈指令出栈指令 格格 式:式:POP destPOP dest 执行的操作:执行的操作:(dest)(S

29、P)+1(dest)(SP)+1,(SP)(SP) (SP)(SP) (SP)(SP)2 2微机原理及应用 q堆栈操作都按字操作;堆栈操作都按字操作;qPUSH,POP指令的操作数只能有三种:通用寄指令的操作数只能有三种:通用寄存器、段寄存器存器、段寄存器(CS除外,除外,PUSH CS合法,合法,POP CS非法非法)、存储器;、存储器;q 当字数据进栈时,将它的低字节放到低地址,将当字数据进栈时,将它的低字节放到低地址,将它的高字节放到高地址;当字数据出栈时,注意它它的高字节放到高地址;当字数据出栈时,注意它的低字节在低地址,它的高字节在高地址;的低字节在低地址,它的高字节在高地址;q堆栈

30、的最大容量就是堆栈的最大容量就是SP的初始化值;的初始化值;q 堆栈工作原则是堆栈工作原则是“后进先出后进先出”。因此,保存和恢。因此,保存和恢复字数据时,复字数据时,PUSH、POP指令应该成对使用,以指令应该成对使用,以保证数据的正确性和保持堆栈原有状态。保证数据的正确性和保持堆栈原有状态。使用堆栈操作指令需注意以下几点:使用堆栈操作指令需注意以下几点:微机原理及应用 (4)XCHG (4)XCHG 交换指令交换指令 格格 式:式:XCHG XCHG destdest,srcsrc 执行的操作:执行的操作:(dest)(src)(dest)(src) 即源操作数与目的操作数相交换。它可以实

31、现字即源操作数与目的操作数相交换。它可以实现字节交换,也可以实现字交换。交换的过程可以在通节交换,也可以实现字交换。交换的过程可以在通用寄存器之间,也可以在通用寄存器与存储器之间。用寄存器之间,也可以在通用寄存器与存储器之间。 使用交换指令,注意以下两点:使用交换指令,注意以下两点: 两个存储单元之间不能直接交换,两个操作数两个存储单元之间不能直接交换,两个操作数中必须有一个在寄存器中。中必须有一个在寄存器中。 段寄存器段寄存器(CS(CS、DSDS、SSSS、ES)ES)和指令指针和指令指针IPIP不能不能作为它的源操作数,也不能作为目的操作数。作为它的源操作数,也不能作为目的操作数。 微机

32、原理及应用 8086 8086和其他微处理器一样,累加器和其他微处理器一样,累加器acc(acc(即即AXAX或或AL)AL)仍然是数据传送的核心。仍然是数据传送的核心。(1)IN (1)IN 输入指令输入指令 长长 格格 式:式:IN ALIN AL,port(port(字节端口字节端口) ) IN AX IN AX,port(port(字端口字端口) ) 执行的操作:执行的操作:(AL)(port)(AL)(port) (AX)(port+1 (AX)(port+1,port)port) 短短 格格 式:式: IN AL IN AL,DX(DX(字节端口字节端口) ) IN AX IN A

33、X,DX(DX(字端口字端口) ) 执行的操作:执行的操作:(AL)(DX)(AL)(DX) (AX)(DX)+1 (AX)(DX)+1,(DX)(DX)2. 2. 累加器专用传送指令累加器专用传送指令微机原理及应用 (2)OUT (2)OUT 输出指令输出指令 长长 格格 式:式: OUT port OUT port,AL(AL(字节端口字节端口) ) OUT port OUT port,AX(AX(字端口字端口) ) 执行的操作:执行的操作:(port)(AL)(port)(AL) (port+1 (port+1,port)(AX)port)(AX) 短短 格格 式:式: OUT DX O

34、UT DX,AL(AL(字节端口字节端口) ) OUT DX OUT DX,AX(AX(字端口字端口) ) 执行的操作:执行的操作:(DX)(AL)(DX)(AL) (DX)+1 (DX)+1,(DX)(AX)(DX)(AX)微机原理及应用 格式:格式:XLAT str_table XLAT str_table 或或 XLAT XLATstr_tablestr_table表格符号地址表格符号地址( (首地址首地址) ),只是为了,只是为了提高可读性而设置,是可有可无的,而指令执行时提高可读性而设置,是可有可无的,而指令执行时只会使用预先已经存入只会使用预先已经存入BXBX中的表格首地址。该指令

35、中的表格首地址。该指令不影响标志位。不影响标志位。执的行操作:执的行操作:(AL)(BX)+(AL)(AL)(BX)+(AL)(3)XLAT (3)XLAT 换码指令换码指令微机原理及应用 XLATXLAT指令使用方法:指令使用方法: 先建立一个字节表格,表格的内容就是所要换先建立一个字节表格,表格的内容就是所要换取的代码;取的代码; 然后将表格首地址存入然后将表格首地址存入BXBX; 再将需要换取的代码的序号再将需要换取的代码的序号( (即相对与表格首即相对与表格首地址的位移量地址的位移量) )存入存入ALAL; 最后再使用最后再使用XLATXLAT,它执行指令后,转换后的代,它执行指令后,

36、转换后的代码就在码就在ALAL中。中。微机原理及应用 8086 /8088 8086 /8088 提供三条将地址指针写入指定寄提供三条将地址指针写入指定寄存器或寄存器的指令。存器或寄存器的指令。 (1)LEA (1)LEA 有效地址送寄存器指令有效地址送寄存器指令 格格 式:式: LEA reg16 LEA reg16,mem16mem16 执行的操作:执行的操作:(reg16) EA(reg16) EA 该指令把源操作数的有效地址装入指定的寄存器。该指令把源操作数的有效地址装入指定的寄存器。通常用于加载有效地址,写近地址指针。通常用于加载有效地址,写近地址指针。 注意以下两点:注意以下两点:

37、 LEA LEA指令中的目标寄存器必须是指令中的目标寄存器必须是1616位的通用寄位的通用寄存器,源操作数必须是一个存储器操作数。存器,源操作数必须是一个存储器操作数。 LEA LEA指令与指令与MOVMOV指令注意比较使用指令注意比较使用. . 3. 3. 地址传送指令地址传送指令微机原理及应用 (2)LDS (2)LDS 地址指针送寄存器和地址指针送寄存器和DSDS指令指令 格格 式:式:LDS reg16, mem32LDS reg16, mem32 执行的操作:执行的操作:(reg16)(EA)(reg16)(EA) (DS)(EA)+2) (DS)(EA)+2)该指令是将源操作数四个

38、相继的字节分别送给指该指令是将源操作数四个相继的字节分别送给指令指定的寄存器和令指定的寄存器和DSDS。即将指令指定。即将指令指定mem32mem32单元的单元的前两个字节单元内容前两个字节单元内容(16(16位偏移量位偏移量) )装入指定通用装入指定通用寄存器,把后两个字节单元内容寄存器,把后两个字节单元内容( (段地址段地址) ) 装入到装入到DSDS段寄存器。段寄存器。微机原理及应用 (3)LES (3)LES 地址指针送寄存器和地址指针送寄存器和ESES指令指令 格格 式:式:LES reg16, mem32LES reg16, mem32 执行的操作:执行的操作:(reg16)(EA

39、)(reg16)(EA) (ES)(EA)+2) (ES)(EA)+2) 该指令是将源操作数四个相继的字节分别送该指令是将源操作数四个相继的字节分别送给指令指定的寄存器和给指令指定的寄存器和ESES。微机原理及应用 通过这些指令可以读出当前标志寄存器的内通过这些指令可以读出当前标志寄存器的内容,也可以对标志寄存器重新设置新值。容,也可以对标志寄存器重新设置新值。(1)LAHF (1)LAHF 标志位送标志位送AHAH 格格 式:式:LAHFLAHF 执行的操作:执行的操作:(AH)(AH)(标志寄存器标志寄存器PSWPSW的低字节的低字节) ) (2)SAHF AH(2)SAHF AH送标志寄

40、存器送标志寄存器 格格 式:式:SAHFSAHF 执行的操作:执行的操作:( (标志寄存器标志寄存器PSWPSW的低字节的低字节)(AH)(AH) 4. 4. 标志寄存器传送指令标志寄存器传送指令微机原理及应用 (4)POPF (4)POPF 标志寄存器出栈指令标志寄存器出栈指令格格 式:式:POPFPOPF执行操作执行操作:(PSW)(SP):(PSW)(SP)1 1,(SP),(SP)(SP)(SP),(SP)(SP)2 2 使用标志位传送指令,注意以下两点:使用标志位传送指令,注意以下两点: LAHF LAHF、PUSHFPUSHF不影响标志位不影响标志位,SAHF,SAHF、POPFP

41、OPF由装入由装入的值确定标志位的值,即影响标志位。的值确定标志位的值,即影响标志位。 PUSHF PUSHF和和POPFPOPF一般分别用于子程序或中断服务程一般分别用于子程序或中断服务程序的首尾,起保护主程序标志和恢复主程序标志的作用。序的首尾,起保护主程序标志和恢复主程序标志的作用。(3)PUSHF (3)PUSHF 标志寄存器进栈指令标志寄存器进栈指令格格 式:式:PUSHFPUSHF执行的操作:执行的操作:(SP)(SP)(SP)(SP)2 ,(SP)+12 ,(SP)+1,(SP)(PSW)(SP)(PSW)微机原理及应用 8086 8086指令系统提供了加、减、乘、除四种基本指令

42、系统提供了加、减、乘、除四种基本算术操作。算术操作。80868086指令系统还提供了各种校正指令,指令系统还提供了各种校正指令,从而可以实现组合的从而可以实现组合的( (即用一个字节表示两个即用一个字节表示两个BCDBCD码码) )或非组合的或非组合的( (即用一个字节表示一个即用一个字节表示一个BCDBCD码,其码,其中高四位为中高四位为0)0)十进制的算术运算。算术运算指令十进制的算术运算。算术运算指令又可分为以下五种:又可分为以下五种:q加法指令加法指令q减法指令减法指令q乘法指令乘法指令q十进制调整指令十进制调整指令q除法指令除法指令3.2.2 3.2.2 算术运算指令算术运算指令微机

43、原理及应用 (1)ADD (1)ADD 加法指令加法指令 格格 式:式:ADD destADD dest,srcsrc 执行的操作:执行的操作:(dest) (dest)+(src)(dest) (dest)+(src) 注意以下三点:注意以下三点: 它可以进行它可以进行8 8位、位、1616位的无符号数和带符号位的无符号数和带符号数的加法运算;数的加法运算; 它的源操作数和目标操作数不能同时为存它的源操作数和目标操作数不能同时为存储器操作数;储器操作数; 该指令影响标志位该指令影响标志位SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF。1. 1. 加法指令加法指令微机原理

44、及应用 格格 式:式:ADC destADC dest,srcsrc执行的操作:执行的操作:(dest)(dest)+(src)+CF(dest)(dest)+(src)+CF其中其中CFCF为进位位标志的现行值。为进位位标志的现行值。 注意以下两点:注意以下两点: 它与它与ADDADD指令相似,只是在两个操作数相加指令相似,只是在两个操作数相加时,要把进位位标志时,要把进位位标志CFCF的现行值加上去,结果送的现行值加上去,结果送给目的操作数。给目的操作数。 主要用于多字节运算中。主要用于多字节运算中。(2)ADC (2)ADC 带进位加法指令带进位加法指令微机原理及应用 格格 式:式:IN

45、C destINC dest 执行的操作:执行的操作:(dest)(dest)+1(dest)(dest)+1 使操作数的内容加使操作数的内容加1 1,然后再送回该操作数。该,然后再送回该操作数。该操作数可以是寄存器操作数、存储器操作数。操作数可以是寄存器操作数、存储器操作数。 注意以下两点:注意以下两点: 标志位影响:它影响标志位影响:它影响SF,ZF,AF,PF,OF,SF,ZF,AF,PF,OF,不影响不影响CFCF。 主要用于在循环程序中修改地址指针和循环次数。主要用于在循环程序中修改地址指针和循环次数。 (3)INC (3)INC 加加1 1指令指令微机原理及应用 (1)SUB (1

46、)SUB 减法指令减法指令格格 式:式:SUB destSUB dest,srcsrc;执行的操作:执行的操作:(dest)(dest)(dest)(dest)(src)(src) 注意以下三点:注意以下三点: 它可以进行它可以进行8 8位、位、1616位的无符号数和带符号位的无符号数和带符号数的减法运算;数的减法运算; 它的源操作数和目标操作数不能同时为存储它的源操作数和目标操作数不能同时为存储器操作数;器操作数; 该指令影响标志位该指令影响标志位SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF。 2. 2. 减法指令减法指令微机原理及应用 格式:格式:SBB destS

47、BB dest,srcsrc执行的操作:执行的操作:(dest)(dest)(dest)(dest)(src)(src)CFCF其中其中CFCF表示进位标志位表示进位标志位CFCF的现行值。的现行值。 注意以下两点:注意以下两点: 它与它与SUBSUB指令相似,只是在两个操作数相减指令相似,只是在两个操作数相减时,要把进位位标志时,要把进位位标志CFCF的现行值减出去,结果送的现行值减出去,结果送给目的操作数。给目的操作数。 主要用于多字节运算中。主要用于多字节运算中。(2)SBB (2)SBB 带借位减法指令带借位减法指令微机原理及应用 格格 式:式:DEC destDEC dest 执行的

48、操作:执行的操作:(dest)(dest)(dest)(dest)1 1 使操作数的内容减使操作数的内容减1 1,然后再送回该操作数。该操,然后再送回该操作数。该操作数可以是寄存器操作数、存储器操作数。作数可以是寄存器操作数、存储器操作数。 注意以下两点:注意以下两点: 标志位影响情况:它影响标志位影响情况:它影响SF,ZF,AF,PF,OFSF,ZF,AF,PF,OF,不影,不影响响CFCF; 主要用于在循环程序中修改地址指针和循环次数。主要用于在循环程序中修改地址指针和循环次数。(3)DEC (3)DEC 减减1 1指令指令微机原理及应用 格格 式:式:NEG destNEG dest执行

49、的操作:执行的操作:(dest)0(dest)0(dest)(dest)即把操作数按位求反后末位即把操作数按位求反后末位+1+1,因此该操作可以表,因此该操作可以表示为示为: :(dest)0FFFFH(dest)0FFFFH(dest)+1(dest)+1(4)NEG (4)NEG 求补指令求补指令 该指令要影响标志位:该指令要影响标志位:SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF,特别,特别要注意要注意CFCF和和OFOF: CF CF:只有操作数为:只有操作数为0 0时求补时求补,CF=0,CF=0;否则;否则CF=1CF=1; OF OF:只有对操作数:只有对

50、操作数128 128 或或3276832768求补,求补,OF=1OF=1;否则否则OF=0OF=0;微机原理及应用 格格 式:式:CMP destCMP dest,srcsrc执行的操作:执行的操作:(dest)(dest)(src)(src)CMPCMP比较指令是执行两个数的相减操作,比较指令是执行两个数的相减操作,但不送但不送回相减的结果回相减的结果,只是使结果影响标志位:,只是使结果影响标志位:SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF。(5)CMP (5)CMP 比较指令比较指令微机原理及应用 vCMP指令主要是通过比较来设置状态标志位,分以下三指令主要是通

51、过比较来设置状态标志位,分以下三种情况讨论种情况讨论: v根据根据ZFZF标志,判断两个数据是否相等;标志,判断两个数据是否相等; 即两个数相减后,如果即两个数相减后,如果ZF=1ZF=1,则表示比较的两个操作,则表示比较的两个操作数相等;如果数相等;如果ZF=0ZF=0,则表示比较的两个操作数不相等;,则表示比较的两个操作数不相等;v根据根据CFCF标志,判断两个无符号数的大小;标志,判断两个无符号数的大小; 即两个无符号数相减后,如果即两个无符号数相减后,如果CF=1CF=1,则表示被减数小,则表示被减数小,减数大;如果减数大;如果CF=0CF=0,则表示被减数大,减数小。,则表示被减数大

52、,减数小。v根据根据SFSF、OFOF标志,判断两个带符号数的大小;标志,判断两个带符号数的大小; 对于有符号数的比较操作,如果得到溢出标志位对于有符号数的比较操作,如果得到溢出标志位OFOF和符和符号标志位号标志位SFSF的值相同的值相同( (均为均为0 0或者均为或者均为1)1),则说明被减数比,则说明被减数比减数大;如果得到溢出标志位减数大;如果得到溢出标志位OFOF和符号标志位和符号标志位SFSF的值不同的值不同( (一个为一个为0 0另一个为另一个为1)1),则说明被减数比减数小;,则说明被减数比减数小;微机原理及应用 格格 式:式:MUL srcMUL src 执行的操作:执行的操

53、作:(src)(src)为字节操作数:为字节操作数: (AX)(AL)(AX)(AL)(src)(src)(src)(src)为字操作数:为字操作数:(DX(DX,AX)(AX)AX)(AX)(src)(src)3. 3. 乘法指令乘法指令(1)MUL (1)MUL 无符号数乘法无符号数乘法微机原理及应用 格格 式:式:IMUL srcIMUL src执行的操作:执行的操作:(src)(src)为字节操作数:为字节操作数: (AX)(AL)(AX)(AL)(src)(src)(src)(src)为字操作数:为字操作数:(DX(DX,AX)(AX)AX)(AX)(src) (src) (2)IM

54、UL (2)IMUL 带符号数乘法带符号数乘法微机原理及应用 说说 明:明:qMULMUL和和IMULIMUL指令执行的操作是一样的,只不过指令执行的操作是一样的,只不过MULMUL的的运算对象是无符数,而运算对象是无符数,而IMULIMUL的运算对象是带符号数。的运算对象是带符号数。q在乘法指令里面,目的操作数必须是累加器,字运在乘法指令里面,目的操作数必须是累加器,字运算时为算时为AXAX,字节运算时为,字节运算时为ALAL。 q两个两个8 8位数相乘得到的位数相乘得到的1616位乘积保存在位乘积保存在AXAX中;当进中;当进行字乘法时,两个行字乘法时,两个1616位数相乘得到的位数相乘得

55、到的3232位乘积存放位乘积存放在在DXDX、AXAX寄存器对中,其中寄存器对中,其中DXDX存放高位字,存放高位字,AXAX存放存放低位字。低位字。q 乘法指令只影响乘法指令只影响CFCF和和OFOF,而对,而对AFAF、SFSF、ZFZF、PFPF未未定义。定义。 微机原理及应用 格格 式:式:DIV srcDIV src执行的操作:执行的操作:(src)(src)为字节操作数:为字节操作数: (AL)(AX)/(src)(AL)(AX)/(src)的商的商 (AH)(AX)/(src) (AH)(AX)/(src)的余数的余数(src)(src)为字操作数:为字操作数:(AX)(DX(A

56、X)(DX,AX)/(src)AX)/(src)的商的商 (DX)(DX (DX)(DX,AX)/(src)AX)/(src)的余数的余数4. 4. 除法指令除法指令(1)DIV (1)DIV 无符号数除法指令无符号数除法指令微机原理及应用 说说 明:明: 即当进行字节操作时,即当进行字节操作时,1616位被除数在位被除数在AXAX中,中,8 8位位除数为源操作数,结果的除数为源操作数,结果的8 8位商在位商在ALAL中,中,8 8位的余数在位的余数在AHAH中。当进行字操作时,中。当进行字操作时,3232位被除数在位被除数在DXDX、AXAX寄存器寄存器对中,对中,1616位除数为源操作数,

57、结果的位除数为源操作数,结果的1616位商在位商在AXAX中,中,1616位的余数在位的余数在DXDX中。中。微机原理及应用 格格 式:式:IDIV srcIDIV src 执行的操作:执行的操作:(SRC)(SRC)为字节操作数:为字节操作数:(AL)(AX)/(src)(AL)(AX)/(src)的商的商 (AH)(AX)/(src) (AH)(AX)/(src)的余数的余数(SRC)(SRC)为字操作数:为字操作数: (AX)(DX(AX)(DX,AX)/(src)AX)/(src)的商的商 (DX)(DX (DX)(DX,AX)/(src)AX)/(src)的余数的余数(2)IDIV

58、(2)IDIV 带符号数除法指令带符号数除法指令微机原理及应用 说说 明:明: 除法指令可以是除立即数寻址以外的任何一种寻除法指令可以是除立即数寻址以外的任何一种寻址方式。而其目的操作数则必须存放在址方式。而其目的操作数则必须存放在AXAX或或DX.DX. 除法指令对状态标志位没有定义。除法指令对状态标志位没有定义。 除法指令要求字节操作时商为除法指令要求字节操作时商为8 8位,字操作时商位,字操作时商为为1616位。如果是字节操作时被除数的高位。如果是字节操作时被除数的高8 8位的绝对值位的绝对值大于除数的绝对值或字操作时被除数的高大于除数的绝对值或字操作时被除数的高1616位的绝对位的绝对

59、值大于除数的绝对值,商就会产生溢出。值大于除数的绝对值,商就会产生溢出。 由于除法指令在字节操作时要求被除数为由于除法指令在字节操作时要求被除数为1616位位放在放在AXAX中,在字操作时要求被除数为中,在字操作时要求被除数为3232位放在位放在DXDX、AXAX寄存器对中。寄存器对中。微机原理及应用 格格 式:式:CBW 执行的操作:将执行的操作:将AL的内容符号扩展到的内容符号扩展到AH。即。即如果如果(AL)的最高有效位的最高有效位0,则,则(AH)=00(AH)=00;否则;否则(AH)=0FFH(AH)=0FFH。 格格 式:式:CWD CWD 执行的操作:将执行的操作:将AXAX的

60、内容符号扩展到的内容符号扩展到DXDX。即如果。即如果(AX)(AX)的最高有效位的最高有效位0 0,则,则(DX)=0000(DX)=0000;否则;否则(AH)=0FFFFH(AH)=0FFFFH。(3)CBW (3)CBW 字节转换为字指令字节转换为字指令(4)CWD (4)CWD 字转换为双字指令字转换为双字指令微机原理及应用 5. 5. 十进制调整指令十进制调整指令 为了便于十进制数的运算,计算机还专门提供了为了便于十进制数的运算,计算机还专门提供了一组十进制数调整指令。一组十进制数调整指令。微机原理及应用 格格 式:式:DAADAA 执行的操作:把执行的操作:把ALAL中的和调整为压缩的中的和调整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论