| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4206 人关注过本帖
标题:汇编win32控制台如何清屏
只看楼主 加入收藏
网络小白
Rank: 2
等 级:论坛游民
帖 子:26
专家分:35
注 册:2014-9-13
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:3 
汇编win32控制台如何清屏
刚学汇编,用汇编在控制台下写个电话薄,但是在控制台不知道怎么清屏,每次都输出好多。。。
搜索更多相关主题的帖子: 控制台 如何 电话 
2016-07-14 18:20
zhulei1978
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
收藏
得分:0 
直接向显存写数据啊,写入空格

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-07-14 19:31
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:340
专家分:2482
注 册:2016-5-15
收藏
得分:10 
win32控制台不能像dos一样可以用int10,或者直接写显存。
以下是一个范例,它先显示四列字符串,呼叫ClearScreen子程后再显示第2串字符。
楼主的程式可以直接叫用ClearScreen。
用法:
invoke GetStdHandle,STD_OUTPUT_HANDLE ;取得控制台标准输出句柄
invoke ClearScreen,eax ;呼叫清屏子程序


程序代码:
include \masm32\include\masm32rt.inc
ClearScreen proto :Dword

.stack 500h
.data
.code
start:
    print "first string",10,13
    print "first string",10,13
    print "first string",10,13
    print "first string",10,13
    inkey " "
    invoke GetStdHandle,STD_OUTPUT_HANDLE ;取得控制台标准输出句柄
    invoke ClearScreen,eax ;呼叫清屏子程序
    print "second string after clear screen"
    inkey " "
    invoke  ExitProcess, 0

;---------------------------------------------------
ClearScreen  PROC    hConsole:HANDLE ;清屏子程序
        push    ebx
        push    edi
        mov     ebx,hConsole                  ;EBX = hConsole
        xor     edi,edi
        sub     esp,(sizeof CONSOLE_SCREEN_BUFFER_INFO+3) and -4
        INVOKE  GetConsoleScreenBufferInfo,ebx,esp
        movzx   eax,word ptr [esp].CONSOLE_SCREEN_BUFFER_INFO.dwSize.x
        movzx   edx,word ptr [esp].CONSOLE_SCREEN_BUFFER_INFO.dwSize.y
        mul     edx
        push    edx
        INVOKE  FillConsoleOutputCharacter,ebx,32,eax,edi,esp
        pop     eax
        movzx   edx,word ptr [esp].CONSOLE_SCREEN_BUFFER_INFO.wAttributes
        push    edx
        push    eax
        INVOKE  FillConsoleOutputAttribute,ebx,edx,eax,edi,esp
        INVOKE  SetConsoleCursorPosition,ebx,edi
        pop     ecx
        pop     edx
        xchg    eax,edi
        add     esp,(sizeof CONSOLE_SCREEN_BUFFER_INFO+3) and -4
        pop     edi
        pop     ebx
        ret     4

ClearScreen  ENDP
end start    


图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-7-14 22:25编辑过]

2016-07-14 22:24
wookpecker
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-6-4
收藏
得分:0 
回复 3楼 Valenciax
能问下上面的代码是在什么编译器上运行的吗?
2020-06-04 15:52
快速回复:汇编win32控制台如何清屏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016388 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved