¿Cómo puedo crear una barra de menú como la del comando EDIT de TASM?
Quiero crear un archivo de editor de texto utilizando TASM. (Para aquellos que preguntan por qué quiero crear esto es porque es para fines académicos). Lo que he hecho hasta ahora es hacer un texto editable. Lo que quiero hacer es cómo puedo hacer una barra de menú que sea como en el comando EDIT de TASM. Aprecio si agregas algunas referencias.
Este es el código que he hecho hasta ahora:
.MODEL SMALL
.STACK
.DATA
CURSOR_X DB 0
CURSOR_Y DB 0
.CODE
START:
MOV AX,@DATA ;CONFIGURAR DS PARA PODER ACCEDER A NUESTROS DATOS
MOV DS,AX
;UTILIZAR LA INTERRUPCIÓN 10H DEL BIOS, SERVICIO 06H PARA DESPLAZAR LA VENTANA HACIA ARRIBA
;ESTO CREA UN EFECTO DE PANTALLA CLARA
;TAMBIÉN CONFIGURA LOS COLORES (FONDO AZUL Y TEXTO ROJO)
MOV AX,0600H
MOV BH,1CH
MOV CX,0
MOV DX,184FH
INT 10H
SET_CURSOR:
;UTILIZAR LA INTERRUPCIÓN 10H DEL BIOS, SERVICIO 02H PARA POSICIONAR EL CURSOR
MOV AH,02H
MOV DL,CURSOR_X
MOV DH,CURSOR_Y
MOV BH,0
INT 10H
READ_KEY:
;UTILIZAR LA INTERRUPCIÓN 16H DEL BIOS, SERVICIO 00H PARA LEER EL TECLADO
;(RETORNA EL CÓDIGO ASCII EN AL)
MOV AH,0
INT 16H
CMP AL, 1BH
JE EXIT
CMP AL, 08H
JE BACKSPACE
;UTILIZAR LA INTERRUPCIÓN 10H DEL BIOS, SERVICIO 0AH PARA IMPRIMIR UN CARACTER
;EN LA POSICIÓN ACTUAL DEL CURSOR
MOV AH,0AH
MOV CX,1
MOV BH,0
INT 10H
CMP DL, 39
JE MOVE_DOWN
INC CURSOR_X
CMP DL, 39
JL SET_CURSOR
MOVE_DOWN:
CMP DH, 9
JE READ_KEY
MOV CURSOR_X, 0
INC CURSOR_Y
CMP DH, 9
JL SET_CURSOR
BACKSPACE:
CMP CURSOR_X, 0
JE MOVE_UP
DEC CURSOR_X
JMP ERASE
MOVE_UP:
CMP CURSOR_Y, 0
JE READ_KEY
MOV CURSOR_X, 39
DEC CURSOR_Y
JMP ERASE
ERASE:
;UTILIZAR LA INTERRUPCIÓN 10H DEL BIOS, SERVICIO 02H PARA POSICIONAR EL CURSOR
MOV AH,02H
MOV DL,CURSOR_X
MOV DH,CURSOR_Y
MOV BH,0
INT 10H
;UTILIZAR LA INTERRUPCIÓN 10H DEL BIOS, SERVICIO 0AH PARA IMPRIMIR ESPACIOS EN BLANCO
;EN LA POSICIÓN ACTUAL DEL CURSOR (BORRAR)
MOV AH,0AH
MOV AL,WS
MOV CX,1
INT 10H
JMP READ_KEY
EXIT:
;UTILIZAR LA INTERRUPCIÓN 21H DEL DOS, SERVICIO 4CH PARA SALIR DEL PROGRAMA
MOV AX,4C00H
INT 21H
END START ;INDICAR AL ENSAMBLADOR QUE FINALICE
Ahora esto es lo que quiero hacer:
Imagen del menú
davy.ai
Para crear una barra de menú similar al comando EDIT de TASM, necesitarás usar la interrupción de BIOS 10H, servicio 0BH para imprimir los caracteres necesarios para crear el menú y las opciones de submenú. Esta interrupción te permite imprimir una cadena de caracteres con un atributo especificado (colores de fondo y primer plano). Aquí tienes un ejemplo de cómo puedes imprimir los menús File, Edit y Help:
Puedes ajustar la longitud de la cadena y el atributo para que coincida con el estilo de menú deseado. Además, deberás manejar la selección del usuario de las opciones de menú utilizando la entrada del teclado y el flujo condicional. ¡Buena suerte con tu proyecto académico!