3.1. -:
.286
TITLE MACRO3 (EXE) .LALL .SALL
;--------------------------------------------
INIT2 MACRO CSNAME,DSNAME,SSNAME
ASSUME CS:CSNAME,DS:DSNAME
ASSUME SS:SSNAME,ES:DSNAME
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSNAME
MOV DS,AX
MOV ES,AX
ENDM;
;--------------------------------------------------
PROMPT MACRO MESSAGE
;
;; DOS
MOV AH,09;
LEA DX,MESSAGE
INT 21H
ENDM
;-------------------------------------------------------
STAC SEGMENT PARA 'Stac'
DW 32 DUP(?)
STAC ENDS
;---------------------------------------------------
DATA SEGMENT PARA 'Data'
MESSG1 DB 'Customer name?','$'
MESSG2 DB 'Customer address?','$'
DATA ENDS
;---------------------------------------------------
CSEG SEGMENT PARA 'Code'
BEGIN PROC FAR
.SALL
INIT2 CSEG,DATA,STAC;
PROMPT MESSG1
.LALL
PROMPT MESSG2
RET
BEGIN ENDP
CSEG ENDS
END BEGIN
INIT2 PROMPT. .SALL INIT2 PROMPT. PROMPT .LALL .
3.2. . NORTON. .
.
4.1. -:
.286
TITLE MACRO4 (EXE)
;--------------------------------------------
INIT2 MACRO CSNAME,DSNAME,SSNAME
ASSUME CS:CSNAME,DS:DSNAME
ASSUME SS:SSNAME,ES:DSNAME
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DSNAME
MOV DS,AX
MOV ES,AX
ENDM;
;--------------------------------------------------
DOS21 MACRO DOSFUNC
MOV AH,DOSFUNC
INT 21H
ENDM
;-------------------------------------------------------
DISP MACRO CHAR
MOV DL,CHAR
DOS21 02
ENDM
;--------------------------------------------------------
STAC SEGMENT PARA 'Stac'
DW 32 DUP(?)
STAC ENDS
;---------------------------------------------------
DATA SEGMENT PARA 'Data'
NAMEPAR LABEL BYTE;
MAXLEN DB 20;
ACTLEN DB?;
NAMEFLD DB 20 DUP (' ');
DATA ENDS
;---------------------------------------------------
CSEG SEGMENT PARA 'Code'
BEGIN PROC FAR
.SALL
INIT2 CSEG,DATA,STAC;
LEA DX,NAMEPAR
DOS21 0AH
.LALL
DISP '*'
RET
BEGIN ENDP
CSEG ENDS
END BEGIN
DOS21 DOS INT 21H. DISP DOS21 02 . DISP .
4.2. . NORTON. .