RE:URGENTE... Como pintar el teclado en la pantall
Que tal, bueno este ,me gusta mas... despues lo arreglo para que quede presentable.
Macro printCa cad1
mov ah, 9
lea dx, cad1
int 21h
endm
Macro PosCur fila, columna
mov bh, 0
mov dh, fila
mov dl, columna
mov ah, 02
int 10h
endm
Macro PrintC Car
mov dl, car
mov ah, 2
int 21h
endm
Macro Codificar Num
mov al, num
mov bl, 3h
mul bl
add al, 01h
endm
Macro Color
MOV AH,02H
MOV DX,00H
INT 10H
MOV AX,0920H
MOV BL,17H
MOV CX,2000
INT 10H
endm
Macro XXY carINI, fila, Bucle
Local Print3, salida
mov cl, carINI
mov ch, 0h
Print3:
Codificar ch
PosCur fila, al
PrintC cl
inc cl
inc ch
cmp ch, bucle
je salida
jmp print3
salida:
endm
MACRO INCREIBLE INT1, INT2, VAR, VAR1, VAR2
MOV CH, INT1
MOV CL, INT2
SUB CX, 0101H
POSCUR CH, CL
PRINTCA VAR
ADD CX, 0200H
POSCUR CH, CL
PRINTCA VAR1
SUB CX, 0100H
POSCUR CH, CL
PRINTC VAR2
ADD CX, 0002H
POSCUR CH, CL
PRINTC VAR2
ENDM
org 100h
jmp inicio:
a1 db 10 dup(0C9H, 0CDH, 0BBH),0ah,0dh,'$';
a2 db 10 DUP(0BAH, 00H, 0BAH),0ah,0dh,'$'
a3 db 10 dup(0C8H, 0CDH, 0BCH),0ah, 0dh,'$'
B1 DB '1234567890'
B2 DB 'QWERTYUIOP'
B3 DB 'ASDFGHJKLÑ'
B4 DB 'ZXCVBNM,.-'
BLOQUE1 DB 0C9H, 0CDH, 0BBH, '$'
BLOQUE2 DB 0C8H, 0CDH, 0BCH, '$'
BLOQUE3 DB 0DAH, 0C4H, 0BFH, '$'
BLOQUE4 DB 0C0H, 0C4H, 0D9H, '$' ;B3
KEYANT DB ?,?
COLUM DB 00H
CONT DB 0
CARACT DB ?
V1 DB ?
inicio:
Color
MOV CX, 4
MOV BL, 2
BU:
Poscur BL,4
printca a1
INC BL
Poscur BL,4
printca a2
INC BL
Poscur BL,4
PRINTCA A3
INC BL
LOOP BU
MOV CX, 10
MOV SI, 0
MOV BL, 5
LE1:
POSCUR 3,BL
MOV DL, B1[SI]
MOV AH, 2
INT 21H
POSCUR 6, BL
MOV DL, B2[SI]
MOV AH, 2
INT 21H
POSCUR 9, BL
MOV DL, B3[SI]
MOV AH, 2
INT 21H
POSCUR 12, BL
MOV DL, B4[SI]
MOV AH, 2
INT 21H
INC SI
ADD BL, 3
LOOP LE1
OTRO:
mov ah, 0
int 16h
MOV CARACT[0], AL
XCHG AL, AH
mov ah, 00h
add al, 1h
mov bl, 0Fh
DIV BL
mov ch, ah
add ch, al
mov ah, 00h
mov bl, 3
mul bl
add al, 3h
MOV CL, AL
mov al, ch
mov bl, 3h
mul bl
sub al, 4h
MOV AH, CL
CMP CONT[0], 0
PUSH AX
JNE ANT
JE PROSEGUR
ANT:
INCREIBLE KEYANT[0], KEYANT[1], BLOQUE1, BLOQUE2, 0BAH
PROSEGUR:
POP AX
MOV KEYANT[0], AH
MOV KEYANT[1], AL
INCREIBLE AH, AL, BLOQUE3, BLOQUE4, 0B3H
MOV AX, SI
POSCUR 19,COLUM
ADD COLUM, 01H
PRINTC CARACT[0]
INC CONT[0]
jmp otro
salir: ret
;Para obtener la columna
;2 +4 = 5 / A = 0 * 3 =0 ; 02-0B (02-11)
;10 - 8 (08)=2 +4 = 13 / A = 2 * 3 =6 ; 10-19 (16-25)
;1E - 1C(28)=2 +4 = 21 / A = 3 * 3 =9 ; 1E-26 (30-38)
;2C - 2A(42)=2 +4 = 30 / A = 4 * 3 =12 ; 2C-32 (44-50)
;Solucion: Numero + 1 / F---> resultado * 3 + 3 =
; 0 * 3 + 3 = 3
; 1 * 3 + 3 = 6
; 2 * 3 + 3 = 9
; 3 * 3 + 3 = 12
;maX CAR 50H = 80D
;Mirar bien, dividiendo por A respectivamente los resultados son...
; 0, 1, 3, 4
; Las columnas son:
; Numero 3
;Primera fila 6
;Segunda fila 9
;Tercera 12
;Obtencion de FILA
;XCHG AL, AH
;mov ah, 00h
;add al, 1h
;mov bl, 0Fh
;DIv BL
;mov ch, ah
;mov ah, 00h
;mov bl, 3
;mul bl
;add al, 3h
;COLUMNA
;FILA 1 empieza en 3 + 0(Columna Inicial) = 3 * 3 = 9 - 4 = 5
;FILA 2 empieza en 2 + 1(Columna Inicial) = 3
;FILA 3 empieza en 1 + 2(Columna Inicial) = 3
;FILA 4 empieza en 0 + 3(Columna Inicial) = 3
;EL 4 es la posicion en cantidad que se agrego para que arranque
;la impresion en pantalla.
;TECLAS EN PANTALLA, COMO DIBUJAR?
;Bloque1 0c9h = É 0cdh(X2) = ÍÍ 0BBh = » (0C9H, 0CDH, 0CDH, 0BBH)