• Jueves 28 de Marzo de 2024, 11:31

Autor Tema:  - Flechas De Direccion-  (Leído 13522 veces)

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
- Flechas De Direccion-
« en: Miércoles 8 de Noviembre de 2006, 01:06 »
0
Que tal chicos,  

Tengo un menu  de opciones, similar este
1- hola
2- adios
3.- salir

Necesito seleccionar cada una de las opciones pero con las flechas del teclado
Pense en la funcion de posicionamiento de cursor:
MOV AH,2    
    MOV BH,0    
    MOV DH,0BH
    MOV DL,28H
    INT 10H


Pero no estoy segura, alguien ah manejado algo como esto?..


saludos chicos,

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #1 en: Miércoles 8 de Noviembre de 2006, 01:15 »
0
En modo texto podrias cambiar el color de fondo o de las letras escribiendo en la posicion de memoria segmento 0xB800 para adelante. Pintas de un color para seleccionar y de otro para borrar la seleccion.

Más detalles de modos graficos:
http://www.qzx.com/pc-gpe/vgabios.txt

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #2 en: Miércoles 8 de Noviembre de 2006, 01:57 »
0
Amilius, he checado el link, mil gracias.

Aunque una molestía más, no tendras algun ejemplo, por que sinceramente no acabo de entender esas funciones.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #3 en: Miércoles 8 de Noviembre de 2006, 09:23 »
0
cybergatita: ¿Que problema tenes especificamente con el codigo para posicionar el cursor? ¿Ese es tu unico problema o tambien necesitas ayuda con el color del texto/fondo? Eso no se de donde salio ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #4 en: Jueves 9 de Noviembre de 2006, 00:38 »
0
Gracias Eternal Idol:

Pues con lo del posicionamiento no tengo problemas, con lo que tengo dudas/problemita es con lo de mi menu: explico:
tengo este menu

1.- hola
2.- adios
3.- salir


Lo que  necesito hacer es seleccionar algunas de las opciones con las flechas del teclado y que cuando me posicione en alguna de esas opciones cambie de color, asi como si fuera una seleccion.

la lista que me mando Amilius es buena, pero no la entendi:(

saludos

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: - Flechas De Direccion-
« Respuesta #5 en: Jueves 9 de Noviembre de 2006, 00:57 »
0
Cita de: "cybergatita"
Necesito seleccionar cada una de las opciones pero con las flechas del teclado
Pense en la funcion de posicionamiento de cursor:
MOV AH,2   
    MOV BH,0   
    MOV DH,0BH
    MOV DL,28H
    INT 10H
 

Pero no estoy segura, alguien ah manejado algo como esto?..

si tienes que usar lo del posicionamiento del cursor, para sombrear alguna opcion tienes que hacer lo siguiente:  si la cadena "1- hola" la pones por ejemplo en la fila 09 y columna 12h con el siguiente codigo

             
Código: Text
  1.  
  2.               mov DX,0912h
  3.               mov bh,00;ubica el cursor en esa posicion
  4.               mov ah,02
  5.               int 10h
  6.               MOV DX,OFFSET opcion1;la muestra en pantalla
  7.               MOV AH,09h
  8.               INT 21H
  9.  
y supongamos que la otra opcion iria en 0B12h y asi...
para saber cual opcion sombrear tendriamos que saber donde esta el cursor al menos la fila, para eso se usa la  Int 10h, ah=03 asi:

Código: Text
  1.  
  2.               mov bh,00
  3.               mov ah,03h
  4.               int 10h
  5.  
en dh queda la fila luego se hace una comparacion, para saber en este caso si es 09h o 0Bh dependiendo del caso se sombrea una opcion, digamos que fue la primera, para sombrearla:
Código: Text
  1.  
  2.            mov CX,0912h; inicio de donde se quiere sombrear
  3.            mov DX,0917h;final de donde se quiere sombrear (longitud de la cadena)
  4.      mov BH,70h;esto pondra el fondo blanco letras negras
  5.            mov AX,0600h
  6.      int 10h
  7.            mov DX,0912h;pone el cursor en la direccion inicial
  8.            mov bh,00
  9.            mov ah,02
  10.            int 10h
  11.            MOV DX,OFFSET opcion1;la muestra en pantalla ya sombreada
  12.            MOV AH,09h
  13.            INT 21H
  14.  
ver imagen Click aqui
luego de sombreado para entrar a la opcion tambien seria de verificar donde esta el cursor, verificar que se presione ENTER y asi saltar a la rutina correspondiente
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #6 en: Jueves 9 de Noviembre de 2006, 01:28 »
0
Gracias  Tania_D

Dejame implementarlo en mi codigo, y en seguida lo posteo


Muchas gracias a todos.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #7 en: Jueves 9 de Noviembre de 2006, 02:44 »
0
Tania_D

eh implementado lo que me comentas
pero tal vez tenga un error yo, puse el atributo y todo
pero al ejecutar simplemente me muestra el menu, pero no puedo interactuar con las teclas.




 :(

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: - Flechas De Direccion-
« Respuesta #8 en: Jueves 9 de Noviembre de 2006, 18:14 »
0
Cita de: "cybergatita"
Tania_D

eh implementado lo que me comentas
pero tal vez tenga un error yo, puse el atributo y todo
pero al ejecutar simplemente me muestra el menu, pero no puedo interactuar con las teclas.




 :(
no se como seria con las flechas, porque yo la aplicacion la hice con numeros, es decir las opciones estaban numeradas, asi si presionaba 2 se sombreaba esa opcion y si se presionaba 3 se sombreaba 3 y asi...
el problema es que no conozco el codigo ascii de las teclas ¿como haces para que el programa te entienda que has seleccionado las flechas?



saludos  :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #9 en: Jueves 9 de Noviembre de 2006, 23:41 »
0
Ok, también te entendi mal, gracias por tu ayuda tania_d y buscare esa manipulacion con las flechas direccionables..



saludos

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #10 en: Sábado 11 de Noviembre de 2006, 20:28 »
0
Que tal chicos.
Con la ayuda de ustedes logre SIMULAR una seleccion, como lo muestro en la imagen adjunta. thanks tania_d

Solo que tengo dudas, necesito moverlo con las flechas de direccion , flecha arriba o flecha abajo, eh encontrado lo siguiente:
http://www.ctyme.com/intr/rb-1754.htm

dec - hx - char

17    11   DC1---> (DEVICE CONTROL 1)
18    12   DC2---> (DEVICE CONTROL 2)
19    13   DC3---> (DECIVE CONTROL 3)
20    14   DC4---> (DEVICE CONTROL 4)

Son codigos que vienen en la tabla ascii, ¿seran esas las flechas,  es la funcion e interrumpcion correcta¿ para mover esa barrita rectangular,,
salu2.  :P

HEAD   DB 'prueba seleccion $'
       DB 13,10,13,10, '$'

hi  DB 'HOLA $'
       DB 13,10,13,10,'$'

bye  DB 'ADIOS $'  
       DB 13,10,13,10,'$'

back  DB 'REGRESO $'
       DB 13,10,13,10,'$'  


.CODE

  START:
 
pageclear  ;ah es una macro borra pantalla
MOV AH,2    
MOV BH,0    
MOV DH,01H
MOV DL,15H
INT 10H
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET HEAD
MOV AH,9
INT 21H


MOV CX,0412h
MOV DX,0428h
MOV BH,70h    
MOV AX,0600h
INT 10H
MOV DX,0412h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET hi
MOV AH,9
INT 21H


MOV DX,0712h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET bye
MOV AH,9
INT 21H
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #11 en: Domingo 12 de Noviembre de 2006, 19:41 »
0
Que tal comunidad, Pues encontre lo que buscaba, se los paso para los que no sabian como yo.

****Es posible identificar las teclas especiales de flechas ,las teclas de función y las otras como Inicio, Fin, Insertar, etc.***
Estas teclas se almacenan en el buffer del teclado dos caracteres, siendo el primero el CHR(0). Para identificar estas teclas no hay más que usar en las comprobaciones CHR(0)+El carácter que tengan asignado,Los más usados:

Flecha arriba......: CHR(0)+"H"
Flecha abajo.......: CHR(0)+"P"
Flecha izquierda...: CHR(0)+"K"
Flecha derecha.....: CHR(0)+"M"

Yo compare solo la letra correspondiente y al parecer si me la tomo, Me gustaria ver si me pueden ayudar.
Necesito que si la seleccion esta en la ultima opcion "REGRESO" y presiono la flecha abajo, la seleccion regrese a a la primera opcion "HOLA" de igual manera si estuviera en la primer opcion y presionara flecha arriba.


 :P
HEAD   DB 'prueba seleccion $'
       DB 13,10,13,10, '$'

MENU1  DB 'HOLA $'
       DB 13,10,13,10,'$'

MENU2  DB 'ADIOS $'  
       DB 13,10,13,10,'$'

MENU3  DB 'REGRESO $'
       DB 13,10,13,10,'$'  


.CODE

  START:
 
cls
MOV AH,2    
MOV BH,0    
MOV DH,01H
MOV DL,15H
INT 10H

MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET HEAD
MOV AH,9
INT 21H



MOV DX,0412h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENU1
MOV AH,9
INT 21H


MOV DX,0712h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENU2
MOV AH,9
INT 21H


MOV DX,0A12h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENU3
MOV AH,9
INT 21H


mov ah,1
int 21h

cmp al,0H ; FLECHA, CODIGO, le agregue CERO
jnz FIN
firtsmenu ; es UNA MACRO donde tengo la el color de la barra

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: - Flechas De Direccion-
« Respuesta #12 en: Miércoles 15 de Noviembre de 2006, 00:10 »
0
Cita de: "cybergatita"
Yo compare solo la letra correspondiente y al parecer si me la tomo, Me gustaria ver si me pueden ayudar.
Necesito que si la seleccion esta en la ultima opcion "REGRESO" y presiono la flecha abajo, la seleccion regrese a a la primera opcion "HOLA" de igual manera si estuviera en la primer opcion y presionara flecha arriba.


Hola  :) , perdon por la tardanza  :unsure: , Pues no he revisado bien tu programa,  pero en los casos que mencionas es de hacer una comprobacion cada vez que se presiona una flecha y preguntarse si es flecha hacia abajo verificar que no se este en la ultima posicion de ser asi sombrear primera opcion y si es flecha hacia arriba verificar que no se esta en la primera posicion y si es asi sombrear la ultima (usando la Int 10h, ah=03 para leer posicion del cursor) :)  ¿cual es la parte que se te dificulta?
 

saludos  :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #13 en: Miércoles 15 de Noviembre de 2006, 01:05 »
0
Gracias tania_D



La parte que no logro entender es esta:

; CON ESTO SOMBREO LA PRIMERA OPCION
; TENGO QUE HACER CADA UNA DE ESTAS RUTINAS, PARA CADA OPCION
; DEL MENU O

     MOV CX,0412h
     MOV DX,0428h
     MOV BH,17h    
     MOV AX,0600h
     INT 10H


MOV DX,0412h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENU1
MOV AH,9
INT 21H

MOV DX,0712h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENU2
MOV AH,9
INT 21H
MOV DX,0A12h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENU3
MOV AH,9
INT 21H
MOV DX,0C12h
MOV BH,00    
MOV AH,02
INT 10h
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENU4
MOV AH,9
INT 21H

/* AQUI POSIONO EL CURSOR Y LUEGO HAGO COMPARACION?*/
mov bh,00
mov ah,03h
int 10h

/* ESPERO TECLEAR ALGUNA FLECHA*/
mov ah,1
int 21h


 cmp al,50h  ;comparo si es flecha abajo, pero si es a donde voy??
                   eh aqui la duda.

cmp al,48h  ;si es flecha arriba, pero si es a donde voy?
                  eh aqui la duda.


Saludos chica...

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: - Flechas De Direccion-
« Respuesta #14 en: Miércoles 15 de Noviembre de 2006, 01:46 »
0
despues de mostrar las opciones del menu y de sombrear inicialmente la primera opcion debes posicionar el cursor en la primera posicion, luego debes esperar a que se presione alguna tecla al presionarla verificar si es una tecla valida segun veo comparando si es 50 o 48  
Código: Text
  1.  
  2. cmp al,50h&#59;comparo si es flecha abajo
  3. jz abajo&#59;si es se va a la rutina "abajo"
  4. cmp al,48h&#59;si no es verifica si es flecha arriba
  5. jz arriba  &#59;si es se va a rutina "arriba"
  6. jmp noflecha; si la tecla no era ni flecha arriba ni flecha abajo debes irte a la rutina de esperar que se presione tecla
  7.  
  8.  
ojo por ahora no estamos considerando el ENTER para entrar a las opciones
ahora en la rutina "abajo" tienes que ver donde esta el cursor y luego comparar asi:
Código: Text
  1.  
  2. mov bh,00&#59; leer donde esta el cursor
  3. mov ah,03h;en dh queda la fila
  4. int 10h
  5. cmp dh, 04; verifica si es la fila 04 (primera opcion)
  6. jz opcion2; si es asi sombrea opcion 2
  7. cmp dh, 07;verifica si es la fila 07 (segunda opcion)
  8. jz opcion3; si es asi sombrea opcion 3
  9. cmp dh, 0Ah;verifica si es la fila 0Ah (tercera opcion)
  10. jz opcion4; si es asi sombrea opcion 4
  11. cmp dh,0Ch;verifica si es la fila 0Ch (cuarta opcion)
  12. jz  opcion1; si es asi sombrea opcion 1
  13.  
  14.  

las rutinas opcion1,opcion2, etc esta el codigo de sombreado de la opcion respectiva

para la rutina "arriba" de manera similar

espero haberme dado a entender, saludos  :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #15 en: Miércoles 15 de Noviembre de 2006, 03:03 »
0
Este.....  :unsure:  no, entendi  :(

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #16 en: Miércoles 15 de Noviembre de 2006, 03:46 »
0
lo eh implementado , lo dejo attachemnt, pero tal vez cometi errores ya que no me hace practicamente nada al correr el ejecutable
y gracias por tu ayuda tania_d
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: - Flechas De Direccion-
« Respuesta #17 en: Miércoles 15 de Noviembre de 2006, 20:51 »
0
:o pues si hay muchos errores, no lo puedo probar porque mi MASM es antiguo y las estructuras del programa son diferentes asi que no se si habra un error de estructura, pero hay varios errores en el programa, creo que no me entendiste  :P  todo lo que yo puse a la par de JZ era un salto a una etiqueta y no a una rutina proc near  :unsure:, por lo que hay mucho que corregir
los errores comienzan aqui:
Código: Text
  1. cmp al,50h;comparo si es flecha abajo
  2. CALL ABAJO
  3. jz ABAJO;si es se va a la rutina "abajo"
  4. cmp al,48h;si no es verifica si es flecha arriba
  5. CALL ARRIBA
  6. jz ARRIBA &#59;si es se va a rutina "arriba"
  7. ;jmp noflecha; si la tecla no era ni flecha arriba ni flecha abajo debes irte a la rutina de esperar que se presione tecla
  8.  
aqui hay error, porque hace la comparacion de la tecla pero no importa si es o no es siempre va a llamar a la rutina ABAJO porque hay un call

ahora aqui, en la rutina abajo:
Código: Text
  1. mov bh,00; leer donde esta el cursor  
  2.   mov ah,03h;en dh queda la fila
  3.   int 10h
  4.   call sombras
  5.   cmp dh, 04; verifica si es la fila 04 (primera opcion)
  6.   jz segundaop; si es asi sombrea opcion 2
  7.   cmp dh, 07;verifica si es la fila 07 (segunda opcion)
  8.   jz terceraop; si es asi sombrea opcion 3
  9.  

aqui despues de leer el cursor llamas a la rutina sombras donde se sobrean todas las opciones, sin importar donde este el cursor ya que llamas a esa rutina  :o y hasta  despues haces la comparacion

la rutina arriba la pusiste exactamente igual a la de abajo  :blink: y no debe ser asi, tienes que ponerla asi:

Código: Text
  1. mov bh,00; leer donde esta el cursor  
  2.   mov ah,03h;en dh queda la fila
  3.   int 10h
  4.   cmp dh, 04; verifica si es la fila 04 (primera opcion)
  5.   jz cuartaop; si es asi sombrea opcion 4
  6.   cmp dh, 07;verifica si es la fila 07 (segunda opcion)
  7.   jz primeraop; si es asi sombrea opcion1
  8.   cmp dh, 0Ah;verifica si es la fila 0Ah (tercera opcion)
  9.   jz segundaop; si es asi sombrea opcion 2
  10.   cmp dh,0Ch;verifica si es la fila 0Ch (cuarta opcion)
  11.   jz  terceraop&#59; si es asi sombrea opcion 3
  12.  
   
la rutina arriba y abajo las puedes dejar como proc near, pero la rutina sombras es mejor quitarla porque asi como esta al llamarla se sombrean todas las opciones siempre es mejor poner cada opcion de sombreado aparte como proc near.
si haces esto se debe corregir lo de JZ que debe  apuntar a una etiqueta y en esa etiqueta poner la instruccion call.
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #18 en: Jueves 16 de Noviembre de 2006, 23:50 »
0
Pues, hice lo que me dijiste tania_D (!!!espero!!!)


Te dejo un adjunto.


gracias
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: - Flechas De Direccion-
« Respuesta #19 en: Lunes 20 de Noviembre de 2006, 23:39 »
0
:unsure: aun hay errores, veamos aqui:

Código: Text
  1. MOV bh,00
  2. MOV ah,03h
  3. int 10h
  4. MOV AH,1
  5. INT 21H
  6. cmp al,50h      
  7. jz down        
  8. cmp al,48h      
  9. jz up          
  10. down:
  11.  call aba
  12.  
  13. up:
  14.  call arri
  15.  
aqui no se porque lees la posicion del cursor al inicio si debe ser solo la tecla, pero no importa el problema aca es que si son las flechas todo bien pero si es otra tecla, asi como lo has dejado revisa si es 50 no, sigue revisa si es 48 no y como no es ninguna sigue y llega a call aba o sea sale lo mismo si es flecha hacia abajo que si es otra tecla. para corregir esto debes poner un JMP etiqueta de tal manera que si no era ninguna de las dos teclas salte otravez a leer la tecla, otro problema de esta rutina es que por ejemplo se presiono tecla hacia abajo bien llega a call aba y hace lo que tiene la rutina aba al llegar al ret de la rutina el programa regresa a la sentencia que esta justo despues del call aba o sea a call arri ahi hay un gran error :o
para corregir esta parte igual con jmp ejemplo:

Código: Text
  1.  
  2.  
  3. etiqueta:
  4. MOV bh,00
  5. MOV ah,03h
  6. int 10h
  7. MOV AH,1
  8. INT 21H
  9. cmp al,50h      
  10. jz down        
  11. cmp al,48h      
  12. jz up  
  13. jmp etiqueta&#59; si no era ni flecha arriba ni abajo regrese a leer tecla otra vez        
  14. down:
  15.  call aba
  16. jmp etiqueta; regresa a esperar nueva orden despues de haber hecho la anterior
  17.  
  18. up:
  19.  call arri
  20. jmp etiqueta; regresa a esperar nueva orden despues de haber hecho la anterior
  21.  
  22.  

 :huh: aqui en esta parte:
Código: Text
  1. unoerop:
  2.   call primeraop
  3.  
  4. dosdaop:
  5.  call segundaop
  6.  
  7. terraop:
  8.  call terceraop
  9.  
  10. cuarop:
  11.   call cuartaop
  12.  
el mismo problema si llamas a call primeraop al finalizar esa rutina el programa regresa a la sentencia que esta debajo de call primeraop o sea a segundaop y asi hasta el final y como esto esta afuera de las rutinas seria hasta donde esta el fin del programa, seria mejor que metieras esto en las rutinas arriba y abajo porque tengo mis dudas  :unsure:  sobre si es posible que con un jz se pueda saltar a una etiqueta que no este dentro de la rutina proc near, lo mejor seria dejarlo asi (tanto en arri como en aba):

Código: Text
  1.  
  2. ARRI Proc near
  3. mov bh,00      
  4.  mov ah,03h    
  5.  int 10h
  6.  cmp dh,04      
  7.  jz cuarop      
  8.  cmp dh, 07    
  9.  jz unoerop    
  10.  cmp dh, 0Ah    
  11.  jz dosdaop    
  12.  cmp dh,0Dh    
  13.  jz  terraop    
  14.  
  15. unoerop:
  16.   call primeraop
  17.   jmp terminar&#59;salto necesario para que no se ejecuten las opciones de abajo
  18.  
  19. dosdaop:
  20.  call segundaop
  21.  jmp terminar&#59;salto necesario para que no se ejecuten las opciones de abajo
  22.  
  23. terraop:
  24.  call terceraop
  25.  jmp terminar;salto necesario para que no se ejecuten las opciones de abajo
  26. cuarop:
  27.   call cuartaop
  28. terminar:
  29. ret
  30. Endp ARRI
  31.  
  32.  

saludos  :hola: y espero me entiendas
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: - Flechas De Direccion-
« Respuesta #20 en: Martes 21 de Noviembre de 2006, 03:38 »
0
De antemano gracias por tus respuestas y por tu pasciencia tania_d.


Voy a corregir lo que me mencionas te seguire dando algo de lata chica:P


gracias