| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1138 人关注过本帖
标题:请教关于 lds 指令的一个弱智问题
只看楼主 加入收藏
xmy20051643
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-5-7
收藏
 问题点数:0 回复次数:0 
请教关于 lds 指令的一个弱智问题
这个是linux内核setup.s中取出hd0参数的代码   有一个地方很不懂   需要各位大虾提点一下
mov    ax,#0x0000
    mov    ds,ax
!书上写的是 这里从0x41中断入口处取出hd0参数表  此时的ds = 0x0000
    lds    si,[4*0x41]         
                                                                       !问题出在这里   该代码执行以后   ds的值是多少?  0x0000还是 [4*0x41+2]?
                                                                       !按照《linux内核完全注释》这书上的意思  是从0x41中断的入口地址处读   
                                                                       !取hd0参数表  可是lds  运行以后  好像ds的值改变了   那么结合下面的
                                                                       !rep movsb  指令  拷贝的数据将是  movsb es:[di],ds:[si]  如果按照书上的意
                                                                       !思要从0x41中断入口取硬盘参数的话  ds必须为0x0000 可是我查阅了下lds
                                                                       !的用法如下:
                                                                       !指针传送指令LDS
                                                                       !LDS r16,mem         ;r16←mem,DS←mem+2
                                                                       !LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器。
                                                                       !实际上,mem指定了主存的连续4个字节作为逻辑地址,即32位的地址指
                                                                       !针。
                                                                       !mov word ptr [3060h],0100h
                                                                       !mov word ptr [3062h],1450h
                                                                       !lds si,[3060h]              ;ds=1450h,si=0100h
                                                                       !这里ds的值是改变了的    所以请问各位大虾   这段代码又是怎么回事?
                                                                       !hd0参数表的入口到底在那里?

    mov    ax,#INITSEG
    mov    es,ax
    mov    di,#0x0080
    mov    cx,#0x10
    rep
    movsb


[[it] 本帖最后由 xmy20051643 于 2008-5-7 10:35 编辑 [/it]]
搜索更多相关主题的帖子: lds 指令 弱智 
2008-05-07 10:33
快速回复:请教关于 lds 指令的一个弱智问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023659 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved