-1
アセンブリ言語で2つの文字列を連結しようとしています。文字列をレジスタに格納する
mov esi, str1
mov eax, str1
mov edx, [str2]
call slen
mov [esi+eax-1], edx
すべてが2番目の文字列の唯一の4文字が追加されることを除いて、正確に正常に動作します。私はその理由を知っていますが、私は解決策を見つけることができません。
アセンブリ言語で2つの文字列を連結しようとしています。文字列をレジスタに格納する
mov esi, str1
mov eax, str1
mov edx, [str2]
call slen
mov [esi+eax-1], edx
すべてが2番目の文字列の唯一の4文字が追加されることを除いて、正確に正常に動作します。私はその理由を知っていますが、私は解決策を見つけることができません。
レジスタに文字列を格納することはできません。レジスタは固定サイズであるため、レジスタのサイズと同じか、またはそれより小さくなければなりません(ASCIIでエンコードされた文字列について言えば)。
NASMとマイクロプロセッサーのタグは一緒に使えません.NTMはインテル専用です。 – m0skit0
解決策にはポインタの使用が含まれます。プログラミングを教えるために使っている本はそれをカバーするはずですが、後になるまで待たなければなりません。最初に整数演算を理解する必要があります。 –
これは、ASMの "文字列"(データブロックに近い)を少し理解するのに役立ちます:http://stackoverflow.com/a/38831846/4271923 – Ped7g