会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
学习笔记
在路上
导航
博客园
首页
新随笔
联系
订阅
管理
公告
Linux源码学习--bootsect.s启动
Posted on
2008-09-10 10:39
An Shi
阅读(
174
) 评论(
0
)
收藏
举报
今天看bootsect.s,有些代码不甚理解,查阅资料后,终于释然,特记录如下:
代码:
movw $BOOTSEG, %ax
movw %ax, %ds //置移动源段地址,此处为0x07C0
movw $INITSEG, %ax
movw %ax, %es //置移动目的段地址,此处为0x9000
movw $256, %cx //循环计数器,位移256次,共移动512字节的数据
subw %si, %si //源地址: ds:si = 0x07C0:0x0000
subw %di, %di //目的地址:es:di = 0x9000:0x0000
cld //置方向标志位为正向,即地址增长复制
rep
movsw //移动数据,字方式,且每次地址自动加2
ljmp $INITSEG, $go
以上代码的作用是:当bootsect.s 被 bios启动子程序加载至 0x7c00 (31k)处后,再将自己移到地址 0x90000 (576k)处,并跳转至那里。
刷新页面
返回顶部
博客园
© 2004-2025
浙公网安备 33010602011771号
浙ICP备2021040463号-3