汇编网首页登录博客注册
fpamc的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态

[2012-05-30 18:33] 第十七章笔记

第十七章 使用BIOS进行键盘输入和磁盘读写

键盘缓冲区中有16个字单元,可以存储15个按键的扫面码和对应的ascii码。

int 16H ,0号功能
① 检测键盘缓冲区中是否有数据;
② 没有则继续第一步;
③ 读取键盘缓冲区第一个字单元中的键盘输入;
④ 将读取的扫描码送入ah,ascii码送入al;
⑤ 将已读取的键盘输入从缓冲区中删除。

最基本的字符串输入程序,具备的功能:
① 在输入的同时需要显示这个字符串;
② 一般在输入回车符后,字符串输入结束;
③ 能够删除已经输入的字符。

字符串的存储空间实际上是一个字符栈,字符栈中的所有字符,从栈底到栈顶,组成一个字符串。

3.5英寸软盘:
2面*80 磁道(柱头)*18 扇区*512字节=1440KB≈1.44MB

在读写扇区的时候,要给出面号、磁道号(柱头号)和扇区号。面号和磁道号从0开始,而扇区号从1开始。

BIOS提供的访问磁盘的中断例程为int 13H
入口参数:
ah = int 13h 的功能号(2 读扇区,3 写扇区)
al = 要操作的扇区数
ch = 磁道号(柱头号)
cl = 扇区号
dh = 磁头号
dl = 驱动器号
软驱从0开始,0:软驱A,1:软驱B;
硬盘从80H开始,80H:硬盘C,81H:硬盘D
es:dx:缓冲区的地址
出口参数:
CF=0——操作成功,AH=00H,AL=传输的扇区数,否则,AH=状态代码。

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

逻辑扇区号编号从0开始编号,一直到2879。

逻辑扇区号 = (面号*80+磁道号)*18+扇区号-1
面号 = int(逻辑扇区号/1440)
磁道号 = int(rem(逻辑扇区号/1440)/18)
扇区号 = rem(rem(逻辑扇区号/1440)/18)+1
评论次数(0)  |  浏览次数(784)  |  类型(汇编笔记) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码