How do we clear the console in assembly?
Asked Answered
O

2

5

I am looking for a win32 api function that clears the console, much like the cls command Thanks! Devjeet

Orton answered 3/5, 2011 at 7:41 Comment(0)
S
18

This is pretty old, but should still work. Conversion to assembly language is left as an exercise for the reader, but shouldn't be terribly difficult (most of it is just function calls, and the multiplication is trivial):

#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);
}
Serge answered 3/5, 2011 at 7:53 Comment(3)
:O Assembly got voids :D Really, though, conversion is indeed trivial.Vidovik
Last 2 statements, attrib isn't defined and neither is console. I'm guessing console is screen? But what is attrib? Thanks.Karlise
@UkownUser: It looks like the code still had a couple minor of bits left over from the program I was writing when I originally wrote this code. I've edited in code that works standalone. Thanks for the heads-up.Serge
P
5

There is no Win32 API which directly clears the console - you need to use something like FillConsoleOutputCharacter.

Perverted answered 3/5, 2011 at 7:46 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.