首页 > 试题

变址寻址

更新时间:2022-12-09 15:48:49 阅读: 评论:0

寒假中考冲刺计划表-如何保护水资源


2022年12月9日发(作者:名人读书的故事)

汇编学习笔记3操作数的寻址⽅式

微机系统有⼋种基本的寻址⽅式

(1)⽴即数寻址⽅式操作数地址/变量内存地址

(2)寄存器寻址⽅式寄存器

(3)直接寻址⽅式[偏移地址]

(4)寄存器间接寻址⽅式[基址寄存器/变址寄存器]

(5)寄存器相对寻址⽅式[基址寄存器/变址寄存器+偏移量值]

(6)基址加变址寻址⽅式[基址寄存器+变址寄存器]

(7)相对基址加变址寻址⽅式[基址寄存器+变址寄存器+偏移量值]

(8)32位地址的寻址⽅式32位基址寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)+

32位变址寄存器(EAX、EBX、ECX、EDX、ESI、EDI和EBP(除ESP之外))*⽐例因⼦(1/2/4/8)

+偏移常量

可参考查看具体⽤法。

⽴即数寻址⽅式

操作数作为指令的⼀部分⽽直接写在指令中,这种操作数称为⽴即数,这种寻址⽅式也就称为⽴即数寻址⽅式。

⽴即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果⽴即数为16位或32位,那么,它将按“⾼⾼低低”的原则进⾏存储。例

如:

MOVAH,80H ADDAX,1234H MOVECX,123456H

寄存器寻址⽅式

指令所要的操作数已存储在某寄存器中,或把⽬标操作数存⼊寄存器。把在指令中指出所使⽤寄存器(即:寄存器的助忆符)的寻址⽅式称为

寄存器寻址⽅式。

指令中可以引⽤的寄存器及其符号名称如下:

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等。

寄存器寻址⽅式是⼀种简单快捷的寻址⽅式,源和⽬的操作数都可以是寄存器。

1、源操作数是寄存器寻址⽅式

如:ADDVARD,EAX ADDVARW,AX MOVVARB,BH等。

其中:VARD、VARW和VARB是双字,字和字节类型的内存变量。

2、⽬的操作数是寄存器寻址⽅式

如:ADDBH,78h ADDAX,1234h MOVEBX,12345678H等。

3、源和⽬的操作数都是寄存器寻址⽅式

如:MOVEAX,EBX MOVAX,BX MOVDH,BL等。

由于指令所需的操作数已存储在寄存器中,或操作的结果存⼊寄存器,这样,在指令执⾏过程中,会减少读/写存储器单元的次数,所以,

使⽤寄存器寻址⽅式的指令具有较快的执⾏速度。通常情况下,我们提倡在编写汇编语⾔程序时,应尽可能地使⽤寄存器寻址⽅式,但也不

要把它绝对化。

直接寻址⽅式

指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址⽅式为直接寻址⽅式。

注意:⽴即寻址⽅式和直接寻址⽅式的书写格式的不同,直接寻址的地址要写在括号“[”,“]”内。

由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中⽤段前缀的⽅式显式地书写出来。

MOV [1000H],AX;段寄存器默认为DS

MOV ES:[1000H],AX;指令的⽬标操作数就是带有段前缀的直接寻址⽅式,段寄存器默认为ES

MOV AX,1234HMOV AX,[1234H];前者是⽴即寻址,后者是直接寻址

MOV AX,VARWMOV AX,[VARW];两者是等效的,均为直接寻址

寄存器间接寻址⽅式

操作数在存储器中,操作数的有效地址⽤SI、DI、BX和BP等四个寄存器之⼀来指定,称这种寻址⽅式为寄存器间接寻址⽅式。

在不使⽤段超越前缀的情况下,有下列规定:

(1)若有效地址⽤SI、DI和BX等之⼀来指定,则其缺省的段寄存器为DS;

(2)若有效地址⽤BP来指定,则其缺省的段寄存器为SS(即:堆栈段)。

指令⽰例:

MOVBX,[DI]

寄存器相对寻址⽅式

操作数在存储器中,其有效地址是⼀个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量之和。其有效地址的

计算公式如下图所⽰:

在不使⽤段超越前缀的情况下,有下列规定:

(1)若有效地址⽤SI、DI和BX等之⼀来指定,则其缺省的段寄存器为DS;

(1)若有效地址⽤BP来指定,则其缺省的段寄存器为SS。

指令⽰例:

MOVBX,[SI+100H]

基址加变址寻址⽅式

操作数在存储器中,其有效地址是⼀个基址寄存器(BX、BP)和⼀个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如下图所⽰:

指令⽰例:

MOVBX,[BX+SI]

相对基址加变址寻址⽅式

操作数在存储器中,其有效地址是⼀个基址寄存器(BX、BP)的值、⼀个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效

地址的计算公式如下图所⽰:

指令⽰例:

MOVAX,[BX+SI+200H]

32位地址的寻址⽅式

在32位微机系统中,除了⽀持前⾯的七种寻址⽅式外,⼜提供了⼀种更灵活、⽅便,但也更复杂的内存寻址⽅式,从⽽使内存地址的寻址

范围得到了进⼀步扩⼤。

在⽤16位寄存器来访问存储单元时,只能使⽤基地址寄存器(BX和BP)和变址寄存器(SI和DI)来作为地址偏移量的⼀部分,但在⽤32位寄存

器寻址时,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)都可以是地址偏移量的⼀个组成部分。

当⽤32位地址偏移量进⾏寻址时,内存地址的偏移量可分为三部分:⼀个32位基址寄存器,⼀个可乘1、2、4或8的32位变址寄存器,⼀

个8位/32位的偏移常量,并且这三部分还可进⾏任意组合,省去其中之⼀或之⼆。

32位基址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP;

32位变址寄存器是:EAX、EBX、ECX、EDX、ESI、EDI和EBP(除ESP之外)。

⽤32位地址偏移量进⾏寻址的有效地址计算公式归纳如下图所⽰

下⾯列举⼏个32位地址寻址指令:

MOVAX,[123456H]

MOVEAX,[EBX]

MOVEBX,[ECX*2]

MOVEBX,[EAX+100H]

MOVEDX,[EAX*4+200H]

MOVEBX,[EAX+EDX*2]

MOVEBX,[EAX+EDX*2+300H]

MOVAX,[ESP]

由于32位寻址⽅式能使⽤所有的通⽤寄存器,所以,和该有效地址相组合的段寄存器也就有新的规定。具体规定如下:

1、地址中寄存器的书写顺序决定该寄存器是基址寄存器,还是变址寄存器;

如:[EBX+EBP]中的EBX是基址寄存器,EBP是变址寄存器,⽽[EBP+EBX]中的EBP是基址寄存器,EBX是变址寄存器;

2、默认段寄存器的选⽤取决于基址寄存器;

3、基址寄存器是EBP或ESP时,默认的段寄存器是SS,否则,默认的段寄存器是DS;

4、在指令中,如果使⽤段前缀的⽅式,那么,显式段寄存器优先。

下⾯列举⼏个32位地址寻址指令及其内存操作数的段寄存器。

指令的举例访问内存单元所⽤的段寄存器

MOVAX,[123456H];默认段寄存器DS

MOVEAX,[EBX+EBP];默认段寄存器DS

MOVEBX,[EBP+EBX];默认段寄存器SS

MOVEBX,[EAX+100H];默认段寄存器DS

MOVEDX,ES:[EAX*4+200H];显式段寄存器ES

MOV[ESP+EDX*2],AX;默认段寄存器SS

MOVEBX,GS:[EAX+EDX*2+300H];显式段寄存器GS

MOVAX,[ESP];默认段寄存器SS

本文发布于:2022-12-09 15:48:49,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/73407.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:水化作用
标签:变址寻址
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图