OS学习笔记(1) - 一个简单的bootsect

使用汇编语言(nasm汇编器)实现一个bootsect,在屏幕上打印一个字符串。

boot.asm

    org 07c00h       ; BIOS加载bootsect到7c00地址,
                     ; 所以编译第一条指令在7c00位置
    ; 取得所在代码段(CS)值,初始化DS和ES,使代码数据指向同一段                 
    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 = 13h, AL = 10h 
    mov bx, 000ch    ; BH = 0h (页0), BL = 0ch (黑底红字)
    mov dl, 0
    int 10h
    ret

BootMessage:    db "Hello, OS World!"
; 填充为512字节,最后为55aa(识别为启动设备)
times 510 - ($ - $$)  db 0 
dw 0xaa55
编译 nasm boot.asm -o boot.bin 生成boot.bin二进制文件
运行 qemu boot.bin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值