MASM32, строка и целое число - PullRequest
       22

MASM32, строка и целое число

1 голос
/ 31 декабря 2010

Я использую MASM32 (версия 10), и я хотел бы знать, какой самый простой способ вывести строку и целое число на экране. Пожалуйста, предоставьте полный исходный код, а не только конкретные строки.

Спасибо.

Edit:

.386
.model flat, stdcall
.stack
.data
stest db "This is a test", 0
.code
main proc
    mov ah, 09h
    lea dx, stest
    int 21h
main endp
end main

Вылетает, ничего не выводя. Я пробовал несколько других вещей с разными проблемами, единственное, что часто встречается, это то, что я не отображаю строку на экране:)

Ответы [ 3 ]

3 голосов
/ 01 января 2011

Вы, похоже, используете прерывания DOS (int 21h), но также использовали .model flat, что означает, что вы не создаете программу DOS (DOS не поддерживает плоскую модель).

Если вы намереваетесь создать 32-битную консольную программу, подходящую для работы в Windows, вы не можете использовать прерывания DOS.Вот статья, в которой представлен 32-битный пример Windows "Hello World" с использованием вызовов Win32: 32-битная модель с плоской памятью Код MASM для Windows NT .

Если вы собираетесь построить 16-битный код DOS, вы, вероятно, хотите начать с «маленькой» модели памяти.

1 голос
/ 11 февраля 2011

Используйте встроенную функцию «печати» / макрос.Он вставит соответствующий вызов для вас.

print "This is a test",13,10,0
1 голос
/ 01 января 2011

Обратите внимание, что int21 / 09 требует, чтобы строка заканчивалась знаком доллара ($).Кроме того, даже если ваш код что-то напечатал, он сразу же завершится сбоем, так как вы вообще не завершаете свою программу (см. Int21 / 4c), поэтому он продолжает выполнять неопределенную память.В зависимости от модели памяти и среды вам также может потребоваться сначала настроить регистры сегментов и стек.Все это предполагает, что у вас действительно есть доступ к службам int21 для начала.

Наконец, в качестве общего совета, запустите отладчик и проследите свою программу.

...