![第三章80X86寻址方式及指令系统_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/648e2918-dad6-4226-a6a6-5843ffb49fd4/648e2918-dad6-4226-a6a6-5843ffb49fd41.gif)
![第三章80X86寻址方式及指令系统_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/648e2918-dad6-4226-a6a6-5843ffb49fd4/648e2918-dad6-4226-a6a6-5843ffb49fd42.gif)
![第三章80X86寻址方式及指令系统_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/648e2918-dad6-4226-a6a6-5843ffb49fd4/648e2918-dad6-4226-a6a6-5843ffb49fd43.gif)
![第三章80X86寻址方式及指令系统_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/648e2918-dad6-4226-a6a6-5843ffb49fd4/648e2918-dad6-4226-a6a6-5843ffb49fd44.gif)
![第三章80X86寻址方式及指令系统_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/648e2918-dad6-4226-a6a6-5843ffb49fd4/648e2918-dad6-4226-a6a6-5843ffb49fd45.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 80 x86寻址方式和指令系统第三章第三章 80X8680X86寻址方式和指令系统寻址方式和指令系统3.13.1 80X8680X86寻址方式寻址方式3.23.2 80X86 80X86指令格式指令格式3.33.3 80X86 80X86指令系统指令系统 第三章 80 x86寻址方式和指令系统3.1 80X863.1 80X86寻址方式寻址方式3.1.1 3.1.1 数据寻址方式数据寻址方式 操作数有可能在:操作数有可能在: (1 1) 代码段中,作为指令中的立即数代码段中,作为指令中的立即数 (2 2) CPUCPU寄存器中寄存器中 (3 3)存储器的数据区中)存储器的数据区中所以,
2、总的来说,数据寻址方式分为三种:所以,总的来说,数据寻址方式分为三种: 立即寻址立即寻址 寄存器寻址寄存器寻址 存储器寻址存储器寻址第三章 80 x86寻址方式和指令系统一、立即寻址一、立即寻址操作数操作数直接包含在直接包含在代码段的指令代码段的指令中。中。 如:如: MOV EAXMOV EAX,80000000H80000000H MOV BX MOV BX,6688H6688H MOV AL MOV AL,12H12H 立即数只能作为源操作数立即数只能作为源操作数 立即寻址主要用来给通用寄存器或存储器赋值立即寻址主要用来给通用寄存器或存储器赋值 不允许给段寄存器直接赋值不允许给段寄存器直
3、接赋值第三章 80 x86寻址方式和指令系统例例3.1 立即寻址立即寻址第三章 80 x86寻址方式和指令系统立即寻址过程示意立即寻址过程示意第三章 80 x86寻址方式和指令系统立即寻址动态示意立即寻址动态示意第三章 80 x86寻址方式和指令系统二、寄存器寻址二、寄存器寻址操作数操作数在在寄存器寄存器中。中。3232位寄存器:位寄存器:EAXEAX、EBXEBX、ECXECX、EDXEDX、ESPESP、EBPEBP、 ESIESI、EDIEDI1616位寄存器:位寄存器:AXAX、BXBX、CXCX、DXDX、SPSP、BPBP、SISI、 DIDI、CSCS、DSDS、SSSS、ESE
4、S、FSFS、GSGS8 8 位寄存器:位寄存器:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL 如:如:MOV AXMOV AX,BXBX MOV EDI MOV EDI,ESIESI MOV AL MOV AL,CLCL第三章 80 x86寻址方式和指令系统例例3.2 寄存器寻址寄存器寻址第三章 80 x86寻址方式和指令系统三、存储器寻址三、存储器寻址 操作数操作数在在存储器存储器中,其地址由指令以某种方式中,其地址由指令以某种方式指出。指出。(一)(一)1616位指令模式下:位指令模式下: 物理地址物理地址= =段基址段基址 10H 10H 有效地址有效
5、地址EAEA(二)(二)3232位指令模式下:位指令模式下: 物理地址物理地址= =段基址段基址 有效地址有效地址EAEAEAEA的计算方法根据采用的寻址方式不同而不同。的计算方法根据采用的寻址方式不同而不同。第三章 80 x86寻址方式和指令系统(一)一)1616位指令模式下的存储器寻址位指令模式下的存储器寻址 1616位指令模式寻址结构位指令模式寻址结构: :段基址段基址10H10H基址变址偏移量基址变址偏移量 基址:基址:BXBX、BPBP 变址:变址:SISI、DIDI 偏移量:偏移量:8 8位或位或1616位位 如果有效地址在如果有效地址在BXBX,SISI或或DIDI中,则以中,则
6、以DSDS寄存器内容为段基寄存器内容为段基址;如果有效地址在址;如果有效地址在BPBP中,则以中,则以SSSS段寄存器之内容为段基址。段寄存器之内容为段基址。如果使用段超越前缀(如果使用段超越前缀(CSCS:ESES:DSDS:SSSS:),操作数可以放在:),操作数可以放在冒号前指定的段。冒号前指定的段。 1616位指令模式寻址方式位指令模式寻址方式: : 直接寻址直接寻址 寄存器间接寻址寄存器间接寻址 寄存器相对寻址寄存器相对寻址 基址变址寻址基址变址寻址 相对基址变址寻址相对基址变址寻址 第三章 80 x86寻址方式和指令系统1 1、直接寻址、直接寻址操作数在存储器单元中。操作数在存储器
7、单元中。操作数所在的操作数所在的有效地址有效地址EAEA直接由指令指出直接由指令指出。 例例1 MOV AX1 MOV AX,3000H3000H 例例2 .data 2 .data 地址地址 数据数据1D26:000C 12 data1 db 12h1D26:000C 12 data1 db 12h1D26:000D 3355 data2 dw 5533H1D26:000D 3355 data2 dw 5533H .code .code .startup .startup1D24:0010 8A1E0C00 mov bl,data1;1D24:0010 8A1E0C00 mov bl,dat
8、a1;1D24:0014 A10D00 mov ax,data2;1D24:0014 A10D00 mov ax,data2; .exit .end .exit .end第三章 80 x86寻址方式和指令系统直接寻址过程示意直接寻址过程示意第三章 80 x86寻址方式和指令系统2 2、寄存器间接寻址、寄存器间接寻址 操作数的操作数的有效地址在有效地址在BXBX、BPBP或或SISI、DIDI中中,EAEA可表示为可表示为例例1 MOV AX1 MOV AX,BXBX例例2 MOV DL2 MOV DL,SISI( ( B B X X ) ) ( ( B B P P ) ) ( ( S S I
9、I ) ) ( ( D D I I ) ) E E A A = = 第三章 80 x86寻址方式和指令系统例例3.4 寄存器间接寻址寄存器间接寻址第三章 80 x86寻址方式和指令系统寄存器间接寻址过程示意寄存器间接寻址过程示意第三章 80 x86寻址方式和指令系统3 3、寄存器相对寻址、寄存器相对寻址操作数在存储单元中,其操作数在存储单元中,其有效地址有效地址EAEA可表示为可表示为 例例1 MOV AL1 MOV AL,BXBX4000H4000H亦可写成:亦可写成: MOV ALMOV AL,4000HBX4000HBX 例例2 MOV AX2 MOV AX,BP+2000HBP+200
10、0H( (B BX X) ) ( (B BP P) ) 8 8 位偏移量 ( (S SI I) ) 1 16 6 位偏移量 ( (D DI I) ) E EA A= = 第三章 80 x86寻址方式和指令系统例例3.6 寄存器相对寻址寄存器相对寻址第三章 80 x86寻址方式和指令系统寄存器相对寻址过程示意寄存器相对寻址过程示意第三章 80 x86寻址方式和指令系统4 4、基址变址寻址、基址变址寻址操作数在存储单元中,其有效地址操作数在存储单元中,其有效地址EAEA可表示为可表示为 以基址寄存器决定默认段寄存器;以基址寄存器决定默认段寄存器;BX-DSBX-DS;BP-SSBP-SS可以使用附
11、加段;可以使用附加段;MOV AXMOV AX,ES:2000HES:2000H将将ESES段中的段中的2000H2000H和和2001H2001H的内容赋给的内容赋给ALAL和和AHAH 例例1 MOV AX1 MOV AX,BXBXSI SI 或写成:或写成:MOV AXMOV AX,BXSIBXSI两种方式等价两种方式等价 例例2 MOV AX2 MOV AX,BX+DIBX+DI 例例3 MOV AX3 MOV AX,BP+SIBP+SI 例例4 MOV AX4 MOV AX,BP+DIBP+DI (BX) (SI) (BP) (DI) EA= 第三章 80 x86寻址方式和指令系统第
12、三章 80 x86寻址方式和指令系统例例3.7 基址变址寻址基址变址寻址第三章 80 x86寻址方式和指令系统基址变址寻址过程示意基址变址寻址过程示意第三章 80 x86寻址方式和指令系统5 5、相对基址变址寻址、相对基址变址寻址操作数在存储单元中,其操作数在存储单元中,其有效地址有效地址EAEA可表示为可表示为 一般以基址寄存器决定默认段寄存器;一般以基址寄存器决定默认段寄存器;以下几种方法的表示是等价的:以下几种方法的表示是等价的: 例例1 MOV AX1 MOV AX,BXBXSISI1500H1500H MOV AX MOV AX,1500BX+SI1500BX+SI MOV AX M
13、OV AX,1500BXSI1500BXSI MOV AX MOV AX,1500SIBX 1500SIBX 例例2 MOV AX2 MOV AX,BP+DI+1000HBP+DI+1000H (BX) (SI) 8 位偏移量 (BP) (DI) 16 位偏移量 EA= 第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统例例3.8 相对基址变址寻址相对基址变址寻址第三章 80 x86寻址方式和指令系统相对基址变址寻址过程示意相对基址变址寻址过程示意第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统(二)二)3232位指令模式下的存储器寻址位指
14、令模式下的存储器寻址 32 32位指令模式寻址结构由位指令模式寻址结构由5 5部分组成部分组成:段址段址基址变址比例因子偏移量基址变址比例因子偏移量 其中基址寄存器或变址寄存器可以是除其中基址寄存器或变址寄存器可以是除ESPESP以以外的任何外的任何3232位通用寄存器。当基址寄存器为位通用寄存器。当基址寄存器为EBPEBP时,时,默认段寄存器默认段寄存器SSSS存放段选择符,否则,默认存放段选择符,否则,默认DSDS存存放段选择符。也可使用段超越前缀来指定。比例放段选择符。也可使用段超越前缀来指定。比例因子为因子为1 1,2 2,4 4,8 8。偏移量为。偏移量为8 8位或位或3232位。位
15、。 第三章 80 x86寻址方式和指令系统3232位指令模式下的存储器寻址方式位指令模式下的存储器寻址方式1 1、直接寻址、直接寻址 如:如:MOV EAXMOV EAX,10000000H10000000H2 2、 间接寻址间接寻址 如:如:MOV EDXMOV EDX,ECXECX3 3、 相对基址寻址相对基址寻址 如:如:MOV ECXMOV ECX,EAX+80HEAX+80H4 4、 相对比例变址寻址相对比例变址寻址 如:如:MOV EBXMOV EBX,ESIESI* *4+80H4+80H5 5、 相对比例基址变址寻址相对比例基址变址寻址 如:如:MOV EAXMOV EAX,E
16、BP+EDIEBP+EDI* *4+80H4+80H第三章 80 x86寻址方式和指令系统3.1.2 3.1.2 程序地址寻址方式程序地址寻址方式一、相对寻址一、相对寻址 相对寻址为段内寻址,指令中给出带符号的相对偏相对寻址为段内寻址,指令中给出带符号的相对偏移量,程序目标地址为当前移量,程序目标地址为当前IPIP值加上相对偏移量作为偏移值加上相对偏移量作为偏移地址。地址。 二、二、 直接寻址直接寻址 直接寻址是指指令中直接给出转移指令的目标地址。在直接寻址是指指令中直接给出转移指令的目标地址。在段间转移中,指令中给出目标段地址或代码段的段描述符。段间转移中,指令中给出目标段地址或代码段的段描
17、述符。三、间接寻址三、间接寻址 间接寻址间接寻址 分段内和段间间接寻址,指令中以间接方分段内和段间间接寻址,指令中以间接方式给出转移指令的目标地址,通常存放在数据段。式给出转移指令的目标地址,通常存放在数据段。 第三章 80 x86寻址方式和指令系统3.1.3 3.1.3 堆栈地址寻址方式堆栈地址寻址方式字数据字数据进栈进栈步骤步骤: :1 1、(、(E E)SPSP11(E E)SPSP2 2、 高高8 8位位堆栈堆栈3 3、(、(E E)SPSP11(E E)SPSP4 4、低、低8 8位位堆栈堆栈字数据字数据出栈出栈步骤步骤: :1 1、栈顶内容、栈顶内容目标寄存器或目标单元的低目标寄存
18、器或目标单元的低8 8位位2 2、(、(E E)SPSP11(E E)SPSP3 3、栈顶内容、栈顶内容目标寄存器或目标单元的高目标寄存器或目标单元的高8 8位位4 4、(、(E E)SPSP11(E E)SPSP第三章 80 x86寻址方式和指令系统堆栈操作示意堆栈操作示意第三章 80 x86寻址方式和指令系统思考题思考题 1、 设DS=2000H,SS=3000H,BP=0200H,SI=4000H,BUF=1000H,EAX=00001000H,EBX=00002000H,假设按16位实模式操作,确定下列每条指令访问内存的物理地址,并且指出源操作数及目的操作数的寻址方式。(1)MOV A
19、L,1234H (2)MOV EDX,BX(3)MOV CL,BX100H (4)MOV SI,EBX(5)MOV AH,BUFBXSI (6)MOV EAX,BP1234H 第三章 80 x86寻址方式和指令系统3.2 80X863.2 80X86指令格式指令格式第三章 80 x86寻址方式和指令系统3.3 80X863.3 80X86指令系统指令系统按功能分类:按功能分类: 数据传送指令数据传送指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 控制转移类指令控制转移类指令 串操作指令串操作指令 输入输入/输出指令输出指令 处理器控制指令处理器控制指令 中断指令与中断指令与DOS功能
20、调用功能调用第三章 80 x86寻址方式和指令系统3.3.1 3.3.1 数据传送指令数据传送指令 通用数据传送指令通用数据传送指令 堆栈操作指令堆栈操作指令 地址传送指令地址传送指令 标志寄存器传送指令标志寄存器传送指令 查表指令查表指令 符号扩展指令符号扩展指令数据传送指令包括:数据传送指令包括:第三章 80 x86寻址方式和指令系统3.3.1 3.3.1 数据传送指令数据传送指令数据传送指令包括:数据传送指令包括: 通用数据传送指令通用数据传送指令堆栈操作指令堆栈操作指令地址传送指令地址传送指令标志寄存器传送指令标志寄存器传送指令查表指令查表指令符号扩展指令符号扩展指令第三章 80 x8
21、6寻址方式和指令系统传送指令数据流传送指令数据流* * CS CS不能为目的操作数,不能对(不能为目的操作数,不能对(E E)IPIP直接传直接传送数据送数据 堆堆 栈栈 段段寄寄存存器器 存存储储器器单单元元 立立即即数数 寄寄存存器器 第三章 80 x86寻址方式和指令系统一、通用数据传送指令一、通用数据传送指令DEST:目的操作数:目的操作数SRC:源操作数:源操作数1、一般传送指令、一般传送指令 MOV DEST,SRC如:如:MOV AL,CL MOV BX,SI MOV EAX,EBX 第三章 80 x86寻址方式和指令系统使用使用MOV指令应注意:指令应注意: 立即数不允许直接送
22、段寄存器,且立即数不能立即数不允许直接送段寄存器,且立即数不能做目的操作数做目的操作数 源操作数和目的操作数不允许同时为存储器操源操作数和目的操作数不允许同时为存储器操作数作数 源操作数和目的操作数不允许同时为段寄存器源操作数和目的操作数不允许同时为段寄存器 两操作数的数据类型要一致两操作数的数据类型要一致 传送操作不影响标志位传送操作不影响标志位 不允许对不允许对CS、(、(E)IP传送数据传送数据第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统2、扩展传送指令(由、扩展传送指令(由8位扩展为位扩展为16位送目的操作数)位送目
23、的操作数) MOVSX DEST,SRC MOVZX DEST,SRC如如 MOV BL,80H MOVSX AX,BL;AX=FF80H MOVZX AX,BL;AX=0080H*目的操作数为通用寄存器(目的操作数为通用寄存器(16位或位或32位位)*源操作数长度必须小于目的操作数长度,为通用寄存器或存储源操作数长度必须小于目的操作数长度,为通用寄存器或存储器操作数(器操作数(8位或位或16位位)第三章 80 x86寻址方式和指令系统3、交换指令、交换指令 XCHG DEST,SRC如:如:XCHG AX,BX XCHG AX,SI*两操作数中不允许出现立即数两操作数中不允许出现立即数*两操
24、作数不允许同时为存储器操作数两操作数不允许同时为存储器操作数*两操作数数据类型必须一致两操作数数据类型必须一致 第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统二、堆栈操作指令二、堆栈操作指令第三章 80 x86寻址方式和指令系统 压栈指令压栈指令 PUSH SRC如:如:PUSH AX PUSH DS PUSH SI PUSH 1234H 如果操作数据类型为字类型(如果操作数据类型为字类型(16位):位): 如果操作数为双字类型(如果操作数为双字类型(32位):位):SP-4 SP第三章 80 x86寻址方式和指令系统 出栈指令出栈指令 POP DEST如:如:P
25、OP AX POP DS POP BX 操作数类型为字类型(操作数类型为字类型(16位):位):操作数类型为双字类型(操作数类型为双字类型(32位):位):SPSP+4第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统三、地址传送指令三、地址传送指令功能:将源操作数的有效地址传给通用寄存器功能:将源操作数的有效地址传给通用寄存器格式:格式: LEA DEST,SRC *DEST为为16位或位或32位通用寄存器位通用寄存器 *SRC为为16位或位或32位存储器操作数位存储器操作数例例1:LEA BX,SI+1005H 若若SI=10
26、00H 则则BX=?(?(2005H)寄存器相对寻址:寄存器相对寻址:16位偏移量位偏移量+变址寄存器内容变址寄存器内容例例2:LEA DI,BLOCK MOV DI,BLOCK有何区别?有何区别?第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统 功能:根据源操作数指定的偏移地址,在数据段中取功能:根据源操作数指定的偏移地址,在数据段中取出段基址和偏移地址分别送到指定的段寄存器和通用出段基址和偏移地址分别送到指定的段寄存器和通用寄存器寄存器第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统四、标志寄存器传送指令四、标志寄存器传送指令格式格式
27、1:LAHF:将标志寄存器底将标志寄存器底8位送至位送至AH SAHF:将将AH内容送至标志寄存器底内容送至标志寄存器底8位位格式格式2:PUSHF:将标志寄存器底将标志寄存器底16位压入堆栈位压入堆栈 POPF:将当前栈顶的一个字送到标志寄将当前栈顶的一个字送到标志寄 存器底存器底16位位格式格式3: PUSHFD:将标志寄存器将标志寄存器32位压入堆栈位压入堆栈 POPFD:将当前栈顶的一个双字送到标将当前栈顶的一个双字送到标 志寄存器志寄存器*SAHF、POPF、POPFD影响标志位影响标志位第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86
28、寻址方式和指令系统第三章 80 x86寻址方式和指令系统五、查表指令五、查表指令格式:格式: XLAT指令规定:表格存于数据段中指令规定:表格存于数据段中;表首偏移地址表首偏移地址BX 表内偏移量表内偏移量AL;查找结果查找结果AL所找单元的物理地址所找单元的物理地址: (DS)10H+(BX)+(AL)第三章 80 x86寻址方式和指令系统查表指令应用举例查表指令应用举例 3FH 06H 5BH 4FH 66H 6DH BLOCK LEA BX,BLOCK(有效地支放入有效地支放入BX) MOV AL, 3 XLAT结果:结果:AL内容为内容为4FH例:试编程将内存中以例:试编程将内存中以B
29、LOCK为起始地址的编码表中为起始地址的编码表中顺序号为顺序号为3的编码送的编码送AL寄存器。寄存器。 第三章 80 x86寻址方式和指令系统六、符号扩展指令六、符号扩展指令针对带符号数,按带符号数扩展。针对带符号数,按带符号数扩展。1、CBW 功能:功能:AL(8位)位)AX(16位)位)2、CWD 功能:功能:AX(16位)位)DX:AX(32位)位)3、CWDE 功能:功能:AX(16位)位)EAX(32位)位)4、CDQ 功能:功能:EAX(32位)位)EDX:EAX(64位)位)第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和
30、指令系统3.3.2 3.3.2 算术运算指令算术运算指令 加法指令加法指令 减法指令减法指令 加加1减减1指令指令 比较指令比较指令 乘法指令乘法指令 除法指令除法指令 BCD算术运算指令算术运算指令第三章 80 x86寻址方式和指令系统算术运算类指令特点算术运算类指令特点 影响标志位影响标志位 操作数不允许为段寄存器操作数不允许为段寄存器 不允许两个操作数同为存储器操作数不允许两个操作数同为存储器操作数 若无特别规定,操作数类型必须一致若无特别规定,操作数类型必须一致 目的操作数不允许为立即数目的操作数不允许为立即数 当操作数类型不明确时必须使用当操作数类型不明确时必须使用PTR伪指令伪指令
31、第三章 80 x86寻址方式和指令系统一、加法指令一、加法指令格式(格式(1) ADD DEST,SRC功能:源操作数功能:源操作数+目的操作数目的操作数目的操作数目的操作数格式(格式(2) ADC DEST,SRC功能:源操作数功能:源操作数+目的操作数目的操作数+CF目的操作数目的操作数例:例:32F2H+A020H=?MOV AX,32F2H 或或 MOV AX,32F2HMOV BX,0A020H MOV BX,0A020HADD AX,BX ADD AL,BL ADC AH,BH第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和
32、指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统二、减法指令二、减法指令格式(格式(1) SUB DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数目的操作数目的操作数格式(格式(2) SBB DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数CF目的操作数目的操作数*SUB、SBB指令与指令与ADD、ADC一样,影响标志位一样,影响标志位OF、SF、ZF、AF,PF,CF第三章 80 x86寻址方式和指令系统三、加三
33、、加1减减1指令指令加加1指令指令 INC DEST功能:目的操作数功能:目的操作数1目的操作数目的操作数减减1指令指令 DEC DEST功能:目的操作数功能:目的操作数1目的操作数目的操作数目的操作数为通用寄存器或存储器操作数目的操作数为通用寄存器或存储器操作数*不影响不影响CF,影响,影响OF、SF、ZF、AF、PF例:例:INC BX INC BYTE PTR BX(存储器操作数(存储器操作数+1) DEC EAX DEC WORD PTRSI (存储器操作数(存储器操作数-1)第三章 80 x86寻址方式和指令系统四、比较指令四、比较指令格式格式 CMP DEST,SRC功能:目的操作
34、数源操作数,结果不送回;不影响操功能:目的操作数源操作数,结果不送回;不影响操作数本身;原操作数可为通用寄存器、存储器、立即作数本身;原操作数可为通用寄存器、存储器、立即数,目的操作数可为通用寄存器、存储器操作数。数,目的操作数可为通用寄存器、存储器操作数。(1)若目、源为无符号数)若目、源为无符号数 CF=0 则目则目源源 (若(若ZF=1,则目,则目=源)源) CF=1 则目源则目源第三章 80 x86寻址方式和指令系统(2)若目、源为带符号数)若目、源为带符号数 若目、源为同号数(若目、源为同号数(OF=0) 若均为正,若均为正,SF=0 则目则目源(若源(若ZF=1,则目,则目=源)源
35、) SF=1 则目源则目源 若均为负若均为负 ,SF=0 则目则目源(若源(若ZF=1,则目,则目=源)源) SF=1 则目源则目源第三章 80 x86寻址方式和指令系统若目、源为异号数(若目、源为异号数(OF=0或或1) 若目为正,源为负若目为正,源为负 则目源则目源 若此时若此时 SF=0 则则OF=0 若此时若此时 SF=1 则则OF=1 若目为负,源为正若目为负,源为正 则目源则目源 若此时若此时 SF=1 则则OF=0 若此时若此时 SF=0 则则OF=1综合起来,若目、源为带符号数综合起来,若目、源为带符号数 OF SF=0 则目则目源源 OF SF=1 则目源则目源 第三章 80
36、 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统五、交换相加指令五、交换相加指令格式格式 XADD DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数目的操作数目的操作数 且原目的操作数且原目的操作数源操作数源操作数影响标志位影响标志位OF、SF、ZF、AF、PF、CF源操作数可为通用寄存器,目的操作数可为通用寄源操作数可为通用寄存器,目的操作数可为通用寄存器和存储器操作数。存器和存储器操作数。六、求补指令六、求补指令格式格式 NEG DEST功能:求目的操作数的相反数的补码功能:求目的操作数的相反数的补码影响标志位影响标志位OF、SF、ZF、AF、PF、CF第三
37、章 80 x86寻址方式和指令系统七、乘法指令七、乘法指令格式格式 MUL SRC (针对无符号数)(针对无符号数) IMUL SRC (针对带符号数)(针对带符号数)隐含规定:隐含规定: SRCSRC为一乘数因子,可为为一乘数因子,可为 8 8位位/ / 1616位位 / /3232位位寄存器或存储器寄存器或存储器 另一乘数因子在累加器中(另一乘数因子在累加器中(ALAL/ / AX AX / / EAXEAX) 结果为乘积,乘积隐含在(结果为乘积,乘积隐含在(AXAX/ /DXDX:AXAX/ /EDXEDX:EAXEAX) 字节乘字节乘 字乘字乘 双字乘双字乘* *若乘积高位为若乘积高位
38、为0 0,则,则CF=0CF=0,OF=0OF=0 若乘积高位含有效数据,则若乘积高位含有效数据,则CF=1CF=1,OF=1OF=1 对其它标志位无定义对其它标志位无定义 第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统例:计算存于下列内存中的两个无符号数的乘积例:计算存于下列内存中的两个无符号数的乘积 1234H2345H=?结果放?结果放RESULT单元单元LEA BX,BLOCKMOV AX,BXMUL WORD PTR BX+4MOV RESULT,AXMOV RESULT+2,DX(另一乘数隐含在(另一乘数隐含在AX中)中)(字乘结果:(字乘结果:DX:
39、AX)结果为结果为02820404HCF=1,OF=1 34H 12H 10H 28H 45H 23H 04H 04H 82H 02H BLOCK RESULT 第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统八、除法指令八、除法指令格式格式 DIV SRC (针对无符号数)(针对无符号数) IDIV SRC (针对带符号数)(针对带符号数)隐含规定:隐含规定: SRC为除数,为为除数,为 8 8位位/ / 1616位位 / /3232位位寄存器或存储器寄存器或存储器 被除数隐含在被除数隐含在 ( AXAX/ /DXDX:AXA
40、X/ / EDXEDX:EAXEAX) 商隐含在商隐含在 ( ALAL/ / AX AX / / EAXEAX) 余数隐含在余数隐含在 ( AHAH/ / DX DX / / EDXEDX) 字节除字节除 字除字除 双字除双字除* *当除数为当除数为0 0或商溢出时会产生中断或商溢出时会产生中断* *被除数必须是除数的双倍长度,否则,需要进行高位扩展被除数必须是除数的双倍长度,否则,需要进行高位扩展 无符号数高位扩展为全无符号数高位扩展为全0 0,带符号数按符号扩展指令扩展,带符号数按符号扩展指令扩展第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x8
41、6寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统九、组合型九、组合型BCD算术运算指令算术运算指令第三章 80 x86寻址方式和指令系统 组合组合BCD码也称压缩格式的码也称压缩格式的BCD码,码,用一用一个字节存储个字节存储2位位BCD码码。 如十进制数如十进制数12的组合的组合BCD码为码为 00010010B 35的组合的组合BCD码为码为 00110101B该类指令使用场合:该类指令使用场合: 当参与运算的十进制数以其组合当参与运算的十进制数以其组合BCD码形式存码形式存放,加减时,计算机会当作二进制
42、数来运算,其结果放,加减时,计算机会当作二进制数来运算,其结果一定不是理想要得的组合型一定不是理想要得的组合型BCD码结果,这时,必码结果,这时,必须用组合型须用组合型BCD算术运算指令加以调整,即将二进算术运算指令加以调整,即将二进制结果调整为制结果调整为BCD码表示形式。码表示形式。 加法调整指令一般紧跟在加法调整指令一般紧跟在ADD或或ADC之后,减之后,减法调整指令一般紧跟在法调整指令一般紧跟在SUB或或SBB之后。之后。第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80
43、x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统1、组合型、组合型BCD加法调整指令加法调整指令格式格式 DAA功能:功能:AL(二进制和)(二进制和)组合组合BCD码码例:例:26+68=? 分析:用组合分析:用组合BCD码存放时,两个数应分别为码存放时,两个数应分别为26H和和68H,理想结果应该为,理想结果应该为94H。编程如下:。编程如下:MOV AL,26HMOV BL,68HADD AL,BL ;AL=8EHDAA ;AL=94H第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统2、组合型、组合型BCD减
44、法调整指令减法调整指令格式格式 DAS功能:功能:AL(二进制差)(二进制差)组合组合BCD码码例:例:6556=? MOV AL,65H MOV BL,56H SUB AL,BL ;AL=0FH DAS ;AL=09H 第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统十、非组合型十、非组合型BCD算术运算指令算术运算指令 非非 组合组合BCD码也称非压缩格式的码也称非压缩格式的BCD码,码,用一个字节存储用一个字节存储1位位BCD码,高码,高4位无意义位无意义。 如非组合如非组合BCD码码
45、 00010010B表示的数为表示的数为2 非组合非组合BCD码码 00110101B表示的数为表示的数为5 3635H即即0011011000110101B表示的数是表示的数是65由于由于09的的ASCII码为码为30H39H,机器采用一个字节存放一,机器采用一个字节存放一位位ASCII码,所以,码,所以,ASCII码是一种非组合型码是一种非组合型BCD码。码。 非组合型非组合型BCD调整指令有加、减、乘、除四种调整指令。调整指令有加、减、乘、除四种调整指令。第三章 80 x86寻址方式和指令系统1、非组合型、非组合型BCD加法调整指令加法调整指令格式格式 AAA功能:功能:AL(二进制和)
46、(二进制和)非组合非组合BCD码码例:例:5+9=? 分析:用非组合分析:用非组合BCD码存放时,两个数应分别为码存放时,两个数应分别为05H和和09H,理想结果应该为,理想结果应该为0104H。编程如下:。编程如下:MOV AL,05HMOV BL,09HADD AL,BL ;AL=0EHAAA ;AX=0104H第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统2、非组合型、非组合型BCD减法调整指令减法调整指令格式格式 AAS功能:功能:AL(二进制差)(二进制差)非组合非组合BCD码码 第三章 80 x86寻址方式和指令系
47、统第三章 80 x86寻址方式和指令系统3、非组合型、非组合型BCD乘法调整指令乘法调整指令格式格式 AAM功能:功能:AL(二进制乘积)(二进制乘积)非组合非组合BCD码码 第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统 4、非组合型、非组合型BCD除法调整指令除法调整指令 格式格式 AAD 功能:功能:AX(两位非组合(两位非组合BCD码)码)二进制二进制数数 *AAD指令必须放在除法指令之前进行。指令必须放在除法指令之前进行。 其他调整指令都是先运算后调整。其他调整指令都是先运算后调整。第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令
48、系统思考题思考题判断下列指令是否正确,若有错误,请指出原因,并改正。判断下列指令是否正确,若有错误,请指出原因,并改正。(1 1)MOV BLMOV BL,OFFSET BLOCK OFFSET BLOCK (2 2)LEA DILEA DI,BXBXSISI(3 3)PUSH AL PUSH AL (4 4)POP CSPOP CS(5 5)MOV ESMOV ES,DS DS (6 6)MOV AXMOV AX,SISIDIDI(7 7)MOV BXMOV BXBPBP,AX AX (8 8)ADD AXADD AX,F000HF000H(9 9)MOV BXMOV BX,SI SI (1
49、010)MOV AHMOV AH,DXDX(1111)INC BX INC BX (1212)XCHG AXXCHG AX,2000H 2000H (1313)MOV AXMOV AX,BXBXDX DX (1414)ADD BXADD BX,BXBX(1515)MOV AXMOV AX,DIDISI SI (1616)MOV EAXMOV EAX,ECXECX* *4 480H80H 第三章 80 x86寻址方式和指令系统3.3.3 3.3.3 逻辑运算指令逻辑运算指令包括:逻辑指令、移位指令、位操作指令包括:逻辑指令、移位指令、位操作指令该类指令特点:该类指令特点: 影响标志位影响标志位
50、操作数不允许为段寄存器操作数不允许为段寄存器 不允许两个操作数同为存储器操作数不允许两个操作数同为存储器操作数 若无特别规定,操作数类型必须一致若无特别规定,操作数类型必须一致 目的操作数不允许为立即数目的操作数不允许为立即数 当操作数类型不明确时必须使用当操作数类型不明确时必须使用PTR伪指令伪指令第三章 80 x86寻址方式和指令系统一、逻辑指令一、逻辑指令1、逻辑与指令、逻辑与指令格式格式 AND DEST,SRC功能:目的操作数功能:目的操作数源操作数源操作数目的操作数目的操作数*常用来使目的操作数的某些位被屏蔽(即清常用来使目的操作数的某些位被屏蔽(即清0)例:例:MOV AL,00
51、111001B 若要使若要使AL中高中高4位清位清0,低,低4位不变,怎么办?位不变,怎么办? AND AL,00001111B第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统2、逻辑或指令、逻辑或指令格式格式 OR DEST,SRC功能:目的操作数功能:目的操作数源操作数源操作数目的操作数目的操作数*常用来使目的操作数的某些位置常用来使目的操作数的某些位置1例:例:MOV AL,00001001B 若要使若要使AL中最高中最高2位置位置1,低,低6位不变,怎么办?位不变,怎么办? OR AL,11000000B第三章 80 x86寻址方式和指令系统第三章 80 x
52、86寻址方式和指令系统3、逻辑异或指令、逻辑异或指令格式格式 XOR DEST,SRC功能:目的操作数功能:目的操作数 源操作数源操作数目的操作数目的操作数*常用来使目的操作数的某些位变反常用来使目的操作数的某些位变反 例:例:MOV AL,00001001B 若要使若要使AL中中D7、D0位变反,其它位不变位变反,其它位不变*对寄存器操作数清对寄存器操作数清0 例例 XOR DS,DS*测试一操作数与另一操作数是否相等测试一操作数与另一操作数是否相等 例例 XOR AL,BL 若若ZF=1,则,则AL=BLXOR AL,10000001B第三章 80 x86寻址方式和指令系统第三章 80 x
53、86寻址方式和指令系统4、逻辑非指令、逻辑非指令格式格式 NOT DEST功能:目的操作数按位取反功能:目的操作数按位取反目的操作数目的操作数5、测试指令、测试指令格式格式 TEST DEST,SRC功能:目的操作数功能:目的操作数源操作数源操作数;但操作结果不送回,既执行指令但操作结果不送回,既执行指令后两操作数不变。后两操作数不变。*常用来测试目的操作数的某位的状态常用来测试目的操作数的某位的状态(是是0还是还是1) 或者用来测试目的操作数的某些位是否同时为或者用来测试目的操作数的某些位是否同时为0 例:若要测试例:若要测试AL中中D7位为位为0还是为还是为1,怎么办?,怎么办?TEST
54、AL,10000000B 若若ZF=1,则,则D7=0 若若ZF=0,则,则D7=1第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统逻辑指令对标志位的影响逻辑指令对标志位的影响 NOT 指令不影响标志位指令不影响标志位 AND、OR、XOR、TEST 指令影响标志位指令影响标志位SF、ZF、PF,并且使,并且使CF=0,OF=0,对,对AF未定义未定义第三章 80 x86寻址方式和指令系统二、移位指令二、移位指令1、移位分类、移位分类 算术移位(算术移位(A) 左移(左移(L) 右移(右移(R) 非循环(非循环(S) 左移(左移(L) 逻辑移位(逻辑移位(H) 右移
55、(右移(R) 小循环移位(小循环移位(O)左移()左移(L) 循环循环 (R) 右移(右移(R) 大循环移位(大循环移位(C)左移()左移(L) 右移(右移(R) 移位指令有:移位指令有:SAL、SAR、SHL、SHR ROL、ROR、RCL、RCR第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统2、移位指令格式、移位指令格式DEST:表示目的操作数,(寄存器或存储器):表示目的操作数,(寄存器或存储器)OPRD:表示移位的次数,可以是立即数,也可:表示移位的次数,可以是立即数,也可 以由以由CL间接指定移位次数。间接指定移位次数。SAL DEST,OPRDSAR
56、DEST,OPRDSHL DEST,OPRDSHR DEST,OPRDROL DEST,OPRDROR DEST,OPRDRCL DEST,OPRDRCR DEST,OPRD第三章 80 x86寻址方式和指令系统3、移位示意图、移位示意图1(非循环移位)(非循环移位)操作数MSBLSBCF操作数MSBLSBCF操作数MSBLSBCF0(a)(b)(c)0 (a)SALSHL; (b)SAR; (c)SHR 第三章 80 x86寻址方式和指令系统4、移位示意图、移位示意图2(循环移位)(循环移位) (a)ROL; (b) ROR; (c)RCL; (d)RCR操作数MSBLSBCF操作数MSBL
57、SBCF(a)(b)(c)操作数MSBLSBCF操作数MSBLSBCF(d)第三章 80 x86寻址方式和指令系统5、对标志位的影响、对标志位的影响SALSHL 影响影响OF、SF、ZF、PF、CFSHRSARROLROR 影响影响CF、OFRCLRCR第三章 80 x86寻址方式和指令系统 设一个字节数据设一个字节数据X存放在存放在AL 寄存器中,试分寄存器中,试分析下列程序段的功能。析下列程序段的功能。 XOR AH,AH SAL AX,1 MOV BX,AX MOV CL,2 SAL AX,CL ADD AX,BX;AH=0;AX=2X;左移一位;左移一位=增大一倍增大一倍;BX=2X;
58、AX=4(2X)=8X;AX=8X+2X=10X功能:功能:10XAX第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统第三章 80 x86寻址方式和指令系统 SAL:最高位移入CF中,最低位补0;此处CF=1 RCL:最高位进入CF,CF的值进入最低位第三章 80 x86寻址方式和指令系统三、位操作指令三、位操作指令1、位测试和设置指令、位测试和设置指令 BT DEST,SRC (指定位送(指定位送CF) BTC DEST,SRC (指定位送(指定位送CF,该位取反),该位取反) BTR DEST,SRC (指定位送(指定位送CF,该位清,该位清0) BTS DES
59、T,SRC (指定位送(指定位送CF,该位置,该位置1)如如 MOV AX,1234H ;AX=0001001000110100B MOV CX,5 BT AX,CX ;CF=1,AX=1234H BTC AX,CX ;CF=1,AX=1214H BTS AX,CX ;CF=0,AX=1234H BTR AX,CX ;CF=1,AX=1214H第三章 80 x86寻址方式和指令系统 目的操作数:16或32位通用寄存器或存储器 源操作数:16或32位通用寄存器或存储器或8位立即数 若源操作数为通用寄存器,则必须同目的操作数类型一致。第三章 80 x86寻址方式和指令系统2、位扫描指令、位扫描指令
60、 BSF DEST,SRC功能:从低位开始扫描功能:从低位开始扫描SRC,若所有位为,若所有位为0,则,则ZF=0,否,否 则则ZF=1,且将第一个出现,且将第一个出现1的位号存入的位号存入DEST中。中。 BSR DEST,SRC功能:从高位开始扫描功能:从高位开始扫描SRC,若所有位为,若所有位为0,则,则ZF=0,否,否 则则ZF=1,且将第一个出现,且将第一个出现1的位号存入的位号存入DEST中。中。如如 MOV AX,1234H ;AX=0001001000110100B BSF BX,AX ;ZF=1,BX=0002H BSR DX,AX ;CF=1,DX=000CH 第三章 80
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国纳米级碳酸钙行业供需态势、竞争格局及投资前景分析报告(智研咨询)
- 《计算机网络基础与应用(第三版)》 课件 项目七 互联网的接入
- 初中数学综合实践活动课案例
- 消化内科危重症用药课件
- 儿童诺如病毒患者护理查房
- 《Ysg外科感染》课件
- (高清版)DB37∕T 3007-2017 金针菇菌渣蔬菜(茄果类·辣椒)集约化育苗技术规程
- 《胸痛中心的概念》课件
- 《项目的选择》课件
- 《黄芪冬虫夏草》课件
- 电子技术基础课件第6章数字电路基础
- 大单元教学理念及其定义、特点与实施策略
- 国有企业职业经理人绩效考核制度
- 屋顶分布式光伏发电项目光伏组件技术要求
- GB/T 44510-2024新能源汽车维修维护技术要求
- 中智集团招聘笔试题库2024
- 三晋卓越联盟·山西省2024-2025学年度高三9月质量检测+语文试卷
- 骨髓增生异常综合征教学查房
- 《那一刻我长大了》习作课件
- DBJ15 31-2016建筑地基基础设计规范(广东省标准)
- 1.2《友邦惊诧论》教学设计-【中职专用】高二语文同步讲堂(高教版2024·拓展模块上册)
评论
0/150
提交评论