アセンブリ 8086 プロセッサでプログラムを実行していますが、1 つ疑問があります。作成した文字列に 1 単語を移動したいのですが、アセンブラで次のエラーが表示されます: error A2004: constant value too large.
宣言:
Fich db 'menu.txt',0
これを行う:
mov Fich,'menu.txt'
mov8086 アセンブラーでは、ステートメントを使用してバイト文字列をメモリ位置に移動することはできません。
movsbステートメントを使用して文字列を移動するには、ソース アドレスをSIレジスタにロードし、宛先アドレスをレジスタにロードしDI、文字列の長さをレジスタにロードしてCXから、最後に を呼び出しMOVSBます。
以下に簡単な例を示します。
TARGET db 80 dup(0)
SOURCE db 'Hello', 0
mov si, offset SOURCE ; address of SOURCE
mov di, offset TARGET ; address of TARGET
mov cx, 6 ; number of bytes to move (size of SOURCE)
rep movsb ; move cx number of bytes from SOURCE to TARGET