首页
社区
课程
招聘
[讨论]全局变量和局部变量
发表于: 2007-6-4 12:44 4435

[讨论]全局变量和局部变量

2007-6-4 12:44
4435
.386
.model flat,stdcall
option casemap:none

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

includelib kernel32.lib
includelib user32.lib

.data
szBuff db 156 dup(?)
szTest db 'test',0
.code
start:
    invoke lstrcat,addr szBuff,addr szTest
    invoke MessageBox,0,addr szBuff,0,0
    invoke ExitProcess,0
    end start

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..
.386
.model flat,stdcall
option casemap:none

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

includelib kernel32.lib
includelib user32.lib

.data
szTest db 'test',0
.code
Test1 proc
local szBuff[156]:byte
    invoke lstrcat,addr szBuff,addr szTest
    invoke MessageBox,0,addr szBuff,0,0
    invoke ExitProcess,0
Test1 endp
;********************************************
start:
invoke test1
end start

两代码行如图:

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
2
我想问一下,为什么把szBuff定义为全局变量的话,它就是不包含东西;而定义局部变量,就有东西了?
2007-6-4 12:45
0
雪    币: 200
活跃值: (154)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
数据段变量内存地址是固定的
堆栈段变量内存地址是动态的,当进入过程时所占用的堆栈区域数据不会被初始化,退出过程时堆栈也不会被清空。所以会出现上面这情况。
若你多作几个类似但又不同的几个过程,多运行几次将出现不同同的结果。
2007-6-4 14:02
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
4
明白鸟,谢谢

结帖
2007-6-4 17:36
0
游客
登录 | 注册 方可回帖
返回
//