是按照参考书田宇著《一个64位操作系统的设计与实现》进行的,这里添加了一些操作步骤和说明。
一、写一个Boot引导程
写一个采用Intel汇编语言格式编写的Boot引导程序,命名为boot.asm,可以随便放在哪个路径。(程序中的汉字是我做的注释,用的时候删除即可)
将标识符 org 0x7c00 ;org是origin的英文缩写,意思是起始地址,制定程序的其实地址
BaseOfStack equ 0x7c00 ;等价语句,赋值标识符
;这一段是引导程序的寄存器初始化部分,将CS寄存器的短地址设置到DS\ED\SS中,以及设置指针寄存器SP
Label_Start:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, BaseOfStack
;通过中断服务INT 10h实现屏幕信息显示相关操作。INT 10h中断服务要求在调用时,必须想AH寄存器传入服务程序的主功能编号
;======= clear screen 上卷指定范围的窗口,INT 10h的主功能号AH=06h
mov ax, 0600h ;AH是ax的高八位,AL是ax的低八位
mov bx, 0700h
mov cx, 0
mov dx, 0184fh
int 10h
;======= set focus设置屏幕光标位置,INT 10h的主功能号AH=02h
mov ax, 0200h
mov bx, 0000h ;BH=页码
mov dx, 0000h ;DH=游标的列数,DL=游