; hier haben wir das Unterprogramm 'ausgeben' mit dem entsprechenden ; Variablen public ausgeben ; das Unterprogramm 'ausgeben' ist auch von außen (von ; andere Modulen) sichtbar _data segment public tmp db 5 dup (?), 13, 10, '$' _data ends _text segment public assume cs:_text assume ds:_data ausgeben: ; beim Eintritt: ax = die Zahl die ausegeben werden soll ; zeigt die Zahl von ax am Bildschirm an ; die Werte der Register bleiben unverändert ; wir speichern die Werte der Register damit wir sie im Unterprogramm ; benützen können push bx push cx push dx ; wir berechnen die Darstellung in Basis 10 mov bx, offset tmp+5 ; bx=die Adresse der letzten Ziffer ; die schon eingeschrieben ist mov cx, 10 ; cx = 10 (Konstante) Schleife: xor dx,dx ; statt mov dx, 0 div cx ; dl=aktuelle Ziffer, ax=Rest der Zahl dec bx add dl, '0' mov byte ptr [bx], dl cmp ax, 0 jne Schleife ; am Bildschirm anzeigen: mov dx, bx mov ah, 09h int 21h ; den Kontext zurücksetzen pop dx pop cx pop bx retn _text ends end