2011-10-17 14 views
2

これは簡単な質問のようですが、私は失われています。2バイト変数を1バイトに切り捨てる

この例では、characterは2バイトの変数ですが、レジスタbxは1バイトです。私はcmp bx, [character]をやろうとしていますが、それはサイズの違いのためにはうまくいきません。

bxcharacterの最初のバイトと比較しようとしています。思考?

答えて

4

BX rebisterは、16ビットの大きさであり、2つの8ビットBLBHから構成されています! 8ビットBL CMP

cmp bl, byte ptr[character] 

または8ビットBH CMP

cmp bh, byte ptr[character + 1] 
+0

感謝のために

cmp bx, word ptr[character] 

16ビットのCMPのためには、接頭辞を使用することができます!私は最初のバイト(2番目ではない)を探していたので、cmp bh、バイトptr [文字+ 0]がその仕事をしました。 –

+2

接頭辞は必要ありません(そうであってはいけません)。適切なアセンブラは、 'bl'がバイトと比較し、' bx'が単語と比較されることを知ることができます。 –

関連する問題