驻留exe文件

http://tech.ddvip.com   2006年03月29日    社区交流

本文详细介绍驻留exe文件

  运行重定位exe文件,重定位因子调度覆盖模块,链接器3制静态覆盖块,析栈初始startup

  (1) X86汇编语言的组,段,类

  伪指令group/segment,定义组/段,这使:

  (1.1) 同组的各段,处于同一64k空间

  (1.2) 段可声明'对齐,组合,类'可选属性:

  (1.2.1) 段首,能对齐到BYTE,WORD,PARA(16字节),PAGE(256字节),缺省对齐到PARA.

  (1.2.2) 不同源文的同名同类段,想靠链接,形成空间邻接或重叠的同名组合逻辑

  段时,需用PUBLIC,COMMON,指明组合形式:

  (1.2.2.1) PUBLIC,指明此段按对齐属性,邻在已包含在此组合逻辑段内的最末字面段之后

  (1.2.2.2) COMMON,指明此段与同属此组合逻辑段的其他字面段,从组合逻辑段首铺展

  同属组合逻辑段的各参与段的最大对齐属性(例如,WORD比BYTE大),决定组合逻辑段的对齐属性.

  不与其它段组合的段,称为单逻辑段.

  以下,用"逻辑段",统称组合逻辑段及单逻辑段.

  (1.3) 类用'cls'指明,未指明类的各段,属'匿名'类.同类各段,邻接排列.

  (2) 解释各逻辑段空间关系的3个源文

  a1.asm,声明1个组,4个段,涉及'匿名','dec_'类

  (2.1) grp组,含seg1段

  (2.2) seg1段

  (2.3) ovlap段,用COMMON参与组合,'dec_'类

  (2.4) touch段,用PUBLIC参与组合

  (2.5) stk1段,用STACK指明栈段及PARA对齐

  grp GROUP seg1
seg1 SEGMENT PAGE
str1 DB "S1$"
seg1 ENDS
ovlap SEGMENT PARA COMMON 'dec_'
str3 DB '11$'
ovlap ENDS
touch SEGMENT PUBLIC
    ASSUME cs:touch,ds:NOTHING
    ORG 11H
@: mov ah,9
    mov bx,grp  ;取grp段值
    mov ds,bx
    mov dx,OFFSET str1 ;取str1相对seg1偏置
    int 21h
    EXTRN str2:far
    mov dx,OFFSET grp:str2 ;取str2相对grp偏置
    int 21h
    ASSUME ds:ovlap
    mov bx,SEG str3  ;取str3段值
    mov ds,bx
    lea dx,str3  ;取str3相对ds偏置
    int 21h
touch ENDS
stk1  SEGMENT PAGE STACK
    DW 16H DUP (4AH) ;初值4AH的16H个字
stk1 ENDS
    END @

责编:豆豆技术应用

正在加载评论...