Все, что делает ваш сегмент кода, считает их, вам все равно нужно вывести значение, как только вы закончите.
Если счетчик меньше 10, вы можете использовать простое:
over: push cx ; transfer cl to dl for int21/ah=2.
pop dx
add dx, 30h ; convert number to character.
mov ah, 02h ; prints the character in dl.
int 21h
mov ah, 4ch ; exit.
int 21h
В терминах печати строк вы можете использовать int21, ах = 9. Список прерываний Ральфа Брауна является отличным ресурсом для такого рода вещей.
Для вывода чисел, превышающих 9, вам придется выполнить обычный трюк с делением / модулем.
Некоторый код для этого можно найти здесь , но вы, вероятно, можете получить что-то вроде этого com
файла:
0100 mov si, numlist ; get the list base.
0103 mov cl, 0 ; counter initially zero.
0105 loop1: mov al, 0 ; stop on sentinel of zero.
0107 cmp al, [si]
0109 je pr_pre
010B inc si ; otherwise advance and increase count.
010C inc cl
010E jmp loop1 ; and go back for more.
0110 pr_pre: mov ah, 09 ; output the initial text.
0112 mov dx, pretext
0115 int 21
0117 hundreds: mov dl, 30 ; process hundreds digit, initially '0'.
0119 jmp skip2 ; skip initial.
011B loop2: inc dl ; add 1 to count, sub 100 from tally
011D sub cl, 64
0120 skip2: cmp cl, 64
0123 jge loop2 ; continue until < 100
0125 mov ah, 02 ; print character.
0127 int 21
0129 tens: mov dl, 30 ; process tens digit, same as hundreds.
012B jmp skip3
012D loop3: inc dl
012F sub cl, 0a ; except use 10 rather than 100
0132 skip3: cmp cl, 0a
0135 jge loop3
0137 mov ah, 02
0139 int 21
013B units: mov dl, cl ; what's left is units.
013D add dl, 30 ; just add '0' and print.
0140 mov ah, 02
0142 int 21
0144 pr_post: mov ah, 09 ; the print CR/LF.
0146 mov dx, 15e
0149 int 21
014B exit: mov ah, 4c ; and exit.
014D int 21
014F pretext: db "The count is: $"
015E posttxt: db 0a, 0d, "$"
0161 numlist: db 1,2,3,4,5,6,7,8,9
016a db 10,11,12,13,14,0