admin 管理员组文章数量: 1086019
七种数据寻址方式
七种数据寻址方式
1立即寻址方式
立即寻址方式的目的就是将操作数紧跟在操作码后面,与操作码一起放在指令代码段中,在程序运行时,程序直接调用该操作数,而不需要到其他地址单元中去取相应的操作数,上述的写在指令中的操作数也称作立即数。(需在操作数前面加前缀标志“#”)。这种寻址方式主要用于给寄存器或存储单元赋初值的场合。立即寻址方式是这七种寻址方式中速度最快的寻址方式。
例如:
MOV A, #52H
其中“MOV”为操作码,“A”为第一操作数,其意义为累加寄存器,“#52H”为第二操作数,其意义就是立即数。通过该条程序指令可将十六进制数52H直接放入累加器中
2 寄存器寻址方式
操作数在CPU内部的寄存器中,指令指定寄存器号。这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度。
对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。
对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH。
例如:
MOV BX, AX ;将AX寄存器中存放的数据赋给BX
3 直接寻址方式
指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。在通常情况下,操作数存放在数据段DS中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成
例如:
有指令MOV BX, [1234H],在执行时,(DS)=2000H,内存单元21234H的值为5213H。
由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。所以,在执行该指令后,BX的值就为5213H。
4 寄存器间接寻址方式
操作数在寄存器中,操作数有效地址在SI、DI、BX、BP这四个寄存器之一中。在不使用段超越前缀的情况下,如果有效地址在SI、DI和BX中,则以DS段寄存器中的内容为段值。如果有效地址在BP中,则以SS段寄存器中的内容为段值。
物理地址=段地址(DS、SS)* 16+操作数有效地址(SI、DI、BX、BP)
注:乘16代表16进制数左移一位
例如:
MOV AX, [DI]
如果(DS) = 1000H (DI) = 2345H
则物理地址 = 1000H * 16 + 2345H = 12345H
5 寄存器相对寻址方式
操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容加上指令中给定的8位或16位位移量之和。
在一般情况下,如果SI、DI、或BX中的内容作为有效地址的一部分,那么引用的段寄存器是DS;如果BP中的内容作为有效地址的一部分,那么引用的段寄存器是SS。
物理地址=段地址(DS、SS)* 16 + (BX、BP、SI、DI) + 8位或16位位移量
注:乘16代表16进制数左移一位
例如:
MOV AX,[DI+1223H]
假设,(DS) = 5000H,(DI) = 3678H
则物理地址 = 50000H + 3678H + 1233H = 5489BH
6 基址加变址寻址方式
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。
有效地址=(BX、BP)+(SI、DI)
物理地址=段地址(DS、SS)* 16 +(BX、BP)+(SI、DI)
注:乘16代表16进制数左移一位
例如:
MOV BX , [BX+SI], 在执行时,(DS)=1000H,(BX)=2100H, (SI)=0011H
物理地址=10000H + 2100H + 0011H = 12111H
7 相对基址加变址寻址方式
操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位或16位的偏移量之和。
物理地址=段地址(DS、SS) * 16 + (BX、BP) + (SI、DI) + 8位或16位位移量
例如:
MOV AX, [BX+SI+200H],在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H
物理地址=10000H + 2100H + 0010H + 200H=12310H
三种内存地址寻址方式:
(1)直接寻址
寻址方式:
[idata]
mov ax,ds:[000E]
(2)寄存器间接寻址
寻址方式:
[bx]
mov ax,[bx]
(3)各种变址寻址
寻址方式:
[bx+si] ; [bx+di] mov ax,[bx+si]
[bx+si+idata] ; [bx+di+idata] mov ax,[bx+si+1]
本文标签: 七种数据寻址方式
版权声明:本文标题:七种数据寻址方式 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686731591a30469.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论