- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
17.3 字符串的输入
先看下字符栈的模拟代码:example2.asm
另外一个要注意的问题是:
显示栈中字符的时候,要注意清除屏幕上上一次显示的内容。
我们现在写出完整的接收字符串输入的子程序。
参考源码:example3.asm
17.4 应用int13h中断例程对磁盘进行读写
这本书毕竟是经典,经典的东西嘛……就是古老的东西,所以这里主要以 3.5 英寸软盘为例,进行讲解,但原理依旧不变。
常用的3.5英寸软盘的结构:
分为上下两面,每面有80个磁道,每个磁道又分为18个扇区,每个扇区的大小为512B。
总容量为:2面×80磁道×18扇区×512B=1440KB≈1.44MB
17.4 应用int13h中断例程对磁盘进行读写
磁盘的实际访问由磁盘控制器进行,我们可以通过控制磁盘控制器来访问磁盘。
注意,我们只能以扇区为单位对磁盘进行读写。
在读写扇区的时候,要给出面号、磁道号和扇区号。面号和磁道号从0开始,而扇区号从1开始。
如果我们通过直接控制磁盘控制器来访问磁盘,则需要涉及许多硬件细节。
17.4 应用int13h中断例程对磁盘进行读写
BIOS提供了对扇区进行读写的中断例程,这些中断例程完成了许多复杂的和硬件相关的工作。
我们可以通过调用BIOS中断例程来访问磁盘。
BIOS 提供的访问磁盘的中断例程为int 13h 。
如下,读取0面0道1扇区的内容到0:200:
入口参数
(ah)=int 13h的功能号(2表示读扇区)
(al)=读取的扇区数
(ch)=磁道号
(cl)=扇区号
(dh)=磁头号(对于软驱即面号,因为一个面用一个磁头来读写)
(dl)=驱动器号
软驱从0开始,0:软驱A,1:软驱B;
硬盘从80h开始,80h:硬盘C,81h:硬盘D。
es:bx指向接收此扇区读入数据的内存区
mov ax,0
mov es,ax
mov bx,200h
mov al,1
mov ch,0
mov cl,1
mov dl,0
mov dh,0
mov ah,2
int 13h
17.4 应用int13h中断例程对磁盘进行读写
返回参数:
操作成功: (ah)=0,(al)=读入的扇区数
操作失败: (ah)=出错代码
接下来,我们看下将0:200中的内容写入0面0道1扇区示例!
入口参数
(ah)=int 13h的功能号(3表示写扇区)
(al)=写入的扇区数
(ch)=磁道号
(cl)=扇区号
(dh)=磁头号(面)
(dl)=驱动器号
软驱从0开始,0:软驱A,1:软驱B;
硬盘从80h开始,80h:硬盘C,81h:硬盘D。
es:bx指向将写入磁盘的数据
mov ax,0
mov es,ax
mov bx,200h
mov al,1
mov ch,0
mov cl,1
mov dl,0
mov dh,0
mov ah,3
int 13h
17.4 应用int13h中断例程对磁盘进行读写
返回参数:
操作成功: (ah)=0,(al)=写入的扇区数
操作失败: (ah)=出错代码
注意:
下面我们要使用int 13h 中断例程对软盘进行读写。直接向磁盘扇区写入数据是很危险的,很可能覆盖掉重要的数据。
如果向软盘的0 面0 道1 扇区中写入了数据,要使软盘在现有的操作系统下可以使用,必须要重新格式化。
17.4 应用int13h中断例程对磁盘进行读写
在编写相关的程序之前,必须要找一张空闲的软盘。在使用int 13h中断例程时一定要注意驱动器号是否正确,千万不要随便对硬盘中的扇区进行写入。
编程练习:将当前屏幕的内容保存在磁盘上。
分析:1 屏的内容占4000个字节,需要8 个扇区,我们用0面0道的1~8扇区存储显存中的内容。
参考源代码:final.asm
实验17 以及 课程设计2
完!
文档评论(0)