.model small
.stack 64
;--------------------------------------------------------
.data
mensa db 'Teclea un caracter de abecedario ','$',0dh,0ah
;tab db '$',0dh,0ah
char db 41h
;---------------------------------------------------------
.code
inicio:
mov ax,@data
mov ds,ax
push ds
pop es
; pone mensaje
mov ah,09h
lea dx,mensa
int 21h
;lee caracter tecleado y limpia buffer
mov ah,08h
int 21h
mov char,al
mov ah,02h
mov dl,char
int 21h
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
;-------------------- por lo general limpio los registros antes de las rutinas
sub ax,ax
sub dx,dx
sub cx,cx
sub bx,bx
;---------------------
;inicia rutina
;---------------------
mov dl,char
inc dl ;letra que le sigue
;cmp dl,41h ;A
;jae sigue1
;cmp dl,5ah ;Z
;jbe sigue1
cmp dl,61h ;a
jae sigue2
cmp dl,7ah ;z
jbe sigue2 ;---------------fuga
jmp sale
sigue1:
mov ah,02h
int 21h
cmp dl,5ah
je suma_min
inc dl
jmp sigue1
suma_min:
add dl,07h ; salta a las minusculas
sigue2:
mov ah,02h
int 21h
cmp dl,07ah
jae sale ;llega a la "z" y termina
inc dl
jmp sigue2
sale:
mov ax,4c00h
int 21h
end inicio