Assembly Language Help (alang.hlp) (Table of Contents; Topic list)
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.
Data
                                             Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
;* DATA.ASM illustrates how to declare variables with data-definition
;* directives.
;*
;* Shows:   Directives - BYTE     WORD     DWORD    QWORD    TWORD
;*                       TYPEDEF  LABEL
;*          Operator -   DUP      LENGTH   []       "        '
 
        .MODEL small, c, os_dos
        .8087
        .STACK
 
; Storing and loading numeric variables
        .DATA
bvar    BYTE    16                      ; Byte initialized as 16
wvar    WORD    4 * 3                   ; Word initialized as 12
dvar    DWORD   4294967295              ; Double word as 4,294,967,295
qvar    QWORD   ?                       ; Quad word (8-byte) uninitialized
        BYTE    1, 2, 3, 4, 5           ; Five initialized bytes
ten     TBYTE   2345                    ; 10-byte integer as 2,345
 
fp      REAL8   6.3153                  ; 8-byte real number
 
        .CODE
        .STARTUP
        mov     bl, bvar                ; Load byte variable to AL
        mov     ax, WORD PTR dvar[0]    ; Load doubleword to DX:AX
        mov     dx, WORD PTR dvar[2]
                                        ; Uncomment for coprocessor
;       fld     fp                      ; Load real variable into ST(0)
 
; Storing, loading, and using strings and characters
 
FPBYTE  TYPEDEF FAR  PTR BYTE           ; Far pointer to byte type
NPBYTE  TYPEDEF NEAR PTR BYTE           ; Near pointer to byte type
 
        .DATA
abc     BYTE    'a', 'b', 'c'           ; Three characters (same as "abc")
hello   BYTE    'Hello', 13, 10, '$'    ; String for DOS Function 09h
msg     BYTE    13, 10,                 ; String for DOS Function 40h
                "Another hello"         ;   (extends across two lines)
dir     BYTE    "C:\C\CPROGS", 0        ; String data for C
npdir   NPBYTE  dir                     ; Near pointer to char (C string)
fpdir   FPBYTE  dir                     ; Far pointer to char (C string)
 
        .CODE
        mov     dx, OFFSET hello        ; Load and write $-terminated string
        mov     ah, 09h                 ; Display String
        int     21h
        mov     dx, OFFSET msg          ; Load and write string with length
        mov     cx, LENGTHOF msg        ; Length of msg
        mov     bx, 1                   ; File handle of the screen
        mov     ah, 40h                 ; Write File or Device
        int     21h                     ;
        lds     dx, fpdir               ; Load far pointer to ASCIIZ to DS:DX
        mov     ah, 3Bh                 ; Set Current Directory
        int     21h
 
; Storing and using arrays, buffers, structures, and unions
 
        .DATA
PDWORD  TYPEDEF PTR DWORD               ; Pointer to doubleword type
dbuf    DWORD   25 DUP (?)              ; 25 uninitialized doublewords
bbuf    BYTE    12 DUP ("month")        ; 60-byte array, each 5-byte
                                        ;   group initialized to "month"
pdbuf   PDWORD  dbuf                    ; C array is pointer to array data
twodim  WORD    5 DUP (5 DUP (0))       ; Allocate 25 words initialized to 0
 
darr1   LABEL   DWORD                   ; Access array as 25 doublewords
warr1   LABEL   WORD                    ; Access same array as 50 words
barr1   BYTE    100 DUP (1, 2, 4, 8)    ; Access array as 100 bytes, each
                                        ;   group initialized to bit mask
        .CODE
        mov     bx, OFFSET bbuf         ; Load offset of buffer
        .REPEAT                         ; Repeat for each
        mov     BYTE PTR [bx], 'M'      ; Put data in array
        add     bx, 5                   ; Move to next array element
        .UNTIL  bx >= (OFFSET bbuf + (12 * 5))
 
        .EXIT                           ; Terminate Program
 
        END
                                    -♦-