第二步:写一个读取扇区的子过程

;假设从dx号逻辑扇区号开始读取,读ah个扇区到es:bx
d1 equ 0x09000h; 目的段地址
d2 equ 0x0100h;目的偏移
b1 db 0;存起始扇区号;
b2 db 0;存起始磁道号;
b3 db 0;存磁头号;
mov dx,9;要读取的逻辑扇区号;
mov bh,3;bh=要读取的扇区数
call dushanqu;
;读取扇区子过程dushanqu,
;功能:从dx号逻辑扇区号开始读取,读ah个扇区到es:bx
dushanqu:
;取得起始扇区号
mov dx,9;
mov ax,dx;
div 18;
inc ah;
mov [b1],ah;

;取得磁道号
mov ax,dx;
div 18;
mov ah,0;
div 2;
mov [b2],al;

;取磁头号
mov ax,dx;
div 18;
mov al,0;
div 2;
mov [b3],ah;

;调用BIOS 13号中断读取3个扇区到es:bx扇区
mov ah,02;
mov al,bh;读取3个扇区,bh=扇区数
mov cl,[b1];
mov ch,[b2];
mov dh,[b3];
mov dl,00h;
mov es,d1;
mov bx,d2;
int 13h;
jc dushanqu;如果读取错误,CF被置1,就循环读取,直到正确取,正确读取CF被置0,CF=0跳出循环

 

以下是学习时的笔记;

BIOS 13H中断功能

00H 磁盘复位

mov ah,00h ;入口参数 ah=00h
mov dl,00h;驱动器号,软盘00h--7fh,硬盘80h--0ffh
int 13h;调用13号中断,结果CF=0 操作成功,AH=00H,否则AH=状态代码

状态代码:
00H  无错,正常
01H 非法命令
02H 地址目标未发现
03H 磁盘写保护(软盘)
04H 扇区未发现
05H 复位失败(硬盘)
06H 软盘取出
07H 错误的参数表 硬盘
08H DMA越界软盘
09H DMA超过64KB界限
0AH 错误的扇区标志 硬盘
0BH 错误的磁道标志 硬盘
0CH 介质类型未发现 软盘
0DH 格式化时非法扇区好 硬盘
0EH 控制数据地址目标被发现 硬盘
0FH DMA仲裁越界 硬盘
10H 不正确的CRC或ECC编码
11H ECC校正数据错 硬盘
20H 控制器失败
40H 查找失败
80H 磁盘超时,未响应
AAH 驱动器未准备好,硬盘
BBH 未定义的错误 硬盘
CCH 写错误 硬盘
E0H 状态寄存器错误 硬盘
FFH 检测操作失败 硬盘

01H读取磁盘系统状态

mov ah,01;入口参赛AH=01H
mov dl,00h;DL=驱动器号,软盘00h--7fh,硬盘80h--0ffh
int 13h ;出口参数,功能AH=00H,失败,AL=状态代码,见上

02H 读扇区
mov ah,02;入口参数 AH=0H
mov al,扇区数;要读取的扇区数
mov cl,扇区号;起始扇区号
mov ch,磁道号;起始磁道号
mov dh,磁头号;起始磁头号
mov dl,驱动器号;
mov es,缓冲区段地址;
mov bx,缓冲区偏移;
int 13h;出口CF=0,成功AH=00H,AL=传输的扇区数,否则AH=状态代码,见上

FAT12 容量计算方法
软盘有2个柱面,每个柱面有80条磁道,每条磁道有18个扇区,每个扇区有512个字节
容量=柱面数*磁道数/柱面*扇区数/每磁道*字节数/每扇区
容量=2*80*18*512=1.44MB
线性扇区号转换为CHS格式公式:

扇区号=线性扇区号/每磁道扇区数的余数+1
mov ax,线性扇区号;
div 18;每磁道扇区数18,此命令时用AX的值整除以18,结果存入al,余数存入ah;
inc ah;结果+1,存入ah,即ah=扇区号 此命令是把ah的值加1
mov cl,ah;把扇区号存入cl,以便13H中断使用


磁道号=线性扇区号/每磁道扇区数/磁头数
mov  ax,线性扇区号;
div 18;每磁道扇区数18,用AX的值除以18,结果存入al
mov ah,0;把AX的高位置0,是AX的值和AL的值一样
div 2;此时AX的值是线性扇区号除以每磁道扇区数的值,这个值再除以磁头数2 结果存入al,al的值就是磁道号
mov ch,al;把磁道号存入ch,以便BIOS 13H中断使用

磁头号=(线性扇区号/每磁道扇区数)/磁头数的余数
mov ax,线性扇区号;
div 18;每次道扇区数,结果存入al
mov al,0;
div 2;磁头数2,余数存入ah,ah即磁头号;
mov dh,ah;把磁头号存入dh 方便BIOS 13H调用

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值