How to initialize local segment base address?

Started by leetow2003, January 06, 2011, 04:06:21 AM

Previous topic - Next topic

leetow2003

I define global code segment CODEKSEG and local code segment CODELSEG,
I initialize CODEKSEG segment base address,but I don't know how to initialize
local segment base address,who could help me?
Look:

;=========GDT
GDTSEG  SEGMENT PARA    USE16 
GDT             LABEL   BYTE
DUMMY           DESCRIPTOR      <>                     
;global segment
CODEK           DESCRIPTOR      <0FFFFH,,,98H,>       
CODEK_SEL       =       CODEK - GDT
;local segment
LDTABLE         DESCRIPTOR      <0FFFFH,,,82H,>     
LDT_SEL         =       LDTABLE - GDT
GDTLEN          =       $ - GDT             
GDTSEG  ENDS
;=============LDT
LDTSEG  SEGMENT PARA    USE16 
LDT             LABEL   BYTECODEL
;
CODEL           DESCRIPTOR <0FFFFH,,,98H,>       
CODEL_SEL       =       (CODEL-LDT) + 04H
LDTLEN          =       $ - LDT                                       
LDTSEG  ENDS
;===============Local code segment
CODELSEG        SEGMENT PARA    USE16   
                ASSUME  CS:CODELSEG
..............
CODELSEG        ENDS
;===============Global code segment
CODEKSEG        SEGMENT PARA    USE16   
                ASSUME  CS:CODEKSEG
.........
CODEKSEG        ENDS
;===================================
RECODESEG       SEGMENT PARA    USE16
        ASSUME  CS:RECODESEG
START: 
        ASSUME  DS:GDTSEG
        MOV     AX,GDTSEG
        MOV     DS,AX
        ;initialize global code segment base address
        MOV     BX,16
        MOV     AX,CODEKSEG
        MUL     BX
        MOV     CODEK.BASEL,AX
        MOV     CODEK.BASEM,DL
        MOV     CODEK.BASEH,DH
        ;
        MOV     AX,LDTSEG
        MUL     BX
        MOV     LDTABLE.BASEL,AX
        MOV     LDTABLE.BASEM,DL
        MOV     LDTABLE.BASEH,DH
        ;How to initialize local code segment CODELSEG
        ;Who could help me?
RECODESEG ENDS
          END START