BX副作用?

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

+0

仅限“mov al,bl”*将BL值复制到AL,从而使BX寄存器完全不变,否? – user1248092 2012-03-04 13:16:40

+0

@ user1248092:对不起,你说的没错,我的回答是错误的。我总是对AT&T和Intel语法感到困惑...... – cha0site 2012-03-04 13:24:15