BX副作用?
问题描述:
编辑: 对不起,我犯了一个新手错误,并且一直在改变BX的价值! :) 无论如何,谢谢。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
答
您可以访问bl
是16位bx
的低8位,而bh
是高8位。
所以通过改变bl
你也改变了bx
。
仅限“mov al,bl”*将BL值复制到AL,从而使BX寄存器完全不变,否? – user1248092 2012-03-04 13:16:40
@ user1248092:对不起,你说的没错,我的回答是错误的。我总是对AT&T和Intel语法感到困惑...... – cha0site 2012-03-04 13:24:15