3 个问题 60 分 答案合适就揭贴

GhostAdz 2003-08-21 07:29:28
1.seg 是什么意思,比如 program 是一个子程序段,seg program 是什么意思

2.一个asm程序生成exe,然后运行exe,那exe是怎么载入内存的呢 (我知道ds一开始指向psp)
我的意思是 比如 我在程序里定义的.code代码段 里面的代码放在内存的哪里呢
放在cs:0吗,与cs相对应吗,还有.data数据段放在ds吗,他们存放的地址是怎么确定的呢

3.在代码段里定义的数据 比如 HH db ? 那这个HH是放在数据段里吗,是DS里吗
我曾经用debug看过,在数据段里定义的变量反而放在代码段里定义变量之后

请各位不吝赐教!!答案能让我搞清楚就马上结贴!!
...全文
37 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hswxf 2003-08-24
  • 打赏
  • 举报
回复
"3在代码段里定义的数据 比如 HH db ? 那这个HH是放在数据段里吗,是DS里吗
我曾经用debug看过,在数据段里定义的变量反而放在代码段里定义变量之后"

在代码段里定义的一定放在代码段里,在CPU的段管理中如果你是以默认的话秩序是(在INTEL内存中)代码段/数据段/堆栈段,但你给出段定义就不一样了如下
ORG 1000
.CODE
ORG 500
.DATA
数据段在前了

W32API 2003-08-22
  • 打赏
  • 举报
回复
路过
Areslee 2003-08-22
  • 打赏
  • 举报
回复
1、取该段的段地址
2、DOS将EXE读入内存,建立环境变量,建立PSP,重定位段地址,然后调用EXE的入口.code中的东西可以说是对应于CS,.data对应于DS,地址的确定由DOS EXELOADER来重定位
3、在哪个段定义的数据或代码就会在那个段中,而代码段和数据段并不是没关系的,只要计算好段地址和偏移地址,用什么段寄存器都可以访问
SoRoMan 2003-08-21
  • 打赏
  • 举报
回复
1.seg是取操作數的段基值啊,program是子過程的話,seg program為代碼段cs值把
2.cs,ds的分配好象取決於系統
3.放在代碼段,匯編會將它視為代碼指令,翻譯成機器碼後,由於不是指令,故譯碼後變成亂碼了,所以一般都跳過代碼段中的數據定義語句,不去執行它

21,458

社区成员

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

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