跟大师学习系统编程---操作系统加载(3)
程序员文章站
2022-06-24 17:00:05
...
获取磁盘参数
ok_load_setup:
! Get disk drive parameters, specifically nr of sectors/track
mov dl,#0x00
mov ax,#0x0800 ! AH=8 is get drive parameters
int 0x13
mov ch,#0x00
seg cs
mov sectors,cx
mov ax,#INITSEG
mov es,ax
获取磁盘参数,主要是获取每磁道的扇区数,这样做的目的是为了判断当前的启动磁盘的类型(当时还流行软盘驱动器,而软盘有2种尺寸的——1.2M和1.44M). 他们每磁道包含的扇区数目不同。
第8行代码将ch清0,主要是为了第10行的代码,因为扇区数目是存储在cl中的,所以,要排除ch的干扰。sectors为本程序的一个变量,在程序文件的某位有定义。保存每磁道扇区数目。
第11行和第12行代码用于恢复es寄存器的值,因为取磁盘参数中断程序修订了es寄存器的值,需要重新初始化es。