Bootsect代码详解续

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面这段汇编代码是从磁盘第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被修改成了什么?

 

下面再继续分析获取光标位置和打印文本信息的代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值