Contare i multipli di tre

Contare i multipli di tre in una stringa data in input

 

org 100h

stampa MACRO var

mov dx, offset var
mov ah, 9
int 21h

ENDM

stampa msg

mov dx, offset stringa
mov ah, 0ah
int 21h


mov ch, 0
mov cl, stringa[1]
mov si, 2

ciclo:

sub stringa[si], '0'

mov ah, 0
mov al, 0
mov al, stringa[si]
mov bl, 3
div bl

cmp ah, 0
je multiplo
jmp continua

multiplo:
inc conto

continua: inc si

loop ciclo

mov al, 0
mov al, stringa[1]
sub al, conto

cmp al, conto
je uguale
jb maggiore
ja minore
jmp fine

uguale:
stampa capo
stampa msg2
jmp fine

maggiore:
stampa capo
stampa msg3
jmp fine

minore:
stampa capo
stampa msg4


fine: ret

max equ 20
stringa db max+1, ?, max+1 dup("$")
conto db 0
msg db "input stringa massimo 20 caratteri $"
msg2 db "Il numero di multipli e non multipli di 3 e' uguale $"
msg3 db "Il numero di multipli e' maggiore $"
msg4 db "Il numero di multipli e' minore $"
capo db 10,13,"$"