0

我想知道如何在最后暂停控制台应用程序并按回车键,它以汇编结束。这是一段在屏幕上显示“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
4

1 回答 1

0

由于您已经在使用控制台(我看到stdoutWriteConsole),我建议您使用适当的控制台:

  • cmd.exe. 可以简单地从 Start -> Run 运行,并且包含在每个现代 Windows 中。可以修改为使用不同的字体、调整大小等。
  • Windows PowerShell。大多数人都喜欢它。我不。
  • Console这样的终端程序。选项卡、半透明和类似 Linux 的鼠标行为非常棒。

单击 .exe 运行它很棒,但是如果您想为其提供输入会发生什么?命令行参数?如果你想重定向标准输入/标准输出怎么办?如果您想通过管道将文件传送给它,或者将它传送给另一个程序,比如 grep,该怎么办?如果您想以非交互方式(例如从脚本)运行程序怎么办?

无法轻松使用控制台程序是Windows 的缺点之一。请不要在您的代码中对此进行补偿,并让所有找到方法的人感到不安。

另一种选择是创建一个批处理文件来调用您的可执行文件,然后执行pause.

于 2012-07-28T12:53:51.590 回答