我们该如何在汇编中清除控制台?

5

我正在寻找一个类似于cls命令的win32 api函数,用于清除控制台屏幕。谢谢!Devjeet

2个回答

18

虽然这篇文章有些老,但应该仍然有效。将其转换为汇编语言的工作留给读者自己练习,但并不应该太难(大部分只是函数调用,乘法也很简单):

#include <windows.h>

void clear_screen(char fill = ' ') { 
    COORD tl = {0,0};
    CONSOLE_SCREEN_BUFFER_INFO s;
    HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);   
    GetConsoleScreenBufferInfo(console, &s);
    DWORD written, cells = s.dwSize.X * s.dwSize.Y;
    FillConsoleOutputCharacter(console, fill, cells, tl, &written);
    FillConsoleOutputAttribute(console, s.wAttributes, cells, tl, &written);
    SetConsoleCursorPosition(console, tl);
}

汇编有空洞 :D 不过,转换确实很简单。 - Spyros
1
最后两个语句中,attrib未定义,console也是如此。我猜console是屏幕?但是attrib是什么?谢谢。 - Bradley Weston
@UkownUser:看起来这段代码仍然留有一些我最初编写此代码时从正在编写的程序中剩下的小细节。我已经编辑进了能够独立运行的代码。谢谢你的提醒。 - Jerry Coffin

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接