收藏 分享(赏)

(第7讲)第4章-IA-32指令系统4.1.ppt

上传人:HR专家 文档编号:6529900 上传时间:2019-04-15 格式:PPT 页数:47 大小:564.50KB
下载 相关 举报
(第7讲)第4章-IA-32指令系统4.1.ppt_第1页
第1页 / 共47页
(第7讲)第4章-IA-32指令系统4.1.ppt_第2页
第2页 / 共47页
(第7讲)第4章-IA-32指令系统4.1.ppt_第3页
第3页 / 共47页
(第7讲)第4章-IA-32指令系统4.1.ppt_第4页
第4页 / 共47页
(第7讲)第4章-IA-32指令系统4.1.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、第4章 IA-32指令系统,4.1 寻址方式,第4章 IA-32指令系统,4.1 数据寻址方式4.2 数据传送类指令4.3 算术运算类指令4.4 位操作类指令4.5 串操作类指令,数据寻址方式 寻找操作数的方法 类型 4.1.1 立即数寻址 数据与指令操作码一起,用常量表达 4.1.2 寄存器寻址 数据在寄存器中,用寄存器名表示 4.1.3 存储器寻址 数据在主存中,用存储器地址代表,4.1.1 立即数寻址,立即数(Immediate) 操作数从指令代码中得到,不需要访问存储器 用常量形式直接表达,存放:低对低,高对高 只能是源,不能是目的,例1. MOV AL,05H例2. MOV EBX,

2、11223344H ; 32立即数扩充的32位通用寄存器中例3. MOV AX,0102H 机器代码: B8 02 01 操作码: B8 立即数: 0102,MOV AX,0102H 机器代码: B8 02 01,4.1.2 寄存器寻址,操作数在CPU内部寄存器中,无需访问存储器 寄存器可是源,也可是目的 分类 通用寄存器寻址:AX、BX 绝大多数指令 专用寄存器寻址:IP、CS 部分指令,例. MOV AX,BX,注意:源和目的操作数必须类型一致,例. 判断对错 MOV ECX, EBX ;源、目标操作数均为32位寄存器方式 MOV AX, BL MOV BL, AX MOV AX, 123

3、456H MOV CX, DX,4.1.3 存储器(主存)寻址,操作数:在存储器中 逻辑地址 段地址:偏移地址(有效地址EA) 段地址 默认 一般数据:数据段DS 由BP/EBP或SP/ESP形成EA,基地址:堆栈段SS 超越:不使用默认段地址 方法 加段超越前缀CS:、DS:、ES:、FS: 或 GS: 等,偏移地址(有效地址EA),32位有效地址 基址寄存器(变址寄存器比例)位移量32位通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP 16位有效地址 基址寄存器 变址寄存器 位移量,存储器寻址种类,(1)直接寻址 (2)寄存器间接寻址 (3)寄存器相对寻址 (4)

4、基址变址寻址 (5)相对基址变址寻址 (6)带比例存储器寻址,区别: 偏移地址(即,有效地址 EA)获取方法不同,(1)直接寻址,指令代码:A1 00 20,特点: 指令中给出有效地址 EA 操作数默认在数据段 DS 中 例. 分析指令差别 MOV AX,2000H ;AXDS:2000H MOV AX,2000H ;AX2000H,段超越,直接寻址的操作数默认在DS段 存取 CS、ES、SS、FS、GS 中的数据 应在指令中增加段前缀,指出段寄存器名例1. 指出下两条指令的区别 MOV AX, 2000H MOV AX, ES:2000H,在其他的存储器寻址方式中也存在类似的段超越,;数据段

5、数据AX ;附加段数据AX,例2. 符号地址 .model small .386 .dataVALUE DB 12H, 13H ; 变量定义 .code .startupMOV AL, VALUE ; VALUE又称为符号地址; 等价于MOV AL, VALUE; (AL) 12HMOV AL, VALUE+1 ; 等价于MOV AL, VALUE+1; (AL) 13H .exit end,(2)寄存器间接寻址,操作数的 有效地址 EA 在指令的寄存器中,注意事项,16位有效地址只能在DI、SI、BP、BX中; 若以DI、SI、BX间接寻址,则默认操作数在数据段中 操作数物理地址 DS16B

6、X(或SI、DI) 若以BP间接寻址,则默认操作数在堆栈段内 操作数物理地址 SS16BP 若操作数不在以上规定段内,则必须在指令中加上段超越前缀 32位有效地址可在任何一个32位通用寄存器中 ESP和EBP默认堆栈段SS,其余均默认数据段DS,例1. MOV AX,SI 若 (DS)=6000H, (SI)=1200H,(61200H)=44H, (61201H)=33H,则指令执行后:(AX)= ? H。,将DS段的(SI) AL(SI1) AH,3344H,例2. 分析指令作用(a) MOV BH, BP ;将SS段 (BP) BH(b) MOV CX, ES:BX ;将ES段;(BX)

7、 CL;(BX1) CH,例3. 功能分析mov al,bx ;字节量传送,16位有效地址mov ax,si ;字量传送,16位有效地址mov eax,di ;双字量传送,16位有效地址mov esi,cx ;字量传送,32位有效地址mov ebx,edx ;双字量传送,32位有效地址mov word ptr ebp,1394h ;字量传送,32位有效地址mov ebx,eax ;双字量传送,32位有效地址mov bx, eax ;字量传送,32位有效地址mov eax,bx ;双字量传送,16位有效地址,注意:寄存器间接寻址没有说明存储单元类型,INC BX INC BYTE PTR BX

8、INC WORD PTR BX,(3)寄存器相对寻址,有效地址是寄存器内容与8位、16位或32位位移量之和,例1. mov ax,di+06h ;AXDS:DI+06H 寄存器:DI 位移量:06H 有效地址:EADI06H例2. mov ax,ebp-06h ;AXSS:EBP-06H 使用EBP寄存器,默认配合SS段寄存器,例3. MOV AX,DATABX 若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H, 则 (a)物理地址 = 60000H + 1000H + 2A00H = 63A00H (b)指令执行后

9、:(AX)= 5566H (见下页图示),?,?,操作码,00 偏移量低,2A 偏移量高,DS 6000,+BX 1000,+ DATA 2A00,63A00,63A00H,AH,AL,AX,代码段,数据段,. . .,. . .,. . .,66H,55H,MOV AX,DATABX,63A01H,例4. 下列指令书写方式等价 ;设COUNT常量的值为5MOV AX, BX+05 MOV AX, 05BX MOV AX, COUNTBP MOV AX, BX+5,例5.MOV ECX, EAX+24MOV DX, EBP+12 MOV AX, COUNT EBP MOV EAX, COUNT

10、 EBP MOV EDX, COUNT EAX,例题4-5寄存器相对寻址程序,0010 66| B9 00000008 mov ecx,lengthof msg 0016 66| BB 00000000 mov ebx,0 001C 67& 8A 93 00000000 Ragain: mov dl,msgebx 0023 80 C2 20 add dl,20h 0026 67& 88 93 00000000 Rmov msgebx,dl 002D 66| 83 C3 01 add ebx,1 0031 B4 02 mov ah,2 0033 CD 21 int 21h 0035 E2 E5

11、loop again,(4)基址变址寻址,有效地址基址寄存器变址寄存器,注意:下列指令等价,MOV AX, BX+DIMOV AX, BXDIMOV AX, BX+DI,例.mov ax,bx+si ;AXDS:BX+SI mov ax,bp+di ;AXSS:BP+DI mov ds:bp+si,al ;DS:BP+DIAL mov dword ptr ebx+esi,0aa885h;DS:EBX+ESIAA885H,(5)相对基址变址寻址,有效地址基址寄存器变址寄存器位移量,例1.MOV AX,DATADIBX 若(DS)=8000H, (BX)=2000H, (DI)=1000H, DA

12、TA=200H 则指令执行后(AH)=83021H, (AL)=83020H,?,?,例2.mov ax,bx+si+06h ;AXDS:BX+SI+06Hmov bvareax+edi,dh ;DS:BVAREAX+EDIDH 例3. 允许两个寄存器都用中括号,位移量在中括号前 mov ax,06hbx+si ;AXDS:BX+SI+06H mov ax,06hbxsi ;AXDS:BX+SI+06H mov bvareaxedi,dh ;DS:BVAREAX+EDIDH,(6)带比例存储器寻址,变址寄存器内容乘以比例(1、2、4或8)的带比例存储器寻址 地址的加减以字节为单位 比例1/2/

13、4/8对应8/16/32/64位数据的字节个数 便于以数组元素为单位寻址相应数据例1. mov eax,ebx*2 ;带比例的变址寻址 mov eax,esi*2+80h ;带比例的相对寻址 mov eax,ebx+esi*4 ;基址的带比例的变址寻址 mov eax,ebx+esi*8+80h;基址的带位移量的带比例的变址寻址,例2.MOV EBX,EDX*16EAXMOV AX, COUNTBX*2SIMOV EAX,EBX*3EDIMOV EAX,EDX*2EBP;EBP为基址,SS为段基址MOV EAX,EDXEBP*2;EDX为基址,DS为段基址,存储器寻址时的段约定,存储器寻址时,

14、一般并不在指令中给出段寄存器,而是遵寻一种约定(默认)方式,注意: 除了程序只能在代码段、堆栈段操作数只能在堆栈段、目的串操作数只能在附加数据段以外, 其他操作数虽然也有默认段,但都是允许段超越的,补充说明,(1)位移量可用符号表示(2)同一寻址方式有多种表达形式,(1)位移量可用符号表示,在寄存器相对寻址或相对基址变址寻址方式中,位移量可用符号表示例. MOV AX,SI+COUNT COUNT是事先定义的变量或常量(就是数值) MOV AX,BX+SI+WNUM WNUM是变量或常量,(2)同一寻址方式有多种表达形式, MOV AX,BXSI 等同于 MOV AX,BX+SI MOV AX

15、,COUNTSI 等同于 MOV AX,SI+COUNT MOV AX,WNUMBXSI (a)等同于 MOV AX,WNUMBX+SI (b)等同于 MOV AX,BX+SI+WNUM,例. 寻址方式,MOV EBX, 11223344H;32立即数扩充的32位通用寄存器中MOV EAX,BX ;从地址DS:BX起传递双字给EAX MOV ECX, EBX ;源、目标操作数均为32位寄存器方式INC WORD PTR500 ;字的有效地址为500 MOV EBX,EAX ;默认段寄存器为DS MOV BX, EAX ;默认段寄存器为DS,练习题,题1:指出下列指令中源操作数和目的操作的寻址方

16、式(1)MOV SI,1000 寄存器寻址;立即数寻址(2)MOV BP,AX 寄存器寻址;寄存器寻址(3)MOV SI,1000 寄存器间接寻址,立即数寻址(4)MOV BP,BX 寄存器寻址,寄存器间接寻址,练习题(续),题2:设BX=0158H,DI=10A5H,位移量(EA)=1B57H,DS=2100H,未使用段前缀。 分析在各种寻址方式下的有效地址和物理地址,PA=(DS)*16+1B57H,PA=(DS)*16+(BX) PA=(DS)*16+(DI),PA=(DS)*16+(BX)+1B57H PA=(DS)*16+(DI)+1B57H,PA=(DS)*16+(BX)+(DI)

17、,PA=(DS)*16+(BX)+(DI)+1B57H,题3:请指出下列每条指令源操作数的寻址方式(1)MOV AX,BX (2)MOV CH,3AH (3)MOV BX,2000H (4)MOV DX,BX (5)MOV CX,BP+2 (6)MOV AX,3BXDI (7)MOV AL,ES:SI (8)MOV BX,DS:BP,练习题(续),;寄存器寻址,操作数在BX中,;立即数寻址,操作数为3AH,;直接寻址,EA=2000H,数在数据段,;间接寻址,EA=BX,数在数据段,;间接寻址,EA=BP+2,数在堆栈段,;间接寻址,EA=BX+DI+3,数在数据段,;间接寻址,EA=SI,数在附加段,;间接寻址,EA=BP,数在数据段,小结,掌握 寻址方式 立即寻址 寄存器寻址 存储器寻址 直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址、带比例存储器寻址 作业 4.24.8,请上机验证,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报