免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: jxj812
打印 上一主题 下一主题

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

论坛徽章:
0
11 [报告]
发表于 2012-03-26 23:47 |只看该作者
nasm -o a.img a.s

然后用bochs看看就行了,调试输出
(0) [0x0000000000007c00] 0000:7c00 (unk. ctxt): mov ax, 0x0000            ; b80000
<bochs:3> n
Next at t=14041609
(0) [0x0000000000007c03] 0000:7c03 (unk. ctxt): mov ds, ax                ; 8ed8
<bochs:4>
Next at t=14041610
(0) [0x0000000000007c05] 0000:7c05 (unk. ctxt): sti                       ; fb
<bochs:5>
Next at t=14041611
(0) [0x0000000000007c06] 0000:7c06 (unk. ctxt): mov ax, 0x9000            ; b80090
<bochs:6>
Next at t=14041612
(0) [0x0000000000007c09] 0000:7c09 (unk. ctxt): mov es, ax                ; 8ec0
<bochs:7>
Next at t=14041613
(0) [0x0000000000007c0b] 0000:7c0b (unk. ctxt): mov bx, 0x0000            ; bb0000
<bochs:8>
Next at t=14041614
(0) [0x0000000000007c0e] 0000:7c0e (unk. ctxt): mov ah, 0x02              ; b402
<bochs:9>
Next at t=14041615
(0) [0x0000000000007c10] 0000:7c10 (unk. ctxt): mov dl, 0x00              ; b200
<bochs:10>
Next at t=14041616
(0) [0x0000000000007c12] 0000:7c12 (unk. ctxt): mov dh, 0x00              ; b600
<bochs:11>
Next at t=14041617
(0) [0x0000000000007c14] 0000:7c14 (unk. ctxt): mov ch, 0x00              ; b500
<bochs:12>
Next at t=14041618
(0) [0x0000000000007c16] 0000:7c16 (unk. ctxt): mov cl, 0x02              ; b102
<bochs:13>
Next at t=14041619
(0) [0x0000000000007c18] 0000:7c18 (unk. ctxt): mov al, 0x02              ; b002
<bochs:14>
Next at t=14041620
(0) [0x0000000000007c1a] 0000:7c1a (unk. ctxt): int 0x13                  ; cd13
<bochs:15>
00014042384i[FDD  ] read() on floppy image returns 0
00014087339i[FDD  ] read() on floppy image returns 0
Next at t=14132740
(0) [0x0000000000007c1c] 0000:7c1c (unk. ctxt): jb .-24 (0x00007c06)      ; 72e8
<bochs:16>
Next at t=14132741
(0) [0x0000000000007c1e] 0000:7c1e (unk. ctxt): jmp far 9000:0000         ; ea00000090
<bochs:17>
Next at t=14132742
(0) [0x0000000000090000] 9000:0000 (unk. ctxt): add byte ptr ds:[bx+si], al ; 0000

论坛徽章:
0
12 [报告]
发表于 2012-03-27 09:38 |只看该作者
MagicBoy2010 发表于 2012-03-26 23:10
是的。就是你悬赏1万要学kernel?!可惜了,要是在北京的话,把我自己写的能直接放到U盘里启动的代码拿 ...


我做过ARM Multi-core的bootloader V7架构,很短小,如果LZ有这方面的需要的话,应该可以帮到你,不过话说magicboy兄,如何从U盘启动,什么时候可以show一下啊

论坛徽章:
0
13 [报告]
发表于 2012-03-27 11:31 |只看该作者
我做过ARM Multi-core的bootloader V7架构,很短小,如果LZ有这方面的需要的话,应该可以帮到你,不过话说magicboy兄,如何从U盘启动,什么时候可以show一下啊
=======================================

当时纯粹是好奇就自己操刀写了一个半成品,最早我那个bootsec.bin,setup.bin加上kernel都是我在dos下用int 13h写到软盘去的,然后从软盘加载。我说我当时写坏的软盘不写几十张,有人还以为我在忽悠,其实还真不是,软盘这个东西真不经用,而且也不怎么可靠,所以主楼的代码里要jc read,因为一次没读成功对软盘来说是很正常的。当然这是个很原始阶段的做法了,后来就改用grub来引导,再后来为了demo给别人看,就把grub和kernel全放到u盘里了,插到电脑上从U盘启动就可以了,关于U盘启动的方法,很早前写的一个总结帖子,http://www.embexperts.com/forum.php/forum.php?mod=viewthread&tid=374&extra=page%3D1,现在还能用。。。

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
14 [报告]
发表于 2012-03-27 12:15 |只看该作者
0.01的时候有AT&T汇编,bootloader那部份汇编是NASM,后面的汇编用的GCC,记忆中是如此。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP