您的位置:首页 > 其它

汇编寻址方式

2009-06-27 16:50 162 查看
一、寄存器

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.立即寻址:

MOV AH, 80H  

MOV ECX,123456H 

2.寄存器寻址

MOV EAX, EBX

MOV VARD, EAX  

3.直接寻址

MOV BX, [1234H] ,执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么

-->由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;

-->访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H相加,得存储单元的物理地址:21234H;

-->取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。

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

MOV ES:[1000H], AX

4.寄存器间接寻址

MOV BX,[DI]

-->若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;

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

5. 基址加变址寻址

MOV BX, [BX+SI]

-->操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和

6.相对基址加变址寻址

MOV AX, [BX+SI+200H]

MOV AX, 1000H[BX+SI]

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

7. 32位地址的寻址方式

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

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

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

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

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

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

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

三、其他

1.在没有寄存器名存在的情况下,用操作符 X ptr 指明内存单元的长度,X在汇编指令中可以为word或byte

mov word ptr [1000H],1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: