2013-04-06 4 views
0

считывание этого вопроса.MASM, вывод из какой-либо место памяти

Я не новичок в монтаже. Но я новичок в MASM. (на самом деле, я использовал этот хардкор чистые вещи для загара в течение примерно 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 Macro Assembler версии 6.11.

Заранее спасибо. Извините за мой сломанный английский.

UPD: Defenition макросов 'вывода', взятые из включенных '' 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 
+0

И что 'выход '? Это какой-то макрос, который вы написали? Это определение действительно должно быть частью вопроса. – Michael

+0

'output' - макрос, определенный в 'io.h'. Я добавил его в начало сообщения –

+0

Попробуйте 'output [esi]' - должен дать вам действительный операнд, по крайней мере ... –

ответ

0

soulution в этой ситуации является использование следующее:

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

 Смежные вопросы

  • Нет связанных вопросов^_^