Eingabe MACRO push bx push cx push dx mov bl, 10 ; Multiplikationsfaktor mov cx, 0 X0: mov ah, 1 ; Int 021 Funktion 1: Zeichen von der Tastatur lesen int 021 and ax, 0ff ; nur das in al wird benötigt cmp al, 0d ; ist es die Enter Taste? jz >X1 ; dann ist das hier fertig cmp al, 27 ; ist es die ESC Taste? jz >X2 ; dann ist das hier fertig cmp al, '9' ; Grösser als 9? jg X0 ; Keine Ziffer, also nochmal cmp al, '0' ; kleiner 0? jl X0 ; wohl auch keine Ziffer sub al, '0' ; vom ASCII die Null abziehen push ax ; das wird gesichert mov dx, 0 ; dx auf Null (dx nimmt an einer Multiplikation teil) mov ax, cx ; die Ausgabe in ax laden mul bx ; mal 10 bewirkt eine Dezimalstelle nach links schieben mov cx, ax ; und wieder abspeichern pop ax ; so her mit der Ziffer! add cx, ax ; Zu der Ausgabevariablen addieren jmp X0 ; Und die nächste Ziffer holen X1: mov ax, cx X2: pop dx pop cx pop bx #EM TextAus Macro push dx C1: lodsb ; Zeichen an Position [si] laden cmp al, 0 je >C2 mov dl, al mov ah, 2 int 021 jmp C1 C2: pop dx #EM ListInput MACRO mov cx, 0 A1: cld TextAus Eingabe cmp ax, 27 jz >A2 cmp di, dx jz >A2 stosw inc cx jmp A1 A2: #EM Ausgabe MACRO cld mov bx, 10 mov cx, 0 X1: xor dx, dx ; dx löschen div bx ; dx:ax durch bx (10) teilen add dl, 030 ; dem divisionsrest 30h hinzuaddieren push dx ; auf den stapel legen inc cx ; durchlauf zähler erhöhen cmp ax, 0 ; ist ax schon 0? jnz X1 ; nicht? dann das ganze noch einmal... rücksprung nach X1 X2: pop dx ; Ok, die Zahl wird einmal rumgedreht ; dx vom stapel mov ah, 2 ; und dl in den an position [di] Puffer schreiben int 021 ; schreibzeiger erhöhen loop X2 ; bis Durchlaufzähler = 0 #EM