Red de conocimiento informático - Conocimiento sistemático - ¿Cómo utilizar el teclado para controlar el movimiento de formas en lenguaje ensamblador?

¿Cómo utilizar el teclado para controlar el movimiento de formas en lenguaje ensamblador?

Descripción:

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

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