home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / dos_ency / 4 / fig4_8.asm < prev    next >
Encoding:
Assembly Source File  |  1988-08-11  |  1.9 KB  |  84 lines

  1. ;Source Module MODULE_A
  2.  
  3. ;Predeclare all segments to force the linker's segment ordering **************
  4.  
  5. _TEXT   SEGMENT BYTE PUBLIC 'CODE'
  6. _TEXT   ENDS
  7.  
  8. _DATA   SEGMENT WORD PUBLIC 'DATA'
  9. _DATA   ENDS
  10.  
  11. CONST   SEGMENT WORD PUBLIC 'CONST'
  12. CONST   ENDS
  13.  
  14. _BSS    SEGMENT WORD PUBLIC 'BSS'
  15. _BSS    ENDS
  16.  
  17. STACK   SEGMENT PARA STACK 'STACK'
  18. STACK   ENDS
  19.  
  20. DGROUP  GROUP   _DATA,CONST,_BSS,STACK
  21.  
  22.  
  23. ;Constant declarations *******************************************************
  24.  
  25. CONST   SEGMENT WORD PUBLIC 'CONST'
  26.  
  27. CONST_FIELD_A   DB      'Constant A'    ;declare a MODULE_A constant
  28.  
  29. CONST   ENDS
  30.  
  31.  
  32. ;Preinitialized data fields **************************************************
  33.  
  34. _DATA   SEGMENT WORD PUBLIC 'DATA'
  35.  
  36. DATA_FIELD_A    DB      'Data A'        ;declare a MODULE_A preinitialized field
  37.  
  38. _DATA   ENDS
  39.  
  40.  
  41. ;Uninitialized data fields ***************************************************
  42.  
  43. _BSS    SEGMENT WORD PUBLIC 'BSS'
  44.  
  45. BSS_FIELD_A     DB      5 DUP(?)        ;declare a MODULE_A uninitialized field
  46.  
  47. _BSS    ENDS
  48.  
  49.  
  50. ;Program text ****************************************************************
  51.  
  52. _TEXT   SEGMENT BYTE PUBLIC 'CODE'
  53.  
  54.         ASSUME  CS:_TEXT,DS:DGROUP,ES:NOTHING,SS:NOTHING
  55.  
  56.         EXTRN   PROC_B:NEAR             ;label is in _TEXT segment (NEAR)
  57.         EXTRN   PROC_C:NEAR             ;label is in _TEXT segment (NEAR)
  58.  
  59. PROC_A  PROC    NEAR
  60.  
  61.         CALL    PROC_B                  ;call into MODULE_B
  62.         CALL    PROC_C                  ;call into MODULE_C
  63.  
  64.         MOV     AX,4C00H                ;terminate (MS-DOS 2.0 or later only)
  65.         INT     21H
  66.  
  67. PROC_A  ENDP
  68.  
  69. _TEXT   ENDS
  70.  
  71.  
  72. ;Stack ***********************************************************************
  73.  
  74. STACK   SEGMENT PARA STACK 'STACK'
  75.  
  76.         DW      128 DUP(?)      ;declare some space to use as stack
  77. STACK_BASE      LABEL   WORD
  78.  
  79. STACK   ENDS
  80.  
  81.  
  82.  
  83.         END     PROC_A          ;declare PROC_A as entry point
  84.