概述
.386
.modelflat, stdcall
include windows.inc
include kernel32.inc
include masm32.inc
include debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib
.code
main proc
;局部变量中的类型不能使用缩写
LOCAL v1: dword
;可用逗号间隔写在一行
LOCAL v2: dword, v3: dword
;不指定类型时默认 DWORD(在 Win32 下)
LOCAL v4
;数组
LOCAL v5[3]: dword
;在手动初始化前, 局部变量中都是些垃圾值:
PrintDec v1
PrintDec v2
PrintDec v3
PrintDec v4
mov eax, v5[0]
PrintDec eax
ret
main endp
end main
----------------------------------------------------------------------------------------------------------------
理论上应该输出垃圾值才对 但是并不是这样
v1 = 0 (Test.asm, 52)
v2 = 0 (Test.asm, 53)
v3 = 0 (Test.asm, 54)
v4 = 0 (Test.asm, 55)
eax = 0 (Test.asm, 57)
全部为0了 - -
由于DumpMem不支持局部变量 我到debug.inc文件中找到了这个宏实现的语句 实际上是调用了HexDump2这个函数
测试一个局部变量 得到结果
0018FF84 : 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00
00000004 : BYTES TOTAL
okay 全部Zero了 难道RadASM帮我们把变量都初始化了么?
测试data?同样是这样
最后
以上就是火星上未来为你收集整理的Win32ASM学习[3]:局部变量的全部内容,希望文章能够帮你解决Win32ASM学习[3]:局部变量所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复