软盘
- 80个柱面,2个磁头,18个扇区
- 每个扇区 512 字节,共 1440 KB
读磁盘汇编
读取 10 个柱面到 0x0820 内存位置
;读取磁盘 MOV AX,0x0820 MOV ES,AX MOV CH,0 ;柱面 0 MOV DH,0 ;磁头 0 MOV CL,2 ;扇区 2 readloop: MOV SI,0 ;记录失败次数 retry: MOV AH,0x02 ;读盘指令号 MOV AL,1 ;1 个扇区 MOV BX,0 ;ES:BX 为缓冲地址,即 0x8200 MOV DL,0x00 ;A 驱动器 INT 0x13 ;调用磁盘 BIOS JNC next ;jump if not carry 没错跳到 fin ADD SI,1 CMP SI,5 JAE error ;jump if above or equal >5 跳转 MOV AH,0x00 MOV DL,0x00 INT 0x13 ;重置驱动器(系统复位) JMP retry next: MOV AX,ES ADD AX,0x0020 MOV ES,AX ADD CL,1 CMP CL,18 ;读 18 个扇区 JBE readloop MOV CL,1 ADD DH,1 CMP DH,2 ;读 2 个磁头 JB readloop MOV DH,0 ADD CH,1 CMP CH,CYLS ;读 10 个柱面 JB readloop MOV [0x0ff0],CH ;将读取到的柱面数量写入内存地址 0x0ff0 JMP 0xc200 error: MOV SI,msg