【012】操作系统编写五 の 引导程序编写

; boot.asm  
    org 07c00h
    
    jmp    SHOWSTR
DATA:    
    db "Hello World"
    
SHOWSTR:
    mov ax,cs
    mov es,ax
    mov bp,DATA
    
    mov cx,12
    mov bx,000ch
    mov dh,0
    mov al,1
    mov ah,13h
    int    10h
AGAIN:
    jmp AGAIN

    times 510-($-$$) db 0
    dw 0xAA55

 

  1. 引导程序一般位于磁盘的第一个扇区,只有512字节,在BIOS POST进行时,会将该扇区内容拷贝到0x7c00的内存地方(历史原因),而不是用户决定的.
  2. org 7c00h 的作用是对标签如“DATA” 进行重定位。如果不加org 7c00h 的话,在对“DATA”进行编译后,为相对该段起始地址的偏移地址,这样在加载到内存中,进行引用数据的话,就会出错的。
  3. times 表示重复,$ 表示当前地址,$$表示当前段开始的地址,$-$$ 表示当前行在段内的偏移。
  4. 通过命令 nasm boot.asm -o boot.bin ,然后将boot.bin的512个字节的内容复制到软盘镜像的第一个扇区。通过使用vmware 利用软驱启动,会看到显示“Hello world!”
posted @ 2013-01-20 00:08  xiaolongxia  阅读(162)  评论(0)    收藏  举报