七种寻址方式

上传人:博****1 文档编号:552960863 上传时间:2023-08-21 格式:DOCX 页数:14 大小:205.65KB
返回 下载 相关 举报
七种寻址方式_第1页
第1页 / 共14页
七种寻址方式_第2页
第2页 / 共14页
七种寻址方式_第3页
第3页 / 共14页
七种寻址方式_第4页
第4页 / 共14页
七种寻址方式_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《七种寻址方式》由会员分享,可在线阅读,更多相关《七种寻址方式(14页珍藏版)》请在金锄头文库上搜索。

1、七种寻址方式()立即寻址操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数。这种寻址方式也就称为立即数寻址方式.立即数寻址方式通常用于通用寄存器或内存单元赋初值。立即数可以是8bit 16bit或32bit,该立即数为16bit或32bit,那么 它将按照“高高低低”的原则进行存储。example :mov ah , 80h add ax, 1234h mov ecx, 123456hmov bl , 12h mov w, 3456h add di, 32123456h其中b1,w1,d1分别是 字节,字,双字。以上指令中的第二操作数都是立即数在汇编中规定位即数不能作为 指令的第二操

2、作数,该规定与高级语言 中“赋值语句的左边不能是常量“的规定相一致。下图是指令mov ax, 4567h存储形式和执行示意(little-endian )(二)寄存器寻址指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。 把在指令中所使用寄存器(即:寄存器的助忆符)的寻址方式成为寄 存器寻址方式。指令中可以引用的寄存器及其符号名称如下:8 位寄存器有:AH、AL、BH、BL、CH、CL、DH 和 DL 等;16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;32 位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP 和EBP 等。寄存器寻址方式

3、是一种简单快捷的寻址方式,原和目的操作数都可以是 寄存器。1. 源操作数是寄存器寻址方式女口:add vard, eax add varw ,ax mov varb ,bh其中:vard , varw和varb分布是 双字,字,字节类型的内存变量。2、目的操作数是寄存器寻址方式example: add bh,78h add ax,1234hmov ex,12345678h3,源和目的操作数都是寄存器寻址方式example: mov eax,ebxmov ax,bx mov dh,bl 由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器。 这样,在指令执行过程中,会减少读/写存储器单元

4、的次数,所以,使 用寄存器寻址方式的指令具有较快的执行速度。通常情况下,我们在编 写汇编程序时,应尽可能地使用寄存器寻址方式。(三)(直接寻址方式)指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地 址,这种寻址方式为直接寻址方式。在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段 寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀, 那么,操作数可存放在其它段。例:假设有指令:MOV BX, 1234H,在执行时,(DS)=2OOOH,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么?解:根据直接寻址方式的寻址规则,把该指令的具体执行过

5、程用下图来 表示。从图中,可看出执行该指令要分三部分:OP由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令 而被读出;访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加, 得存储单元的物理地址:21234H; 取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。所以,在执行该指令后,BX的值就为5213H。由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据, 可在指令中用段前缀的方式显式地书写出来。下面指令的目标操作数就是带有段前缀的直接寻址方式。MOV ES:ioooH, AX直接寻址方式常用于处理内存单元的数据,其操作数是内存

6、变量的值, 该寻址方式可在64K字节的段内进行寻址。注意:立即寻址方式和直接寻址方式的书写格式的不同,直接寻址的地 址要写在括号“”,“”内。在程序中,直接地址通常用内存变量名来表 示,如:MOV BX, VARW,其中,VARW是内存字变量。试比较下列指令中源操作数的寻址方式(VARW是内存字变量):MOV AX, 1234HMOV AX, 1234H;前者是立即寻址,后者是直接寻址MOV AX, VARW MOV AX, VARW;两者是等效的,均为直接寻址七种寻址方式(四)(寄存器间接寻址方式)操作数在寄存器中,操作数的有效地址用SI、DI、BX和BP等四个寄 存器之一来指定,称这种寻址

7、方式为寄存器间接寻址方式。该寻址方式物理地址的计算方式如下:在不使用段超越前缀的情况下,有下列规定:若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS (即堆栈段). example :假设有指令:mov bx,DI,在执行时,(DS)=1OOOh,(DI) =2345h存储单元12345h的内容是4354h。问执行指令后,BX的值是什么?答:根据寄存器间接寻址方式的规则:在执行本例指令时,寄存器DI 的值不是操作数,而是操作数的地址。该操作数的物理地址应由DS 和DI的值形成,即:PA=QS)*16+DI=1000h *16

8、+3456h = 123456h所以,该指令的执行效果是:把从物理地址为12345h开始的一个字的值 传送给BX。其执行过程如下图所示:(五)(寄存器相对寻址方式)操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8bit、16bit偏移量之和。其有效地址的计算公式如下:必16 +空阿-笳* 在不使用段超越前缀的情况下,有以下规定:若有效地址用SIQI和BX等之一来指定,则其缺省的段寄存器为DS;若有效地址用BP来指定,则其缺省的段寄存器为SS。指令中给出的8bit、16bit偏移量用补码表示。在计算有效地址时候, 若偏移量是8bit,则进行符

9、号扩展成16bit。当所得的有效地址超过 offffH,则取其64k的模。example:假设指令:mov bx, SI+100H,在执行它时,(DS) =1000H, (SI)=2345H,内存单元12445H的内容为2715H,问该指令执行 后,BX的值是什么?答:根据寄存器相对寻址方式的规则,在执行本例指令时,源操作数的 有效地址EA为:EA=(SI)+100H=2345H+100H = 2445H该操作数的物理地址应由DS和EA的值形成,即: PA=QS)*16+EA=1000H*16+2445H = 12445H.所以,该指令的执行效果是:把从物理地址为12445h开始的一个字的值

10、传送给BX.其执行过程如图所示:操作数在存储器中/其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如下:在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS.example:假设指令:MOV BX , BX+SI,在执行时,(DS) =1000H,(BX)=2100H, (SI)=0011H,内存单元12111H的内容为1234H,问该指令执行时,BX的值是什么? 答:根据基址+变址寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:EA=(BX)+(SI)=2100H+001

11、1H=2111H该操作数的物理地址应由DS和EA的值形成,即PA= (DS)* 16+EA=1000H *16+2111H = 12111H所以,该指令的执行效果:把从物理地址为12111H开始的一个字的值 传送给BX。其执行过程如图:BXPA: 12111H10000HBX: 2100HSl: 0011HEA: 2111H+DS: 1000H(七)(相对基址加变址寻址方式)操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一 个变址寄存器(SI、DI)的值和指令中的8bit、16bit偏移量之和。其有效地址的计算公式如下:EA=(BX)UBP1J8矿16&卜偏移壘在不使用段超越

12、前缀的情况下,规定:如果有效地址中含有BP,则其 缺省的段寄存器为SS;否则,其缺省的段寄存器为DS。指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果 偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过 0FFFFH,则取其64K的模。例:假设指令:MOV AX, BX+SI+200H,在执行时,(DS)=1000H, (BX)=2100H, (SI)=0010H,内存单元 12310H的内容为1234H。问该指令执行后,AX的值是什么?解:根据相对基址加变址寻址方式的规则,在执行本例指令时,源操作 数的有效地址EA为:EA=(BX)+(SI)+2OoH = 2iooH

13、+ooioH+2OoH=23ioH该操作数的物理地址应由DS和EA的值形成,即:PA=(DS)*16+EA=1000H*16+2310H = 12310H所以,该指令的执行效果是:把从物理地址为12310h开始的一个字的 值传送给AX.其执行过程如下图BX1210OHSI: 0010HEA: 231QH AXDS:1000Hd I 10000H 4仁 31GH从相对基址加变址这种寻址方式来看,由于它的可变因素较多,看起来就显得复杂些,但正 因为其可变因素多,它的灵活性也就很高。比如:用Dii来访问一维数组D1的第i个元素,它的寻址有一个自由度,用D2ij来访问二维 数组D2的第i行、第j列的元

14、素,其寻址有二个自由度。多一个可变的量,其寻址方式的 灵活度也就相应提咼了。相对基址加变址寻址方式有多种等价的书写方式,下面的书写格式都是正确的,并且其寻址 含义也是一致的。MOV AX,BX+SI+1000HMOV AX,1000HBX+SIMOV AX ,1000HBXSIMOV AX,1000HSIBX但书写格式BX 1000+SI和SIioooH+BX等是错误的,即所用寄存器不能在“,”之外, 该限制对寄存器相对寻址方式的书写也同样起作用。相对基址加变址寻址方式是以上7种寻址方式中最复杂的一种寻址方式,它可变形为其它类 型的存储器寻址方式。下表列举出该寻址方式与其它寻址方式之间的变形关系。漁燥作数指令的变形源操作数的寻址方式只有偏移量MOVAX; 1DOH直接寻址方式只有一个寄存器MOVAX, BX或 MOY AXJSI寄存器间接寻址方式有一于寄有器”偏移量MOS/AX, BK-blOOH或MOV AK, SI r1OOH寄存器相时寻址方式有二遢寄存器MOV基址加娈址寻址方式有二个寄弃器刊偏移量MQV側i .停繆用婕鹫.Ml相对星址班变泌寻址方式

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

当前位置:首页 > 办公文档 > 解决方案

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