SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: egosumdan en Miércoles 15 de Abril de 2009, 05:17

Título: Como crear un menu en ensamblador
Publicado por: egosumdan en Miércoles 15 de Abril de 2009, 05:17
Necesito ayuda para crear un menu de opciones en turbo assemble.
Título: Re: Como crear un menu en ensamblador
Publicado por: Eternal Idol en Miércoles 15 de Abril de 2009, 08:05
Tres cosas:
A. Un bucle
B. Escribir en consola
C. Leer el teclado

B y C las podes hacer con la interrupcion 021h por ejemplo, busca informacion e intentalo, si tenes algun problema con eso te ayudaremos.
Título: Re: Como crear un menu en ensamblador
Publicado por: egosumdan en Jueves 16 de Abril de 2009, 07:05
Cita de: "Eternal Idol"
Tres cosas:
A. Un bucle
B. Escribir en consola
C. Leer el teclado

B y C las podes hacer con la interrupcion 021h por ejemplo, busca informacion e intentalo, si tenes algun problema con eso te ayudaremos.

Daniel: Gracias por la ayuda anterior, ahora tengo otro pequeño problema, lo que pasa es que para ambiar a modo grafico y para cambiar el color de fondo de la pantalla utilizo el siguiente codigo:

mov ah,0h
mov al,10h
int 10h
mov ah,11
mov bh,00
mov bl,01
int 10h

pero al ejecutarlo la ventana del MS-DOS cambia a pantalla completa pero distorcionada y el color de fondo no cambia, me podrias explicar que codigo tengo que utilizar,por favorr. Gracias.
Título: Re: Como crear un menu en ensamblador
Publicado por: Eternal Idol en Jueves 16 de Abril de 2009, 08:12
Lo siento pero si lo que necesitas es hacer un menu grafico sera una tarea ya que es totalmente obsoleto, busca en Google mejor.
Título: Re: Como crear un menu en ensamblador
Publicado por: Toph en Jueves 16 de Abril de 2009, 22:00
Cita de: "egosumdan"
lo que pasa es que para ambiar a modo grafico y para cambiar el color de fondo de la pantalla utilizo el siguiente codigo:

mov ah,0h
mov al,10h
int 10h
mov ah,11
mov bh,00
mov bl,01
int 10h

pero al ejecutarlo la ventana del MS-DOS cambia a pantalla completa pero distorcionada y el color de fondo no cambia, me podrias explicar que codigo tengo que utilizar,por favorr. Gracias.

para cambiar color de fondo en MS-DOS es mejor usar la funcion 06h, interrupcion 10h:

Citar
INT 10h / AH = 06h - scroll up window.
INT 10h / AH = 07h - scroll down window.

input:
AL = number of lines by which to scroll (00h = clear entire window).
BH = attribute used to write blank lines at bottom of window.
CH, CL = row, column of window's upper left corner.
DH, DL = row, column of window's lower right corner.


en el nibble mas significativo de BH va el color del fondo y en el menos significativo el color del texto asi por ejemplo quisieras fondo azul, letras negras BH deberia ser igual a: 10h, fondo negro, letras azules BH=01h
Título: Re: Como crear un menu en ensamblador
Publicado por: egosumdan en Sábado 18 de Abril de 2009, 02:12
Gracias por contestar mis dudas, ahora tengo una nueva, lo q pasa es q necesito trazar una linea, pero como puedo hacerlo con un ciclo loop:

mov si,0
mov cx,20
aviso:
   
   mov ah,12
   mov dx,200   
   mov cx,[80+si]
   
   mov al,0bh
   int 10h
   inc si

loop aviso

pero este codigo me imprime pixeles pero dispersos en la pantalla y quiero q se impriman uno seguidi de otro formando una linea continua, podrian ayudarme. Porfavor
Título: Re: Como crear un menu en ensamblador
Publicado por: Toph en Lunes 20 de Abril de 2009, 21:30
Cita de: "egosumdan"
pero este codigo me imprime pixeles pero dispersos en la pantalla y quiero q se impriman uno seguidi de otro formando una linea continua, podrian ayudarme. Porfavor

lo que se debe hacer primero es ubicar el cursor en la posicion donde se quiere imprimir la linea (esto se hace con la funcion 02h de la interrupcion 10h, en dl va la columna y en dh la fila, en bh= el numero de pantalla, generalmente 0), la linea se debe hacer con el ascii de "─" que es C4h, se imprime con la funcion para imprimir un caracter (funcion 02h de la int 21h) despues de que se imprime en pantalla automaticamente el cursor se pasa a la siguiente posicion, por lo que lo que se deja en el lazo es la impresion de caracteres, asi:

-ubica posicion inicial
-aviso:
-imprime caracter
-loop aviso
 
claro que habria que poner algo para que se salga del lazo talvez al llegar a cierta posicion de la pantalla.