home *** CD-ROM | disk | FTP | other *** search
- ;Source Module MODULE_A
-
- ;Predeclare all segments to force the linker's segment ordering **************
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- _TEXT ENDS
-
- _DATA SEGMENT WORD PUBLIC 'DATA'
- _DATA ENDS
-
- CONST SEGMENT WORD PUBLIC 'CONST'
- CONST ENDS
-
- _BSS SEGMENT WORD PUBLIC 'BSS'
- _BSS ENDS
-
- STACK SEGMENT PARA STACK 'STACK'
- STACK ENDS
-
- DGROUP GROUP _DATA,CONST,_BSS,STACK
-
-
- ;Constant declarations *******************************************************
-
- CONST SEGMENT WORD PUBLIC 'CONST'
-
- CONST_FIELD_A DB 'Constant A' ;declare a MODULE_A constant
-
- CONST ENDS
-
-
- ;Preinitialized data fields **************************************************
-
- _DATA SEGMENT WORD PUBLIC 'DATA'
-
- DATA_FIELD_A DB 'Data A' ;declare a MODULE_A preinitialized field
-
- _DATA ENDS
-
-
- ;Uninitialized data fields ***************************************************
-
- _BSS SEGMENT WORD PUBLIC 'BSS'
-
- BSS_FIELD_A DB 5 DUP(?) ;declare a MODULE_A uninitialized field
-
- _BSS ENDS
-
-
- ;Program text ****************************************************************
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
-
- ASSUME CS:_TEXT,DS:DGROUP,ES:NOTHING,SS:NOTHING
-
- EXTRN PROC_B:NEAR ;label is in _TEXT segment (NEAR)
- EXTRN PROC_C:NEAR ;label is in _TEXT segment (NEAR)
-
- PROC_A PROC NEAR
-
- CALL PROC_B ;call into MODULE_B
- CALL PROC_C ;call into MODULE_C
-
- MOV AX,4C00H ;terminate (MS-DOS 2.0 or later only)
- INT 21H
-
- PROC_A ENDP
-
- _TEXT ENDS
-
-
- ;Stack ***********************************************************************
-
- STACK SEGMENT PARA STACK 'STACK'
-
- DW 128 DUP(?) ;declare some space to use as stack
- STACK_BASE LABEL WORD
-
- STACK ENDS
-
-
-
- END PROC_A ;declare PROC_A as entry point
-