简单win32汇编程序,无窗体,直接画在桌面上。

我前面有介绍 组建 win32汇编IDE,现在写个东西练一下。

这个程序是

 《Windows Graphics Programming: Win32 GDI and DirectDraw》  

这本书里面 hello2 的asm 仿照版。

============================源代码开始==================================

.386
.model flat, stdcall
option casemap:none

include  windows.inc
include  kernel32.inc
include  user32.inc
include     gdi32.inc

includelib gdi32.lib
includelib user32.lib
includelib kernel32.lib

.data

szMessage      db "Hello World!",0
szFace         db "Times New Roman",0

.data?
hDC             dd   ?
hFont           dd   ?
hOld            dd   ?

xpos             dd   ?
ypos             dd   ?


.code
start:

 
 invoke GetDC,NULL
 mov    hDC,eax
 ;得到桌面句柄
 
 invoke SetTextAlign,eax,TA_CENTER or TA_BASELINE
 ;设置文本对齐方式
 
 invoke GetSystemMetrics,SM_CXSCREEN
 sar    eax,1
 mov    xpos,eax
 invoke GetSystemMetrics,SM_CYSCREEN
 sar    eax,1
 mov    ypos,eax
 ;文本位置
 
 invoke CreateFont,64,0, 0, 0,FW_BOLD,/
        TRUE,FALSE,FALSE,ANSI_CHARSET,/
        OUT_TT_PRECIS,CLIP_DEFAULT_PRECIS,/
        PROOF_QUALITY,VARIABLE_PITCH,addr szFace
 mov    hFont,eax
 ;新建字体
 
 invoke SelectObject,hDC,hFont
 mov    hOld,eax
 ;选入字体到DC
 
 invoke TextOut,hDC,xpos,ypos,addr szMessage,sizeof szMessage -1
 ;绘制文本
 
 invoke SelectObject,hDC,hOld
    invoke DeleteObject,hFont
 ;恢复原字体和销毁创建字体

 invoke ReleaseDC,NULL,hDC
 ;释放桌面字体
 invoke   ExitProcess,NULL
 ;退出程序
end start
===================================结束=============================================

你可能感兴趣的:(windows,汇编,user,null,ide)