+m2+ ha scritto:
In realtà ti rammento che puoi controllare direttamente il sesto bit, invece di fare un doppio controllo "maggiore" e "minore".
Sei sicuro...?
include \masm32\include\masm32rt.inc
.data?
risultato dd ?
.code
start:
mov ebx, chr$("CIAO Mammina, è già pronta la pasta?") ; 29-6=23
xor esi, esi
molto_sbagliato=0
un_po_sbagliato=0
ciclo:
mov al, byte ptr[ebx + esi]
test al, al
je fine
if molto_sbagliato ; risultato 31, sbagliato
test al, 32
je salto
else
cmp al, "a" ; 97
jb salto
if un_po_sbagliato ; risultato 21, mancano è + à
cmp al, "z" ; 122
ja salto
else ; risultato 23, corretto
shr al, 6
jnc salto
endif
endif
inc risultato
salto:
inc esi
jmp ciclo
fine:
print str$(risultato), " caratteri minuscoli fra un totale di "
inkey str$(esi), " caratteri"
exit
end start
Output:23 caratteri minuscoli fra un totale di 36 caratteri
@Matte: Studia bene perché ho cambiato il
jl salto a
jb salto.