bx、si、di 和 bp

在 8086CPU 中,只有这 4 个寄存器可以用在 “[...]” 中来进行内存单元的寻址。

mov ax, [bx]
mov ax, [bx+si]
mov ax, [bx+di]
mov ax, [bp]
mov ax, [bp+si]
mov ax, [bp+di]

而下面的指令是错误的

mov ax, [cx]
mov ax, [ax]
mov ax, [dx]
mov ax, [ds]

这四个寄存器可以单个出现,或者以 4 种组合出现:bx 和 si,bx 和 di,bp 和 si,bp 和 di。

结合这条就比较好记上一条:只要在 [...] 中使用寄存器 bp,而指令中没有没有显式的给出段地址,那么段地址在 ss 中。因为如果在 [...] 中使用了寄存器 bx,而指令中没有显式的给出段地址的话,段地址在 ds 中,所以不可以将 bx 和 bp 作为组合,而 si,di 作为 bx 和 bp 的辅助寄存器,也不能单独将它俩放在一起。

下面的指令是错误的:

mov ax, [bx+bp]
mov ax, [si+di]
Posted on 2015-08-04 18:27  mconintet  阅读(713)  评论(0编辑  收藏  举报