Windows下控制台输出
控制台输出就象dos下的输出,可不是图形界面。象ping/ipconfig/ftp等命令都是这类程序。
回忆过去,在dos下进行文件操作时,常用到“文件把柄”的概念,使用文件把柄操作时,非常方便,操作时,只要知道把柄号就可以,而不用操心文件的位置。dos下,设备也都有自己的专用把柄,这些把柄是:
0000H 标准输入设备 (stdin)
0001H 标准输出设备 (stdout) stdin和stdout可以被再定向,dos下常用的“输入改向”和“输出改向”就是这个意思。
下面的dos功能调用中将向屏幕输出信息:
mov ah,40h ;写到文件或设备 利用同样的道理,在
windows下,也可向屏幕输出信息。这要用到两个Api函数,一个是GetStdHandle,另一个是WriteFile,在Win32 developer’s References中它们是这样定义的:
------------------------------------------------------------
HANDLE GetStdHandle;下面我们看一个程序,作用是显示一个字符串信息!mess db ’How are you !’,0 ;要显示的信息 .data?
StdOut dd ? ;存放标准输出的把柄CharOut dd ? ;记录实际输出的字符数编译链接,下面给出详尽的信息,供分析参考:
D:\MASM7>dir /adHow are you !
D:\MASM7>
--------------------------------------------------------------
另外,在masm32.inc中有函数StdOut的声明,可用来直接输出信息,把上面的例子修改后就是下面的样子,可见来得更简炼,供大家参考:
.386
.model flat,stdcall
option casemap:none ;case sensitivemess db ’How are you !’,0
.code
start:
invoke StdOut,addr mess
invoke ExitProcess,NULL
end start