版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 8086的寻址方式和指令系统 第3章 8086的寻址方式和指令系统 3.1 8086/80883.1 8086/8088的寻址方式的寻址方式 计算机指令的一般格式:计算机指令的一般格式:操作码字段操作码字段:指示计算机要执行的操作。指示计算机要执行的操作。操作数字段操作数字段:指出在指令执行过程中所需要的操作数。指出在指令执行过程中所需要的操作数。 可以是操作数本身可以是操作数本身 可以是操作数地址可以是操作数地址具体形式:具体形式: 可以是地址的一部分可以是地址的一部分 可以是指向操作数地址的指针可以是指向操作数地址的指针 可以是其他有关操作数的信息可以是其他有关操作数的信息第3章
2、8086的寻址方式和指令系统 3.1.1 3.1.1 与数据有关的寻址方式与数据有关的寻址方式立即数寻址立即数寻址寄存器寻址寄存器寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址寄存器相对寻址寄存器相对寻址 基址变址寻址基址变址寻址相对基址变址寻址相对基址变址寻址第3章 8086的寻址方式和指令系统 1立即数寻址 定定 义:义:操作数直接放在指令中,作为指令的一部分存放在代码段操作数直接放在指令中,作为指令的一部分存放在代码段里,这种操作数称为立即操作数,该寻址方式就是立即数寻址方式。里,这种操作数称为立即操作数,该寻址方式就是立即数寻址方式。 操 作 数指 令说说 明:明: 立即数可以是位或
3、立即数可以是位或1616位的。如果是位的。如果是1616位立即数,则高位立即数,则高8 8位放在位放在高地址高地址, ,低低8 8位放在低地址。位放在低地址。 使用场合:由于立即数用来表示常数,所以立即数寻址方式经使用场合:由于立即数用来表示常数,所以立即数寻址方式经常用于给寄存器赋初值。常用于给寄存器赋初值。只能用于源操作数字段,不能用于目的操作数字段。只能用于源操作数字段,不能用于目的操作数字段。 由于立即数可以从指令中直接取得,因此由于立即数可以从指令中直接取得,因此CPUCPU不需要另外占用总不需要另外占用总线周期去取操作数,故立即数寻址方式显著的特点就是速度快。线周期去取操作数,故立
4、即数寻址方式显著的特点就是速度快。图图3.1 立即数寻址立即数寻址第3章 8086的寻址方式和指令系统 指令代码指令代码操作数操作数指指 令令例如:MOV AH,28H第3章 8086的寻址方式和指令系统 2寄存器寻址 定义:操作数在指定的寄存器中,指令中给出寄存器编号。定义:操作数在指定的寄存器中,指令中给出寄存器编号。说说 明:明: 对于对于16位操作数,可以用字寄存器:、位操作数,可以用字寄存器:、 、以及段寄存器;、以及段寄存器; 对于位操作数,可以用字节寄存器:、对于位操作数,可以用字节寄存器:、 、;、; 因为该寻址方式操作数在寄存器中,不需访问存储器,因为该寻址方式操作数在寄存器
5、中,不需访问存储器, 所以存取速度较高。所以存取速度较高。 图图3.3 寄存器寻址寄存器寻址第3章 8086的寻址方式和指令系统 C P U指指 令令寄存器编号寄存器编号寄寄 存存 器器操操 作作 数数C P U例如:MOV AH,28H例如:MOV AL, AH第3章 8086的寻址方式和指令系统 定义:定义:在指令中直接给出位移量,它存放在代码段中指令操作码之后,在指令中直接给出位移量,它存放在代码段中指令操作码之后,它可能是一个数值地址,也可能是符号地址。它可能是一个数值地址,也可能是符号地址。图图3.5 直接寻址直接寻址 3直接寻址直接寻址 说说 明:明: 当操作数在内存中,必须先求出
6、操作数的物理地址,然后再根据物理地址访问存储当操作数在内存中,必须先求出操作数的物理地址,然后再根据物理地址访问存储器从而取得操作数。物理地址器从而取得操作数。物理地址PA16D(段寄存器段寄存器)+EA ( EA 是有效地址是有效地址) 操作数一般在内存数据段中,物理地址操作数一般在内存数据段中,物理地址PA16(DS)+EA=16(DS)+位移量位移量 汇编语言中可以用变量名(符号地址)代替数值地址,但要注意变量属性,在计算汇编语言中可以用变量名(符号地址)代替数值地址,但要注意变量属性,在计算其物理地址时也默认以其物理地址时也默认以DS来提供段基值。来提供段基值。 IBM PC机允许数据
7、存放在数据段以外的其它段中(可以是机允许数据存放在数据段以外的其它段中(可以是CS,SS,ES),但必),但必须在指令中用段跨越(超越)前缀来指定。须在指令中用段跨越(超越)前缀来指定。第3章 8086的寻址方式和指令系统 +指指 令令段内偏移地址段内偏移地址数据段寄存器数据段寄存器DS段段 基基 址址C P U操操 作作 数数例如:MOV BH,1028H第3章 8086的寻址方式和指令系统 4寄存器间接寻址寄存器间接寻址 定义:操作数的有效地址定义:操作数的有效地址EA在基址寄存器在基址寄存器(BX/BP)或变址寄存器或变址寄存器(SI/DI)中,而操作数在内存中。中,而操作数在内存中。图
8、图3.7 寄存器间接寻址寄存器间接寻址第3章 8086的寻址方式和指令系统 说明:说明: 若选择若选择BXBX或或SISI或或DIDI寄存器提供的间址,则操作数一般在数据段寄存器提供的间址,则操作数一般在数据段区域中,用区域中,用DSDS提供段基址,即操作数物理地址为:提供段基址,即操作数物理地址为:物理地址物理地址PA=16PA=16(DSDS)+ EA=16+ EA=16(DSDS)+ +(BXBX)或()或(SISI)或)或(DIDI)若选择若选择BPBP寄存器提供的间址,则操作数在堆栈段区域中,用寄存器提供的间址,则操作数在堆栈段区域中,用SSSS提提供段基址,即操作数物理地址为:供段
9、基址,即操作数物理地址为: 物理地址物理地址PA=16PA=16(SSSS)+ EA =16+ EA =16(SSSS)+ +(BPBP) 用用SISI、DIDI、BXBX、BPBP作为间接寻址时允许使用段跨越前缀,从而作为间接寻址时允许使用段跨越前缀,从而实现对其它段中数据的存取。实现对其它段中数据的存取。 用途:这种寻址方法适用于数组、字符串、表格的处理。用途:这种寻址方法适用于数组、字符串、表格的处理。第3章 8086的寻址方式和指令系统 例如:MOV CL,BX第3章 8086的寻址方式和指令系统 5 5寄存器相对寻址寄存器相对寻址 定义:定义:操作数的有效地址是一个基址或变址寄存器的
10、操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的内容和指令中指定的8 8位或位或1616位位移量之和。寻址方式如位位移量之和。寻址方式如图图3.93.9所示:所示:图图3.9 寄存器相对寻址方式寄存器相对寻址方式第3章 8086的寻址方式和指令系统 若选择若选择BPBP寄存器提供的基地址,则操作数在堆栈段区域中,用寄存器提供的基地址,则操作数在堆栈段区域中,用SSSS提供段基址,即操作数物理地址为:提供段基址,即操作数物理地址为: 物理地址物理地址PA=16DPA=16D(SSSS)+EA=16D+EA=16D(SSSS)+ +位移量位移量+ +(BPBP) 说明:说明: 若选择若选
11、择BX或或SI或或DI寄存器提供的基地址或变地址,则操作数寄存器提供的基地址或变地址,则操作数一般在数据段区域中,用一般在数据段区域中,用DS提供段基址,即操作数物理地址为:提供段基址,即操作数物理地址为:物理地址物理地址PA=16(DS)+ EA=16(DS)+位移量位移量+(BX)或(或(SI)或()或(DI) 寄存器相对寻址方式允许使用段跨越前缀。寄存器相对寻址方式允许使用段跨越前缀。 用途:也适用于数组、字符串、表格的处理。用途:也适用于数组、字符串、表格的处理。第3章 8086的寻址方式和指令系统 例如:MOV CL,20HBX第3章 8086的寻址方式和指令系统 6 6基址变址寻址
12、基址变址寻址 定义:定义:操作数的有效地址是一个基址寄存器和一个变操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,基址寄存器名和变址寄存器名均址寄存器的内容之和,基址寄存器名和变址寄存器名均由指令指定。寻址方式如图由指令指定。寻址方式如图3.113.11所示:所示:图图3.11 基址变址寻址基址变址寻址第3章 8086的寻址方式和指令系统 说明:说明:若选择若选择BX寄存器提供基地址,寄存器提供基地址,SI或或DI寄存器提供变地址,则操作数寄存器提供变地址,则操作数一般在数据段区域中,用一般在数据段区域中,用DS提供段基址,即操作数物理地址为:提供段基址,即操作数物理地址为:物理地
13、址物理地址PA=16(DS)+ EA=16(DS)+(BX)+(SI)或(DI)若选择若选择BPBP寄存器提供基地址,寄存器提供基地址,SISI或或DIDI寄存器提供变地址,则操作数寄存器提供变地址,则操作数在堆栈段区域中,用在堆栈段区域中,用SSSS提供段基址,即操作数物理地址为:提供段基址,即操作数物理地址为:物理地址物理地址PA=16PA=16(SSSS)+EA=16+EA=16(SSSS)+ +(BPBP)+ +(SISI)或()或(DIDI)必须是一个基址寄存器和一个变址寄存器的组合;必须是一个基址寄存器和一个变址寄存器的组合;寄存器相对寻址方式允许使用段跨越前缀,适用于数组、字符串
14、、寄存器相对寻址方式允许使用段跨越前缀,适用于数组、字符串、表格的处理。表格的处理。第3章 8086的寻址方式和指令系统 例如:MOV CL,BX+SI第3章 8086的寻址方式和指令系统 7 7相对基址变址寻址相对基址变址寻址 定定 义:义:操作数的有效地址是一个基址寄存器和一个变址寄操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和存器的内容和8 8位或位或1616位位移量之和。寻址方式如位位移量之和。寻址方式如图图3.133.13所示:所示:图图3.13 相对基址变址寻址相对基址变址寻址第3章 8086的寻址方式和指令系统 若选择若选择BP寄存器提供基地址,寄存器提供基地址,SI或
15、或DI寄存器提供变地址,则操寄存器提供变地址,则操作数在堆栈段区域中,用作数在堆栈段区域中,用SS提供段基址,即操作数物理地址为:提供段基址,即操作数物理地址为:物理地址物理地址PA=16(SS)+ EA=16(SS)+位移量位移量+(BP)+(SI)或()或(DI) 说明: 若选择若选择BX寄存器提供基地址,寄存器提供基地址,SI或或DI寄存器提供变地址,则寄存器提供变地址,则操作数一般在数据段区域中,用操作数一般在数据段区域中,用DS提供段基址,即操作数物理地提供段基址,即操作数物理地址为:址为:物理地址物理地址PA=16(DS)+ EA=16(DS)+位移量位移量+(BX)+(SI)或(
16、)或(DI) 这种寻址方式为处理堆栈中的数组提供方便:用这种寻址方式为处理堆栈中的数组提供方便:用BPBP可指向栈顶,可指向栈顶,位移量表示数组第一个元素到栈顶的距离,变址寄存器指向数组位移量表示数组第一个元素到栈顶的距离,变址寄存器指向数组元素。元素。第3章 8086的寻址方式和指令系统 例如:MOV CL,BX+SI+15H例如:MOV CL,15H BX SI第3章 8086的寻址方式和指令系统 3.1.2 与转移地址有关的寻址方式与转移地址有关的寻址方式 1段内直接寻址段内直接寻址 定义:转向的有效地址定义:转向的有效地址EA是当前是当前IP寄存器的内容寄存器的内容和指令中指定的和指令
17、中指定的8位或位或16位位移量之和。寻址方式如位位移量之和。寻址方式如图图3.15所示:所示:图图3.15 段内直接寻址段内直接寻址 第3章 8086的寻址方式和指令系统 说明:说明:(1)在机器指令中,转向的有效地址在机器指令中,转向的有效地址EA用相对于当前用相对于当前IP值的位值的位移量来表示,位移量移量来表示,位移量=转向有效地址(当前转向有效地址(当前IP)(2)对于对于16位的位移量,它可正可负,取值范围是位的位移量,它可正可负,取值范围是3276832767;对于;对于8位的位移量,它也可正可负,取值范围是位的位移量,它也可正可负,取值范围是128127;(3)这种寻址方式适用于
18、条件转移、无条转移指令及调用指令这种寻址方式适用于条件转移、无条转移指令及调用指令CALL。(4)指令汇编语言格式:指令汇编语言格式:JMP NEAR PTR LL1 ;(;(IP)(当前(当前IP)+16位位移量位位移量JMP SHORT LL2 ;(;(IP)(当前(当前IP)+8位位移量位位移量第3章 8086的寻址方式和指令系统 2 2段内间接寻址段内间接寻址 定义:定义:转向的有效地址是一个寄存器或一个存储单元的转向的有效地址是一个寄存器或一个存储单元的内容,该内容可以用数据寻址方式中除立即数以外的任何一内容,该内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,然后用得到的
19、转向有效地址来取代种寻址方式取得,然后用得到的转向有效地址来取代IPIP寄存寄存器的内容。寻址方式如图器的内容。寻址方式如图3.173.17所示:所示:图图3.17 段内间接寻址段内间接寻址第3章 8086的寻址方式和指令系统 说明:说明:(1 1)这种寻址方式和以下二种段间寻址方式都不能用于条件转移这种寻址方式和以下二种段间寻址方式都不能用于条件转移指令,而无条件转移指令指令,而无条件转移指令JMPJMP和调用指令和调用指令CALLCALL则可用则可用4 4种寻址方式种寻址方式中的任意一种。中的任意一种。(2 2)汇编格式:汇编格式:JMP BXJMP BX JMP WORD PTR BX
20、JMP WORD PTR BX其中:其中:WORD PTRWORD PTR用以指出用以指出BXBX寻址所取得转向地址是一个字的有寻址所取得转向地址是一个字的有效地址。效地址。(3 3)以上两种寻址方式都是段内转移,所以直接把求得的有效地以上两种寻址方式都是段内转移,所以直接把求得的有效地址送到址送到IPIP寄存器就可以了。计算物理地址公式为:寄存器就可以了。计算物理地址公式为: 物理地址:物理地址:PA=16PA=16(CSCS)+ EA+ EA第3章 8086的寻址方式和指令系统 3 3段间直接寻址段间直接寻址 定义:指令中直接提供转向段基址和偏移地址,从而实定义:指令中直接提供转向段基址和
21、偏移地址,从而实现从一段转移到另一段的操作。寻址方式如图现从一段转移到另一段的操作。寻址方式如图3.183.18所示:所示:图图3.18 3.18 段间直接寻址段间直接寻址 说明:说明:(1 1)用指令中指定的偏移地址用指令中指定的偏移地址IPIP,用指令中指定的段地址,用指令中指定的段地址CSCS(2 2)指令的汇编语言格式:指令的汇编语言格式: JMP FAR PTR LLLJMP FAR PTR LLL第3章 8086的寻址方式和指令系统 说明:说明:(1 1)用内存中两个相继字(即双字)的低字取代用内存中两个相继字(即双字)的低字取代IPIP,高字取代,高字取代CSCS;(2 2)指令
22、汇编语言格式:指令汇编语言格式: JMP DWORD PTR BXJMP DWORD PTR BX 其中,其中,DWORD PTRDWORD PTR是双字操作符,转向地址双字(段间转移),是双字操作符,转向地址双字(段间转移),BXBX是数据寻址方式的寄存器间接寻址。是数据寻址方式的寄存器间接寻址。4 4段间间接寻址段间间接寻址定义:定义:用内存中两个相继字的内容取代用内存中两个相继字的内容取代IPIP、CSCS。内存单元的地址由。内存单元的地址由紧跟在操作码之后除立即数方式和寄存器方式以外的任何一种寻址紧跟在操作码之后除立即数方式和寄存器方式以外的任何一种寻址方式取得。寻址方式为:方式取得。
23、寻址方式为:图图3.20 段间间接寻址段间间接寻址第3章 8086的寻址方式和指令系统 3.2 80863.2 8086的指令系统的指令系统 数据传送指令数据传送指令(Data transfer Instruction)(Data transfer Instruction) 算术运算指令(算术运算指令(Arithmetic InstuctionArithmetic Instuction) 逻辑运算和移位指令逻辑运算和移位指令(Logic & Shift Instruction)(Logic & Shift Instruction) 串操作指令串操作指令(String manipulation
24、Instruction)(String manipulation Instruction) 控制转移指令(控制转移指令(Control Transfer InstructionControl Transfer Instruction) 处理器控制指令(处理器控制指令(Processor Control InstructionProcessor Control Instruction)第3章 8086的寻址方式和指令系统 3.2.1 数据传送指令 CPUCPU的寄存器之间的寄存器之间80868086数据传送指令用于实现数据传送指令用于实现 CPUCPU与存储器之间与存储器之间 的数据传送的数据传
25、送 CPUCPU与与I/OI/O端口之间端口之间 立即数向寄存器或存储器立即数向寄存器或存储器 通用传送指令通用传送指令数据传送指令有四种:数据传送指令有四种: 累加器专用传送指令累加器专用传送指令 地址传送指令地址传送指令 标志传送指令标志传送指令 第3章 8086的寻址方式和指令系统 (1 1)MOV (Movement)MOV (Movement)传送指令传送指令格式:格式:MOV destMOV dest,srcsrc执行的操作:(执行的操作:(destdest)(src)(src) 把源操作数的内容传送给目的操作数。对标志位没有影响;可把源操作数的内容传送给目的操作数。对标志位没有影
26、响;可以完成字节(或字)型传送,但源操作数和目的操作数之间的长度以完成字节(或字)型传送,但源操作数和目的操作数之间的长度必须匹配。必须匹配。1通用传送指令通用传送指令(除了通用传送指令(除了XCHGXCHG以外)是唯一允许以段寄存器为操作数的指令。以外)是唯一允许以段寄存器为操作数的指令。图图3.21 MOV指令数据传送方向指令数据传送方向第3章 8086的寻址方式和指令系统 MOVMOV指令能实现以下操作:指令能实现以下操作: CPU CPU内部寄存器之间数据的任意传送(除了代码段寄存器内部寄存器之间数据的任意传送(除了代码段寄存器CSCS和指令指针和指令指针IPIP以外),以外),但段寄
27、存器之间不能直接传送。但段寄存器之间不能直接传送。 立即数传送至立即数传送至CPUCPU内部通用寄存器(内部通用寄存器(AXAX、BXBX、CXCX、DXDX、BPBP、SPSP、SISI、DIDI),用于给寄存器赋初值,或者传送给存储器。),用于给寄存器赋初值,或者传送给存储器。但但不能直接给段寄存器赋值。不能直接给段寄存器赋值。 CPU CPU内部寄存器(除内部寄存器(除CSCS和和IPIP外)与存储器之间的数据传送,可外)与存储器之间的数据传送,可实现一个字节或一个字的传送,实现一个字节或一个字的传送,但存储单元之间不能直接传送。但存储单元之间不能直接传送。第3章 8086的寻址方式和指
28、令系统 使用使用MOVMOV指令,应注意以下几点:指令,应注意以下几点:两个存储单元之间不能直接传送数据;两个存储单元之间不能直接传送数据;立即数不能直接传送给段寄存器;立即数不能直接传送给段寄存器;段寄存器之间不能直接传送数据;段寄存器之间不能直接传送数据;立即数不能作为目的操作数;立即数不能作为目的操作数;CSCS和和IPIP不能作为目的操作数。不能作为目的操作数。 如:如:MOV MOV CSCS,AX AX ;(非法);(非法)CXCX和和AXAX不能作为间接寻址的寄存器。不能作为间接寻址的寄存器。 如:如:MOV MOV ALAL,CX CX ;(非法);(非法)第3章 8086的寻
29、址方式和指令系统 (2 2)PUSH PUSH 进栈指令进栈指令 格式:格式:PUSH srcPUSH src 执行的操作:(执行的操作:(SPSP)(SPSP)2 2 (SPSP)+1+1,(,(SPSP)(srcsrc)(3 3)POP POP 出栈指令出栈指令 格式:格式:POP destPOP dest 执行的操作:(执行的操作:(destdest)(SPSP)+1+1,(,(SPSP) (SPSP)(SPSP)2 2第3章 8086的寻址方式和指令系统 例如:PUSH AX例如:POP BX第3章 8086的寻址方式和指令系统 使用堆栈操作指令需注意以下几点: 堆栈操作都堆栈操作都按
30、字操作按字操作,(PUSH AL非法、非法、POP AL非法非法); PUSH和和POP指令的操作数有三种:通用寄存器、段寄存器(指令的操作数有三种:通用寄存器、段寄存器(CS除除 外,外,PUSH CS合法,合法,POP CS非法)、存储器;非法)、存储器; 当字数据进栈时,将它的低字节放到低地址,高字节放到高地址;当字数据进栈时,将它的低字节放到低地址,高字节放到高地址; 当字数据出栈时,注意它的低字节在低地址,高字节在高地址;当字数据出栈时,注意它的低字节在低地址,高字节在高地址; 堆栈的最大容量就是堆栈的最大容量就是SP的初始化值;的初始化值; 堆栈原则是堆栈原则是“后进先出后进先出”
31、。因此,保存和恢复字数据时,。因此,保存和恢复字数据时,PUSH、POP 指令应该成对使用,以保证数据的正确性和保持堆栈原有状态。指令应该成对使用,以保证数据的正确性和保持堆栈原有状态。第3章 8086的寻址方式和指令系统 (4 4)XCHGXCHG交换指令交换指令 格式:格式:XCHG destXCHG dest,srcsrc 执行的操作:执行的操作:(dest)(src)(dest)(src) 即源操作数与目的操作数相交换。它可以实现字节交换,也可即源操作数与目的操作数相交换。它可以实现字节交换,也可以实现字交换。交换的过程可以在以实现字交换。交换的过程可以在通用寄存器之间通用寄存器之间,
32、也可以在,也可以在通用通用寄存器与存储器寄存器与存储器之间进行。之间进行。使用交换指令,注意以下两点:使用交换指令,注意以下两点: 两个存储单元之间不能直接交换,两个操作数中必须有一个在寄两个存储单元之间不能直接交换,两个操作数中必须有一个在寄存器中。存器中。 段寄存器(段寄存器(CSCS、DSDS、SSSS、ESES)和指令指针)和指令指针IPIP不能用于交换指令。不能用于交换指令。 例如:XCHG AL,BL第3章 8086的寻址方式和指令系统 2. 2. 累加器专用传送指令累加器专用传送指令累加器累加器accacc(即(即AXAX或或ALAL)是数据传送的核心。)是数据传送的核心。(1
33、1)IN IN 输入指令输入指令长格式:长格式:IN ALIN AL,portport(字节端口地址)(字节端口地址) IN AXIN AX,portport(字端口地址)(字端口地址)执行的操作:(执行的操作:(ALAL)(portport) (AXAX)(port+1port+1,portport)短格式:短格式:IN ALIN AL,DXDX(代表字节端口地址)(代表字节端口地址) IN AXIN AX,DXDX(代表字端口地址)(代表字端口地址)执行的操作:(执行的操作:(ALAL)(DXDX) (AXAX)(DXDX)+1+1,(,(DXDX)直接寻址方式直接寻址方式间接寻址方式间接
34、寻址方式第3章 8086的寻址方式和指令系统 (2 2)OUT OUT 输出指令输出指令长格式:长格式: OUT portOUT port,ALAL OUT port OUT port,AXAX执行的操作:(执行的操作:(portport)(ALAL) (port+1port+1,portport)(AXAX)短格式:短格式: OUT DXOUT DX,ALAL OUT DX OUT DX,AXAX执行的操作:(执行的操作:(DXDX)(ALAL) (DXDX)+1+1,(,(DXDX)(AXAX)即直接寻址方式即直接寻址方式即间接寻址方式即间接寻址方式第3章 8086的寻址方式和指令系统 (
35、3 3)XLAT XLAT 换码指令换码指令格式:格式:XLAT str_tableXLAT str_table 或或 XLATXLATstr_tablestr_table表格符号地址(首地址),只是为了提高可读性而设置,表格符号地址(首地址),只是为了提高可读性而设置,是可有可无的,而指令执行时只会使用预先已经存入是可有可无的,而指令执行时只会使用预先已经存入BXBX中的表格首地中的表格首地址。该指令不影响标志位。址。该指令不影响标志位。执的行操作:(执的行操作:(ALAL)(BXBX)+ +(ALAL)XLATXLAT指令使用方法:指令使用方法: 先建立一个字节表格,表格的内容就是所要换取
36、的代码;先建立一个字节表格,表格的内容就是所要换取的代码; 然后将表格首地址存入然后将表格首地址存入BXBX; 将要换取的代码的序号(相对于表格首地址的位移量)存入将要换取的代码的序号(相对于表格首地址的位移量)存入ALAL; 最后再使用最后再使用XLATXLAT,该指令执行后,转换后的代码就被装入了,该指令执行后,转换后的代码就被装入了ALAL。第3章 8086的寻址方式和指令系统 TAB第3章 8086的寻址方式和指令系统 3. 3. 地址传送指令地址传送指令共有三条将地址指针写入指定寄存器和段寄存器的指令。共有三条将地址指针写入指定寄存器和段寄存器的指令。 (1 1)LEA LEA 有效
37、地址送寄存器指令有效地址送寄存器指令 格式:格式:LEA reg16LEA reg16,mem16mem16执行的操作:(执行的操作:(reg16reg16) EA EA 该指令把源操作数的有效地址装入指定的寄存器。通常用该指令把源操作数的有效地址装入指定的寄存器。通常用于加载有效地址,或预置地址指针。于加载有效地址,或预置地址指针。使用使用LEALEA指令,注意以下两点:指令,注意以下两点: LEA LEA指令中的目标寄存器必须是指令中的目标寄存器必须是1616位的通用寄存器,源操作位的通用寄存器,源操作数必须是一个数必须是一个1616位的存储器操作数。位的存储器操作数。 LEA LEA指令
38、与指令与MOVMOV指令注意比较使用。指令注意比较使用。 例如:LEA BX,TAB第3章 8086的寻址方式和指令系统 (2 2)LDS LDS 地址指针送寄存器和地址指针送寄存器和DSDS指令指令 格式:格式:LDS reg16, mem32LDS reg16, mem32执行的操作:执行的操作:(reg16)(EA)(reg16)(EA) (DS)(EA)+2) (DS)(EA)+2) 该指令是将源操作数四个相继的字节分别送给指令指定的寄存该指令是将源操作数四个相继的字节分别送给指令指定的寄存器和器和DSDS。即将指令指定。即将指令指定mem32mem32单元的前两个字节单元内容单元的前
39、两个字节单元内容(16(16位偏移位偏移量量) )装入指定通用寄存器,把后两个字节单元内容装入指定通用寄存器,把后两个字节单元内容( (段地址段地址) ) 装入到装入到DSDS段寄存器。段寄存器。第3章 8086的寻址方式和指令系统 第3章 8086的寻址方式和指令系统 (3 3)LES LES 地址指针送寄存器和地址指针送寄存器和ESES指令指令 格式:格式:LES reg16, mem32LES reg16, mem32执行的操作:(执行的操作:(reg16reg16)(EAEA) (ESES)(EAEA)+2+2) 该指令是将源操作数四个相继的字节分别送给指令指定的该指令是将源操作数四个
40、相继的字节分别送给指令指定的寄存器和寄存器和ESES。即将指令指定。即将指令指定mem32mem32单元的前两个字节单元内容单元的前两个字节单元内容(16(16位偏移量位偏移量) )装入指定通用寄存器,后两个字节单元内容装入指定通用寄存器,后两个字节单元内容( (段地址段地址) ) 装入到装入到ESES段寄存器。用于写远地址指针。段寄存器。用于写远地址指针。例如:LEA DI,BX第3章 8086的寻址方式和指令系统 4. 4. 标志寄存器传送指令标志寄存器传送指令 80868086指令系统中提供了对标志寄存器的传送指令,通过这指令系统中提供了对标志寄存器的传送指令,通过这些指令可以读出当前标
41、志寄存器的内容,也可以对标志寄存器些指令可以读出当前标志寄存器的内容,也可以对标志寄存器重新设置新值。重新设置新值。80868086指令系统中有以下四条标志传送指令:指令系统中有以下四条标志传送指令:(1 1)LAHF LAHF 标志位送标志位送AHAH 格式:格式:LAHFLAHF执行的操作:(执行的操作:(AHAH)(标志寄存器(标志寄存器PSWPSW的低字节)的低字节) (2 2)SAHF AHSAHF AH送标志寄存器送标志寄存器 格式:格式:SAHFSAHF执行的操作:(标志寄存器执行的操作:(标志寄存器PSWPSW的低字节)的低字节)(AHAH) 第3章 8086的寻址方式和指令系
42、统 (3 3)PUSHF PUSHF 标志寄存器进栈指令标志寄存器进栈指令 格式:格式:PUSHFPUSHF执行的操作:(执行的操作:(SPSP)(SPSP)2 2 (SPSP)+1+1,(,(SPSP)(PSWPSW) (4 4)POPFPOPF(Pop flags off stackPop flags off stack)标志寄存器出栈指令)标志寄存器出栈指令 格式:格式:POPFPOPF执行的操作:(执行的操作:(PSWPSW)(SPSP)1 1,(,(SPSP), , (SPSP)(SPSP)2 2 使用标志位传送指令,使用标志位传送指令,注意以下两点:注意以下两点: LAHFLAHF
43、、PUSHFPUSHF不影响标志位不影响标志位,SAHF,SAHF、POPFPOPF由装入的值确定标志由装入的值确定标志位的值,即影响标志位。位的值,即影响标志位。 PUSHFPUSHF和和POPFPOPF一般分别用于子程序或中断服务程序的首尾,起一般分别用于子程序或中断服务程序的首尾,起保护主程序标志和恢复主程序标志的作用。保护主程序标志和恢复主程序标志的作用。第3章 8086的寻址方式和指令系统 数据传送指令小节数据传送指令小节MOVPUSH POPXCHGIN OUTXLATLEA LDS LESLAHF SAHF PUSHF POPF第3章 8086的寻址方式和指令系统 3.2.2 3
44、.2.2 算术运算指令算术运算指令 加法指令加法指令 减法指令减法指令算术运算指令算术运算指令 乘法指令乘法指令 除法指令除法指令 辅助指令(辅助指令(十进制调整指令等十进制调整指令等)第3章 8086的寻址方式和指令系统 1. 1. 加法指令加法指令80868086具有具有3 3种加法操作指令:种加法操作指令:(1 1)ADD ADD 不带进位加法指令不带进位加法指令 格式:格式:ADD destADD dest,srcsrc执行的操作:执行的操作:(dest) (dest)+(src)(dest) (dest)+(src)使用使用ADDADD指令,指令,注意以下三点:注意以下三点: 可以进
45、行可以进行8 8位、位、1616位的无符号数和带符号数的加法运算;位的无符号数和带符号数的加法运算; 源操作数和目标操作数不能同时为存储器操作数;源操作数和目标操作数不能同时为存储器操作数; 该指令影响标志位该指令影响标志位SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF。 例如: ADD AL,30第3章 8086的寻址方式和指令系统 (2 2)ADC ADC 带进位加法指令带进位加法指令格式:格式:ADC destADC dest,srcsrc执行的操作:(执行的操作:(destdest)(destdest)+ +(srcsrc)+CF+CF其中其中CFCF为进位标志的
46、现行值。为进位标志的现行值。使用使用ADCADC指令,指令,注意以下两点:注意以下两点: 它与它与ADDADD指令相似,只是在两个操作数相加时,要指令相似,只是在两个操作数相加时,要把其前面指令产生的进位标志把其前面指令产生的进位标志CFCF的现行值加上去。的现行值加上去。 主要用于多字节运算。主要用于多字节运算。第3章 8086的寻址方式和指令系统 (3 3)INC INC 加加1 1指令指令 格式:格式:INC destINC dest执行的操作:执行的操作:(dest)(dest)(destdest)+1+1 使操作数的内容加使操作数的内容加1 1,然后再送回该操作数。该操,然后再送回该
47、操作数。该操作数可以是寄存器操作数或存储器操作数。作数可以是寄存器操作数或存储器操作数。使用使用INCINC指令,指令,注意以下两点:注意以下两点: 标志位影响:它影响标志位影响:它影响SF,ZF,AF,PF,OFSF,ZF,AF,PF,OF,不影响,不影响CFCF; 主要用于在循环程序中修改地址指针和循环次数。主要用于在循环程序中修改地址指针和循环次数。 例如: INC CL第3章 8086的寻址方式和指令系统 2. 2. 减法指令减法指令(1 1)SUB SUB 不带借位减法指令不带借位减法指令 格式:格式:SUB destSUB dest,srcsrc;执行的操作:(执行的操作:(des
48、tdest)(destdest)()(srcsrc) 使用使用SUBSUB指令,指令,注意注意以下三点:以下三点: 它可以进行它可以进行8 8位、位、1616位的无符号数和带符号位的无符号数和带符号数的减法运算;数的减法运算; 它的源操作数和目标操作数不能同时为存储它的源操作数和目标操作数不能同时为存储器操作数;器操作数; 该指令影响标志位该指令影响标志位SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF。第3章 8086的寻址方式和指令系统 (2 2)SBB SBB 带借位减法指令带借位减法指令 格式:格式:SBB destSBB dest,srcsrc执行的操作:执行的操
49、作:(destdest)(destdest)()(srcsrc)CFCF其中其中CFCF表示进位表示进位( (借位借位) )标志位标志位CFCF的现行值。的现行值。使用使用SBBSBB指令,指令,注意以下两点:注意以下两点: 它与它与SUBSUB指令相似,只是在两个操作数相减时,指令相似,只是在两个操作数相减时,要把其前面指令产生的进位要把其前面指令产生的进位( (借位借位) )标志标志CFCF的现行的现行值减出去。值减出去。 主要用于多字节运算中。主要用于多字节运算中。第3章 8086的寻址方式和指令系统 (3 3)DEC DEC 减减1 1指令指令 格式:格式:DEC destDEC de
50、st执行的操作:执行的操作:(dest)(dest)(destdest)1 1 使操作数的内容减使操作数的内容减1 1,然后再送回该操作数。该操作,然后再送回该操作数。该操作数可以是寄存器操作数或存储器操作数。数可以是寄存器操作数或存储器操作数。使用使用DECDEC指令,指令,注意以下两点:注意以下两点: 标志位影响情况:影响标志位影响情况:影响SF,ZF,AF,PF,OFSF,ZF,AF,PF,OF,不影响,不影响CFCF; 主要用于在循环程序中修改地址指针和循环次数。主要用于在循环程序中修改地址指针和循环次数。例如: DEC BL第3章 8086的寻址方式和指令系统 即把操作数按位求反后末
51、位即把操作数按位求反后末位+1+1,该操作可以表示为:,该操作可以表示为:(destdest)0FFFFH0FFFFH(destdest)+1+1 该指令要影响标志位:该指令要影响标志位:SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF,特,特别要注意别要注意CFCF和和OFOF: CFCF:只有操作数为:只有操作数为0 0时求补时求补,CF=0,CF=0;否则;否则CF=1CF=1; OFOF:只有对操作数:只有对操作数128 128 或或3276832768求补,求补,OF=1OF=1;否则否则OF=0OF=0; (4 4)NEG NEG 求补指令求补指令格式:格式:N
52、EG destNEG dest执行的操作:执行的操作:(dest)0(dest)0(dest)(dest)该指令是求该指令是求补数补数,而不是求而不是求补码补码。第3章 8086的寻址方式和指令系统 (5 5)CMP CMP 比较指令比较指令格式:格式:CMP destCMP dest,srcsrc执行的操作:(执行的操作:(destdest)()(srcsrc)不送回相减的结果,影响标志位:不送回相减的结果,影响标志位:SFSF,ZFZF,AFAF,PFPF,OFOF,CFCF。CMPCMP指令主要是比较来设置状态标志位的,讨论如下:指令主要是比较来设置状态标志位的,讨论如下: 由由ZFZF
53、,判断两数是否相等,两个数相减后:,判断两数是否相等,两个数相减后:ZF=1ZF=1,两数相等,两数相等 ZF=0ZF=0,两数不等,两数不等 由由CFCF,判断两个无符号数的大小,相减后:,判断两个无符号数的大小,相减后:CF=1CF=1,被减数小,被减数小 CF=0CF=0,减数小,减数小 由由SFSF、OFOF,判断两个带符号数的大小,判断两个带符号数的大小, 相减后:相减后: SFSF、OFOF相同,被减数比减数大相同,被减数比减数大 SFSF、OFOF相异,被减数比减数小相异,被减数比减数小例如:CMP AL,0FFH第3章 8086的寻址方式和指令系统 3. 3. 乘法指令乘法指令
54、(1 1)MUL MUL 无符号数乘法无符号数乘法格式:格式:MUL srcMUL src执行的操作:执行的操作:(srcsrc)为字节操作数:)为字节操作数: (AXAX)(ALAL)(srcsrc)(srcsrc)为字操作数:()为字操作数:(DXDX,AXAX)(AXAX)(srcsrc)(2 2)IMUL IMUL 带符号数乘法带符号数乘法格式:格式:IMUL srcIMUL src执行的操作:(执行的操作:(srcsrc)为字节操作数:)为字节操作数: (AXAX)(ALAL)(srcsrc) (srcsrc)为字操作数:()为字操作数:(DXDX,AXAX)(AXAX)(srcsr
55、c)第3章 8086的寻址方式和指令系统 MULMUL和和IMULIMUL指令执行的操作是一样的,只不过指令执行的操作是一样的,只不过MULMUL的运算的运算对象是无符数,而对象是无符数,而IMULIMUL的运算对象是带符号数。的运算对象是带符号数。 在乘法指令里面,目的操作数必须是累加器,字运算时在乘法指令里面,目的操作数必须是累加器,字运算时为为AXAX,字节运算时为,字节运算时为ALAL。 两个两个8 8位数相乘得到的位数相乘得到的1616位乘积保存在位乘积保存在AXAX中;当进行字中;当进行字乘法时,两个乘法时,两个1616位数相乘得到的位数相乘得到的3232位乘积存放在位乘积存放在D
56、XDX、AXAX寄存器寄存器对中,其中对中,其中DXDX存放高位字,存放高位字,AXAX存放低位字。存放低位字。说说 明:明: 乘法指令只影响乘法指令只影响CFCF和和OFOF,而对,而对AFAF、SFSF、ZFZF、PFPF未定义。未定义。 第3章 8086的寻址方式和指令系统 (1 1)DIV DIV 无符号数除法指令无符号数除法指令格式:格式:DIV srcDIV src执行的操作:执行的操作:(srcsrc)为字节操作数:)为字节操作数: (ALAL)(AXAX)/ /(srcsrc)的商)的商 (AHAH)(AXAX)/ /(srcsrc)的余数)的余数(srcsrc)为字操作数:(
57、)为字操作数:(AXAX)(DXDX,AXAX)/ /(srcsrc)的商)的商 (DXDX)(DXDX,AXAX)/ /(srcsrc)的余数)的余数4. 除法指令除法指令(2 2)IDIV IDIV 带符号数除法指令带符号数除法指令格式:格式:IDIV srcIDIV src执行的操作:执行的操作:(SRCSRC)为字节操作数:()为字节操作数:(ALAL)(AXAX)/ /(srcsrc)的商)的商 (AHAH)(AXAX)/ /(srcsrc)的余数)的余数(SRCSRC)为字操作数:)为字操作数: (AXAX)(DXDX,AXAX)/ /(srcsrc)的商)的商 (DXDX)(DX
58、DX,AXAX)/ /(srcsrc)的余数)的余数第3章 8086的寻址方式和指令系统 说明:说明: 除法指令可以是除立即数寻址以外的任除法指令可以是除立即数寻址以外的任何一种寻址方式。何一种寻址方式。 除法指令对状态标志位没有定义。除法指令对状态标志位没有定义。 除法指令在字节操作时要求被除数为除法指令在字节操作时要求被除数为1616位放在位放在AXAX中,在字操作时要求被除数为中,在字操作时要求被除数为3232位放在位放在DXDX、AXAX寄存器对中。寄存器对中。第3章 8086的寻址方式和指令系统 (3 3)CBW CBW 字节转换为字指令字节转换为字指令 格式:格式:CBWCBW 执
59、行的操作:将执行的操作:将ALAL内容的符号扩展到内容的符号扩展到AHAH。 (ALAL)的最高有效位)的最高有效位0 0,则(,则(AHAH)=00H=00H (ALAL)的最高有效位)的最高有效位1 1,则(,则(AHAH)=0FFH=0FFH(4 4)CWD CWD 字转换为双字指令字转换为双字指令格式:格式:CWDCWD执行的操作:将执行的操作:将AXAX的内容符号扩展到的内容符号扩展到DXDX。 (AXAX)的最高有效位)的最高有效位0 0,则(,则(DXDX)=0000H=0000H (AXAX)的最高有效位)的最高有效位1 1,则(,则(DXDX)=0FFFFH=0FFFFH。第
60、3章 8086的寻址方式和指令系统 (1 1)DAA DAA 加法十进制调整指令加法十进制调整指令格式:格式:DAADAA执行的操作:把执行的操作:把ALAL中的和调整为压缩的中的和调整为压缩的BCDBCD码格式并保存到码格式并保存到ALAL中,这条指令之前必须执行中,这条指令之前必须执行ADDADD或或ADCADC指令。该指令的调指令。该指令的调 整方法如下:整方法如下: 如果如果AFAF标志为标志为1 1或者或者ALAL的低的低4 4位是十六进制的位是十六进制的A AF F,则,则ALAL的内容加的内容加06H06H,且将,且将AFAF位置位置1 1; 如果如果CFCF标志为标志为1 1或
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度船舶应急物资储备与配送合同3篇
- 2025年度跨境电商物流解决方案合同模板
- 二手挖掘机买卖合同协议书(2024版)
- 2025年度河北经贸大学消防系统电气安全检测与维护合同
- 2025年度长途租车合同协议范本
- 2025年度国际旅游服务代理合同规范文本
- 二零二五年度跨境电子商务代付款合同4篇
- 2025年度古董艺术品收藏品交易合同
- 2025版水电班组劳务合同样本:水电安装施工服务合同9篇
- 2025年度高品质不锈钢管材采购合同范本
- 2024-2025学年北京市丰台区高三语文上学期期末试卷及答案解析
- 2021年全国高考物理真题试卷及解析(全国已卷)
- 建设用地土壤污染风险评估技术导则(HJ 25.3-2019代替HJ 25.3-2014)
- JJG 692-2010无创自动测量血压计
- 徐州市2023-2024学年八年级上学期期末地理试卷(含答案解析)
- 饮料对人体的危害1
- 数字经济学导论-全套课件
- 中考记叙文阅读
- 产科沟通模板
- 2023-2024学年四川省成都市小学数学一年级下册期末提升试题
- GB/T 21709.13-2013针灸技术操作规范第13部分:芒针
评论
0/150
提交评论