关于汇编语言内存寻址方式浅析

指令操作数的寻址方式
  一、与数据有关,寻找参加操作的数据(8种---->7种基本方式+字符串寻址)
  
  ★涉及的一些概念
  DISP/16位:AX(累加器),BX(基侄寄存器),CX(计数器),DX(数据与地址寄存器),SP(堆栈指针),BP(基址指针),SI(源变址器),DI(目的变址器)
  DISP/8位:AH(高8位),AL(低8位),BH,BL,CH,CL.DH,DL
  IP指令指针,存放代码段中的偏移地址;EA偏移地址,段内相对地址,有效地址
  CS代码段,SS堆栈段,DS数据段,ES附加段
  堆栈:方便事项程序要求保留和恢复有关信息的特殊存储部件,是一种数据结构。
  pws(状态):CF(进位),PF(奇偶),SF(符号),OF(溢出),ZF(零),DF(方向),IF(中断),TF(跟踪)
  PA:20位物理地址 ;MOV传送
  
  1、立即寻址
  用来表示常数
  MOV AX,1946H;1946H(立即数)-->AX
  
  2、寄存器寻址
  MOV AX,CX ;cx-->ax
  
  3、直接寻址
  MOV BX,[1000H] ;[1000H]→EA,操作数默认DS
  MOV AX,ES:VAR ;越段前缀
  
  4、寄存器间接寻址
  EA=BX∨SI∨DI∨BP;∨表示或者
  a、PA=DS×16+{BX∨SI∨DI}
  b、PA=SS×16+BP
  c、PA=越段寄存器×16+{BX∨SI∨DI∨BP}
  
  5、寄存器相对寻址
  直接变址寻址
   ┍BX┑
  EA=├SI┥+{DISP}
   ├DI┥
   ┕BP┚
  mov ax,count[si] ;ea=count+si,(ea)→ax,约定为DS
  mov al,es:string[bp] ;越段前缀
  
  6、基址变址寻址
  使用数组和表格
  EA={BX∨BP}+{SI∨DI}
  pA=DS×16+BX+{SI∨DI}
  pA=SS×16+BP+{SI∨DI}
  mov cx,es:[bx][di]
  mov ax,[bx][si] ;ea=bx+si,ea→ax
  
  7、相对基址变址寻址
  EA={BX∨BP}+{SI∨DI}+{DISP}
  mov ax,array[bx][si] ;ea=array+bx+si,ea→ax
  
  8、字符串寻址
  movsb ;([si])=>([di]),si+1=>si,di+1=>di
   ;源=>目,可理解为mov [di],[si]


我对寻址的一些分析看看对大家对他的理解有没有帮助。
  
  物理地址(PA)=段地址+偏移地址(EA)
   =段寄存器的内容×16+偏移地址
   =约定默认段地址×16+偏移地址
   =越段地址×16+偏移地址
  
  1、立即寻址
  A→B,A就是PA(物理地址)可以直接给B
  2、寄存器寻址
  A→B,A(寄存器)的值是PA可以给B
  3、直接寻址
  A→B,A是EA,EA=确定的寄存器的值,由EA得到PA,然后给B
  4、寄存器间接寻址
  A→B,A是EA,EA=变动的寄存器的值,由EA得到PA,然后给B
  5、寄存器相对寻址
  A→B,A是EA,EA=变动的寄存器的值+DISP的值,由EA得到PA,然后给B
  6、基址变址寻址
  A→B,A是EA,EA=变动的寄存器的值+另一变动的寄存器的值,由EA得到PA
  
  ,然后给B
  7、相对基址变址寻址
  A→B,A是EA,EA=变动的寄存器的值+另一变动的寄存器的值+DISP的值,
  
  由EA得到PA,然后给B
  8、字符串寻址
  A→B,A源PA,然后给B(目的pA)
  
  理解寻址方式的关键是EA的值是什么和怎样由EA得到PA,方式4,5,6,7容易混淆,我这样解释可能不科学,但能达到明白它的意思就行。4和3的区别是EA=变动的寄存器的值,5在4的基础上加了DISP的值,6相当于2个5相加(EA=变动的寄存器的值+另一变动的寄存器的),7相当于5+6,哈哈,都什么和什么呀。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值