PUBLIC STROUT1
PUBLIC STROUT2
CODE SEGMENT PUBLIC
ASSUME CS:CODE
STROUT1 PROC
PUSH BP
MOV BP,SP
PUSH DS ; DS sichern
MOV DS,[BP+6] ; Anfangsadresse des Strings laden
MOV BX,[BP+4]
MOV CH,0 ; Laenge des Strings laden
MOV CL,[BX]
CMP CX,0 ; leerer String ?
JE MARKE1B
MOV SI,1 ; String-Index auf erstes Zeichen
MARKE1A:
MOV DL,[BX+SI] ; Zeichen aus dem String laden
MOV AH,2 ; DOS-Funktion Zeichenausgabe
INT 21h
INC SI ; String-Index auf naechstes Zeichen
LOOP MARKE1A ; noch nicht alle Zeichen abgearbeitet ?
MARKE1B:
POP DS ; DS restaurieren
POP BP
RET 4
STROUT1 ENDP
STROUT2 PROC
PUSH BP
MOV BP,SP
PUSH DS ; DS sichern
MOV DS,[BP+6] ; Anfangsadresse des Strings laden
MOV BX,[BP+4]
MOV CH,0 ; Laenge des Strings laden
MOV CL,[BX]
CMP CX,0 ; leerer String ?
JE MARKE2B
MOV SI,1 ; String-Index auf erstes Zeichen
MARKE2A:
MOV DL,[BX+SI] ; Zeichen aus dem String laden
MOV AH,2 ; DOS-Funktion Zeichenausgabe
INT 21h
INC SI ; String-Index auf naechstes Zeichen
LOOP MARKE2A ; noch nicht alle Zeichen abgearbeitet ?
MARKE2B:
POP DS ; DS restaurieren
POP BP
RET 4
STROUT2 ENDP
CODE ENDS
END