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

这篇博客展示了如何使用Win32汇编语言编写一个简单的程序,在Windows桌面上直接绘制文本"Hello World!"。程序借鉴了《Windows Graphics Programming: Win32 GDI and DirectDraw》一书中的例子,涉及GetDC、SetTextAlign、CreateFont等API调用来实现文字的显示和布局。

我前面有介绍 组建 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
===================================结束=============================================

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值