我正在尝试编写一个程序,该程序从文本文件中获取二进制输入并将其作为参数发送给汇编函数。该汇编函数必须将此二进制输入打印到屏幕上。输入通过其地址从 C 代码发送到汇编代码。
当我尝试汇编 asm 文件时,出现“操作码和操作数的无效组合”错误mov msg, [esp+8]。我想将我的chararg 从堆栈复制到我的静态变量。为什么这不是有效的指令?
完整代码是:
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
Run Code Online (Sandbox Code Playgroud)
我想知道您在这一行中尝试过做什么:
mov msg, [esp+8]
Run Code Online (Sandbox Code Playgroud)
但你不可以mov从一个记忆到另一个记忆。例如,请参阅此页面。
如果要将某些内容从内存移动到内存,请使用寄存器作为临时存储。例如:
mov eax, [var1]
mov [var2], eax
Run Code Online (Sandbox Code Playgroud)