《x86:实模式到保护模式》 第五章笔记

第五章主要介绍如何编写引导扇区的代码,并将其写入引导扇区。

该程序的主要功能是在屏幕上显示字符。显示字符需要访问显存,但为了提高效率,计算机将显存映射到了内存里。

首先要初始化段寄存器,使其指向某一段。然后显示字符。显示时需要将字符写入内存,写入时要指定传送的单位 是字节还是字,访问内存地址需要加上方括号。传送字符时不仅需要传送显示的字符内容,还需要传送字符的颜色,字符的颜色同样占一个一节的大小。

接下来显示标号的偏移地址。代码中设定了标号number,标号标志的内容占据了内存中连续的5个字节,均初始化为0。首先将number的偏移地址放入寄存器ax中,把数字10放入bx中。设置数据段(ds)的基地址,这里将数据段和代码段设置为同一段。然后做除法(div bx),用dx:ax做被除数,bx做除数,得到的商放在ax中,余数在dx中,把dl中存放的余数放入内存中。

得到偏移地址后,按数位逐个将其从内存中重新放入寄存器中,将其加上0x30得到对应的ASCII码,放入内存中。存放时从刚才显示字符时的内存地址接着往下放。

最后让程序陷入无限循环。再用203个字节填充引导扇区,用0x55和0xaa作为引导扇区的结束标志。

 

注:汇编阶段的汇编地址 = 加载到物理内存后的段内偏移地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值