码迷,mamicode.com
首页 > 其他好文 > 详细

汇编--寻址方式

时间:2016-02-08 21:25:29      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:

1、立即寻址方式

  mov AL,5     (AL)=05H
  mov AX,3064H   (AX)=3064H
  mov EAX,123456H  (EAX)=123456H

2、寄存器寻址方式

  mov AX,BX   (AX)=3064H  (BX)=1234H    (AX)=1234H
  MOV EXC,EDX

3、直接寻址方式

  mov AX,[2000H]         mov AX,2000H   ;这两者等效

4、寄存器间接寻址方式

  mov AX,[BX]   默认DS:[BX]
  ;也可以制定其他段跨越前缀来取得其他段中的数据
  mov AX,ES:[BX]

5、寄存器相对寻址方式(直接变址寻址方式)

  mov AX,COUNT[SI]     mov AX,[COUNT+SI]

6、基址变址寻址方式

  mov AX,[BX][DI]  MOV AX,[BX+DI]      mov AX,[BX][BP] 是错误的。

7、相对基址变址寻址方式

  mov AX,MASK[BX][SI]
  mov AX,MASK[BX+SI]
  MOV AX,[MASK+BX+SI]

8、比例变址寻址方式

  MOV EAX,COUNT[ESI*4]

9、基址比例变址寻址方式

  mov ECX,[EAX][EDX*8]

10、相对基址比例变址寻址方式

  mov EAX,TABLE[EBP][EDI*4]  

 

 JMP

1、段内直接寻址

2、段内间接寻址

jmp  BX     ;(IP)=BX
jmp TABLE[BX]   ;(ip) = 16d*(ds) + (BX) +位移量

WORD PTR为操作符。指定地址是字

3、段间直接寻址

4、段间间接寻址

段内,段间区别是,段内修改(IP)的值,段间修改(CS:IP)的值

 

BP 是寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据使用个别的寻址方式时候才能用到
比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址

 

 

SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就得出了需要基址寄存器。

 

[SI]是寄存器间接寻址,它是指SI中地址的内容如
mov si,2000
mov ax,[si]    //将2000地址中的内容赋给ax而SI,寄存器寻址方式
SI 就是指SI本身的内容
mov si,2000
mov ax,si     //将SI中的内容2000赋给ax

 

 

 

 

 

 

 

 

 

 

 

 

  

 

汇编--寻址方式

标签:

原文地址:http://www.cnblogs.com/zrui513/p/5098105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!