2017-02-13 58 views
1

對不起,如果這是一個基本問題,但我似乎無法在網上找到答案。在沒有包含或DOS中斷的MASM中打印?

我學習大會。開發環境是VS2013 &在Windows 7上的MASM。我對字符串操作有一個體面的理解,現在我試圖將一個字符打印到控制檯。我可以在互聯網上找到的方法涉及包括MASM文件,使用MessageBoxA或修改項目設置以使用DOS中斷。

包括外部文件,並修改項目設置是我絕對不想做兩件事情。 MessageBoxA看起來很酷,但是沒有辦法在純ASM中打印到控制檯嗎?謝謝!

+0

呼叫例如[WriteConsole](https://msdn.microsoft.com/en-us/library/windows/desktop/ms687401(v = vs.85).aspx)在什麼問題? – RbMm

+2

關於調用'MessageBoxA'(或'WriteConsole'),什麼不是*「純ASM」*? – IInspectable

回答

3

Windows不是DOS和一直沒有很長一段時間。沒有內核驅動程序,基於Windows NT的版本不允許你直接寫入硬件。

如果你不關心Unicode,那麼你只需要撥打GetStdHandle(STD_OUTPUT_HANDLE)來獲得標準輸出的句柄,然後使用WriteFile的句柄。

如果GetConsoleMode返回true,則使用WriteConsole來編寫Unicode字符串。