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