这个问题的读者。
我对组装并不陌生。但我是 MASM 的新手。(事实上,我用了大约 8 年的铁杆清洁 tasm 东西,甚至没有一分钟使用单个宏,嘿嘿)。
现在,我必须编写一个简单的程序。我已经做到了它的主要逻辑。但是输出有一些问题。当我使用
output <some-variable-name>
它使事情成为-它输出字符。但是现在我想不是从某个变量的开头开始输出,而是从内存中的特定地址开始输出。现在我这样做:
lea eax, <some-variable-name>
mov esi, eax
... manipulations with address in esi, like 'add esi, ebx' and so on...
output esi
但这行不通。编译器说“错误 A2070:无效的指令操作数”。我使用 Microsoft 宏汇编程序 6.11 版。
提前致谢。对不起我的英语不好。
UPD:“输出”宏的定义,取自包含的“io.h”文件:
output MACRO string,xtra ;; display string
IFB <string>
.ERR <missing operand in OUTPUT>
EXITM
ENDIF
IFNB <xtra>
.ERR <extra operand(s) in OUTPUT>
EXITM
ENDIF
push eax ;; save EAX
lea eax,string ;; string address
push eax ;; string parameter on stack
call outproc ;; call outproc(string)
pop eax ;; restore EAX
ENDM