求教WIN32汇编如何引用变量?

zx414992977 2014-05-20 09:42:41
假如我定义一个宏:
DEFVAR macro TYPE,VARNAME,VALUE
.data
ifnb
VARNAME TYPE VALUE
else
VARNAME TYPE NULL
endif
.code
endm
然后在一个对话框消息回调函数里定义:
.code
_DlgProc proc hWnd,uMsg,wParam,lParam
mov eax,uMsg

.if eax == WM_CLOSE
invoke EndDialog,hWnd,0
invoke DeleteObject,hBmp1
invoke DeleteObject,hBmp2
.elseif eax == WM_INITDIALOG
invoke LoadBitmap,hInstance,IDB_1
DEFVAR HBITMAP,hBmp1
mov hBmp1,eax
invoke LoadBitmap,hInstance,IDB_2
DEFVAR HBITMAP,hBmp2
mov hBmp2,eax
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_DlgProc endp

end

这时问题来了,WM_CLOSE响应里的DeleteObject,hBmp1,DeleteObject,hBmp2这样写hBmp1,hBmp2编译器认为是未定义的,请教各位大大如何声明hBmp1,hBmp2这两个全局变量,使之可以引用到
...全文
151 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zx414992977 2014-05-22
  • 打赏
  • 举报
回复
我知道有局部变量用local定义 ,但是局部变量对定义字符串很麻烦 不是么
zx414992977 2014-05-21
  • 打赏
  • 举报
回复
直接定义是不会出现这样问题 ,但是很不方便,每次定义全局数据都要翻到前面数据段里定义,就如定义字符串,这样是非常麻烦的 ,个人感觉
zara 2014-05-21
  • 打赏
  • 举报
回复
不习惯这么个方式使用数据,也从来没有用过。为什么不可以直接定义呢;或者是将其放到 .code 前面呢?
WJN92 2014-05-21
  • 打赏
  • 举报
回复
1. 局部变量的定义 MASM用local伪指令提供了对局部变量的支持。定义的格式是: local 变量名1[[重复数量]][:类型],变量名2[[重复数量]][:类型]

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧