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