часов в диапазоне от 0 до 23.
минут от 0 до 59.
Они являются два цифры цифр и как таковые должны быть обработаны.
Там нет встроенной службы, печатает числа, то Int 21/AH=02h
печатает символы, вам нужно преобразовать число две цифры (8-битное количество) в two characters (два 8 битовых величин) .
На этом сайте представлено множество примеров, здесь приведены только простые инструкции.
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
Число двух цифр имеет ... две цифры.
База 10 представляет собой позиционную систему, это означает, что числовое представление состоит из взвешенных величин, называемых цифрами.
Каждая цифра сама по себе является номером, но достаточно проста, чтобы иметь уникальный символ, связанный, цифровой.
Например, цифра 4 представлена различными символами в зависимости от культуры: '4', 'ד', '四', 'IV', '4', ... Чтобы отобразить число в базе 10, нам сначала нужно извлечь цифры, а затем преобразовать цифры в свои цифровые. Конечным результатом является цифра.
Для извлечения двух базовых 10 цифр номера диапазона 0-59 мы просто используем: d0 = n mod 10, d1 = n/10
.
Убедить вашей собственной личности, что это действительно дает правильный результат и что каждый di
между 0 и 9.
Инструкция [AAM] (http://www.felixcloutier.com/x86/AAM.html) была бы альтернативой div в этом случае. –