; Version fuer Assembler 2 CSEG SEGMENT 'CODE' ASSUME CS:CSEG,DS:DSEG MAIN PROC MOV AX,DSEG ; Annahme DS = Segmentadresse DSEG erfuellen MOV DS,AX MOV AH,0Ah ; DOS-Funktionscode Zeichenkette einlesen MOV DX,OFFSET EINGABE ; DS:DX zeigt auf EINGABE INT 21h ; DOS-Funktion ausfuehren MOV AH,2 ; DOS-Funktionscode Zeichen ausgeben MOV DL,13 ; CR (Carriage Return) INT 21h ; DOS-Funktion ausfuehren MOV DL,10 ; LF (Line Feed) INT 21h ; DOS-Funktion ausfuehren MOV BX,OFFSET EINGABE ; DS:BX zeigt auf EINGABE ADD BX,1 ; DS:BX zeigt auf EINGABE+1 MOV AL,[BX] ; tatsaechliche Laenge nach AX MOV AH,0 ADD BX,1 ; DS:BX zeigt auf EINGABE+2 ADD BX,AX ; DS:BX zeigt auf das Ende der Zeichenkette MOV [BX],'$' ; Dollarzeichen an das Ende der Zeichenkette MOV AH,9 ; DOS-Funktionscode Zeichenkette ausgeben MOV DX,OFFSET EINGABE ; DS:DX zeigt auf EINGABE ADD DX,2 ; DS:DX zeigt auf Beginn der Zeichenkette INT 21h ; DOS-Funktion ausfuehren MOV AX,4C00h ; DOS-Funktionscode Programmende (EXIT-Code Null) INT 21h ; DOS-Funktion ausfuehren MAIN ENDP CSEG ENDS DSEG SEGMENT EINGABE DB 20 ; maximale Laenge inkl. abschliessendes CR DB ? ; tatsaechliche Laenge exkl. abschliessendes CR DB 20 DUP (?) ; Speicherbereich Zeichenkette DSEG ENDS SSEG SEGMENT STACK DW 128 DUP (?) SSEG ENDS END MAIN