nasm の定数表記方法
(1999/05/18 [火])
アセンブラでは、日常で一般的に使用される 10 進数のほかにも、計算機でよく用いられる 16 進数、2 進数、8 進数といった進数の定数が書けるようになっている場合が多いです。nasm もその例外ではありません。しかし、nasm の特徴として、16 進数の表記にいくつかの書き方を許している点があります。具体的には、数字の後に h を付けるよく見かける方法の他に、C 言語で用いられる 0x を数字の前に付ける方法、そして $ を数字の前に用いる方法です。具体的な例を他の進数の表記法とともに示します。
いつものことですが、16進数表記時、その値 (例えば Ah) を表記するときなど A-F が先頭にくるときは、それが数値であることを表すために 0 を前置する必要があります。$ の時も同様に前に 0 を置く必要があります。0 を置かずに $a のように記述すると、それは識別名として認識されます。この記法は特殊な識別名の記述法で、予約語なども変数名として扱うために使用されます。例えば、80386 のレジスタに eax というものがありますが、通常これを識別名として利用できません。しかし、$eax と記述することでそれを識別名として扱うことができるのです。
#今日は雑誌の発売日だ!
進数 | 例 |
---|---|
10 | 10, 255, 32767 |
2 | 1010b, 11111111B, 0111111111111111B |
8 | 12q, 377Q, 77777q |
16 | 0ah, 0ffh, 7fffh |
0xa, 0xff, 0x7fff | |
$0a, $0ff, $7fff |
いつものことですが、16進数表記時、その値 (例えば Ah) を表記するときなど A-F が先頭にくるときは、それが数値であることを表すために 0 を前置する必要があります。$ の時も同様に前に 0 を置く必要があります。0 を置かずに $a のように記述すると、それは識別名として認識されます。この記法は特殊な識別名の記述法で、予約語なども変数名として扱うために使用されます。例えば、80386 のレジスタに eax というものがありますが、通常これを識別名として利用できません。しかし、$eax と記述することでそれを識別名として扱うことができるのです。
#今日は雑誌の発売日だ!
by seclan