2012-01-16 3 views
0

アセンブリプログラムがバイナリコードに変換され、8086用のエミュレータで単純なコードを実行しました。IP0004にする代わりに、0006でした。各アセンブリ(8086)行の後に00 000が追加されるのはなぜですか?

MOV AX,21H 
ADD AX,42H

は、私はその後、0000 ため21H、と同じことがと42Hを追加読み取るために、IPMOV FOR 0004H、0000されるべきだと思います。

エミュレータではあるのに対し:

01000: B8 184 
01001: 21 003 
01002: 00 000 NULL 
02003: 05 005 
01004: 53 066 
01005: 00 000 NULL

はなぜコードに01002と01005を追加して、それが何を意味するのでしょうか?

答えて

4

のレジスタは16ビットなので、定数は実際には16ビット(2バイト)です。定数が非常に小さいため、上位バイトが常にゼロであることに気付かないことです。

mov ax, 1234h 

を試してみて、それが異なっているかどうかを確認します。

関連する問題