CODIGO A DOCUMENTAR..

vcsebas
20 de Mayo del 2009
necesito poner ke hace cada linea...
.model small
.stack 64h
.data
Ingresa db "Ingresa el Nombre : $"
mtmet db "El tama",164,"o minimo debe ser 4 $"
mNoNombre db "El Nombre No se Encuentra $"
mSiNombre db "El Nombre Si se Encuentra $"
mRepetir db "Press [Esc] escape para salir... otra para continuar ...$"
mete label byte
tmax db 9
tmet db ?
Nombre db 10 dup (0)
tabla label byte
db "JUAN",0,0,0,0,0
db "CARLOS",0,0,0
db "LUIS",0,0,0,0,0
db "YURI",0,0,0,0,0
db "KEVIN",0,0,0,0
db "LEONARDO",0

.code
mov ax,@data
mov ds,ax
repite:
call CLS
call limpianombre
mov dx,0512H
call cursor
lea dx,Ingresa
mov ah,9
int 21h
lea dx,mete
mov ah,10
int 21h

call CLS
mov dx,0505H
call cursor

mov ch,0
mov cl,tmet
cmp tmet,4
jl e_tam
push cx
push cx
pop di
mov nombre[di],0
pop cx
call ConvMayusculas
call COMPARA_TABLA
cmp ax,0
jz [email protected]@
lea Dx,mSiNombre
mov ah,9
int 21h
mov ah,0
int 16h
jmp salir
[email protected]@:
lea Dx,mNoNombre
mov ah,9
int 21h
mov ah,7
int 21h

salir:
call CLS
mov dx,0505H
call cursor
lea dx,mRepetir
mov ah,9
int 21h
mov ah,0
int 16h
cmp ah,1
jz salir1
jmp repite
salir1:
call CLS
mov ah,4ch
int 21h
e_tam:
call CLS
mov dx,0512H
call cursor
lea dx,mtmet
mov ah,9
int 21h
mov ah,0
int 16h
call CLS
jmp repite

limpianombre proc
pusha
mov si,0
mov cx,10
@@lazo0:mov [nombre+si],0
inc si
loop @@lazo0
popa
ret
limpianombre endp

ConvMayusculas proc
mov di,0
s_Conv_Mayus:
mov al,nombre[di]
call a_Mayusculas
mov nombre[di],al
inc di
cmp di,cx
jnz s_Conv_Mayus
ret
ConvMayusculas endp

a_Mayusculas proc
cmp al,'a'
jl salir_Conv_Mayus
cmp al,'z'
jg salir_Conv_Mayus
sub al,20H
salir_Conv_Mayus:
ret
a_Mayusculas endp

COMPARA_TABLA proc
mov bx,0;Puntero interno dentro de la tabla
lea si,tabla
mov ch,0
mov cl,[tmet]
lea di,nombre
r_cmp_tabla:
call comparabytes
cmp ax,1
jz hayNombre
inc bx
cmp bx,6
jnz r_cmp_tabla
mov ax,0
ret
hayNombre:
mov ax,1
ret
COMPARA_TABLA endp

comparabytes proc
mov ax,9
mul bl
mov cx,9
lea di,tabla
add di,ax
lea si,nombre
@@lazo1: mov ah,[si]
mov al,[di]
cmp ah,al
jnz e_cmpbs
inc si
inc di
loop @@lazo1
mov ax,1
ret
e_cmpbs:mov ax,0
ret
comparabytes endp
CLS PROC NEAR
pusha
MOV AX,0600H ;REQUEST SCROLL SCREEN
MOV BH,07H ;NORMAL
MOV CX,0000H ;FROM 00,00
MOV DX,184FH ;TO 24,79
INT 10H ;CALL BIOS
MOV DX,0000 ;PONE EL CURSOR A FILA 00, COLUMNA 00
MOV AH,02 ;REQUEST SET CURSOR
MOV BH,00 ;PAGE 10
INT 10H ;CALL BIOS
popa
RET
CLS ENDP
cursor proc near
mov ah,02h
mov bh,00
int 10h
ret
cursor endp
end