считывание этого вопроса.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
И что 'выход '? Это какой-то макрос, который вы написали? Это определение действительно должно быть частью вопроса. – Michael
'output' - макрос, определенный в 'io.h'. Я добавил его в начало сообщения –
Попробуйте 'output [esi]' - должен дать вам действительный операнд, по крайней мере ... –