菜鸟关于汇编执行顺序问题求指教

零下274度 2014-02-25 10:53:39
以下是我在《30天自制操作系统》中看到的启动代码,基本上都看懂了,只是关于顺序上有些疑问,求指教:
JMP指令应该是跳转指令,跳转以后不会返回,那么 “JMP entry ”下面的DB怎么会执行呢?还是DB指令不同,本人汇编菜菜菜鸟,求指教,多谢,勿喷,呵呵

ORG 0x7c00

JMP entry
DB 0x90
DB "HELLOIPL"
DW 512
DB 1
DW 1
DB 2
DW 224
DW 2880
DB 0xf0
DW 9
DW 18
DW 2
DD 0
DD 2880
DB 0,0,0x29
DD 0xffffffff
DB "HELLO-OS "
DB "FAT12 "
RESB 18 ?


entry:
MOV AX,0
MOV SS,AX
MOV SP,0x7c00
MOV DS,AX
MOV ES,AX

MOV SI,msg
putloop:
MOV AL,[SI]
ADD SI,1
CMP AL,0
JE fin
MOV AH,0x0e
MOV BX,15
INT 0x10
JMP putloop
fin:
HLT
JMP fin

msg:
DB 0x0a, 0x0a
DB "hello, world"
DB 0x0a
DB 0

;RESB 0x7dfe-$
;times 0x7dfe-($-$$) db 0
times 510-($-$$) db 0
DB 0x55,0xaa
...全文
375 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
零下274度 2014-02-25
  • 打赏
  • 举报
回复
哦,是不是说这些DB定义的内容在编译的时候会单独处理,不在执行里面,那么是不是这些内容定义在文件的什么地方都可以呢?
zara 2014-02-25
  • 打赏
  • 举报
回复
DB 是定义数据,不是供执行的指令。这是分区引导扇区的内容吧,那里定义的是磁盘参数,供操作系统的文件管理模块来确定如何使用硬盘上文件的。
零下274度 2014-02-25
  • 打赏
  • 举报
回复
哦,多谢指教
zara 2014-02-25
  • 打赏
  • 举报
回复
普通程序里的数据定义,是可以随意放置的,只要别误进入到执行流程里;但你这里的不可以,磁盘参数区域,有固定的位置要求的,必须在那里,而且区域里各个元素的定义也是固定的(包括顺序和所占空间的多少)。

21,459

社区成员

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

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