アセンブリ 8086 プロセッサでプログラムを実行していますが、1 つ疑問があります。作成した文字列に 1 単語を移動したいのですが、アセンブラで次のエラーが表示されます: error A2004: constant value too large
.
宣言:
Fich db 'menu.txt',0
これを行う:
mov Fich,'menu.txt'
mov
8086 アセンブラーでは、ステートメントを使用してバイト文字列をメモリ位置に移動することはできません。
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