sqc_mail
驱动牛犊
驱动牛犊
  • 注册日期2004-11-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1391回复:4

问:代码没看懂(处理全局描述符表的一段汇编程序的数据段部分)

楼主#
更多 发布于:2004-11-22 16:07
 问题是:数据段DSEG 的存储空间是如何分配的?
 请解释下面语句:
              GDT LABEL BYTE
              CODE_SEL = CODE-GDT
              GDTLEN = $-GDT
  谢谢。
      

代码如下
   ......
DESCRIPTOR STRUC
LIMITL DW 0
BASEL DW 0
BASEM DB 0
ATTRIBUTES DW 0
BASEH DB 0
DESCRIPTOR ENDS

PDESC STRUC
LIMIT DW 0
BASE DD 0
PDESC ENDS

ATDW = 92H
ATCE = 98H

.386P
DSEG SEGMENT USE16
GDT LABEL BYTE
DUMMUY DESCRIPTOR <>
CODE DESCRIPTOR <0FFFFH,,,ATCE,>
CODE_SEL = CODE-GDT
DATAS DESCRIPTOR <0FFFFH,0H,11H,ATDW,0>
DATAS_SEL = DATAS -GDT
DATAD DESCRIPTOR <0FFFFH,,,ATDW,>
DATAD_SEL =DATAD-GDT
GDTLEN = $-GDT

VGDTR PDESC <GDTLEN-1,>

BUFFERLEN = 256
BUFFER DB BUFFERLEN DUP(0)
DSEG ENDS
 ......

[编辑 -  11/22/04 by  sqc_mail]
changjt
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2010-01-27
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-22 17:38
GDT LABEL BYTE
在数据段的开头打一个Label,这样便于后面的变量计算自己的偏移地址和长度
CODE_SEL = CODE - GDT
计算出来的CODE_SEL就是代码段在描述符表中的偏移
GDTLEN = $-GDT
这是描述符表的大小,包括1个代码,2个数据和1个unused,共32个Byte,这样写就省得算了
至于如何分配DSEG 的存储空间,应该是loader做的事吧,我只知道DOS下的exe加载器一般把数据段放在最前面,其它我就不知道了
sqc_mail
驱动牛犊
驱动牛犊
  • 注册日期2004-11-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-22 18:46
changjt:谢谢!
 
   GDT LABEL BYTE 与代码段的标号一样么(有什么区别),如:
    .......    
    next:
        .......
changjt
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2010-01-27
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-22 20:19
next:标号一般仅在代码中作跳转使用。
label除了可作标号外,还常用在一些变量定义中,具有类型。
比如举两个例子都是用next:无法做到的:
Int_V LABEL DWORD
_IP dw ?
_CS dw ?
这样既可以单独的访问IP和CS,还能直接访问到整个中断向量,用LABEL对同一个变量赋予不同的类型定义,使用很方便 。
public here
here LABEL WORD
next:
这样不用把代码打包成子例程就可以在另外的程序中去调用它,在联编程序时挺有用的,而普通的标号可都是私有的,不能在子例程外部调用。
暂时就想到这两个。
sqc_mail
驱动牛犊
驱动牛犊
  • 注册日期2004-11-22
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-22 22:55
哦,THANK YOU
游客

返回顶部