📄 readme.txt
字号:
本版特性: 1.Boot 装载 setup+os 到 0X10000 2.在实模式下跳到 setup, setup 把 os 移动到 0x100000 (1M) 3.然后切换到保护模式,用一句长跳转 jmp dword 8:0x100000 (nasm can mix 16bit and 32bit code) 1).setup.s 预留了2048(0x800)个字节供以后使用 2).setup.s 预留空间, setup 搬移 os 的位置(紧邻setup之后),应该一致. 总结: 系统从 1M 的地方跑起来,总算像个操作系统的 Loader 了!!!!!曾经遇到Bug 1 :( 2001.12.? 系统起动后跳到 0x10000 ,但是setup地址gdt_48 定义为 gdt,0x9 改为 gdt,0x1 问题解决.Bug 2 :( 2001.12.15 晚 11:51 bug fixed 先看看这个程序段 ;move os.bin to 0x100000 mov esi,0x010800 ;source offset mov edi,0x100000 ;dest offset mov ecx,0x1500 ;count move: mov ax, word [dword ds:esi] mov word [dword ds:edi],ax dec ecx cmp ecx,0 je endmove inc esi inc edi jmp move ;晕倒,没写这一句,怎么他妈的移动! endmove: 看到我写的注释了吗? 一开始竟然没写上 jmp move 后来把 ;dest offset 改为 0xb8000(直接写屏),发现屏幕上只有 一个红色的 f 在闪动,才查到这个问题 Bug 备忘录: 1) 在切换到保护模式后错误的使用 int 0x10 显示字符串 2) 使用不可写的段描述符 向显存写字符 3) 没有把选择子装入 ds
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -