段地址为什么从04000H开始

programer2004 2007-11-27 10:13:11
我用的是伟福实验箱做的微机原理实验,其中包含了六个软件实验,而且程序中没有用ORG实验各段的起始地址,但是这六个程序的数据段都是从04000H开始的,不知道为什么了,请大家帮助,给解答一下,其中一个程序代码如下:

data segment
Block db 256 dup(55h)
data ends

code segment
assume cs:code, ds:data

start proc near

mov ax, data
mov ds, ax

mov bx, offset Block ; 起始地址
mov cx, 256 ; 清 256 字节
Again:
mov [bx], byte ptr 0
inc bx
Loop Again ; 记数减一

jmp $

code ends
end start

...全文
234 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
土豆 2007-11-29
  • 打赏
  • 举报
回复
哦,不好意思,你是单片机,那应该在你的单片机的编译工具里肯定有类似的配置信息,这个是基本功能,不可能没有,否则不能工作。
土豆 2007-11-29
  • 打赏
  • 举报
回复
应该是在链接的时候有你自己决定,具体说来,如果是用GNU的Ld或gcc链接的话,你需要一个script,该script用来描述你要生成的文件在内存中的布局。比如数据段在哪里,代码段在哪里,程序入口在哪里,等等。
koc103 2007-11-29
  • 打赏
  • 举报
回复
這個程序無far jump, 所以可以自由地放到那裏執行也可, 可能0x4000處有行閒的內存可用, 所以放在那個跑吧
from www.kingofcoder.com 編程王網站
programer2004 2007-11-29
  • 打赏
  • 举报
回复
"土豆"你说的爱放那放那,我怎么控制放的位置呢?
nolatin 2007-11-28
  • 打赏
  • 举报
回复
代码段后才是数据段吧
mayomide 2007-11-28
  • 打赏
  • 举报
回复
系统按排的吧。
data段之后就是code段。这个好像和段地址没什么问题。
terryzero 2007-11-28
  • 打赏
  • 举报
回复
这是规定
记住就可以了
土豆 2007-11-28
  • 打赏
  • 举报
回复
这只是一种选择而已,你爱放哪就放哪,但总要找个地方放的吧。

21,458

社区成员

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

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