一个汇编写的boot程序

;系统引导程序
;nasm boot.asm -o boot.bin
;反汇编
;ndisasm -o 0x7c00 boot.bin >> disboot.asm
;调试程序
nasm boot.asm -o boot.com

%define    _BOOT_DEBUG_    ;做引导程序将此行注释掉
%ifdef    _BOOT_DEBUG_
org    0100h        ;调试状态做成.com文件   
%else
org    07c00h        ;告诉编译器程序加载到7c00处
%endif
mov    ax,cs        ;
mov    ds,ax
mov    es,ax

call    DispStr        ;调用显示字符串例程
jmp    $        ;无限循环

DispStr:
    mov    ax,BootMessage
    mov     bp,ax            ;es:bp    = 串地址
    mov    cx,16            ;cx    = 串长度
    mov    ax,01301h        ;ah = 13,al = 01h
    mov    bx,000ch        ;页号为0(bh = 0) 黑底红字(bl = 0ch,高亮)
    mov    dl,0
    int    10h            ;10h号中断
    ret
    BootMessage:    db    "Hello, OS world!"
    times    510-($-$$)    db    0    ;填充剩下的空间,使生成的二进制代码恰好为512字节
    dw    0xaa55            ;结束标志

posted @ 2016-05-21 20:19  撸码之路  阅读(595)  评论(0编辑  收藏  举报