Stunden von 0 bis 23
Minuten von 0 bis 59.
Sie sind zwei reichen drucken Ziffern Zahlen und als solche behandelt werden müssen.
Es gibt keinen integrierten Service, der druckt Zahlen, die Int 21/AH=02h
druckt Zeichen, benötigen Sie eine zweistellige Zahl (eine 8-Bit-Größe) in eine two characters (zwei 8-Bit-Mengen) zu transformieren.
Diese Seite hat viele Beispiele, hier ist eine, die nur einfache Anweisungen verwenden.
ORG 100h
mov ah, 2ch ;Get time
int 21h
mov dl, ch ;Show hours
call itoa99
mov ah, 02h ;Show separator
mov dl, ':'
int 21h
mov dl, cl ;Show minutes
call itoa99
mov ax, 4c00h ;Exit
int 21h
;dl = number to display (0..99)
itoa99:
push bx
push ax ;Save registers used
xor ax, ax ;AX = 0
mov al, dl ;AX = DL
mov bl, 10d
div bl ;AL = AX/10, AH = AX mod 10
;AX contains the digits
add ax, 3030h ;Transform digit to digitals
;ASCII digits starts at 30h, digit X is the char 30h+X
;ASCII value: 30h 31h 32h 33h ... 39h
;Character: 0 1 2 3 ... 9
mov bx, ax ;Save for later
;Show the digits
mov dl, bl
mov ah, 02h
int 21h
mov dl, bh
int 21h
pop ax
pop bx
ret
zweistellige Nummer hat ... zwei Ziffern.
Basis 10 ist ein Positionssystem, dh die Zahlendarstellung besteht aus gewichteten Mengen, die als Ziffern bezeichnet werden.
Jede Ziffer ist selbst eine Zahl, aber einfach genug, um ein eindeutiges Symbol zugeordnet zu haben, eine digitale.
Zum Beispiel wird die Ziffer 4 mit unterschiedlichen Symbolen dargestellt, abhängig von der Kultur: ‚4‘, ‚ד‘, ‚四‘, ‚IV‘ ‚4‘, ... eine Zahl zur Basis anzuzeigen 10, müssen wir zuerst die Ziffern extrahieren und dann die Ziffern in ihre Digitals konvertieren. Das Endergebnis ist eine Ziffer.
Um die zwei 10-stelligen Ziffern einer 0-59-Bereichsnummer zu extrahieren, verwenden wir einfach: d0 = n mod 10, d1 = n/10
.
Überzeugen Sie sich selbst, dass dies in der Tat das richtige Ergebnis gibt und dass jeder di
zwischen 0 und 9
Die Anweisung [AAM] (http://www.felixcloutier.com/x86/AAM.html) wäre in diesem Fall eine Alternative zu div. –