我正在制作一个用户输入数字的程序,该程序从零打印到该数字。这是我的代码:
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
或类似的东西。