第十七章 使用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
- [kanwangxue] 如果是文字的,不是特别好啊,体力活,如果文字还加点动画,那就必须顶了。 01/15 01:10
- [kanwangxue] 必须顶啊。 01/15 00:54
- [ltoiii] 既然是实现loop功能,是否要考虑s和se标号? mov bx,offset s - offset 12/09 12:09
- [xiaoyao2012] 正确 11/01 15:33
- [xuer2016] 又找到2条被我忽视的地方: 1.PUSH 和 POP 针对字单元 2.POP 不能是CS 10/26 10:57
- [xuer2016] 学习了 我书写不规范,16进制字母前不加0,后面不加H,以后要注意了。。。 10/26 10:51
- [xuer2016] 来老师这学习下 10/26 10:31
- [youthangel] 不妙,CPU的利用率一下子就上去了。还好我的处理器不是太弱,35%左右的利用率。建议博主在修改一下 10/20 08:23
- [fpamc] 在我心里她就是我的女神。 10/02 08:58
- [newpeople] 你女朋友用得了简直就是一个女神…… 10/01 08:10
- [99998888] 请您指点一下如何找到会ASSEMBLER 语言的翻译,翻译成中文或英文。我的QQ ; 9097815 07/25 09:56
- [jeremy] 我觉得你学习的挺好,可以加你扣扣吗?我的469614823 08/07 14:46
- [zhangbo0805] 哈哈, 你好呀!很希望认识你呀!我发现你学习的积极性很高!正想向您学习呢! 07/31 23:31
- [tomato] 知道了,排得还挺满。 05/29 16:35
- [tomato] 现在学习情况怎么样?在做课设二还是什么? 05/29 10:41
- [tomato] 你的留言收到了。 05/05 23:51
- [fpamc] 开始学习c咯! 05/03 21:40
- [fpamc] 居然不能发博客了……! 04/22 21:03
- [tomato] 你相册中的游戏界面我看过了,非常好,界面很漂亮,很有创造力。博主,很有潜力。加油,一定能把这个游戏做 04/20 23:46
- [fpamc] 忙了半个月,不在家,没时间学习汇编。 但是在途中想到了一个有史以来最难的程序。对于刚学完9章的我。 04/13 20:56