¿Cómo utilizar el teclado para controlar el movimiento de formas en lenguaje ensamblador?
1. Este programa solo reconoce tres teclas: tecla de cursor izquierda, tecla de cursor derecha y tecla Esc;
2. realice la función correspondiente; presione la tecla Esc para finalizar el programa.
;Este programa se compila y ejecuta correctamente.
Segmento de código
Asume CS:Code, DS:Code
-
; ( Str_Addr)
; Entrada:
; Str_Addr= = Dirección de cadena (requerida en el segmento de datos)
; Uso: Dirección de cadena de salida
; Ejemplo de uso: Salida PromptStr
Dirección de cadena de macro de salida
lead dx, Str_address
mov ah, 9
int 21h
EndM
; -
; Función: Establecer la posición del cursor
; Entrada: Cursor_Row=Coordenada de fila; )
Establecer avance del cursor hacia cerca
Empujar CX
Empujar BX
Empujar Ax
MOV DH, Cursor_Row
MOV DL, Cursor_Row
BX XOR BX
MOV, 2
INT 10H
p>
Cañón explosivo
Pop·BX
Pop·CX
Remojado en agua para ablandar
Cursor_Row DB 21 p>
Cursor_Column Base de datos 36
SetCursor finalizado
-
KBEsc equ 11BH
KBLeft equ 4BH
p>KBRight equ 4DH
Cadena db '<-& gt;$'
Inicio: push cs
Cámara digital popular
p>Push cs
pop es hace que el segmento de datos, el segmento adicional y el segmento de código se conviertan en el mismo segmento.
xor Co., Ltd.
mov, 8; Lee los caracteres y atributos en la posición del cursor.
int 10h
mov bh, ah; guarda el valor del atributo del carácter
Disp_Str: llama a SetCursor para establecer la posición del cursor
Salida cadena; Mostrar cadena
Read_Key: xor ah, ah
int 16h; recibir clave
cmp ax, KBEscEsc?
jz export_process; finaliza el programa y regresa al sistema operativo.
cmp ah, KB¿Flecha izquierda?
jnz $+10; No, dale la vuelta y mira si hiciste clic derecho.
mov word ptr Inc_or_Dec, 0efeh sí, el número de columna actual es negativo 1.
jmp cursor_move
cmp, KB¿Flecha derecha?
jnz Leer _ Clave No, recibe el botón siguiente.
mov word ptr Inc_or_Dec, 06feh es, agregue 1 al número de columna actual.
Cursor_move:mov bl,ah; guardar dirección del punto clave
Mover bx
xor ltd
mov ah, 3; posición actual del cursor y las coordenadas de la esquina inferior derecha de la ventana.
int 10h
pop bx
inc dl número de columna más 1
mov ch, número de fila en la esquina superior izquierda del Ventana Cursor_Fila
mov cl, el número de columna en la esquina superior izquierda de la ventana Cursor_Col
.
Si bl == KBLeft & amp& ampcl == 0; presione el botón izquierdo, pero ha llegado al extremo izquierdo y no se mueve.
jmp lee la clave
. ENDIF
. IF bl = = KBRight & amp& ampdl = = Haga clic derecho en 79, pero ha llegado al extremo derecho y está inmóvil.
jmp lee la clave
. ENDIF
mov, 7; el contenido de la ventana se desplaza hacia abajo.
mov al,1;Desplazarse una línea hacia abajo.
int 10h
Inc_or_Dec: inc cursor_Col El número de columna actual es 1 negativo o 1 positivo.
jmp display_string
Exit_Proc: mov ah, 4ch finaliza el programa
int 21h
Fin del código
Comienza el final; este es el final de la compilación