2017-02-13 3 views
1

извините, если это основной вопрос, но я не могу найти ответ нигде в Интернете.Печать в MASM без включения или прерывания DOS?

Я изучаю сборку. Dev - VS2013 & MASM на Windows 7. У меня есть достойное понимание строковых манипуляций, и теперь я пытаюсь напечатать символ на консоли. Методы, которые я могу найти в Интернете, включают в себя файлы MASM, используя MessageBoxA, или изменение параметров проекта для использования прерываний DOS.

Включение внешних файлов и изменение настроек проекта - это две вещи, которые я определенно не хочу делать. MessageBoxA кажется классным, но нет ли способа распечатать консоль в чистом ASM? Благодаря!

+0

вызов, например [WriteConsole] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms687401 (v = vs.85) .aspx) в какой проблеме? – RbMm

+2

Что не является «чистым ASM» * о вызове 'MessageBoxA' (или' WriteConsole', если на то пошло)? – IInspectable

ответ

3

Windows не является DOS и не существует надолго. Версии на базе Windows NT не позволяют вам напрямую писать на оборудование без драйвера ядра.

Если вам не нужен Юникод, вам просто нужно позвонить GetStdHandle(STD_OUTPUT_HANDLE), чтобы получить дескриптор stdout, а затем использовать этот дескриптор с WriteFile.

Используйте WriteConsole, чтобы писать строки Unicode, если GetConsoleMode возвращает true.

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