免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2474 | 回复: 13
打印 上一主题 下一主题

请教一个短小的引导程序的原理。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-26 21:30 |只看该作者 |倒序浏览
我实在是一个菜鸟麻烦大家了,请教这个短小的引导程序的运行机制和原理解释。
[bits 16]

BOOTSEG   equ 0x0000
SETUPSEG  equ 0x9000
SETUPOFF  equ 0x0000
SETUPSEC  equ  2
BOOTDRIVER equ 0;floppy a
SCREENSIZE equ 0x0fa0
;++++++++++++++++++++++++++++++
start:
mov ax,BOOTSEG
mov ds,ax
sti

;___________________________
;读setup.asm->0x90000
read:
mov ax,SETUPSEG
mov es,ax
mov bx,SETUPOFF
mov ah,2
mov dl,BOOTDRIVER
mov dh,0
mov ch,0
mov cl,2
mov al,SETUPSEC
int 13h
jc read
jmp SETUPSEG:SETUPOFF //冒号后面的是怎么回事啊?


times 510-($-$$) db 0
dw 0aa55h

论坛徽章:
0
2 [报告]
发表于 2012-03-26 22:04 |只看该作者
上面应该是位于软盘的引导扇区(512字节,应该是早期的bootsec.bin)的一段引导代码,通过int 13h将该软盘上后续的2个扇区数据(应该是早期的setup.bin)读到0x90000处,如果读取成功就跳转到0x90000处执行。

论坛徽章:
0
3 [报告]
发表于 2012-03-26 22:37 |只看该作者
jmp SETUPSEG:SETUPOFF   这种写法是什么意思啊?

论坛徽章:
0
4 [报告]
发表于 2012-03-26 22:57 |只看该作者
jxj812 发表于 2012-03-26 22:37
jmp SETUPSEG:SETUPOFF   这种写法是什么意思啊?


哦,jmp是跳转指令,后面的那个是x86实模式下的一种寻址方式。。。

论坛徽章:
0
5 [报告]
发表于 2012-03-26 23:08 |只看该作者
回复 4# MagicBoy2010

jmp SETUPSEG:SETUPOFF  SETUPSEG是基地址,冒号后面SETUPOFF是偏移地址对吗?


   

论坛徽章:
0
6 [报告]
发表于 2012-03-26 23:10 |只看该作者
jxj812 发表于 2012-03-26 23:08
回复 4# MagicBoy2010

jmp SETUPSEG:SETUPOFF  SETUPSEG是基地址,冒号后面SETUPOFF是偏移地址对吗?


是的。就是你悬赏1万要学kernel?!可惜了,要是在北京的话,把我自己写的能直接放到U盘里启动的代码拿给你直接现场指导。。。

论坛徽章:
0
7 [报告]
发表于 2012-03-26 23:13 |只看该作者
你1楼中的代码是要通过编译,然后形成纯2进制文件(不是什么ELF),这种文件里面直接就是机器指令,可以直接跳转过去运行的。在gcc下,可以通过下面的option来产生纯二进制指令:
LINKFLAG  =         -s --oformat binary -Ttext 0x0

论坛徽章:
0
8 [报告]
发表于 2012-03-26 23:36 |只看该作者
你这用nasm编译的吧

论坛徽章:
0
9 [报告]
发表于 2012-03-26 23:39 |只看该作者
是不是就是传说中的Linux 0.11中的代码?那时候还没有AT&T语法?

论坛徽章:
0
10 [报告]
发表于 2012-03-26 23:43 |只看该作者
这是国内一个牛人写的brightsky os 中复制下来的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP