首页 | 博客群 | 公社 | 专栏 | 论坛 | 图片 | 资讯 | 注册 | 帮助 | 博客联播 | 随机访问
点评《血色残阳》中的人物- -| 回首页 | 2006年索引 | - -亲爱的,整整四年了……

我的第一个Win32汇编程序

关键词Win32汇编                                          

include windows.inc

.data
 
 EchoStr1 db 'Press <Q> to exit.\n\n'
 EchoStr1Len=$-EchoStr1
 
 hStdOut dd ; 标准输出句柄
 
 char WPARAM 20h

.code
Start:
 
 ; 获得输出句柄
 invoke GetStdHandle, STD_OUTPUT_HANDLE
 mov hStdOut, eax
 
 invoke EchoConsole, offset EchoStr1, EchoStr1Len
 
lable_WaitForKeyClick:
 invoke GetKeyInput ; 等待用户按键
 .if eax!='Q' && eax!='q'
  .if eax==13
   invoke EchoConsole, "\n", 1
  else
   invoke EchoConsole, "*", 1
  .endif
  
  jmp lable_WaitForKeyClick
 .endif
 
 
 
  
 invoke ExitProcess,0

;-------------------------------------------------------------------
; 自定义函数:获得键盘输入
; 注意:此函数只能返回 DWORD 值,因为结果是存放在 eax 寄存器里的
;-------------------------------------------------------------------
GetKeyInput proc
 ; 局部变量
 local hStdIn :dword ; 变量:标准输入句柄
 local nStdMode :dword ; 变量:控制台属性
 
 local keycode :byte ; 变量:用户按键代码
 local Tmp  :dword ; 变量:临时变量
 
 invoke GetStdHandle, STD_INPUT_HANDLE ; 获得标准输入句柄
 mov hStdIn, eax    ; 保存标准输入句柄
 
 ; 获得控制台属性
 invoke GetConsoleMode, hStdIn, addr nStdMode
 invoke GetLastError
 
 ; 设置控制台属性,使得按任意键均可返回,而不必等待回车
 mov eax, ~ (ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT)
 and eax, nStdMode
 invoke SetConsoleMode, hStdIn, eax
 
 ; 等待用户按键,并将键值存入变量keycode
 invoke ReadConsole, hStdIn, addr keycode, 1, addr Tmp, NULL
 
 ; 恢复控制台属性
 invoke SetConsoleMode, hStdIn, nStdMode
 
 ; 将按键代码扩展为 DWORD类型 后返回
 movzx eax, keycode
endp
;-------------------------------------------------------------------

;-------------------------------------------------------------------
; 自定义函数:输出一个字符串
; 调用示例: invoke EchoConsole, "Key", 3
;  invoke EchoConsole, offset EchoStr1, EchoStr1Len
;-------------------------------------------------------------------
EchoConsole proc InputStr, StrLen
 push NULL
 push NULL
 push StrLen
 push InputStr
 push hStdOut
 call WriteConsole
endp
;-------------------------------------------------------------------

end Start

【作者: 辛亚平】【访问统计:】【2006年11月10日 星期五 11:00】【注册】【打印

搜索

Google

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=5847438

回复

验证码:   
评论内容: