それはすべて、この
sub al, '0'
から非常コードの可読性を向上させるために即時のような文字を使用する能力を茎。連続ステップがを即時だったから、ということ
:
sub al, '0'
sub ax, '00'
sub eax, '0000'
sub rax, '00000000'
NASMは明らかドキュメントとして区切り文字で本当にうるさいではありません(私は文字と文字列のための二重引用符のための単一引用符を使用しますが、それだけです私の個人的な味)。
文字列は数値の即値を生成し、左端の文字が最下位バイトに配置されることに注意してください。
mov rbx, ''
はmov rbx,0x3736353433323130
に対応し、その値がメモリに格納されるとき、正確な文字列が入力されることを根拠としています。
文字定数式のコンテキストで使用され、最大8バイトの長い文字列、から構成されています
また、それは離れて、文字列と文字列を指示する文脈であることに注意してください。それは整数であるかのように扱われます。
MY_SYMBOL EQU 'abcd' ;Character string
MY_VAR dw 'abcd' ;String
mov eax, MY_SYMBOL ;mov eax, 64636261h
mov eax, MY_VAR ;mov eax, address_of(MY_VAR)
mov eax, 'cdef'*2 ;Character string
彼らは文法的に重なっているため。
ない語呂合わせは
を意図はい、あなただけの[3.4.4文字列定数](http://www.nasm.us/xdoc/2.11に、2つの以上のサブセクションを読む必要があります。 08/html/nasmdoc3.html#section-3.4.4)_ "文字列定数は文字定数のように見えますが、もっと長くしかありません" – Jester