Ненавижу задавать такие основные вопросы. Кажется, я ленив! Но я потратил часы, просматривая документацию, и по какой-то причине я не могу опустить голову прямо в эту маленькую точку.Невозможно выяснить, как напечатать номер в MASM32
Я хочу напечатать символ «4» на экране. Я могу сделать это как строку, но не из значения ascii.
Вот рабочий код:
include c:\masm32\include\masm32rt.inc
.data
num4 db "4", 10,0
.code
start:
invoke StdOut, addr num4
inkey
invoke ExitProcess, 0
end start
Я просто хотел сделать шаг ребенка оттуда и печать символов ASCII 52 (который является «4»). Вот моя лучшая попытка до сих пор:
include c:\masm32\include\masm32rt.inc
.data
.code
start:
myvar db 52
invoke StdOut, myvar
inkey
invoke ExitProcess, 0
end start
Он собирает и ссылки без проблем, но затем падает, когда я запускаю его. Я знаю, что в конце он не имеет 0 символов, но у invoke StdOut, myvar,0
слишком много аргументов для StdOut.
Моя конечная цель состоит в том, чтобы иметь возможность напечатать несколько число цифр, как описано Алексея Фрунзе здесь:
x86 assembly (masm32) - how to split multi-digit data into individual characters
Но так как я имею так много проблем с синтаксисом, я предпринимаю шаги ребенка , Я нашел это, но это не объясняет, как сделать добавить 48 часть синтаксически:
x86 assembly - how to show the integer 2, not the second ASCII character
Пожалуйста, помогите мне пройти эти открытия препятствия, и спасибо!
Этот ответ изумительный и дает мне руководство для моей будущей цели (хотя я еще не понимаю каждый аспект этого ответа, но ваши комментарии очень полезны, и я предполагаю, что это придет со временем и настойчивостью) , Но у вас также есть ответ на нерабочий код, который я представил? –
О, а также, почему вы объявили clrf? Кажется, он нигде не используется. –
@Choirbean: Пожалуйста, взгляните на обновленный ответ. Я сделал все возможное :-) – rkhb