



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 80 x86寻址方式和指令系统第三章第三章 指令系统及其寻址方式指令系统及其寻址方式3.13.1 寻址方式寻址方式3.23.2 指令格式指令格式3.33.3 指令系统指令系统 第三章 80 x86寻址方式和指令系统3.1 3.1 寻址方式寻址方式 3.1.1 .1.1 指令的书写格式指令的书写格式指令有两种书写格式:指令有两种书写格式: * 机器指令:由一串二进制数描述;机器指令:由一串二进制数描述;* 符号指令:用英文字母缩写词描述。符号指令:用英文字母缩写词描述。符号指令的书写格式如下:符号指令的书写格式如下:标号:标号: 操作助记符操作助记符 目的操作数目的操作数,源操作数,源操
2、作数;注释;注释 第三章 80 x86寻址方式和指令系统几点说明:几点说明: 标号标号表示某一条指令所在存储单元的首址。表示某一条指令所在存储单元的首址。 标号应由字母打头,后跟字母、数字及特殊标号应由字母打头,后跟字母、数字及特殊字符均可,但不能用字符均可,但不能用关键字。关键字。 标号的用法:标号的用法: 1、 标号标号一般放在子程序(子过程)的第一条一般放在子程序(子过程)的第一条指令的开头;指令的开头; 2、标号标号一般放在转移指令要转去的目的地的一般放在转移指令要转去的目的地的 第一条指令的开头。第一条指令的开头。 3、标号标号一般放在其他符号定义的前面。一般放在其他符号定义的前面。
3、第三章 80 x86寻址方式和指令系统 指令助记符指令助记符(操作助记符):(操作助记符):MOV;ADD;SUB;END。操作数操作数 有有源源操作数和操作数和目的目的操作数,他们之操作数,他们之 间用间用“,” 分隔。分隔。 操作数也可有可无。操作数也可有可无。第三章 80 x86寻址方式和指令系统 3.1.2 数据寻址方式数据寻址方式一般在指令中包含有操作码和操作数,一般在指令中包含有操作码和操作数,怎样找到指令中的操作数和操作数所在的地怎样找到指令中的操作数和操作数所在的地址,这就是寻址方式。址,这就是寻址方式。 在微机中的操作数有三种存放方式:在微机中的操作数有三种存放方式: (1)
4、立即数)立即数包含在本条指令中,即:包含在本条指令中,即: 存放在代码段中;存放在代码段中; (2) 操作数存放在操作数存放在CPU的某个寄存器中;的某个寄存器中; (3) 操作数存放在存储器的数据段或堆栈操作数存放在存储器的数据段或堆栈段或附加数据段中。段或附加数据段中。第三章 80 x86寻址方式和指令系统 所以,总的来说,数据寻址方式分为三所以,总的来说,数据寻址方式分为三种:种: 立即寻址立即寻址 寄存器寻址寄存器寻址 存储器寻址存储器寻址第三章 80 x86寻址方式和指令系统一、立即寻址一、立即寻址 操作数操作数直接包含在直接包含在代码段的指令代码段的指令中。中。 如:如: MOV
5、EAXMOV EAX,80800000000000H00H MOV BX MOV BX,6688H6688H MOV AX MOV AX,1234H1234H 立即数只能作为源操作数立即数只能作为源操作数 立即寻址主要用来给通用寄存器或存储器立即寻址主要用来给通用寄存器或存储器赋值赋值 不允许给段寄存器直接赋值不允许给段寄存器直接赋值第三章 80 x86寻址方式和指令系统例例3.1 立即寻址立即寻址第三章 80 x86寻址方式和指令系统立即寻址过程示意立即寻址过程示意第三章 80 x86寻址方式和指令系统立即寻址动态示意立即寻址动态示意第三章 80 x86寻址方式和指令系统二、寄存器寻址二、寄
6、存器寻址 操作数操作数在在寄存器寄存器中。中。 3232位寄存器:位寄存器:EAXEAX、EBXEBX、ECXECX、EDXEDX、 ESPESP、EBPEBP、 ESIESI、EDIEDI 16 16位寄存器:位寄存器:AXAX、BXBX、CXCX、DXDX、SPSP、BPBP、SISI、 DIDI、CSCS、DSDS、SSSS、ESES、FSFS、GSGS 8 8 位寄存器:位寄存器:AHAH、ALAL、BHBH、BLBL、 CHCH、CLCL、DHDH、DLDL 如:如: MOV AXMOV AX,BXBX MOV EDI MOV EDI,ESIESI MOV AL MOV AL,CLC
7、L第三章 80 x86寻址方式和指令系统例例3.2 寄存器寻址寄存器寻址第三章 80 x86寻址方式和指令系统三、存储器寻址三、存储器寻址 操作数操作数在在存储器存储器中,其地址由指令以某种中,其地址由指令以某种方式指出。方式指出。(一)一)1616位指令模式下:位指令模式下: 物理地址物理地址= =段基址段基址 10H 10H 有效地址有效地址EAEA(二)(二)3232位指令模式下:位指令模式下: 物理地址物理地址= =段基址段基址 有效地址有效地址EAEA EA EA的计算方法根据采用的寻址方式不同而不的计算方法根据采用的寻址方式不同而不同。同。第三章 80 x86寻址方式和指令系统(一
8、)一)1616位指令模式下的存储器寻址位指令模式下的存储器寻址 1616位指令模式寻址结构位指令模式寻址结构由由4 4部分组成:部分组成:段基址段基址10H10H基址变址偏移量基址变址偏移量 基址:基址:BXBX、BPBP , 变址:变址:SISI、DIDI , 偏移量:偏移量:8 8位或位或1616位位 如果有效地址在如果有效地址在BXBX,SISI或或DIDI中,中, 则以则以DSDS寄存器内容为寄存器内容为段基址段基址; 如果有效地址在如果有效地址在BPBP中,则以中,则以SSSS段寄存器段寄存器的的内容为内容为段基址段基址。第三章 80 x86寻址方式和指令系统 如果使用如果使用段超越
9、段超越(CS:ES:DS:SS:),:),前缀操作数可以放在冒号前指定的段。前缀操作数可以放在冒号前指定的段。例如:例如:MOVES:DI,AL MOVES:2000H, AL 其中其中ES为为前缀前缀字节,产生目标码时,它将字节,产生目标码时,它将放在放在MOV指令的前面,指令的前面, 即:即: 26ES: 8805 MOVDI,AL亦即:亦即:268805 MOVES:DI,AL第三章 80 x86寻址方式和指令系统1 1、直接寻址、直接寻址操作数在存储器单元中。操作数在存储器单元中。操作数所在的操作数所在的有效地址有效地址EAEA直接由指令指出直接由指令指出。 例例1 MOV AX1 M
10、OV AX,3000H3000H 例例2 MOV BL2 MOV BL,BLOCKBLOCK 例例3 MOV BX3 MOV BX,DATA1DATA1 16位指令模式寻址方式位指令模式寻址方式: 直接寻址直接寻址 寄存器间接寻址寄存器间接寻址 寄存器相对寻址寄存器相对寻址 基址变址寻址基址变址寻址 相对基址变址寻址相对基址变址寻址 第三章 80 x86寻址方式和指令系统例例3.3 直接寻址直接寻址第三章 80 x86寻址方式和指令系统直接寻址过程示意直接寻址过程示意第三章 80 x86寻址方式和指令系统直接寻址动态示意直接寻址动态示意第三章 80 x86寻址方式和指令系统2 2、寄存器间接寻
11、址、寄存器间接寻址 操作数的操作数的有效地址在有效地址在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寻址方式和指令系统寄存器间接寻址动态示意寄存器
12、间接寻址动态示意第三章 80 x86寻址方式和指令系统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寻址方
13、式和指令系统例例3.6 寄存器相对寻址寄存器相对寻址第三章 80 x86寻址方式和指令系统寄存器相对寻址过程示意寄存器相对寻址过程示意第三章 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+S
14、IBP+SI 例例4 MOV AX4 MOV AX,BP+DIBP+DI (BX) (SI) (BP) (DI) EA= 第三章 80 x86寻址方式和指令系统例例3.7 基址变址寻址基址变址寻址第三章 80 x86寻址方式和指令系统基址变址寻址过程示意基址变址寻址过程示意第三章 80 x86寻址方式和指令系统基址变址寻址动态示意基址变址寻址动态示意第三章 80 x86寻址方式和指令系统5 5、相对基址变址寻址、相对基址变址寻址操作数在存储单元中,其操作数在存储单元中,其有效地址有效地址EAEA可表示为可表示为 例例1: MOV AX1: MOV AX,BXBXSISI1500H1500H或写
15、成或写成 : : MOV AXMOV AX,1500BXSI1500BXSI 例例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寻址方式和指令系统(二)二) 3232位指令模式下的存储器寻址位指令模式下的存
16、储器寻址 3232位指令模式寻址结构由位指令模式寻址结构由5 5部分组成部分组成:段址段址基址变址比例因子偏移量基址变址比例因子偏移量 其中基址寄存器或变址寄存器可以是除其中基址寄存器或变址寄存器可以是除ESPESP以外的任何以外的任何3232位通用寄存器。当基址寄存器为位通用寄存器。当基址寄存器为EBPEBP时,默认段寄存器时,默认段寄存器SSSS存放段选择符,否则,存放段选择符,否则,默认默认DSDS存放段选择符。也可使用段超越前缀来存放段选择符。也可使用段超越前缀来指定。指定。 比例因子为比例因子为1 1,2 2,4 4,8 8。偏移量为。偏移量为8 8位位或或3232位。位。 第三章
17、80 x86寻址方式和指令系统当偏移量为当偏移量为32位时,段内可寻址范围为:位时,段内可寻址范围为:2312311字节空间。字节空间。32位寻址方式如下图:位寻址方式如下图:物理基址段限访问权限CSSSDSESFSGS描述符描述符基址寄存器变址寄存器偏移量+比例因子比例因子1,2,4,8线性线性地址地址选择符选择符第三章 80 x86寻址方式和指令系统 (1)、指令中直接写出操作数所在存储单元)、指令中直接写出操作数所在存储单元的的32位有效地址(位有效地址(EA),注意:段超越前缀不),注意:段超越前缀不能省略,否则,会出现寻址错误。能省略,否则,会出现寻址错误。 如:如:MOVEAX,D
18、S:11224488H1、直接寻址直接寻址有两种书写格式有两种书写格式(2)、用)、用变量名变量名代表存储单元的有效地址代表存储单元的有效地址 如:如:把数据段中以把数据段中以BUF命名的双字单元的命名的双字单元的内容送到内容送到EAX。MOVEAX,DS:BUF MOVEAX,BUF第三章 80 x86寻址方式和指令系统2、寄存器间接寻址寄存器间接寻址,操作数的有效地址,操作数的有效地址由由EA(EAX、EBX、ECX、EDX、ESI、EDI、EBP)指定。)指定。 如:如:MOVEBX,UBF MOV EAX,EBX3、相对基址寻址相对基址寻址,操作数的有效地址由,操作数的有效地址由EA(
19、EAX、EBX、ECX、EDX、ESI、EDI、EBP)+ 偏移量(偏移量(8、32)指定。)指定。 如:如:MOVEAX,NUM ;NBM有效地址有效地址 MOV EDX,EAX+80H第三章 80 x86寻址方式和指令系统 1、有比例因子的变址寻址、有比例因子的变址寻址 如:如:MOV EBX,ESI4+80H 5、基址加变址寻址基址加变址寻址,有两种格式,有两种格式 (1)、有比例因子)、有比例因子的基址加变址寻址的基址加变址寻址 如:如:MOV EAX,EBP+ESI4+80H4、变址寻址变址寻址,有两种格式,有两种格式2、无比例因子的变址寻址、无比例因子的变址寻址 MOV EBX,E
20、SI+80H第三章 80 x86寻址方式和指令系统(2)、无比例因子的基址加变址寻址)、无比例因子的基址加变址寻址如:如:MOV EAX,EBP+ESI+80H第三章 80 x86寻址方式和指令系统3.1.2 3.1.2 程序地址寻址方式程序地址寻址方式 一、相对寻址一、相对寻址 相对寻址为段内寻址,指令中给出相对寻址为段内寻址,指令中给出带符号的相对偏移量,程序目标地址为当带符号的相对偏移量,程序目标地址为当前前IPIP值加上相对偏移量作为偏移地址。值加上相对偏移量作为偏移地址。 类类 型型 指指 令令相对偏移量相对偏移量 转移范围转移范围 SHORT JMP 1128127NEAR(16位
21、)位) JMP/CALL 23276832767NEAR(32位)位) JMP/CALL 421474836482147483647第三章 80 x86寻址方式和指令系统 例如:例如: 地址地址 机器码机器码助记符助记符1D24:0100 8BF7 MOV DI,SI1D24:0102 EB02 JMP SHORT NEXT1D24:0104 8ACA MOVCL,DL1D24:0106 8AC3 NEXT: MOVAL,BL第三章 80 x86寻址方式和指令系统 二、二、 直接寻址直接寻址 直接寻址是指指令中直接给出转移指令的目标直接寻址是指指令中直接给出转移指令的目标地址。在段间转移中,指
22、令中给出目标段地址或代码地址。在段间转移中,指令中给出目标段地址或代码段的段描述符。段的段描述符。 例如:例如: COD CODE1 ;代码段定义;代码段定义 地址地址 机器码机器码 助记符助记符1D24:0010 8BF7 MOVDI,SI1D24:0012 EA0A00251D JMP FAR PTR NEXT CODE CODE2 ;代码段定义;代码段定义1D25:000A 8ACA NEXT:MOVCL,DL第三章 80 x86寻址方式和指令系统 三、间接寻址三、间接寻址 间接寻址间接寻址 分段内和段间间接寻址,指令中以分段内和段间间接寻址,指令中以间接方式给出转移指令的目标地址,通常
23、存放在间接方式给出转移指令的目标地址,通常存放在数据段。采用数据段。采用(E)BP寻址,指令目标地址放在寻址,指令目标地址放在堆栈段。使用段超越前缀,也可以存放在其他段。堆栈段。使用段超越前缀,也可以存放在其他段。下面的例子为段间间接转移下面的例子为段间间接转移 指令。指令。 BX中存放的是符号地址中存放的是符号地址BUF的偏移地址的偏移地址 BUF双字类型。在双字类型。在BUF所指的存储单元中存所指的存储单元中存放着放着CODE2段中标号段中标号NEXT的段基址和偏移地址的段基址和偏移地址(1D25:0008)。)。第三章 80 x86寻址方式和指令系统 地址地址 操作数操作数 DATA1D
24、26:0000 0800251D BUF DD NEXTCODE CODE1 地址地址 机器码机器码 1D24:0010 BB0000 MOV BX,OFFSET DATA1 1D24:0013 FF2F JNP FAR PTR BX ;CODE CODE2 1D25:0008 8ACA NEXT:MOVCL,DL EXIT第三章 80 x86寻址方式和指令系统IP:0010 CS:1D24 DX:00001D24:0010DS:1D26 MOV BX,OFFSET DATA1JMP FAR PTR BX MOV CL,DL1D25:0008 BB0000FF2F8ACA0800251DNEX
25、T偏移地址偏移地址NEXT段地址段地址数据段数据段1D26:0000CS:1D25 IP:0008 第三章 80 x86寻址方式和指令系统3.1.3 3.1.3 堆栈地址寻址方式堆栈地址寻址方式字字数据数据进栈进栈步骤步骤: : 1 1、(、(E E)SPSP11(E E)SPSP 2 2、 高高8 8位位堆栈堆栈 3 3、(、(E E)SPSP11(E E)SPSP 4 4、低、低8 8位位堆栈堆栈用途:暂存数据,自动保护中断断点、调用过程用途:暂存数据,自动保护中断断点、调用过程 断点等,堆栈的存取方式是:断点等,堆栈的存取方式是: 采用采用先进后出先进后出规则。规则。 使用使用PUSH
26、指令将数据压入堆栈,指令将数据压入堆栈, 使用使用POP指令数据弹出堆栈。指令数据弹出堆栈。第三章 80 x86寻址方式和指令系统字数据字数据出栈出栈步骤步骤:1、栈顶内容、栈顶内容目标寄存器或目标单元的低目标寄存器或目标单元的低8位位2、(、(E)SP1(E)SP3、栈顶内容、栈顶内容目标寄存器或目标单元的高目标寄存器或目标单元的高8位位4、(、(E)SP1(E)SP第三章 80 x86寻址方式和指令系统堆栈操作示意堆栈操作示意第三章 80 x86寻址方式和指令系统思考题思考题 1、 设DS=2000H,SS=3000H,BP=0200H,SI=4000H,BUF=1000H,EAX=000
27、01000H,EBX=00002000H,假设按16位实模式操作,确定下列每条指令访问内存的物理地址,并且指出源操作数及目的操作数的寻址方式。(1)MOV AL,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指令格式指令格式 指令基本格式:指令基本格式: 标号:标号: 助记符助记符 目的目的操作数操作数,源,源操作数;注释操作数;注释 标号可有可无;标号可有可无; 助记符必有,如:助记符必有,如:
28、ADD ADD ,MOVMOV,ININ,OUTOUT。 操作数:操作数: 源操作数源操作数目的操作数目的操作数可有可无。可有可无。第三章 80 x86寻址方式和指令系统操作数:操作数:寄存器寄存器存储器存储器立即数立即数1、 通通 用用 寄存器:寄存器:8位:位:AH,AL,BH,BL,CH,CL,DH,DL16位:位:AX,BX,CX,DX,SI,DI,SP,BP32位:位:EAX,EBX,ECX,EDX,ESI,EDI, ESP,EBP2、存储器操作数:、存储器操作数:需要通过寄存器间接寻址,需要通过寄存器间接寻址, 来到操作数所在存储单元的来到操作数所在存储单元的 地址。地址。 第三章
29、 80 x86寻址方式和指令系统16位间接寻址的寄存器有:位间接寻址的寄存器有:BX,BP,SI,DI;32位间接寻址的寄存器有:位间接寻址的寄存器有:EAX,EBX,ECX, EDX,ESI,EDI, EBP。3、存储器操作数缺省数据类型:存储器操作数缺省数据类型:8位指令操作为:字节类型;位指令操作为:字节类型;16位指令操作为:字类型;位指令操作为:字类型;32位指令操作为:双字型,位指令操作为:双字型,第三章 80 x86寻址方式和指令系统在使用中如要改变地址表达式的类型,可在使用中如要改变地址表达式的类型,可使用使用PTR伪指令来定义。伪指令来定义。如:如:字节型字节型BYTEPTR
30、 Reg字字 型型WORDPTR Reg双字型双字型DWORD PTR Reg 如:如: INC WORD PTR BX 4、 段寄存器操作数段寄存器操作数(Seg),为,为16位的段寄存位的段寄存器:器: CS,DS,ES,SS,FS,GS。第三章 80 x86寻址方式和指令系统 5、立即数(、立即数(imm):只能作为源操作数,其:只能作为源操作数,其数据类型由目的操作数来决定。如果采用十六进数据类型由目的操作数来决定。如果采用十六进制表示立即数,当大于制表示立即数,当大于9时,时,AF的数必须在前的数必须在前面加面加“0”,后面加,后面加“H”。 对指令的分析应注意以下对指令的分析应注意
31、以下4点:点:(1)、指令的功能;)、指令的功能;(2)、适用于指令的寻址方式;)、适用于指令的寻址方式;(3)、指令对标志位的影响;)、指令对标志位的影响;(4)、指令长度和执行时间。)、指令长度和执行时间。 第三章 80 x86寻址方式和指令系统3.3 80X863.3 80X86指令系统指令系统按功能分类:按功能分类: 数据传送指令数据传送指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 控制转移类指令控制转移类指令 串操作指令串操作指令 输入输入/输出指令输出指令 处理器控制指令处理器控制指令 中断指令与中断指令与DOS功能调用功能调用第三章 80 x86寻址方式和指令系统3.
32、3.1 3.3.1 数据传送指令数据传送指令 通用数据传送指令通用数据传送指令 堆栈操作指令堆栈操作指令 地址传送指令地址传送指令 标志寄存器传送指令标志寄存器传送指令 查表指令查表指令 符号扩展指令符号扩展指令 数据传送指令包括通用数据传送、地址传送数据传送指令包括通用数据传送、地址传送指令、标志寄存器传送指令、符号扩展指令和指令、标志寄存器传送指令、符号扩展指令和扩展传送指令等。扩展传送指令等。第三章 80 x86寻址方式和指令系统一、通用数据传送指令一、通用数据传送指令 1、传送指令格式:、传送指令格式: MOVDest, Source 数据传送的路径方向于图示:数据传送的路径方向于图示
33、:立即数立即数存储器存储器CS 、DS、ES、SS通用通用寄存器寄存器第三章 80 x86寻址方式和指令系统、MOVREG ,REG;寄存器到寄存器;寄存器到寄存器、 MOVREG ,IMM;立即数到寄存器;立即数到寄存器、 MOVMEM,IMM;立即数到存储器;立即数到存储器、 MOVMEM,REG;寄存器到存储器;寄存器到存储器、 MOVREG ,MEM;存储器到寄存器;存储器到寄存器、 MOVSEGREG,REG;(;( CS除外)除外)、 MOVREG, SEGREG;(;( 含含CS)、 MOVSEGREG,MEM; (CS除外)除外)、 MOVMEM, SEGREG;(;( 含含C
34、S)第三章 80 x86寻址方式和指令系统如:如:MOV AL,CL MOV BX,SI MOV EAX,EBX MOVAX,0D56BHMOVEAX,EBX+ESI第三章 80 x86寻址方式和指令系统2、交换指令、交换指令 交换操作数的数据类型:字节型、字型、双字交换操作数的数据类型:字节型、字型、双字型。允许通用寄存器之间,通用寄存器与存储型。允许通用寄存器之间,通用寄存器与存储器之间交换数据。器之间交换数据。 格式:格式: XCHG DEST,SRC 如:如:XCHG EAX,EBX;32位交换位交换 XCHG AX,SI;存储器与寄存器交换;存储器与寄存器交换 XCHG AL,DL;
35、8位交换位交换 两操作数中不允许出现立即数两操作数中不允许出现立即数 两操作数不允许同时为存储器操作数两操作数不允许同时为存储器操作数 两操作数数据类型必须一致两操作数数据类型必须一致第三章 80 x86寻址方式和指令系统3、字节交换指令、字节交换指令格式:格式: BSWAP32位寄存器位寄存器功能:将功能:将 位位31 位位24 与与 位位7 位位0 交换,交换, 位位23 位位 16 与位与位15 位位8交换交换4、 查表指令查表指令格式:格式: XLAT 表头变量名表头变量名功能:取出功能:取出 DS:BX+ AL 中的中的1个字节送给个字节送给 AL ,或者取出,或者取出DS:EBX+
36、AL中的中的1个个 字节送给字节送给AL。 第三章 80 x86寻址方式和指令系统例如:字形编码:例如:字形编码:0F,对应的表头为:,对应的表头为:TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,DB 07H,7FH,6FH,77H,7CH,39H,5EH,DB 79H,71HNUM DBX X ;0 15 中的任一数所在表中的地址中的任一数所在表中的地址MOVDS, 数据段基址数据段基址 MOVBX, OFFSET TAB MOVAL, NUM XLATTAB第三章 80 x86寻址方式和指令系统 3、扩展传送指令、扩展传送指令 MOVSX DEST,SRC MOVZX
37、DEST,SRC如如 : MOV BL,80H MOVSX AX,BL ; AX=FF80H MOVZX AX,BL ;AX=0080H* 目的操作数为通用寄存器(目的操作数为通用寄存器(16位或位或32位)位)* 源操作数长度必须小于目的操作数长度,为通源操作数长度必须小于目的操作数长度,为通用寄存器或存储器操作数(用寄存器或存储器操作数(8位或位或16位)位)第三章 80 x86寻址方式和指令系统使用使用MOV指令应注意:指令应注意: 立即数不允许直接送立即数不允许直接送段段寄存器,且立即数不寄存器,且立即数不能做目的操作数能做目的操作数 源操作数和目的操作数不允许同时为存储器源操作数和目
38、的操作数不允许同时为存储器操作数操作数 源操作数和目的操作数不允许同时为段寄存源操作数和目的操作数不允许同时为段寄存器器 两操作数的数据类型要一致两操作数的数据类型要一致 传送操作不影响标志位传送操作不影响标志位 不允许对不允许对CS、(、(E)IP传送数据传送数据第三章 80 x86寻址方式和指令系统二、堆栈操作指令二、堆栈操作指令堆栈是人为定义的一块内存空间,用来暂存堆栈是人为定义的一块内存空间,用来暂存数据的。堆栈能自动保护中断断点和现场以及调数据的。堆栈能自动保护中断断点和现场以及调用子过程的断点和现场等。对数据的存取按照用子过程的断点和现场等。对数据的存取按照“先进后出先进后出”的规
39、则进行。的规则进行。 堆栈的栈底在高端地址单元,栈顶为低端地堆栈的栈底在高端地址单元,栈顶为低端地址。址。当数据进栈后,栈顶向低端地址下浮;当数据进栈后,栈顶向低端地址下浮;当数据出栈后,栈顶向高端地址上浮。当数据出栈后,栈顶向高端地址上浮。第三章 80 x86寻址方式和指令系统 一个一个16位或位或32位数据进栈的规律是:位数据进栈的规律是: 高位字节压入高地址单元,低位字节压入低高位字节压入高地址单元,低位字节压入低地址单元。地址单元。 一个一个16位或位或32位数据出栈的规律是:位数据出栈的规律是: 低位字节弹到目标操作数低位,高位字节低位字节弹到目标操作数低位,高位字节弹到目标操作数高
40、位。弹到目标操作数高位。栈顶位置由栈顶位置由SP/ESP指出。指出。第三章 80 x86寻址方式和指令系统 1、压栈指令、压栈指令 : PUSH SRC如:如: PUSH AL PUSH AX PUSH EAX PUSH DS PUSH SI PUSH DWORD PTR SI PUSH 1234H PUSH 80H 第三章 80 x86寻址方式和指令系统如:如: POP 80H POP 1234H POP DWORD PTR DI POP DI POP DS POP EAX POP AX POP AL2、出栈指令:、出栈指令: POP DEST第三章 80 x86寻址方式和指令系统(3)、1
41、6位标志寄存器进栈位标志寄存器进栈/出栈指令出栈指令 PUSHF ;先;先PS1SP,16位标志压入位标志压入SS:SP POPF ;先弹出;先弹出16位标志到位标志到FLAGS,SP+2 SP(4)、)、32位标志寄存器进栈位标志寄存器进栈/出栈出栈 PUSHFD;先;先ESP 4ESP,32位标志压入位标志压入SS:ESPPOPFD; 先弹出先弹出4字节标志到字节标志到EFALGS,ESP+4 ESP(5)、)、8个个16位通用寄存器进栈位通用寄存器进栈/出栈指令出栈指令FUSHA ;先;先SP 16 SP, 然后把然后把AX,BX,CX, DX,SP,BP,SI,DI的内容依次压栈,的内
42、容依次压栈, 进栈的进栈的SP值是调整前的值。值是调整前的值。 第三章 80 x86寻址方式和指令系统(6)、)、8个个32位通用寄存器进栈出栈指令位通用寄存器进栈出栈指令PUSHAD ; 先先ESP32ESP,把,把EAX,EBX, ECX,EDX,ESP,EBP,ESI,EDI 依次压入堆栈,依次压入堆栈, 进栈的进栈的ESP值是调整值是调整 前的值。前的值。 POPAD ;先从堆栈弹出;先从堆栈弹出32字节(字节( EDI ,ESI , EBP ,ESP ,EDX, ECX, EBX, EAX)。)。 然后然后 ,ESP+ 32ESP。第三章 80 x86寻址方式和指令系统三、地址传送指
43、令三、地址传送指令格式:格式: LEA DEST,SRC *DEST为为16位或位或32位通用寄存器位通用寄存器 *SRC为为16位或位或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寻址方式和指令系统五、
44、查表指令五、查表指令格式:格式: XLAT指令规定:表格存于数据段中指令规定:表格存于数据段中 表首偏移地址表首偏移地址BX 表内偏移量表内偏移量AL 查找结果查找结果AL所找单元的物理地址所找单元的物理地址: (DS)10H+(BX)+(AL)第三章 80 x86寻址方式和指令系统查表指令应用举例查表指令应用举例 3FH 06H 5BH 4FH 66H 6DH BLOCK LEA BX,BLOCK MOV AL, 3 XLAT结果:结果:AL内容为内容为4FH例:试编程将内存中以例:试编程将内存中以BLOCK为起始地址的编码表中为起始地址的编码表中顺序号为顺序号为3的编码送的编码送AL寄存器
45、。寄存器。 第三章 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寻址方式和指令系统3.3.2 3.3.2 算术运算指令算术运算指令 加法指令加法指令 减法指令减法指令 加加1减减1指令指令 比较指令比较指令 乘法指令乘法指令 除法指令除法指令
46、 BCD算术运算指令算术运算指令第三章 80 x86寻址方式和指令系统算术运算类指令特点算术运算类指令特点 影响标志位影响标志位 操作数不允许为段寄存器操作数不允许为段寄存器 不允许两个操作数同为存储器操作数不允许两个操作数同为存储器操作数 若无特别规定,操作数类型必须一致若无特别规定,操作数类型必须一致 目的操作数不允许为立即数目的操作数不允许为立即数 当操作数类型不明确时必须使用当操作数类型不明确时必须使用PTR伪指令伪指令第三章 80 x86寻址方式和指令系统一、加法指令一、加法指令格式(格式(1) ADD DEST,SRC功能:源操作数功能:源操作数+目的操作数目的操作数目的操作数目的
47、操作数格式(格式(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寻址方式和指令系统二、减法指令二、减法指令格式(格式(1) SUB DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数目的操作数目的操作数格式(格式(2) SBB DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数CF目的操作
48、数目的操作数*SUB、SBB指令与指令与ADD、ADC一样,影响标志位一样,影响标志位OF、SF、ZF、AF,PF,CF第三章 80 x86寻址方式和指令系统三、加三、加1减减1指令指令加加1指令指令 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 DE
49、ST,SRC功能:目的操作数源操作数功能:目的操作数源操作数(1)若目、源为无符号数)若目、源为无符号数 CF=0 则目则目源源 (若(若ZF=1,则目,则目=源)源) CF=1 则目源则目源(2)若目、源为带符号数)若目、源为带符号数 若目、源为同号数(若目、源为同号数(OF=0) 若均为正,若均为正,SF=0 则目则目源(若源(若ZF=1,则目,则目=源)源) SF=1 则目源则目源 若均为负若均为负 ,SF=0 则目则目源(若源(若ZF=1,则目,则目=源)源) SF=1 则目源则目源 第三章 80 x86寻址方式和指令系统若目、源为异号数(若目、源为异号数(OF=0或或1) 若目为正,
50、源为负若目为正,源为负 则目源则目源 若此时若此时 SF=0 则则OF=0 若此时若此时 SF=1 则则OF=1 若目为负,源为正若目为负,源为正 则目源则目源 若此时若此时 SF=1 则则OF=0 若此时若此时 SF=0 则则OF=1综合起来,若目、源为带符号数综合起来,若目、源为带符号数 OF SF=0 则目则目源源 OF SF=1 则目源则目源 第三章 80 x86寻址方式和指令系统五、交换相加指令五、交换相加指令格式格式 XADD DEST,SRC功能:目的操作数源操作数功能:目的操作数源操作数目的操作数目的操作数 且原目的操作数且原目的操作数源操作数源操作数影响标志位影响标志位OF、
51、SF、ZF、AF、PF、CF六、求补指令六、求补指令格式格式 NEG DEST功能:求目的操作数的相反数的补码功能:求目的操作数的相反数的补码影响标志位影响标志位OF、SF、ZF、AF、PF、CF第三章 80 x86寻址方式和指令系统七、乘法指令七、乘法指令格式格式 MUL SRC (针对无符号数)(针对无符号数) IMUL SRC (针对带符号数)(针对带符号数)隐含规定:隐含规定: SRCSRC为一乘数因子,可为为一乘数因子,可为 8 8位位/ / 1616位位 / /3232位位寄存器或存储器寄存器或存储器 另一乘数因子在累加器中(另一乘数因子在累加器中(ALAL/ / AX AX /
52、/ EAXEAX) 结果为乘积,乘积隐含在(结果为乘积,乘积隐含在(AXAX/ /DXDX:AXAX/ /EDXEDX:EAXEAX) 字节乘字节乘 字乘字乘 双字乘双字乘* *若乘积高位为若乘积高位为0 0,则,则CF=0CF=0,OF=0OF=0 若乘积高位含有效数据若乘积高位含有效数据,则,则CF=1CF=1,OF=1OF=1 对其它标志位无定义对其它标志位无定义 第三章 80 x86寻址方式和指令系统例:计算存于下列内存中的两个无符号数的乘积例:计算存于下列内存中的两个无符号数的乘积 1234H2345H=?结果放?结果放RESULT单元单元LEA BX,BLOCKMOV AX,BXM
53、UL 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 第三章 80 x86寻址方式和指令系统八、除法指令八、除法指令格式格式 DIV SRC (针对无符号数)(针对无符号数) IDIV SRC (针对带符号数)(针对带符号数)隐含规定:隐含规定: SRC为除数,为为除数,为 8 8位位/ / 1616位位 / /3232位位寄存器或存储器寄存器或存储器 被除数隐含在被除数隐含在 ( AXAX/ /DXDX:
54、AXAX/ / EDXEDX:EAXEAX) 商隐含在商隐含在 ( ALAL/ / AX AX / / EAXEAX) 余数隐含在余数隐含在 ( AHAH/ / DX DX / / EDXEDX) 字节除字节除 字除字除 双字除双字除* *当除数为当除数为0 0或商溢出时会产生中断或商溢出时会产生中断* *被除数必须是除数的双倍长度,否则,需要进行高位扩展被除数必须是除数的双倍长度,否则,需要进行高位扩展 无符号数高位扩展为全无符号数高位扩展为全0 0,带符号数按符号扩展指令扩展,带符号数按符号扩展指令扩展第三章 80 x86寻址方式和指令系统九、组合型九、组合型BCD算术运算指令算术运算指令
55、 组合组合BCD码也称压缩格式的码也称压缩格式的BCD码,码,用一个字节用一个字节存储存储2位位BCD码码。 如十进制数如十进制数12的组合的组合BCD码为码为 00010010B 35的组合的组合BCD码为码为 00110101B该类指令使用场合:该类指令使用场合: 当参与运算的十进制数以其组合当参与运算的十进制数以其组合BCD码形式存放,加减码形式存放,加减时,计算机会当作二进制数来运算,其结果一定不是理想要时,计算机会当作二进制数来运算,其结果一定不是理想要得的组合型得的组合型BCD码结果,这时,必须用组合型码结果,这时,必须用组合型BCD算术运算算术运算指令加以调整,即将二进制结果调整
56、为指令加以调整,即将二进制结果调整为BCD码表示形式。码表示形式。 加法调整指令一般紧跟在加法调整指令一般紧跟在ADD或或ADC之后,减法调整指之后,减法调整指令一般紧跟在令一般紧跟在SUB或或SBB之后。之后。第三章 80 x86寻址方式和指令系统1、组合型、组合型BCD加法调整指令加法调整指令格式格式 DAA功能:功能:AL(二进制和)(二进制和)组合组合BCD码码例:例:26+68=? 分析:用组合分析:用组合BCD码存放时,两个数应分别为码存放时,两个数应分别为26H和和68H,理想结果应该为,理想结果应该为94H。编程如下:。编程如下:MOV AL,26HMOV BL,68HADD
57、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算术运算指令算术运算指令 非非 组合组合BCD码也称非压缩格式的码也称非压缩格式的BCD码,码,用一个用一个字节存储字节存储1位位BCD码,高码,高4位无意义位无意义。 如非组合如非组合BCD码码
58、00010010B表示的数为表示的数为2 非组合非组合BCD码码 00110101B表示的数为表示的数为5 3635H即即0011011000110101B表示的数是表示的数是65由于由于09的的ASCII码为码为30H39H,机器采用一个字节存放一,机器采用一个字节存放一位位ASCII码,所以,码,所以,ASCII码是一种非组合型码是一种非组合型BCD码。码。 非组合型非组合型BCD调整指令有加、减、乘、除四种调整调整指令有加、减、乘、除四种调整指令。指令。第三章 80 x86寻址方式和指令系统1、非组合型、非组合型BCD加法调整指令加法调整指令格式格式 AAA功能:功能:AL(二进制和)(
59、二进制和)非组合非组合BCD码码例:例:5+9=? 分析:用非组合分析:用非组合BCD码存放时,两个数应分别为码存放时,两个数应分别为05H和和09H,理想结果应该为,理想结果应该为0104H。编程如下:。编程如下:MOV AL,05HMOV BL,09HADD AL,BL ;AL=0EHAAA ;AX=0104H第三章 80 x86寻址方式和指令系统2、非组合型、非组合型BCD减法调整指令减法调整指令格式格式 AAS功能:功能:AL(二进制差)(二进制差)非组合非组合BCD码码 3、非组合型、非组合型BCD乘法调整指令乘法调整指令格式格式 AAM功能:功能:AL(二进制乘积)(二进制乘积)非
60、组合非组合BCD码码 4、非组合型、非组合型BCD除法调整指令除法调整指令格式格式 AAD功能:功能:AX(两位非组合(两位非组合BCD码)码)二进制数二进制数*AAD指令必须放在除法指令之前进行。指令必须放在除法指令之前进行。 其他调整指令都是先运算后调整。其他调整指令都是先运算后调整。第三章 80 x86寻址方式和指令系统思考题思考题判断下列指令是否正确,若有错误,请指出原因,并改正。判断下列指令是否正确,若有错误,请指出原因,并改正。(1 1)MOV BLMOV BL,OFFSET BLOCK OFFSET BLOCK (2 2)LEA DILEA DI,BXBXSISI(3 3)PUS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗废物处理与区块链追踪合作协议
- 人教版英语下册学情分析计划
- 初中年级组长素质教育实施计划
- 2025年磁粉探伤机项目提案报告模板
- 2025年离合器面片项目规划申请报告模板
- DB64-T 2135-2025“互联网+城乡供水”工程设计报告编制技术导则
- 2025年重氮化合物项目规划申请报告
- 2024-2025学年部编人教版八年级阅读推广计划
- 河南省百强名校2021-2022学年高二上学期期中考试英语 无答案
- 广东省深圳市龙岗区2021-2022 学年高三上学期期中质量监测地理 无答案
- 红旅赛道未来规划
- GIS安装标准化作业指导书
- 带电作业施工方案
- 宏定义与跨平台开发
- 腰椎病护理措施
- 社保费扣费协议书范文范本下载
- 2024年全国寄生虫病防治技能竞赛备赛试题库-上(血吸虫病、疟疾)
- 【一等奖课件】《刑事摄像技术》比赛课题:现场照相内容及方法
- 手术室环境清洁与消毒课件
- DB23T 3844-2024 煤矿地区地震(矿震)监测台网技术要求
- 工商企业管理毕业论文范文(4篇)
评论
0/150
提交评论