MASM,从某个内存点输出

问题描述:

这个问题的读者。MASM,从某个内存点输出

我对组装并不陌生。但我是MASM的新手。 (实际上,我使用硬核干净的tasm东西大约8年,甚至没有使用单个宏的一分钟,他 - 他)。

现在,我必须做一个简单的程序。我已经做了它的主要逻辑。但输出有一些问题。 当我使用

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' 文件defenition:

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 
+0

什么是'输出'?这是你写的一些宏吗?这个定义真的应该是问题的一部分。 – Michael 2013-04-06 22:14:51

+0

'output'是宏,在'io.h'中定义。我已经将它添加到开始帖子 – 2013-04-06 22:18:17

+0

尝试'输出[esi]' - 应该给你一个有效的操作数,至少... – 2013-04-07 00:06:44

在这种情况下的soulution是使用以下:

lea eax, <some-variable-name> 
mov esi, eax 
... manipulations with pointer, like 'add esi, edx' and so on ... 
push esi 
call outproc