我想知道如何在最后暂停一个控制台应用程序并按Enter键,它会以assembely结束。这是一段代码,在屏幕上显示“hello world”,但它会立即关闭。那么如何暂停程序?
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
.data
sConsoleTitle db "Console Application",0
sWriteText db "Hello World",0
.code
Main PROC
LOCAL hStdout :DWORD
invoke SetConsoleTitleA, offset sConsoleTitle
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hStdout,EAX
invoke WriteConsoleA, hStdout, offset sWriteText, 16d, 0, 0
invoke ExitProcess, 0
Main ENDP
end Main
答案 0 :(得分:0)
由于您已经使用了控制台(我看到stdout
和WriteConsole
),我建议您使用合适的控制台:
cmd.exe
。可以简单地运行开始 - >运行并包含在每个现代Windows中。可以修改为使用不同的字体,调整大小等。单击.exe运行它很棒,但如果要提供输入会发生什么?命令行参数?如果你想重定向stdin / stdout怎么办?如果你想把文件传递给它,或者把它传递给另一个程序,比如grep怎么办?如果您想以非交互方式运行程序,例如从脚本?
Windows 缺点之一是无法轻松使用控制台程序。请不要在代码中对此进行补偿,并让所有找到方法的人感到不安。
另一种选择是创建一个调用可执行文件的批处理文件,然后执行pause
。