Red de conocimiento informático - Conocimiento sistemático - Ayuda del ensamblador sobre el uso de interrupciones de DOS para recibir y procesar la entrada del teclado

Ayuda del ensamblador sobre el uso de interrupciones de DOS para recibir y procesar la entrada del teclado

; Este programa se compila y ejecuta correctamente

Segmento de código

Supongamos CS: código, DS: código

---- ------- --- ---------- -------

Función: Mostrar la cadena de la dirección especificada (Str_Addr)

;

; Str_Addr = dirección de cadena (obligatoria en el segmento de datos)

; Método de uso: Salida Str_Addr

; >Salida MACRO Str_Addr

lea dx,Str_ Addr

mov ah,9

int 21h

EndM

; ------ ---------- ---------- -----

Función: generar un carácter

;

; Entrada: dl= carácter a mostrar

Enter_Chr proc Near

push ax

mov ah,02h

int 21h

hacha pop

ret

Enter_Chr endp

--- ---------- -- - ------- --------

Función: retorno de carro de salida y avance de línea

Enter_CTLF proc Near

push ax

push dx

mov ah,02h

mov dl,0dh

int 21h

mov dl, 0ah

int 21h

pop dx

pop hacha

ret

Enter_CTLF endp

;------ ---------- ---------- -----

; Función: Cambia los 4 inferiores en AL Convierte números binarios a códigos ASCII para visualización hexadecimal

; Entrada: = ASCII convertido

Salida: = ASCII convertido

AL_ASCII Proc Near

cmp al,10 ;AL<10?

jb @@@To_ASCII ;AL<10, procesado como un número

agregar al, 7 ;AL>=10, tratado como letras mayúsculas

@@To_ASCII: add al,'0' ;Convertir al número correspondiente o letra mayúscula

ret

AL_ASCII EndP

- --- ---------- ---------- -------

; Función: Cambiar AL Convierte los datos del byte a código ASCII y mostrarlo en hexadecimal

; Entrada: AL

Salida: AX= código ASCII convertido

Byte_ASCII cierre del programa

push cx

mov cx,4

xor ah,ah ;Establecer AH en 0

shl ax, cl ;Desplazar AX 4 bits a la izquierda

shr al,cl ;Sh

ift AL a la derecha por 4 bits

xchg ah,al

Llama a AL_ASCII para llamar a una subrutina para convertir el valor en AL en el código ASCII correspondiente

xchg ah ,al

Llamada AL_ASCII

xchg ah,al

pop cx

ret

Byte_ASCII EndP p>

; ----- ---------- ---------- ------

; Convierta los datos del byte a código ASCII para que se puedan mostrar en hexadecimal en la posición actual del cursor

; Ingrese: AL

Salir: AX= Código ASCII convertido

ByteD_ASCII el programa está cerrado

Push dx

Push ax

Llame a Byte_ASCII para convertir el número de bytes en AL a código ASCII y mostrarlo en hexadecimal

cmp al,'9'

jbe $+7

mov dl,'0'

llamar a Enter_Chr ; mostrar un carácter

mov dl,al

call Enter_Chr ;Mostrar un carácter

mov dl,ah<

call Enter_Chr ;Mostrar un carácter

mov dl,'H'

call Enter_Chr ;Mostrar un carácter

pop ax

pop dx

ret

ByteD_ASCII EndP

--------- ---------- ---------- --

Prompt_Chr db 'Ingrese un carácter:$' ;Ingrese la información del mensaje de carácter

Inicio: push cs

pop ds

push cs

pop es ;Hacer que el segmento de datos, el segmento adicional y el segmento de código sean el mismo segmento

Input_Chr:Output Prompt_Chr ;Solicitar carácter de entrada

mov ah,1 ;Aceptar un carácter del teclado

int 21h

cmp al,1bh ;Esc?

jz Exit_Proc

CALL Enter_CTLF ;Generar un retorno de carro, avance de línea

call ByteD_ASCII ;Convierte los datos de bytes en AL a código ASCII de visualización hexadecimal y lo muestra en la posición actual del cursor

CALL Enter_CTLF ;Salida de retorno de carro, avance de línea

CALL Enter_CTLF ;Salida de retorno de carro, avance de línea

jmp Input_Chr ;Aceptar siguiente carácter

Exit_Proc: mov ah,4ch ;finalizar programa

int 21h

p ><

p>Código FINALIZA

FIN Inicio; La compilación finaliza aquí