有没有一种方法来清除屏幕与NASM一个终端窗口? 通过清除屏幕,我的意思是仿效Ctrl-L
快捷键。 删除从窗口中的所有文本。
这是可能在NASM装配办?
提前致谢,
Rileyh
有没有一种方法来清除屏幕与NASM一个终端窗口? 通过清除屏幕,我的意思是仿效Ctrl-L
快捷键。 删除从窗口中的所有文本。
这是可能在NASM装配办?
提前致谢,
Rileyh
在bash:
echo -ne "\033[H\033[2J"
在C:
printf("\033[H\033[2J");
如何查找的字符串:
$ strace -e trace=write clear >/dev/null
write(1, "\33[H\33[2J", 7) = 7
Process 7983 detached
看看这个NASM程序:
http://www.muppetlabs.com/~breadbox/software/tiny/snake.asm.txt
有展示如何转义序列写到标准输出一个有趣的部分:
%define SC_write 4 ; eax = write(ebx, ecx, edx)
%define ESC 033q
; (...)
refresh:
mov eax, ESC | ('[' << 8) | (BOTTOMROW << 16)
stosd
mov eax, ';0H' | (SI << 24)
stosd
mov edx, edi
mov edi, outbuf
mov ecx, edi
sub edx, ecx
xor ebx, ebx
lea eax, [byte ebx + SC_write]
inc ebx
int 0x80
代码没有可能做的正是你想要的,但它会很容易修改它输出什么\033[H\033[2J
。 也可以看看这里:
http://ascii-table.com/ansi-escape-sequences-vt-100.php
另外,如果你想你的代码移植,想使用一些库,该库在不同终端之间兼容,像ncurses的 。
( 编辑 :这是为Linux如果您使用的是Windows,我想尝试。 这个 。)