下面这段汇编代码是从磁盘第2扇区读取4个扇区2K字节到内存0x90200开始处。使用的是INT 0x13 BIOS中断程序,主要就是学习一下到底该如何调用这个中断程序。

JNC:如果CF标志位没有被置位。J就是段内跳转指令。常数用#号打头。
读完磁盘4个扇区后,仍然是用INT 0x13中断程序,ah=0x08,dl=0,可以获取到磁盘信息:


需要说明的是第86行,因为是使用的软盘启动,软盘的磁道号不会超过256的,所以高两位肯定都是0,而这里主要是想获取每道的扇区数量。
另外,上面代码中使用了“段超越”或者称为段覆盖前缀,将cx(每磁道扇区数)复制到CS:sectors内存处。这里思考一个问题如果不用seg cs,每磁道扇区数会被保存在哪个段呢?另外,INT 0x13修改了es的值,es被修改成了什么?
下面再继续分析获取光标位置和打印文本信息的代码:

本文详细解析了一段使用INT 0x13 BIOS中断从磁盘读取数据到内存的汇编代码,介绍了如何调用中断程序读取4个扇区,并探讨了软盘磁道和每道扇区数量的细节。此外,还分析了获取磁盘信息、光标位置以及打印文本信息的相关操作,涉及AH寄存器的不同设置和段超越的概念。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



