修改 对不起,我犯了一个新手的错误,并且自己一直在改变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
答案 0 :(得分:0)
您可以访问bl
是16位bx
的低8位,bh
是高8位。
因此,通过更改bl
您也正在更改bx
。