Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
HELLOF.ASM
◄Example► ◄Back► ◄Contents► ◄Index►
──────────────────────────────────────────────────────────────────────────────
;* HELLOF.ASM - Illustrates full segment directives.
;*
;* Shows: Directives - SEGMENT ENDS GROUP
;* DOS Functions - 4Ch (Terminate Process with Return Code)
;*
;* See HELLO.ASM for a simplified segment version or HELLOC.ASM
;* for a full-segment .COM file version.
DOSSEG ; Force DOS segment order
DGROUP GROUP _DATA, STACK ; Stack and data in DGROUP
STACK SEGMENT PARA STACK 'STACK'
DB 100h DUP (?) ; 256-byte stack
STACK ENDS
_DATA SEGMENT WORD PUBLIC 'DATA' ; Data segment with string data
msg DB "Hello, world.", 13, 10, "$"
_DATA ENDS
_TEXT SEGMENT WORD PUBLIC 'CODE' ; Code segment
ASSUME cs:_TEXT, ds:DGROUP, ss:DGROUP
start: mov ax, DGROUP ; Initialize data segment
mov ds, ax
cli ; Turn off interrupts
mov ss, ax ; Make SS and
mov sp, OFFSET STACK ; SP relative to DGROUP
sti ; SS now equals DS
mov ah, 9h ; Request DOS Function 9
mov dx, OFFSET msg ; Load DX with offset of string
; (segment already in DS)
int 21h ; Display String to Standard Output
mov ax, 4C00h ; Exit functions with 0 in AL
int 21h ; Terminate Process with Return Code
_TEXT ENDS
END start ; End with reference to first
; executable statement (CS:IP)
-♦-