继FASM之后,又去看了看NASM,虽然它们都是免费软件,但《自己动手写操作系统》里使用的是NASM。
照书敲了一个最简单的代码:
org 07C00H
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, My OS!!!"
times 510-($-$$) db 0
dw 0xAA55
编译一下:nasm xxx.asm -o boot
用BOOTICE写入MBR,算是见到了在裸机上的"软件"。
解释:
ORG 07C00H
表明这一段代码是加载到07C00H这个地址运行的,为什么?BIOS就是那么规定的。
int 10H
调用"中断",显示字符串。