十分钟完成的操作系统

    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!"

times  510-($-$$)      db      0

dw      0xaa55



1. nasm的知识要点

    1)不被[]扩起来的标签或变量名都被认为是地址;[]扩起来的才是内容

    2)$表示当前行被汇编后的地址;       $$表示一个节(section)的开始处被汇编后的地址

使用ndisasm -o 0x7c00 boot.bin >> disboot.asm,可以看到jmp $被翻译为:

    00007C09  EBFE             jmp 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)

你可能感兴趣的:(十分钟完成的操作系统)