免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1344 | 回复: 1
打印 上一主题 下一主题

关于linux启动部分的问题(内核高手请进) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-10 18:20 |只看该作者 |倒序浏览
在linux的启动部分有这样一段代码
SETUPSEG = 0x9020          setup 程序从这里开始;
SYSSEG = 0x1000            system 模块加载到0x10000(64 kB)处;
ENDSEG = SYSSEG + SYSSIZE
mov ax,#BOOTSEG            将ds 段寄存器置为0x7C0;
mov ds,ax
mov ax,#INITSEG            将es 段寄存器置为0x9000;
mov es,ax
mov cx,#256                移动计数值=256 字;
sub si,si                  源地址 ds:si = 0x07C0:0x0000
sub di,di                  目的地址 es:di = 0x9000:0x0000
rep                        重复执行,直到cx = 0
movw                       移动1 个字;
jmpi go,INITSEG            间接跳转。这里INITSEG 指出跳转到的段地址。
go: mov ax,cs              将ds、es 和ss 都置成移动后代码所在的段处(0x9000)。
mov ds,ax                  由于程序中有堆栈操作(push,pop,call),因此必须设置堆栈。
mov es,ax
mov ss,ax
mov sp,#0xFF00

其中的sub si,si和sub di,di是做什么用的,这个指令在我看来不就是对si和di寄存器进行清零操作的吗。那和后边的注释有什么联系呢,请各位高手给予指点,在下在这里先谢谢了!!

论坛徽章:
0
2 [报告]
发表于 2005-01-12 09:51 |只看该作者

关于linux启动部分的问题(内核高手请进)

怎么没有人回答我的问题呢,这个可是linux内核源程序在启动部分的代码,希望各位高手多多指教啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP