内存溢出的问题。

atm2001 2003-03-22 12:52:39

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

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

Why?
...全文
42 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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,你的程序只能有多少?

21,497

社区成员

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

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