跟大师学习系统编程---操作系统加载(3)

来源:互联网 发布:sql删除重复的数据 编辑:程序博客网 时间:2024/06/10 07:46

获取磁盘参数

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。