winapi - 如何让这两行在 cmd 控制台中的不同行上打印

标签 winapi assembly x86 nasm

当我单步执行代码以将这两行不同的行打印到控制台、cmd 中的不同行而不是同一行时,如何获取代码。

.586
.model flat, stdcall

GetStdHandle proto :dword
WriteConsoleA proto :dword, :dword, :dword, :dword, :dword
ExitProcess proto :dword

STD_OUTPUT_HANDLE equ -11

.data

    Title db "Basic Calculator",0
    Intruct1 db "please type your expresion",0
    outputHandle DWORD ?
    bytes_written dd ?
    bytes_written2 dd ?

.code
main proc
    invoke GetStdHandle, STD_OUTPUT_HANDLE
    mov outputHandle, eax

    invoke WriteConsoleA, outputHandle, addr Title, 20, addr bytes_written, 0

    invoke GetStdHandle, STD_OUTPUT_HANDLE
    mov outputHandle, eax

    invoke WriteConsoleA, outputHandle, addr Intruct1, 45, addr bytes_written2, 0
    invoke ExitProcess, 0
main endp

end

最佳答案

最快的方法是向每个字符串添加回车换行符。例如:

Title db "Basic Calculator",0x0d, 0x0a, 0
Intruct1 db "please type your expresion",0x0d, 0x0a,0

您可能还需要更新字符以将计数写入+2。不熟悉您正在进行的那些调用调用。

Linux、OSX、BSD等只需要0x0a

关于winapi - 如何让这两行在 cmd 控制台中的不同行上打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36544044/

相关文章:

c++ - Windows 中使用 IP Helper 的事件 UDP 连接的远程地址

c - 二元炸弹第三阶段问题

assembly - 仅通过 ADD、SUB、MUL 和 DIV 指令实现位运算

c - 在调用者的返回序列中跳过函数

c - 这个反汇编输出如何与函数源相关联?

c++ - 如果数据已经在缓存中,非临时存储会发生什么情况?

c - 函数只工作一次 - C

windows - 如何停止资源管理器启动我的应用程序最大化?

c++ - 对于我的关键代码部分,如何在短时间内关闭操作系统中切换线程的中断?

string - 使用 DOS 中断 MASM 获取字符串输入和显示输入