0

一部のコンパイラは、ラベルと区別するために命令内の番号の前を検索するため、命令を記述している間0、前に追加するように先生から指示されました。命令がすでに0で始まっている場合、私は混乱しています。そのような場合はどうすればよいですか?hexa numbers0

例えば、

AND BL, 0FH

そのヘキサ番号の前に追加する必要があり0ますか?私を助けてください。ありがとう

編集:

以前に十分に明確でなかった場合は申し訳ありません。私が意味したのは、上記の例では、0がすでに存在しているということです。これを、に変換する必要がありますか?

AND BL, 00FH
4

2 に答える 2

5

0またはのような特殊なケースを除いて、1私は16進数を数字の完全な補数でエンコードする傾向があるので、意図が何であるかを簡単に確認できます。

mov al, 09h
mov ax, 0123h

等々。

数字が(のような)英字で始まる場合は、deadbeef接頭辞として余分な。を付け0ます。

ただし、通常(a) 16進数がすでに数字で始まっている場合は、これを行う必要はありません。

equいずれにせよ、コード全体にマジックナンバーを振りかけるのではなく、ほとんどの数字をステートメントに入れます。どちらかと言えば:

mov ax, 80

また:

mov ax, lines_per_screen

(a)もちろん、それはあなたのアセンブラーに依存しますが、記憶から、私が使用したものはすべてこのように機能します。

于 2012-05-01T06:06:39.023 に答える
3

いいえ、必要はありません(また、先行ゼロを複数含めることはかなり珍しいことです)。

ただし、あなたの例は適切な例です。これが数字であることを示す先頭0がない場合、アセンブラは通常、数字でFHはなく記号として解釈します。

于 2012-05-01T06:03:10.843 に答える