2012-03-04 11 views
0

編集: 申し訳ありませんが、初心者の間違いをして、自分でBXの価値を変えています! :) ありがとうとにかく。BXの副作用ですか?

私はNASMとMBRで楽しいことをしています。何らかの理由でBXレジスタが "some"値に設定されています。

なぜそうですか?私は明らかに何かが欠けていると確信していますが、私はこの動作を説明するチュートリアルを見つけることができます。問題の

コード:

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

あなたはblにアクセスできる16ビットbxの下位8ビットであり、そしてbhは上位8ビットです。

blを変更すると、bxも変更されます。

+0

"mov al、bl"のみ* BL値がALにコピーされるため、BXレジスタは完全に変更されません。 – user1248092

+0

@ user1248092:申し訳ありませんが、あなたは絶対に正しいです、私の答えは間違っています。私はいつもAT&TとIntel構文の間で混乱します... – cha0site

関連する問題