汇编寻址方式

一、寄存器
  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
 

你可能感兴趣的:(汇编,存储,byte)