读书笔记《30天自制操作系统》day01
来源:互联网 发布:品牌网络推广毕业论文 编辑:程序博客网 时间:2024/05/18 18:47
1. 计算机只知道01代码,计算机启动时从引导扇区开始执行,文件如下hellos.asm
DB0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4fDB0x49, 0x50, 0x4c, 0x00, 0x02, 0x01, 0x01, 0x00DB0x02, 0xe0, 0x00, 0x40, 0x0b, 0xf0, 0x09, 0x00DB0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00DB0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x29, 0xffDB0xff, 0xff, 0xff, 0x48, 0x45, 0x4c, 0x4c, 0x4fDB0x2d, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x46, 0x41DB0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x00, 0x00RESB16DB0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7cDB0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8aDB0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09DB0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xebDB0xee, 0xf4, 0xeb, 0xfd, 0x0a, 0x0a, 0x68, 0x65DB0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72DB0x6c, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00RESB368DB0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaaDB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB4600DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB1469432
2. 使用nasm编译,直接生成软盘映像
nasm -o helloos.img helloos.asm
3.使用bochs可虚拟运行,helloos.bxrc
romimage: file=$BXSHARE\BIOS-bochs-latest, address=0xf0000megs: 16vgaromimage: $BXSHARE\VGABIOS-lgpl-latestfloppya: 1_44=helloos.img, status=insertedboot: alog: bochsout.txtparport1: enable=0vga_update_interval: 300000keyboard_serial_delay: 200keyboard_paste_delay: 100000floppy_command_delay: 50000ips: 4000000mouse: enabled=0private_colormap: enabled=0fullscreen: enabled=0screenmode: name="sample"i440fxsupport: enabled=0
4. helloos1.asm=helloos.asm
;FAT12格式文件系统头部分DB0xeb, 0x4e, 0x90DB"HELLOIPL"DW512DB1DW1DB2DW224DW2880DB0xf0DW9DW18DW2DD0DD2880DB0,0,0x29DD0xffffffffDB"HELLO-OS "DB"FAT12 "RESB18;程序主体DB0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7cDB0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8aDB0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09DB0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xebDB0xee, 0xf4, 0xeb, 0xfd;显示信息部分DB0x0a, 0x0aDB"hello, world"DB0x0aDB0;原书中使用下面指令,但这个在nasm中不通过,故使用times;RESB0x1fe - $;times 0x1fe - ($ - $$) DB 0 times 510 - ($-$$) DB 0DB0x55, 0xaa;启动区外输出部分DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB4600DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB1469432
5. helloos2.asm=helloos1.asm
ORG0x7c00JMPentryDB0x90DB"HELLOIPL"DW512DB1DW1DB2DW224DW2880DB0xf0DW9DW18DW2DD0DD2880DB0,0,0x29DD0xffffffffDB"HELLO-OS "DB"FAT12 "RESB18entry:MOVAX,0MOVSS,AXMOVSP,0x7c00MOVDS,AXMOVES,AXMOVSI,msgputloop:MOVAL,[SI]ADDSI,1CMPAL,0JEfinMOVAH,0x0eMOVBX,15INT0x10JMPputloopfin:HLTJMPfinmsg:DB0x0a, 0x0aDB"hello, world"DB0x0aDB0;RESB0x7dfe-$;times 0x7dfe - ( $ - $$ ) DB 0 times 510-($-$$) DB 0DB0x55, 0xaaDB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB4600DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB1469432
6. FAT12信息
FAT12是MS公司Dos所支持的文件系统之一,当软盘被标准格式化后:每个磁头80个磁道,每个磁道18个扇区,每个扇区512字节,所以标准软盘的容量为:2*80*18*512=1474560B=1440K=1.44M。文件系统数据结构为:
引导程序数据结构
- 读书笔记《30天自制操作系统》day01
- 读书笔记《30天自制操作系统》day01
- 读书笔记《30天自制操作系统》day01
- 30天自制操作系统day01
- 《30天自制操作系统》 day01
- 读书笔记《30天自制操作系统》day02
- 读书笔记《30天自制操作系统》day03
- 读书笔记《30天自制操作系统》day04
- 读书笔记《30天自制操作系统》day05
- 读书笔记《30天自制操作系统》day06
- 读书笔记《30天自制操作系统》day07
- 读书笔记《30天自制操作系统》day08
- 读书笔记《30天自制操作系统》day09
- 读书笔记《30天自制操作系统》day10
- 读书笔记《30天自制操作系统》day11
- 读书笔记《30天自制操作系统》day02
- 读书笔记《30天自制操作系统》day03
- 读书笔记《30天自制操作系统》day12~day13
- linux 软件安装各种方法
- Android : 录音实现之AudioRecord类
- freemark
- JAVA中的多线程问题(高级面试中经常遇到)
- 程序状态寄存器指令
- 读书笔记《30天自制操作系统》day01
- 单片机中断的运算方法
- JRtpLib分包代码
- mfc创建动态库注意事项
- 从今天起,记录点滴,一步一步积累。webdriver-总结找不到页面元素报错的各种情况
- 浅谈编程能力的培养与提高——卓越的程序设计之道
- oracle_(培训)1_oracle数据库基本概念
- Qt中Qstring,char,int,QByteArray之间到转换
- 软件中断指令