版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 80 x86寻址方式和指令系统第三章第三章 80X8680X86寻址方式和指令系统寻址方式和指令系统3.1 80X863.1 80X86寻址方式寻址方式3.2 80X863.2 80X86指令格式指令格式3.3 80X863.3 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、DS
4、DS、SSSS、ESES、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寻址方式和指令系统一一16位指令方式下的存储器寻址位指令方式下的存储器寻址 16 16位指令方式寻址构造位指令方式寻址构造: :段基址段基址10H10H基址变址偏移量基址变址偏移量 基址:基址:BXBX、BP BP 变址:变址:SISI、DI DI 偏移量:偏移量:8 8位位或或1616位位 假设有效地址在假设有效地址在BXBX,SISI或或DIDI中,那么以中
6、,那么以DSDS存存放器内容为段基址;假设有效地址在放器内容为段基址;假设有效地址在BPBP中,那中,那么以么以SSSS段存放器之内容为段基址。假设运用段段存放器之内容为段基址。假设运用段超越前缀超越前缀CSCS:ESES:DSDS:SSSS:,操作数可以:,操作数可以放在冒号前指定的段。放在冒号前指定的段。 16 16位指令方式寻址方式位指令方式寻址方式: : 直接寻址直接寻址 存放器间接寻址存放器间接寻址 存放器相对寻址存放器相对寻址 基址变址寻址基址变址寻址 相对基址变址寻址相对基址变址寻址 第三章 80 x86寻址方式和指令系统1 1、直接寻址、直接寻址操作数在存储器单元中。操作数在存
7、储器单元中。操作数所在的有效地址操作数所在的有效地址EAEA直接由指令指出。直接由指令指出。 例例1 MOV AX1 MOV AX,3000H3000H 例例2 MOV BL2 MOV BL,BLOCKBLOCK 例例3 MOV BX3 MOV BX,DATA1DATA1第三章 80 x86寻址方式和指令系统例例3.3 直接寻址直接寻址NoImage第三章 80 x86寻址方式和指令系统直接寻址过程表示直接寻址过程表示第三章 80 x86寻址方式和指令系统直接寻址动态表示直接寻址动态表示第三章 80 x86寻址方式和指令系统2 2、存放器间接寻址、存放器间接寻址 操作数的有效地址在操作数的有效
8、地址在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 I ) ) ( ( D D I I ) ) E E A A = = 第三章 80 x86寻址方式和指令系统例例3.4 存放器间接寻址存放器间接寻址第三章 80 x86寻址方式和指令系统存放器间接寻址过程表示存放器间接寻址过程表示第三章 80 x86寻址方式和指令系统存放器间接寻址动态表示存放器间接寻址动态表示第三章 80 x86寻址方式和指令系
9、统3 3、存放器相对寻址、存放器相对寻址操作数在存储单元中,其有效地址操作数在存储单元中,其有效地址EAEA可表示为可表示为 例例1 MOV AL1 MOV AL,BXBX4000H4000H亦可写成:亦可写成: MOV ALMOV AL,4000HBX4000HBX 例例2 MOV AX2 MOV AX,BP+2000HBP+2000H( (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 x
10、86寻址方式和指令系统存放器相对寻址过程表示存放器相对寻址过程表示第三章 80 x86寻址方式和指令系统存放器相对寻址动态表示存放器相对寻址动态表示第三章 80 x86寻址方式和指令系统4 4、基址变址寻址、基址变址寻址操作数在存储单元中,其有效地址操作数在存储单元中,其有效地址EAEA可表示为可表示为 例例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+D
11、I ( B X ) ( S I ) ( B P ) ( D I ) E A = 第三章 80 x86寻址方式和指令系统例例3.7 基址变址寻址基址变址寻址第三章 80 x86寻址方式和指令系统基址变址寻址过程表示基址变址寻址过程表示第三章 80 x86寻址方式和指令系统基址变址寻址动态表示基址变址寻址动态表示第三章 80 x86寻址方式和指令系统5 5、相对基址变址寻址、相对基址变址寻址操作数在存储单元中,其有效地址操作数在存储单元中,其有效地址EAEA可表示为可表示为 例例1 MOV AX1 MOV AX,BXBXSISI1500H1500H或写成或写成 MOV AXMOV AX,1500B
12、XSI1500BXSI 例例2 MOV AX2 MOV AX,BP+DI+1000HBP+DI+1000H (BX) (SI) 8 位偏移量 (BP) (DI) 16 位偏移量 EA= 第三章 80 x86寻址方式和指令系统例例3.8 相对基址变址寻址相对基址变址寻址第三章 80 x86寻址方式和指令系统相对基址变址寻址过程表示相对基址变址寻址过程表示第三章 80 x86寻址方式和指令系统相对基址变址寻址动态表示相对基址变址寻址动态表示第三章 80 x86寻址方式和指令系统二二32位指令方式下的存储器寻址位指令方式下的存储器寻址 32 32位指令方式寻址构造由位指令方式寻址构造由5 5部分组成
13、:部分组成:段址基址变址比例因子偏移量段址基址变址比例因子偏移量 其中基址存放器或变址存放器可以是除其中基址存放器或变址存放器可以是除ESPESP以以外的任何外的任何3232位通用存放器。当基址存放器为位通用存放器。当基址存放器为EBPEBP时,时,默许段存放器默许段存放器SSSS存放段选择符,否那么,默许存放段选择符,否那么,默许DSDS存放段选择符。也可运用段超越前缀来指定。比存放段选择符。也可运用段超越前缀来指定。比例因子为例因子为1 1,2 2,4 4,8 8。偏移量为。偏移量为8 8位或位或3232位。位。 第三章 80 x86寻址方式和指令系统3232位指令方式下的存储器寻址方式位
14、指令方式下的存储器寻址方式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,EBP+EDIEBP+EDI* *4+80H4+80H第三章 80 x86寻址方式
15、和指令系统3.1.2 3.1.2 程序地址寻址方式程序地址寻址方式一、相对寻址一、相对寻址 相对寻址为段内寻址,指相对寻址为段内寻址,指令中给出带符号的相对偏移量,令中给出带符号的相对偏移量,程序目的地址为当前程序目的地址为当前IPIP值加上相值加上相对偏移量作为偏移地址。对偏移量作为偏移地址。 二、二、 直接寻址直接寻址 直接寻址是指指令中直接给出直接寻址是指指令中直接给出转移指令的目的地址。在段间转转移指令的目的地址。在段间转移中,指令中给出目的段地址或移中,指令中给出目的段地址或代码段的段描画符。代码段的段描画符。三、间接寻址三、间接寻址 间接寻址间接寻址 分段内和段间间分段内和段间间接
16、寻址,指令中以间接方式给出接寻址,指令中以间接方式给出转移指令的目的地址,通常存放转移指令的目的地址,通常存放在数据段。在数据段。 第三章 80 x86寻址方式和指令系统3.1.3 3.1.3 堆栈地址寻址方式堆栈地址寻址方式字数据进栈步骤字数据进栈步骤: :1 1、E ESPSP11E ESPSP2 2、 高高8 8位位堆栈堆栈3 3、E ESPSP11E ESPSP4 4、低、低8 8位位堆栈堆栈字数据出栈步骤字数据出栈步骤: :1 1、栈顶内容、栈顶内容目的存放器或目的单元的低目的存放器或目的单元的低8 8位位2 2、E ESPSP11E ESPSP3 3、栈顶内容、栈顶内容目的存放器或
17、目的单元的高目的存放器或目的单元的高8 8位位4 4、E ESPSP11E ESPSP第三章 80 x86寻址方式和指令系统堆栈操作表示堆栈操作表示第三章 80 x86寻址方式和指令系统思索题思索题 1、 设DS=2000H,SS=3000H,BP=0200H,SI=4000H,BUF=1000H,EAX=00001000H,EBX=00002000H,假设按16位实方式操作,确定以下每条指令访问内存的物理地址,并且指出源操作数及目的操作数的寻址方式。1MOV AL,1234H 2MOV EDX,BX3MOV CL,BX100H 4MOV SI,EBX5MOV AH,BUFBXSI 6MOV
18、EAX,BP1234H 第三章 80 x86寻址方式和指令系统3.2 80X863.2 80X86指令格式指令格式指令根本格式:指令根本格式: 标号:标号: 助记符助记符 操作数操作数 ;注释;注释BYTE PTR BYTE PTR 。 WORD PTR WORD PTR 。 DWORD PTR DWORD PTR 。 如如 INC WORD PTR BXINC WORD PTR BX第三章 80 x86寻址方式和指令系统3.3 80X863.3 80X86指令系统指令系统按功能分类:按功能分类:数据传送指令数据传送指令算术运算指令算术运算指令逻辑运算指令逻辑运算指令控制转移类指令控制转移类指
19、令串操作指令串操作指令输入输入/输出指令输出指令处置器控制指令处置器控制指令中断指令与中断指令与DOS功能调用功能调用第三章 80 x86寻址方式和指令系统3.3.1 3.3.1 数据传送指令数据传送指令 通用数据传送指令通用数据传送指令 堆栈操作指令堆栈操作指令 地址传送指令地址传送指令 标志存放器传送指令标志存放器传送指令 查表指令查表指令 符号扩展指令符号扩展指令数据传送指令包括:数据传送指令包括:第三章 80 x86寻址方式和指令系统3.3.1 3.3.1 数据传送指令数据传送指令数据传送指令包括:数据传送指令包括: 通用数据传送指令通用数据传送指令堆栈操作指令堆栈操作指令地址传送指令
20、地址传送指令标志存放器传送指令标志存放器传送指令查表指令查表指令符号扩展指令符号扩展指令第三章 80 x86寻址方式和指令系统传送指令数据流传送指令数据流* CS不能为目的操作数,不能对EIP直接传送数据* 堆栈操作不允许为字节操作 堆堆 栈栈 段段寄寄存存器器 存存储储器器单单元元 立立即即数数 寄寄存存器器 第三章 80 x86寻址方式和指令系统一、通用数据传送指令一、通用数据传送指令DEST:目的操作数:目的操作数SRC:源操作数:源操作数1、普通传送指令、普通传送指令 MOV DEST,SRC如:如:MOV AL,CL MOV BX,SI MOV EAX,EBX 第三章 80 x86寻
21、址方式和指令系统运用运用MOV指令应留意:指令应留意: 立刻数不允许直接送段存放器,且立刻数不能立刻数不允许直接送段存放器,且立刻数不能做目的操作数做目的操作数 源操作数和目的操作数不允许同时为存储器操源操作数和目的操作数不允许同时为存储器操作数作数 源操作数和目的操作数不允许同时为段存放器源操作数和目的操作数不允许同时为段存放器 两操作数的数据类型要一致两操作数的数据类型要一致 传送操作不影响标志位传送操作不影响标志位 不允许对不允许对CS、EIP传送数据传送数据第三章 80 x86寻址方式和指令系统2、扩展传送指令、扩展传送指令 MOVSX DEST,SRC MOVZX DEST,SRC如
22、如 MOV BL,80H MOVSX AX,BL;AX=FF80H MOVZX AX,BL;AX=0080H*目的操作数为通用存放器目的操作数为通用存放器16位或位或32位位*源操作数长度必需小于目的操作数长度,源操作数长度必需小于目的操作数长度,为通用存放器或存储器操作数为通用存放器或存储器操作数8位或位或16位位第三章 80 x86寻址方式和指令系统3、交换指令、交换指令 XCHG DEST,SRC如:如:XCHG EAX,EBX XCHG AX,SI XCHG AL,SI*两操作数中不允许出现立刻数两操作数中不允许出现立刻数*两操作数不允许同时为存储器操作数两操作数不允许同时为存储器操作
23、数*两操作数数据类型必需一致两操作数数据类型必需一致 第三章 80 x86寻址方式和指令系统二、堆栈操作指令二、堆栈操作指令 压栈指令压栈指令 PUSH SRC 如:如:PUSH EAX PUSH DS PUSH SI PUSH DWORD PTR SI PUSH 1234H PUSHD 80H 出栈指令出栈指令 POP DEST 如:如:POP AX POP DS POP BX POP DWORD PTR DI 第三章 80 x86寻址方式和指令系统三、地址传送指令三、地址传送指令格式:格式: LEA DEST,SRC *DEST为为16位或位或32位通用存放器位通用存放器 *SRC为为16
24、位或位或32位存储器操作数位存储器操作数例例1:LEA BX,SI+1005H 假设假设SI=1000H 那么那么BX=?例例2:LEA DI,BLOCK MOV DI,BLOCK 有何区别?有何区别?第三章 80 x86寻址方式和指令系统四、标志存放器传送指令四、标志存放器传送指令格式格式1:LAHF SAHF格式格式2:PUSHF POPF格式格式3: PUSHFD POPFD*SAHF、POPF、POPFD影响标志位影响标志位第三章 80 x86寻址方式和指令系统五、查表指令五、查表指令格式:格式: XLAT指令规定:表格存于数据段中指令规定:表格存于数据段中 表首偏移地址表首偏移地址B
25、X 表内偏移量表内偏移量AL 查找结果查找结果AL所找单元的物理地址:所找单元的物理地址: DS10H+BX+AL第三章 80 x86寻址方式和指令系统查表指令运用举例查表指令运用举例 3FH 06H 5BH 4FH 66H 6DH BLOCK LEA BX,BLOCK MOV AL, 3 XLAT结果:结果:AL内容为内容为4FH例:试编程将内存中以例:试编程将内存中以BLOCK为起始地址的编码表中为起始地址的编码表中顺序号为顺序号为3的编码送的编码送AL存放器。存放器。 第三章 80 x86寻址方式和指令系统六、符号扩展指令六、符号扩展指令针对带符号数,按带符号数扩展。针对带符号数,按带符
26、号数扩展。1、CBW 功能:功能:AL8位位AX16位位2、CWD 功能:功能:AX16位位DX:AX32位位3、CWDE 功能:功能:AX16位位EAX32位位4、CDQ 功能:功能:EAX32位位EDX:EAX64位位第三章 80 x86寻址方式和指令系统3.3.2 3.3.2 算术运算指令算术运算指令 加法指令加法指令 减法指令减法指令 加加1减减1指令指令 比较指令比较指令 乘法指令乘法指令 除法指令除法指令 BCD算术运算指令算术运算指令第三章 80 x86寻址方式和指令系统算术运算类指令特点算术运算类指令特点 影响标志位影响标志位 操作数不允许为段存放器操作数不允许为段存放器 不允
27、许两个操作数同为存储器操作数不允许两个操作数同为存储器操作数 假设无特别规定,操作数类型必需一致假设无特别规定,操作数类型必需一致 目的操作数不允许为立刻数目的操作数不允许为立刻数 当操作数类型不明确时必需运用当操作数类型不明确时必需运用PTR伪指令伪指令第三章 80 x86寻址方式和指令系统一、加法指令一、加法指令格式格式1 ADD DEST,SRC功能:源操作数功能:源操作数+目的操作数目的操作数目的操作数目的操作数格式格式2 ADC DEST,SRC功能:源操作数功能:源操作数+目的操作数目的操作数+CF目的操作数目的操作数例:例:32F2H+A020H=?MOV AX,32F2H 或或
28、 MOV AX,32F2HMOV BX,0A020H MOV BX,0A020HADD AX,BX ADD AL,BL ADC AH,BH第三章 80 x86寻址方式和指令系统二、减法指令二、减法指令格式格式1 SUB DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数目的操作数目的操作数格式格式2 SBB DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数CF目的操作数目的操作数*SUB、SBB指令与指令与ADD、ADC一样,影响标志位一样,影响标志位OF、SF、ZF、AF,PF,CF第三章 80 x86寻址方式和指令系统三、加三、加1减减1指令指令加加1指令指令
29、 INC DEST功能:目的操作数功能:目的操作数1目的操作数目的操作数减减1指令指令 DEC DEST功能:目的操作数功能:目的操作数1目的操作数目的操作数*不影响不影响CF,影响,影响OF、SF、ZF、AF、PF例:例:INC BX INC BYTE PTR BX DEC EAX DEC WORD PTRSI 第三章 80 x86寻址方式和指令系统四、比较指令四、比较指令格式格式 CMP DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数1假设目、源为无符号数假设目、源为无符号数 CF=0 那么目那么目源源 假设假设ZF=1,那么目,那么目=源源 CF=1 那么目源那么目源2
30、假设目、源为带符号数假设目、源为带符号数 假设目、源为同号数假设目、源为同号数OF=0 假设均为正,假设均为正,SF=0 那么目那么目源假设源假设ZF=1,那,那么目么目=源源 SF=1 那么目源那么目源 假设均为负假设均为负 ,SF=0 那么目那么目源假设源假设ZF=1,那,那么目么目=源源 SF=1 那么目源那么目源 第三章 80 x86寻址方式和指令系统假设目、源为异号数假设目、源为异号数OF=0或或1 假设目为正,源为负假设目为正,源为负 那么目源那么目源 假设此时假设此时 SF=0 那么那么OF=0 假设此时假设此时 SF=1 那么那么OF=1 假设目为负,源为正假设目为负,源为正
31、那么目源那么目源 假设此时假设此时 SF=1 那么那么OF=0 假设此时假设此时 SF=0 那么那么OF=1综合起来,假设目、源为带符号数综合起来,假设目、源为带符号数 OF SF=0 那么目那么目源源 OF SF=1 那么目源那么目源 第三章 80 x86寻址方式和指令系统五、交换相加指令五、交换相加指令格式格式 XADD DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数目的操作数目的操作数 且原目的操作数且原目的操作数源操作数源操作数影响标志位影响标志位OF、SF、ZF、AF、PF、CF六、求补指令六、求补指令格式格式 NEG DEST功能:求目的操作数的相反数的补码功能:
32、求目的操作数的相反数的补码影响标志位影响标志位OF、SF、ZF、AF、PF、CF第三章 80 x86寻址方式和指令系统七、乘法指令七、乘法指令格式格式 MUL SRC 针对无符号数针对无符号数 IMUL SRC 针对带符号数针对带符号数隐含规定:隐含规定: SRC为一乘数因子,可为为一乘数因子,可为 8位位/ 16位位 /32位存放器或存位存放器或存储器储器另一乘数因子在累加器中另一乘数因子在累加器中AL/ AX / EAX结果为乘积,乘积隐含在结果为乘积,乘积隐含在AX/DX:AX/EDX:EAX 字节乘字节乘 字乘字乘 双字乘双字乘*假设乘积高位为假设乘积高位为0,那么,那么CF=0,OF
33、=0 假设乘积高位含有效数据,那么假设乘积高位含有效数据,那么CF=1,OF=1 对其它标志位无定义对其它标志位无定义 第三章 80 x86寻址方式和指令系统例:计算存于以下内存中的两个无符号数的乘积例:计算存于以下内存中的两个无符号数的乘积 1234H2345H=?结果放?结果放RESULT单元单元LEA BX,BLOCKMOV AX,BXMUL WORD PTR BX+4MOV RESULT,AXMOV RESULT+2,DX结果为结果为02820404HCF=1,OF=1 34H 12H 10H 28H 45H 23H 04H 04H 82H 02H BLOCK RESULT 第三章 8
34、0 x86寻址方式和指令系统八、除法指令八、除法指令格式格式 DIV SRC 针对无符号数针对无符号数 IDIV SRC 针对带符号数针对带符号数隐含规定:隐含规定: SRC为除数,为为除数,为 8位位/ 16位位 /32位存放器或存储器位存放器或存储器被除数隐含在被除数隐含在 AX/DX:AX/ EDX:EAX商隐含在商隐含在 AL/ AX / EAX余数隐含在余数隐含在 AH/ DX / EDX 字节除字节除 字除字除 双字除双字除*当除数为当除数为0或商溢出时会产生中断或商溢出时会产生中断*被除数必需是除数的双倍长度,否那么,需求进展被除数必需是除数的双倍长度,否那么,需求进展高位扩展高
35、位扩展 无符号数高位扩展为全无符号数高位扩展为全0,带符号数按符号扩展指令,带符号数按符号扩展指令扩展扩展第三章 80 x86寻址方式和指令系统九、组合型九、组合型BCD算术运算指令算术运算指令 组合组合BCD码也称紧缩格式的码也称紧缩格式的BCD码,用一个字节码,用一个字节存储存储2位位BCD码。码。 如十进制数如十进制数12的组合的组合BCD码为码为 00010010B 35的组合的组合BCD码为码为 00110101B该类指令运用场所:该类指令运用场所: 当参与运算的十进制数以其组合当参与运算的十进制数以其组合BCD码方式存放,码方式存放,加减时,计算时机当作二进制数来运算,其结果一定加
36、减时,计算时机当作二进制数来运算,其结果一定不是理想要得的组合型不是理想要得的组合型BCD码结果,这时,必需用码结果,这时,必需用组合型组合型BCD算术运算指令加以调整,即将二进制结算术运算指令加以调整,即将二进制结果调整为果调整为BCD码表示方式。码表示方式。 加法调整指令普通紧跟在加法调整指令普通紧跟在ADD或或ADC之后,减之后,减法调整指令普通紧跟在法调整指令普通紧跟在SUB或或SBB之后。之后。第三章 80 x86寻址方式和指令系统1、组合型、组合型BCD加法调整指令加法调整指令格式格式 DAA功能:功能:AL二进制和二进制和组合组合BCD码码例:例:26+68=? 分析:用组合分析
37、:用组合BCD码存放时,两个数应分别为码存放时,两个数应分别为26H和和68H,理想结果应该为,理想结果应该为94H。编程如下:。编程如下:MOV AL,26HMOV BL,68HADD AL,BL ;AL=8EHDAA ;AL=94H第三章 80 x86寻址方式和指令系统2、组合型、组合型BCD减法调整指令减法调整指令格式格式 DAS功能:功能:AL二进制差二进制差组合组合BCD码码例:例:6556=? MOV AL,65H MOV BL,56H SUB AL,BL ;AL=0FH DAS ;AL=09H 第三章 80 x86寻址方式和指令系统十、非组合型十、非组合型BCD算术运算指令算术运
38、算指令 非非 组合组合BCD码也称非紧缩格式的码也称非紧缩格式的BCD码,用一个码,用一个字节存储字节存储1位位BCD码,高码,高4位无意义。位无意义。 如非组合如非组合BCD码码 00010010B表示的数为表示的数为2 非组合非组合BCD码码 00110101B表示的数为表示的数为5 3635H即即0011011000110101B表示的数是表示的数是65由于由于09的的ASCII码为码为30H39H,机器采用一个字节,机器采用一个字节存放一位存放一位ASCII码,所以,码,所以,ASCII码是一种非组合型码是一种非组合型BCD码。码。 非组合型非组合型BCD调整指令有加、减、乘、除四种调
39、整调整指令有加、减、乘、除四种调整指令。指令。第三章 80 x86寻址方式和指令系统1、非组合型、非组合型BCD加法调整指令加法调整指令格式格式 AAA功能:功能:AL二进制和二进制和非组合非组合BCD码码例:例:5+9=? 分析:用非组合分析:用非组合BCD码存放时,两个数应分别为码存放时,两个数应分别为05H和和09H,理想结果应该为,理想结果应该为0104H。编程如下:。编程如下:MOV AL,05HMOV BL,09HADD AL,BL ;AL=0EHAAA ;AX=0104H第三章 80 x86寻址方式和指令系统2、非组合型、非组合型BCD减法调整指令减法调整指令格式格式 AAS功能
40、:功能:AL二进制差二进制差非组合非组合BCD码码 3、非组合型、非组合型BCD乘法调整指令乘法调整指令格式格式 AAM功能:功能:AL二进制乘积二进制乘积非组合非组合BCD码码 4、非组合型、非组合型BCD除法调整指令除法调整指令格式格式 AAD功能:功能:AX两位非组合两位非组合BCD码码二进制数二进制数*AAD指令必需放在除法指令之前进展。指令必需放在除法指令之前进展。 其他调整指令都是先运算后调整。其他调整指令都是先运算后调整。第三章 80 x86寻址方式和指令系统思索题思索题判别以下指令能否正确,假设有错误,请指出缘由,并矫正。判别以下指令能否正确,假设有错误,请指出缘由,并矫正。1
41、 1MOV BLMOV BL,OFFSET BLOCK OFFSET BLOCK 2 2LEA DILEA DI,BXBXSISI3 3PUSH AL PUSH AL 4 4POP CSPOP CS5 5MOV ESMOV ES,DS DS 6 6MOV AXMOV AX,SISIDIDI7 7MOV BXMOV BXBPBP,AX AX 8 8ADD AXADD AX,F000HF000H9 9MOV BXMOV BX,SI SI 1010MOV AHMOV AH,DXDX1111INC BX INC BX 1212XCHG AXXCHG AX,2000H 2000H 1313MOV AXM
42、OV AX,BXBXDX DX 1414ADD BXADD BX,BXBX1515MOV AXMOV AX,DIDISI SI 1616MOV EAXMOV EAX,ECXECX* *4 480H 80H 第三章 80 x86寻址方式和指令系统3.3.3 3.3.3 逻辑运算指令逻辑运算指令包括:逻辑指令、移位指令、位操作指令包括:逻辑指令、移位指令、位操作指令该类指令特点:该类指令特点:影响标志位影响标志位操作数不允许为段存放器操作数不允许为段存放器不允许两个操作数同为存储器操作数不允许两个操作数同为存储器操作数假设无特别规定,操作数类型必需一致假设无特别规定,操作数类型必需一致目的操作数不
43、允许为立刻数目的操作数不允许为立刻数当操作数类型不明确时必需运用当操作数类型不明确时必需运用PTR伪指令伪指令第三章 80 x86寻址方式和指令系统一、逻辑指令一、逻辑指令1、逻辑与指令、逻辑与指令格式格式 AND DEST,SRC功能:目的操作数功能:目的操作数源操作数源操作数目的操作数目的操作数*常用来使目的操作数的某些位被屏蔽即清常用来使目的操作数的某些位被屏蔽即清0例:例:MOV AL,00111001B 假设要使假设要使AL中高中高4位清位清0,低,低4位不变,怎样位不变,怎样办?办? AND AL,00001111B第三章 80 x86寻址方式和指令系统2、逻辑或指令、逻辑或指令格
44、式格式 OR DEST,SRC功能:目的操作数功能:目的操作数源操作数源操作数目的操作目的操作数数*常用来使目的操作数的某些位置常用来使目的操作数的某些位置1例:例:MOV AL,00001001B 假设要使假设要使AL中最高中最高2位置位置1,低,低6位不变,位不变,怎样办?怎样办? OR AL,11000000B第三章 80 x86寻址方式和指令系统3、逻辑异或指令、逻辑异或指令格式格式 XOR DEST,SRC功能:目的操作数功能:目的操作数 源操作数源操作数目的操作目的操作数数*常用来使目的操作数的某些位变反常用来使目的操作数的某些位变反 例:例:MOV AL,00001001B 假设
45、要使假设要使AL中中D7、D0位变反,其位变反,其它位不变它位不变*对存放器操作数清对存放器操作数清0 例例 XOR DS,DS*测试一操作数与另一操作数能否相等测试一操作数与另一操作数能否相等 例例 XOR AL,BL 假设假设ZF=1,那,那么么AL=BLXOR AL,10000001B第三章 80 x86寻址方式和指令系统4、逻辑非指令、逻辑非指令格式格式 NOT DEST功能:目的操作数按位取反功能:目的操作数按位取反目的操作数目的操作数5、测试指令、测试指令格式格式 TEST DEST,SRC功能:目的操作数功能:目的操作数源操作数源操作数*常用来测试目的操作数的某位的形状常用来测试
46、目的操作数的某位的形状(是是0还是还是1 或者用来测试目的操作数的某些位能否同时为或者用来测试目的操作数的某些位能否同时为0 例:假设要测试例:假设要测试AL中中D7位为位为0还是为还是为1,怎样办?,怎样办?TEST AL,10000000B 假设假设ZF=1,那么,那么D7=0 假设假设ZF=0,那么,那么D7=1第三章 80 x86寻址方式和指令系统逻辑指令对标志位的影响逻辑指令对标志位的影响 NOT 指令不影响标志位指令不影响标志位 AND、OR、XOR、TEST 指令影响标志位指令影响标志位SF、ZF、PF,并且使,并且使CF=0,OF=0,对,对AF未定义未定义第三章 80 x86
47、寻址方式和指令系统二、移位指令二、移位指令1、移位分类、移位分类 算术移位算术移位A 左移左移L 右移右移R 非循环非循环S 左移左移L 逻辑移位逻辑移位H 右移右移R 小循环移位小循环移位O左移左移L 循环循环 R 右移右移R 大循环移位大循环移位C左移左移L 右移右移R 移位指令有:移位指令有:SAL、SAR、SHL、SHR ROL、ROR、RCL、RCR第三章 80 x86寻址方式和指令系统2、移位指令格式、移位指令格式DEST:表示目的操作数,存放器或存储器:表示目的操作数,存放器或存储器OPRD:表示移位的次数,可以是立刻数,也可:表示移位的次数,可以是立刻数,也可 以由以由CL间接
48、指定移位次数。间接指定移位次数。SAL DEST,OPRDSAR 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;
49、 (d)RCR操作数MSBLSBCF操作数MSBLSBCF(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;
50、BX=2X;AX=42X=8X;AX=8X+2X=10X功能:功能:10XAX第三章 80 x86寻址方式和指令系统三、位操作指令三、位操作指令1、位测试和设置指令、位测试和设置指令 BT DEST,SRC 指定位送指定位送CF BTC DEST,SRC 指定位送指定位送CF,该位取反,该位取反 BTR DEST,SRC 指定位送指定位送CF,该位清,该位清0 BTS DEST,SRC 指定位送指定位送CF,该位置,该位置1如如 MOV AX,1234H ;AX=0001001000110100B MOV CX,5 BT AX,CX ;CF=1,AX=1234H BTC AX,CX ;CF=1
51、,AX=1214H BTS AX,CX ;CF=0,AX=1234H BTR AX,CX ;CF=1,AX=1214H第三章 80 x86寻址方式和指令系统2、位扫描指令、位扫描指令 BSF DEST,SRC功能:从低位开场扫描功能:从低位开场扫描SRC,假设一切位为,假设一切位为0,那,那么么ZF=0,否,否 那么那么ZF=1,且将第一个出现,且将第一个出现1的的位号存入位号存入DEST中。中。 BSR DEST,SRC功能:从高位开场扫描功能:从高位开场扫描SRC,假设一切位为,假设一切位为0,那,那么么ZF=0,否,否 那么那么ZF=1,且将第一个出现,且将第一个出现1的的位号存入位号存
52、入DEST中。中。如如 MOV AX,1234H ;AX=0001001000110100B BSF BX,AX ;ZF=1,BX=0002H BSR DX,CX ;CF=1,AX=000CH 第三章 80 x86寻址方式和指令系统3、位标志指令、位标志指令 CLC CF=0 STC CF=1 CLD DF=0 STD DF=1 CLI IF=0 STI IF=1 4、条件设置字节指令、条件设置字节指令 格式:格式:SETCOND DEST 功能:测试条件功能:测试条件COND假设为真,那么将假设为真,那么将DEST置置01H,否那么置,否那么置00H。见。见P87的表的表3.3 第三章 80
53、 x86寻址方式和指令系统3.3.4 3.3.4 控制转移类指令控制转移类指令该类指令不影响标志位。该类指令不影响标志位。无条件转移指令无条件转移指令条件转移指令条件转移指令循环控制指令循环控制指令第三章 80 x86寻址方式和指令系统一、无条件转移指令一、无条件转移指令TARGET:目的标号:目的标号 REG:通用存放器:通用存放器1、段内直接转移、段内直接转移 JMP TARGET2、段内间接转移、段内间接转移 JMP REG JMP NEAR PTR REG3、段间直接转移、段间直接转移 JMP FAR PTR TARGET4、段间间接转移、段间间接转移 JMP FAR PTR REG第
54、三章 80 x86寻址方式和指令系统二、条件转移指令二、条件转移指令1、单标志位条件转移指令、单标志位条件转移指令 JO TARGET ;OF=1,即溢出转,即溢出转 JNO TARGET ;OF=0,不溢出转移,不溢出转移 JS TARGET ;SF=1,结果为负转移,结果为负转移 JNS TARGET ;SF=0,结果为正转移,结果为正转移 JC TARGET ;CF=1,有进位转移,有进位转移 JNC TARGET ;CF=0,无进位那么转,无进位那么转移移JP TARGET ;PF=1,为偶转移,为偶转移JNP TARGET ; PF=0,为奇转移,为奇转移 JEJZ TARGET ;
55、ZF=1,等于或为零转,等于或为零转移移JNEJNZ TARGET ;ZF=0,等于或非零转,等于或非零转移移第三章 80 x86寻址方式和指令系统例:在不改动例:在不改动AL值的同时,检测值的同时,检测AL 中中1的个数,且存放的个数,且存放在在BL中。中。 .MODEL TINY .CODE .STARTUP MOV BL,0 MOV DL,8 AGAIN: ROL AL,1 JNC NEXT INC BL NEXT: DEC DL JNZ AGAIN .EXIT END第三章 80 x86寻址方式和指令系统2、无符号数比较条件转移指令、无符号数比较条件转移指令助记符:助记符: J转移转移
56、 A高于高于 B低于低于 E等于等于 N不不指令:指令: JA/JNBE TARGET ;高于;高于/不低于等于转移不低于等于转移JAE/JNB TARGET ;高于等于;高于等于/不低于转移不低于转移JB/JNAE TARGET ;低于;低于/不高于等于转移不高于等于转移JBE/JNA TARGET ;低于等于;低于等于/不高于转移不高于转移第三章 80 x86寻址方式和指令系统3、带符号数比较条件转移指令、带符号数比较条件转移指令 J转移转移 G大于大于 L小于小于 E等于等于 N不不 JG/JNLE TARGET ;大于;大于/不小于等于转移不小于等于转移JGE/JNL TARGET ;
57、大于等于;大于等于/不小于转移不小于转移JL/JNGE TARGET ;小于;小于/不大于等于转移不大于等于转移JLE/JNG TARGET ;小于等于;小于等于/不大于转移不大于转移4、测试、测试CX条件转移指令条件转移指令JCXZ TARGET ;CX=0 转移转移JECXZ TARGET ;ECX=0 转移转移第三章 80 x86寻址方式和指令系统运用条件转移指令应留意:运用条件转移指令应留意:*条件转移指令普通跟在条件转移指令普通跟在CMP指令或指令或TEST指令指令之后,根据其影响的标志位来决议能否产生转之后,根据其影响的标志位来决议能否产生转移。移。*当条件满足时,转移到目的标号去
58、执行,否那当条件满足时,转移到目的标号去执行,否那么,顺着程序往下执行。么,顺着程序往下执行。第三章 80 x86寻址方式和指令系统例例3.65 假设假设AL中带符号数中带符号数X为某值,试编程将为某值,试编程将求出的符号函数值求出的符号函数值f(x)存放在存放在AH中。中。 .MODEL TINY .CODE .STARTUP CMP AL,0 JGE BIG MOV AL,0FFH JMP DONE BIG: JE DONE MOV AL,1DONE: MOV AH,AL .EXIT END第三章 80 x86寻址方式和指令系统三、循环控制指令三、循环控制指令格式格式:LOOPCC TAR
59、GET功能功能:(E)CX1 (E)CX,不影响标志位不影响标志位,且测试条件且测试条件CC成立成立,那么转移到那么转移到TARGET处执行处执行.LOOP ; CX1 CX,假设假设CX0那么循环那么循环LOOPW ;同上同上LOOPD ; ECX1 ECX,假设假设ECX0那那么循环么循环LOOPE/LOOPZ ; CX1 CX,假设假设CX0且且ZF=1那么循环那么循环LOOPEW/LOOPZW ;同上同上LOOPED/LOOPZD ; ECX1 ECX,假设假设ECX0且且ZF=1那么循环那么循环LOOPNE/LOOPNZ ; CX1 CX,假设假设CX0且且ZF=0那么循环那么循环L
60、OOPNEW/LOOPNZW ;同上同上LOOPNED/LOOPNZD ; ECX1 ECX,假设假设ECX0且且ZF=0那么循环那么循环第三章 80 x86寻址方式和指令系统例例3.68 找出以找出以ARRAY为首地址的为首地址的100个字数组中个字数组中的第一个非的第一个非0项项,送送AX存放器中存放器中. .MODEL SMALL .DATAARRAY DW 0, 0, 0, 0, 1010H, ;(100个字个字) .CODE .STARTUP MOV CX, 64H LEA BX, ARRAY MOV SI, 0FFFEH ZERO: INC SI INC SI CMP WORD P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Chapter 4 My pencil case教学设计小学英语新思维小学英语1A-新思维小学英语
- 2026六年级道德与法治上册 学法懂法依法捍卫
- 2026三年级下新课标口语交际围绕中心意思
- 2026年智能化茶叶揉捻机研发项目实施方案
- 2026年国内露营装备行业发展趋势与消费洞察报告
- 2026年农药中毒识别与应急处理方案
- 公司团队协作机制优化方案
- 公司员工忠诚度与归属感培训方案
- 2026年男性健康管理方案设计与案例分析
- 厂房屋顶绿化设计方案
- 2026年警示教育活动计划
- 2026年春统编版小学道德与法治五年级下册(全册)教学反思
- 2026年山西经贸职业学院单招职业适应性测试题库附参考答案详解(综合题)
- 2025年落实党的创新理论方面存在的问题和整改措施
- 中国注意缺陷多动障碍诊疗指南(2025年版)
- 吹瓶机调机技术
- 医疗器械体系现场检查整改报告范文
- 2026年辅警面试常见试题及深度解析
- 2026年及未来5年市场数据中国腐植酸衍生品行业发展趋势及投资前景预测报告
- 空调机组安装方案
- 制冷剂使用管理制度(3篇)
评论
0/150
提交评论