内存溢出的问题。

atm2001 2003-03-22 12:52:39

我写了一个程序,
其中有一行::
sxc 1024*1024 dup (90h)

程序中对sxc进行添加或修改Asm机器码的基本变形试验
编译通过,可是执行时,却提示溢出。。。
换成
sxc 1024*16 dup (90h)
却好用

Why?
...全文
12 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dsangvei 2003-03-25
哦,我以为你在DOS下呢。
ECX跟sxc 1024*1024 dup (90h) 有什么关系?
不知道你在程序中是如何用sxc的。
回复
atm2001 2003-03-24
我靠找到问题根源了,我把RCX写成Ecx,改回Rcx,问题消失,不过还是不明白RCX和ECX不过
是:RCX::64位,ECX::32位 而已怎么会这样呢?
回复
airhork 2003-03-23
十年一剑说的有道理
回复
atm2001 2003-03-23
1024*1024 dup (90h) 是在DOS下吧?你的程序是实模式的吧? 都是,内存最多640K。MSDOS用了50K,其它100K,你的程序只能有多少?


我用的是Win2k+sp3,今天在WinXp测试居然好用,奇怪了。
回复
LittleStar 2003-03-23
大家还记得在实模式下可以寻址的范围吗?64K!如果是保护模式可寻址的范围:FFFFF
sxc 1024*1024 dup (90h)
没有说明是什么类型。如果是sxc db 1024*1024 dup (90h)也大于64K,在实模式一定overload.我试了用masm 611会提示段大于64K,出错.tasm 31会提示段大于64K,并自动截成64K大小.
sxc db 65535 dup()就不会出错.
回复
atm2001 2003-03-23
To airhork::
你的思维还在Dos下,我出错的原因我没找到,不过我没拿Dos
做测试,我用的是Win2k+sp3!!
WinXp+sp1下没问题

回复
dsangvei 2003-03-22
1024*1024 dup (90h) 是在DOS下吧?你的程序是实模式的吧? 都是,内存最多640K。MSDOS用了50K,其它100K,你的程序只能有多少?

回复
相关推荐
发帖
汇编语言
创建于2007-08-27

2.0w+

社区成员

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
申请成为版主
帖子事件
创建了帖子
2003-03-22 12:52
社区公告
暂无公告