[工学]第三章 指令系统

上传人:油条 文档编号:55346679 上传时间:2018-09-28 格式:PPT 页数:125 大小:826KB
返回 下载 相关 举报
[工学]第三章 指令系统_第1页
第1页 / 共125页
[工学]第三章 指令系统_第2页
第2页 / 共125页
[工学]第三章 指令系统_第3页
第3页 / 共125页
[工学]第三章 指令系统_第4页
第4页 / 共125页
[工学]第三章 指令系统_第5页
第5页 / 共125页
点击查看更多>>
资源描述

《[工学]第三章 指令系统》由会员分享,可在线阅读,更多相关《[工学]第三章 指令系统(125页珍藏版)》请在金锄头文库上搜索。

1、第三章 指令系统,第一节 数据类型 第二节 寻址方式 第三节 指令系统,学习指导和要求,熟练掌握80x86指令集的数据类型和寻址方式; 熟记各种类型的指令格式及功能,并能编写简单程序。,第一节 数据类型一、常数1.数值常数二进制数,以B结尾。如00001100B八进制数,以Q或O结尾。如123Q或123O十进制数,以D结尾或省略。如123D或123D十六进制数,以H结尾。如123H2.字符常数格式:字符串,以ASCII格式存储。如:123ABC,A,83.BCD码组合型BCD码:1字节存放两位BCD码拆开型BCD码:1字节存放一位BCD码(低4位),二、浮点数(实数) 三、指针数据1.近指针(

2、32位) 32位的段内偏移地址,段内寻址时使用。2.远指针(48位) 由16位选择符和32位偏移量组成,段间寻址时使用。,立即数方式:操作数包含在指令中,存放在代码段。寄存器方式:操作数在寄存器中,存放在CPU内。存储器方式:操作数在存储器(数据段)中。 指令中的操作数有两类:操作数据和转移地址。,代码段,数据段,寄存器,CPU,内存,运算器,立即数,存储器,二、寻址方式,11种寻址方式: 立即寻址 寄存器寻址直接寻址 基址寻址带位移的(相对)基址寻址变址寻址带位移的(相对)变址寻址基址加变址寻址 带位移的(相对)基址加变址寻址基址加比例变址寻址(32位) 带位移的(相对)基址加比例变址寻址(

3、32位),存储器方式,一、立即数方式 立即数位于操作码之后,存放在代码段中。如:MOV BL,16H ;BL 56HMOV AX,2056H ;AX 2056H,用途:给寄存器或存储器赋值。 注意:立即数只能作源操作数,不能作目的操作数。,OP 16H OP 56H 20H,BL,AX,AH AL,二、寄存器方式操作数在寄存器中。如:MOV AL,56HMOV BL,12HADD AL,BL注意:1、寄存器既能作源操作数,又能作目的操作数,在同一条指令中,寄存器的类型必须相同。 2)寄存器寻址与段地址无关 错误例: MOV AX, BL ; 字长不同 MOV ES: AX, DX ; 寄存器与

4、段无关,实模式存储器寻址(1MB):逻辑地址:xxxxH:xxxxH,DS、ES、FS、GS、SS,物理地址(PA)=16位段基址*24 +16位偏移地址(EA),三、存储器方式,BX、SI、DI 、BP,保护模式存储器寻址: 物理空间:232B=4GB,虚拟空间:246B=64TB 逻辑地址:xxxxH:xxxxxxxxH,段选择符,32位偏移地址,32位段基址,+,32位物理地址,DS、ES、FS、GS、SS,段描述符表,1.直接寻址操作数的16位偏移地址位于操作码之后,存放在代码段中。直接地址表示MOV AL,2000H;AL (DS)*10H+2000H)符号地址表示MOV AL,D1

5、 ;注意:默认操作数存放在数据段,否则需加前缀ES、FS、GS、SS说明。MOV AL,ES:2000H;AL (ES)*10H+2000H),(一)16位寻址,指令操作例:MOV AX,3102H AL (3102H) , AH (3103H),如果(DS)=2000H, (23012H) = CDH, (23013H) = ABH 则操作数的物理地址为: 20000H+3102H = 23102H 指令执行后:(AX) = ABCDH,MOV操作码,02H,31H,AH,AL,23102H,CDH,ABH,存储器,代码段,数据段,. .,寄存器间接寻址 操作数的偏移地址存放在寄存器中,而操

6、作数存放在存储器中。 (1)16位寻址EA= DI、SI、 BX、BP,无前缀默认操作数存放在数据段,无前缀默认操作数存放在堆栈段,错误例 : MOV AX, DX MOV CL, AX,指令操作例:MOV AX,SI 若 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H 则指令执行后,(AX)=3344H。,例如:MOV AX,BX ; AX (DS*10H+(BX)MOV AX,BP ; AX (SS*10H+(BP)MOV AX,ES:BX; AX (ES*10H+(BX)MOV AX,DS:BP; AX (DS*10H+(BP) (2

7、)32位寻址EA= EDI、ESI、EBX、EAX、ECX、EDX、ESP、EBP ESP、EBP默认操作数存放在堆栈段,其它默认操作数存放在数据段。例如:MOV AX,EBX ;DS段字数据送AXMOV AX,EBP ;SS段字数据送AXMOV ECX,ES:EBX ; ES段双字数据送ECX,基址寻址 EA=基址寄存器+位移量 16位寻址:BP,BX为基址寄存器 BX, DS为默认段寄存器 BP, SS为默认段寄存器 32位寻址:8个32位通用寄存器均可作为基址寄存器,除ESP,EBP默认段寄存器为SS外,其余均默认段寄存器为DS,MOV EAX, BX+24MOV DX, EAX+150

8、0,MOV EAX, 24BXMOV DX, 1500EAX,低地址,高地址,CS段,操作码,00H,15H,34H,12H,34H,12H,DX,DS段,70000,73500,BX,1500,73500,+,MOV DX, BX+1500,DS,7000,0,2000,数据结构的基址寻址方式,字段0,字段n-1,字段2,字段1,基址寄存器,+,(位移量),MOV AX, BX+100H,字段k,例:设(DS)=2000H,(SS)=1000H(BX)=0100H, (BP)=0020H求下列指令的EA和PA (1)MOV AL,BX+10H(3)MOV AL,BP+80H,变址寻址 变址寻

9、址适用于对一维数组的元素进行操作 无比例因子 EA=变址寄存器 + 位移量 16 位寻址:SI, DI为变址寄存器, DS 为默认段寄存器 32 位寻址:除 ESP 外,其余 7 个 32 位通用寄存器均可作为变址寄存器,EBP 默认 SS 为段寄存器,其余均默认段寄存器为 DS,MOV AH, SI+5,位移量表示数组起始地址,不变,变址寄存器为数组下标,可变。,(位移量),数组的变址寻址方式,单元0,单元n-1,单元2,单元1,变址寄存器,+,MOV AX, SI+100H,地址增加,EA=变址寄存器比例因子+位移量 只适用于32位寻址 例:MOV EAX, ESI*4+50,比例变址寻址

10、适用于一维数组操作,当数组元素大小为2/4/8字节时,它更方便、有效,变址寻址 (2)有比例因子,例:设(DS)=2000H(SI)=0100H,(DI)=0020H求下列指令的EA和PA (1)MOV AL,SI+10H (2)MOV AL,DI+0FH,基址加变址寻址基址寄存器内容与变址寄存器内容之和形成操作数的偏移地址。即:EA=基址寄存器+变址寄存器(1) 16位寻址 基址寄存器: BX、BP; 变址寄存器: DI、SI如:MOV AX,BX+SI或MOV AX,BXSI;DS段(BX)+(SI)中的字数 据送AX。(2) 32位寻址基址寄存器: 任何一个32位通用寄存器变址寄存器:除

11、 ESP之外的其它 7 个32位通用寄存器如:MOV AX,EBX+ECX ;DS段(EBX)+(ECX)中 或MOV AX,EBXECX 的字数据送AX。,注:同一组内的寄存器不能同时出现。错误例: MOV AX, BX BP MOV AX, DI SI,83000,操作码,DS 8000,BX 2000,+ SI 1000,83000H,AH,AL,AX,代码段,数据段,. . .,. . .,. . .,YY,XX,指令操作例:MOV AX,BXSI 假定:(DS)=8000H, (BX)=2000H, SI=1000H 则物理地址 = 80000H + 2000H + 1000H =

12、83000H 指令执行后: (AL)=83000H(AH)=83001H,基址寄存器内容与变址寄存器内容再加偏移量之和形成操作数的有效地址。即:EA=基址寄存器+变址寄存器+偏移量 如 : MOV A X,1234HBX+DI或MOV AX,BX+DI+1234H或MOV AX,1234HBXDI ;DS段 (BX)+(DI)+1234H中的字数据送AX。,相对基址加变址寻址,指令操作例:MOV AX,DATADIBX 若(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H 则指令执行后(AH)=83021H, (AL)=83020H,83200,8320

13、0H,AH,AL,AX,+ DATA 0200,操作码,代码段,数据段,. . .,. . .,. . .,YY,XX,DS 8000,BX 2000,DI 1000,使用相对的基址-变址寻址方式可以很方便地访问二维数组。,基址寄存器,数组首地址,变址寄存器,数组元素行址,位移量,数组元素列址,(偏移地址),比例变址加基址寻址(32位寻址) 变址寄存器内容乘以比例因子再加上基址寄存器的内容,形成操作数的32位有效地址。即:EA=变址寄存器*比例因子+基址寄存器 如:MOV AX,EBX*4+ESI,3.2.8 隐含寻址,指令操作数是隐含的,在指令中未显式地指明。例:MUL BL(AL)(BL)

14、AX指令隐含了被乘数 AL 及乘积 AX类似的指令还有:DIV、CBW、MOVS等,二、与跳转指令有关的寻址方式 与跳转有关的寻址方式用于确定程序转移或调用的目标。如: 无条件转移语句:JMP dst dst:转移目标 调用语句:CALL dst dst:调用目标 参见转移和调用指令一节。控制转移指令中的操作数是转移的目的地址,称为“转移地址”,它的寻址方式有三种:即直接寻址、寄存器寻址和存储器寻址。 一、直接寻址 指令中直接给出转移地址,通常给出的是符号地址-标号,例如:JMP START,二、寄存器寻址 指令中给出寄存器名,该寄存器的内容即转移地址,仅用于段内转移。 例如:JMP BX (BX) IP 作为目标地址的寄存器可以是16位的8个通用寄存器(AXDI);也可以是32位的8个扩展寄存器(EAXEDI)。三、存储器寻址 指令中给出EA,转移地址在数据段的某单元中。 例如:JMP DWORD PTR BX IP EA+1 EA CS EA+3EA+2,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号