Está en la página 1de 7

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, SS:PILA
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
PILA SEGMENT STACK
DB 900 DUP(?)
PILA ENDS

END INICIO

2)
;reconoce y discrimina que tecla de function fue pulsada
;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 de funcion","$"
Mensaje db " LA TECLA DE FUNCION PRESIONADA FUE........ F"
uno db "1"
dolar db "$"
numero db ?
Fun1 db ";"
Fun2 db "<"
Fun3 db "="
Fun4 db ">"
Fun5 db "?"
Fun6 db "@"

1
rastreo db ?
db "$"

DATA ENDS

PILA SEGMENT STACK


DB 900 DUP(?)
PILA ENDS

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

mov ah,00h
int 16h
mov rastreo,ah
cmp al,00h
jz funcion1

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

funcion1:
mov ah,rastreo
sub ah,fun1
jz mostrar

funcion2:
add uno,1
mov ah,rastreo
sub ah,fun2
jz mostrar

funcion3:
add uno,1
mov ah,rastreo
sub ah,fun3
jz mostrar

funcion4:
add uno,1
mov ah,rastreo
sub ah,fun4
jz mostrar

mostrar:
mov ah,09h
lea dx,Mensaje
int 21h
MOV AH,4Ch
INT 21h

2
INSTRUC ENDS

END INICIO

3)
;copia y replica la tercera línea de la pagina active
;ejecutar considerando que no se encuentren en el ultimo renglón de
la pagina activa

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:pila
INICIO:
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

3
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
PILA SEGMENT STACK
DB 900 DUP(?)
PILA ENDS
END INICIO

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:pila
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

4
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
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

5
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
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

6
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
pila SEGMENT STACK
DB 900 DUP(?)
pila ENDS
END inicio

También podría gustarte