十分钟完成的操作系统

org 07c00h寻找启动盘时,如果选择软盘启动,计算机就会检查软盘的0面0磁道1扇区,如果发现它以0xaa55结束,则bios认为它是一个引导扇区。 BIOS将这512装载到内存地址0000:7c00处,然后跳转到该处,并将控制权交给这段代码。

mov ax, cs
mov ds, ax
mov es, ax
call DispStr
【十分钟完成的操作系统】jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage:db"Hello, OS World!"
times510-($-$$)db0
dw0xaa55




1. nasm的知识要点
1)不被[]扩起来的标签或变量名都被认为是地址;[]扩起来的才是内容
2)$表示当前行被汇编后的地址; $$表示一个节(section)的开始处被汇编后的地址
使用ndisasm -o 0x7c00 boot.bin >> disboot.asm,可以看到jmp $被翻译为:
00007C09EBFEjmp short 0x7c09

2. 32位cpu所含有的寄存器
4个数据寄存器(EAX、EBX、ECX和EDX)

2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)
6个段寄存器(ES、CS、SS、DS、FS和GS)
1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)

    推荐阅读