BX的副作用?

时间:2012-03-04 13:09:23

标签: assembly nasm

修改 对不起,我犯了一个新手的错误,并且自己一直在改变BX的价值! :) 不管怎样,谢谢。

我正在玩NASM和MBR,并且出于某种原因,BX寄存器被设置为“某个”值,即使我没有写入它(仅读取)。

为什么会这样?我确定我错过了一些明显的东西,但我似乎找到了可以解释这种行为的任何教程。

有问题的代码:

partfun:
    mov bx, 01beh ; store a starting address to BX
                  ; I will increment it later
    mov cx, 0

    mov al, bl ; BX changes here already, I think!
    mov al, bh 
   ; do something with AL here

.loop:
    mov al, [bx]    
    ; do something with AL here

    add bx, 16 ;BX is 0110h now, not 01ceh, as I would expect!
               ;I wish to increment the stored value (address) by 16

    inc cx
    cmp cx, 4
    jl .loop

    ret

1 个答案:

答案 0 :(得分:0)

您可以访问bl是16位bx的低8位,bh是高8位。

因此,通过更改bl您也正在更改bx