在雨一方

万里寻山历百艰而无悔,一朝见井纵九死以何辞。

寻址方式

  • 在8086CPU中,只有bx,si,di,dp这四个寄存器可以用在”[…]”中来进行内存单元的寻址。
  • 在[…]中,这四个寄存器可以单独出现,或只能以4种组合出现:bx和si,bx和di,bp和si,bp和di。
  • 只要在[…]中使用寄存器bp,而指令中没有显性的给出段地址,段地址就默认在ss中。

汇编语言中用3个概念来表达数据的位置。

(1)立即数

    对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中称为:立即数,在汇编指令中直接给出。
    eg:
         mov ax,1
         add bx,2000h
         or bx 00010000b
         mov al,'a'

(2)寄存器

    指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。

(3)段地址(SA)和偏移地址(EA)

    指令要处理的数据在内存中,在汇编指令中可用[x]的格式给出EA,SA在某个段寄存器中。

寻址方式

(1)直接寻址

    eg:
        [idata] 

(2)寄存器间接寻址

    eg:
        [bx]
        [si]
        [di]
        [bp] 

(3)寄存器相对寻址

    用于结构体: [bx].idata
    用于数组:   idata[si],idata[di] 
    用于二维数组: [bx][idata]

    eg:
        [bx+idata]
        [si+idata]
        [di+idata]
        [bp+idata]

(4)基址变址寻址

    用于二维数组:[bx][si]

    eg:
        [bx+si]
        [bx+di]
        [bp+si]
        [bp+di]

(5)相对基址变址寻址

    用于表格(结构)中的数组项:
        [bx].idata[si]
    用于二维数组:
        idata[bx][si]

    eg:
        [bx+si+idata]
        [bx+di+idata]
        [bp+si+idata]
        [bp+di+idata]
阅读更多
文章标签: 汇编语言
上一篇汇编小结
下一篇转移指令的原理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭