+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.