You are on page 1of 6

PROGRAMAS DE PRUEBA DE MANEJO DE TECLADO

1)
;programa de prueba de la función 01h int21/detecta tecla función
DATA SEGMENT
Teclaf db "no presiono una tecla funcion","$"
Teclanf db "presiono una tecla funcion","$"
DATA ENDS

INSTRUC SEGMENT
ASSUME CS:INSTRUC,DS:DATA
INICIO:
MOV AX,DATA
MOV DS,AX

mov ah,01h
int 21h
cmp al,00h
jnz L1

mov ah,09h
lea dx,teclanf
int 21h
MOV AH,4Ch
INT 21h

L1: mov ah,09h


lea dx,teclaf
int 21h
MOV AH,4Ch
INT 21h

INSTRUC ENDS
stack SEGMENT STACK
DB 900 DUP(?)
stack ENDS

END INICIO

2)
data SEGMENT
renglonactual db ?

linea db 80 dup(' ')


fin db '$'

ren db 3 ;replica la tercera línea


col db 0

cant dw 0
data ENDS

INSTRUC SEGMENT
ASSUME CS:INSTRUC,ds:data,ss:stack
INICIO:

1
mov ax,data
mov ds,ax

MOV AH,03h ; petición para leer la posición de cursor


MOV BH,00 ; Número de página activa 0
INT 10h ; Llama al BIOS
mov renglonactual,DH
INC renglonactual

LEA DI,linea

COLUM: MOV AH,02h ; petición para colocar el cursor


MOV BH,00 ; Número de página activa 0
MOV DH,ren
MOV DL,col
INT 10h ; interrupción que llama al BIOS

MOV AH,08h ;
MOV BH,00 ; Número de página 0 (normal)
INT 10h ; Llama al BIOS

MOV [DI],AL

INC DI
INC col

MOV BX,79
INC cant
CMP BX,cant
JA colum

MOV AH,02h ; petición para colocar el cursor


MOV BH,00 ; Número de página activa 0
MOV DH,renglonactual
MOV DL,00
INT 10h ; interrupción que llama al BIOS

MOV AH,09h
LEA DX,linea
INT 21h

mov ah,4ch
int 21h

grafico proc near


mov ah,00h
mov al,12h
int 10h
ret
grafico endp

INSTRUC ENDS
STACK SEGMENT STACK
DB 900 DUP(?)
STACK ENDS
END INICIO

2
3) intercambio de páginas

DATOS SEGMENT
modo DB ?

DATOS ENDS

CODIGO SEGMENT
ASSUME CS:CODIGO,ds:DATOS,ss:STACK
inicio:
mov ax,DATOS
mov ds,ax

;lee modo de video y graba en al

mov ah,0fh
int 10h
mov modo,al

MOV AH,05h ; petición de página activa


MOV AL,ff ; Número de página
INT 10h ; Llama al BIOS

MOV AH,07h ; petición para recorrido de pantalla


MOV AL,00 ; para recorrido completo
MOV BH,40h ; Número de atributo fondo (7) y texto (1)
MOV CX,0505h ; Renglón 00 y columna 00 inicial
MOV DX,134ah ; Renglón 24 y columna 79 final
INT 10h ; interrupción que llama al BIOS

mov ah,10h
int 16h

MOV AH,05h ; petición de página activa


MOV AL,00 ; Número de página
INT 10h ; Llama al BIOS

mov ah,4ch
int 21h

CODIGO ENDS
STACK SEGMENT STACK
DB 900 DUP(?)
STACK ENDS
END inicio

3
4) intercambio de páginas2
DATOS SEGMENT
modo DB ?
pag DB ?
xini DB ?
yini DB ?
colu DW ?
DATOS ENDS

CODIGO SEGMENT
ASSUME CS:CODIGO,ds:DATOS,ss:STACK
inicio:
mov ax,DATOS
mov ds,ax

;lee modo de video y graba en el registro al


mov ah,0fh
int 10h
mov modo,al

mov pag,01
call mitadsup
call mitadinf

mov pag,02
call supizq
call supderech
call mitadinf

mov pag,03
call infizq
call infderech
call mitadsup

MOV AH,05h ; petición de página activa


MOV AL,01 ; Número de página
INT 10h ; Llama al BIOS

mov ah,10h
int 16h

MOV AH,05h ; petición de página activa


MOV AL,02 ; Número de página
INT 10h ; Llama al BIOS

mov ah,10h
int 16h

MOV AH,05h ; petición de página activa


MOV AL,03 ; Número de página
INT 10h ; Llama al BIOS

mov ah,4ch
int 21h

mitadsup proc near


MOV DI,0

4
MOV DH,0 ; Renglón 05
DESP1: MOV AH,02h ; petición para colocar el cursor
MOV BH,pag ; Número de página activa 0

MOV DL,0 ; Columna 12


INT 10h ; interrupción que llama al BIOS
MOV AH,0Ah ; petición de despliegue
MOV AL,'X' ; caracter que se despliega
MOV CX,80 ; despliega veinte caracteres *
INT 10h ; Llama al BIOS
INC DH
INC DI
CMP DI,12
JB DESP1
RET
mitadsup endp

mitadinf proc near


MOV DI,0
MOV DH,13 ; Renglón 05
DESP2: MOV AH,02h ; petición para colocar el cursor
MOV BH,pag ; Número de página activa 0
MOV DL,0 ; Columna 12
INT 10h ; interrupción que llama al BIOS
MOV AH,0Ah ; petición de despliegue
MOV AL,'X' ; caracter que se despliega
MOV CX,80 ; despliega veinte caracteres *
INT 10h ; Llama al BIOS
INC DH
INC DI
CMP DI,12
JB DESP2
RET
mitadinf endp

supizq proc near


MOV DI,0
MOV DH,0 ; Renglón 05
DESP3: MOV AH,02h ; petición para colocar el cursor
MOV BH,pag ; Número de página activa 0
MOV DL,0 ; Columna 12
INT 10h ; interrupción que llama al BIOS
MOV AH,0Ah ; petición de despliegue
MOV AL,'X' ; caracter que se despliega
MOV CX,39 ; despliega veinte caracteres *
INT 10h ; Llama al BIOS
INC DH
INC DI
CMP DI,12
JB DESP3
RET
supizq endp

supderech proc near


MOV DI,0
MOV DH,0 ; Renglón 05
DESP4: MOV AH,02h ; petición para colocar el cursor

5
MOV BH,pag ; Número de página activa 0

MOV DL,41 ; Columna 12


INT 10h ; interrupción que llama al BIOS
MOV AH,0Ah ; petición de despliegue
MOV AL,'X' ; caracter que se despliega
MOV CX,39 ; despliega veinte caracteres *
INT 10h ; Llama al BIOS
INC DH
INC DI
CMP DI,12
JB DESP4
RET
supderech endp

infizq proc near


MOV DI,0
MOV DH,13 ; Renglón 05
DESP5: MOV AH,02h ; petición para colocar el cursor
MOV BH,pag ; Número de página activa 0
MOV DL,0 ; Columna 12
INT 10h ; interrupción que llama al BIOS
MOV AH,0Ah ; petición de despliegue
MOV AL,'X' ; caracter que se despliega
MOV CX,39 ; despliega veinte caracteres *
INT 10h ; Llama al BIOS
INC DH
INC DI
CMP DI,12
JB DESP5
RET
infizq endp

infderech proc near


MOV DI,0
MOV DH,13 ; Renglón 05
DESP6: MOV AH,02h ; petición para colocar el cursor
MOV BH,pag ; Número de página activa 0

MOV DL,41 ; Columna 12


INT 10h ; interrupción que llama al BIOS
MOV AH,0Ah ; petición de despliegue
MOV AL,'X' ; caracter que se despliega
MOV CX,39 ; despliega veinte caracteres *
INT 10h ; Llama al BIOS
INC DH
INC DI
CMP DI,12
JB DESP6
RET
infderech endp

CODIGO ENDS
STACK SEGMENT STACK
DB 900 DUP(?)
STACK ENDS
END inicio

You might also like