首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux nasm组装终端清屏

linux nasm组装终端清屏
EN

Stack Overflow用户
提问于 2012-11-03 14:25:16
回答 2查看 2.7K关注 0票数 0

有没有办法用nasm清除终端窗口中的屏幕?通过清除屏幕,我的意思是模仿Ctrl-L热键。从窗口中删除所有文本。

这可以在nasm汇编中实现吗?

提前谢谢你,

里莱赫

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-03 14:32:03

在Bash中:

代码语言:javascript
复制
echo -ne "\033[H\033[2J"

在C中:

代码语言:javascript
复制
printf("\033[H\033[2J");

如何查找字符串:

代码语言:javascript
复制
$ strace -e trace=write clear >/dev/null 
write(1, "\33[H\33[2J", 7)              = 7
Process 7983 detached
票数 0
EN

Stack Overflow用户

发布于 2012-11-03 18:55:15

看看这个NASM程序:

http://www.muppetlabs.com/~breadbox/software/tiny/snake.asm.txt

这里有一个有趣的部分,展示了如何将转义序列写入stdout:

代码语言:javascript
复制
%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,我会试试this。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13206629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档