继续开发
; hello-os ; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以下的记述用于标准FAT12格式的软盘 JMP entry DB 0x90 DB "HELLOIPL" ; 启动区的名称 DW 512 ; 每个扇区(sector)的大小 DB 1 ; 簇(cluster)的大小 DW 1 ; FAT的起始位置 DB 2 ; FAT的个数 DW 224 ; 根目录的大小 DW 2880 ; 该磁盘的大小 DB 0xf0 ; 磁盘的种类 DW 9 ; FAT的长度 DW 18 ; 1个磁道(track)有几个扇区 DW 2 ; 磁头数 DD 0 ; 不适用分区 DD 2880 ; 重写一次磁盘大小 DB 0,0,0x29 ; DD 0xffffffff ; DB "HELLO-OS " ; 磁盘名称 DB "FAT12 " ; 磁盘格式名称 RESB 18 ; 先空出18字节 ; 程序核心 entry: MOV AX,0 ; 初始化寄存器 MOV SS,AX MOV SP,0x7c00 MOV DS,AX MOV ES,AX MOV SI,msg putloop: MOV AL,[SI] ADD SI,1 ; 给SI加1 CMP AL,0 JE fin MOV AH,0x0e ; 显示一个文字 MOV BX,15 ; 指定字符颜色 INT 0x10 ; 调用显卡BIOS JMP putloop fin: HLT ; 让CPU停止,等待指令 JMP fin ; 无限循环 msg: DB 0x0a, 0x0a ; 换行2次 DB "hello, world" DB 0x0a ; 换行 DB 0 RESB 0x7dfe-$ ; 0x7dfe和当前字节之间用0x00填写 DB 0x55, 0xaa ; 以下是启动区以外部分的输出 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 4600 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 1469432
时间: 2024-08-29 14:01:25