ユーザーが数字を入力するプログラムを作成しています。プログラムはゼロからその数字まで出力します。これが私のコードです:
SECTION .DATA
len EQU 32
SECTION .bss
data resw len
other resw len
SECTION .TEXT
GLOBAL _start
_start:
input: ; This section gets the integer from the user
mov eax, 3 ; }
mov ebx, 1 ; }
mov ecx, data ; } System_read call
mov edx, len ; }
int 80h ; }
prelim:
mov ebp, 0
setup: ; This section sets up the registers ready for looping
push ebp
pop other ; THIS IS THE ERROR LINE!
mov esi, data
loop: ; This section loops, printing out from zero to the number given
mov eax, 4
mov ebx, 1
mov ecx, other
mov edx, len
int 80h
cmp ebp, esi
je exit
inc ebp
jmp setup
exit: ; Exits the program
mov eax, 1 ; }
mov ebx, 0 ; } System_exit call
int 80h ; }
私が抱えている問題は、エラーが発生することinvalid combination of opcode and operand
です。変数other
をワード、ダブルワード、バイトとして宣言しようとしましたが、それでもそう言います。なぜですか?
本質的に、私の質問は、レジスタ内の値をメモリ内の値に移動するにはどうすればよいですか? そのような:
mov memorydata, eax
どこmemorydata
でデータが宣言されているか、SECTION .data
またはそのようなものです。