我正在尝试编写一个程序,该程序从文本文件中获取二进制输入并将其作为参数发送到汇编函数。该汇编函数必须将此二进制输入打印到屏幕上。输入通过其地址从c代码发送到汇编代码。
当我尝试组装我的asm文件时,mov msg, [esp+8]
行出现“操作码和操作数无效组合”错误。我想将我的char
arg从堆栈复制到我的静态变量。为什么这不是一个有效的指令?
完整的代码是:
segment .data
len equ 31
segment .bss
msg resb 0
segment .text
global sequence_generator
sequence_generator:
push ebp
mov ebp, esp
mov msg, [esp+8]
mov eax,4
mov ebx,1
mov ecx,msg
mov edx,len
int 80h
pop ebp
ret
答案 0 :(得分:4)
我想知道你在这行中尝试过什么:
mov msg, [esp+8]
但是你不允许mov
从记忆到记忆。例如,请参阅this页面。
如果要将某些内容从内存移动到内存,请使用寄存器作为临时存储。例如:
mov eax, [var1]
mov [var2], eax