首页
社区
课程
招聘
[旧帖] [求助]386汇编中有两句代码求教 0.00雪花
发表于: 2012-5-18 11:25 1195

[旧帖] [求助]386汇编中有两句代码求教 0.00雪花

2012-5-18 11:25
1195
最近看80X86黑皮书,讲到保护方式下的80386及其编程,有两句代码看不明白,求解
问题1:
;32位偏移的段间调用宏指令
call32  macro selector,offsetv
           db  09AH     ;操作码
           dw offsetv  ;32位偏移
           dw 0
           dw selector  ;选择子
           endm
为什么这句可以实现call跳转,09AH是什么含意?

问题2:定义变量时写到 
GDT   LABEL BYTE               ;全局描述符表GDT
DUMMY DESCRIPTOR  <>   ;空描述符   DESCRIPTOR是存储段描述符结构类型的定义
而下面直接这样定义
DATAS   DESCRIPTOR  <.....定义.....>
DATAD_SEL   =  DATAD-GDT           ;目标数据段描述符的选择子
请问,为什么GDT为什么会这样定义,DATAD_SEL又是怎么得到目标数据段描述符的选择子的?
看到这卡住了,先谢谢各位的帮助

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 110
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
虽然没看太懂,但是还是随便说两句.
1, 09AH就是个CALL的机器码
2, 所谓描述符选择子,其实就是每个描述符相对GDT首地址的偏移. 因为一个描述符是8个字节,所以说偏移的后三位就会一直是000,为了不浪费,那些架构设计者就让他表示了点别的东西.
3, GDT中的第一个描述符保留不用,从第二个才是有效的.
2012-5-18 15:05
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
已经够用了,非常感谢你的回复
2012-5-18 21:27
0
游客
登录 | 注册 方可回帖
返回
//