Foro de elhacker.net

Foros Generales => Dudas Generales => Mensaje iniciado por: SENKELLY en 31 Julio 2015, 05:05 am



Título: comparacion de variables con numeros en ASM 8086
Publicado por: SENKELLY en 31 Julio 2015, 05:05 am
buenas, disculpen la molestia, la cosa es que tengo una duda. yo a travez del teclado cargo una varible de tipo byte, luego yo quiero comparar esa variable con cierto numeros, para saber si es mayor, si es menor y asi. El programa consiste en que a travez de teclado escribes las horas que duraste en el estacionamiento, luego se debe calcular el monto total, o sea lo que el cliente debe pagar y mostrar el vuelto. ejm. si el cliente debe pagar 20,1, debe introducir un billete de 50, si gasto 150, debo restar con 200.

no tengo problemas es la primera parte, o sea, en calular el monto a pagar, ni en restar, el problema es en la comparacion. Como debo saber que fue lo que gasto, para asi poder restar, tengo que comparar. Mi duda es, yo puedo hace esto??? y se haria de manera correcta??

Ejm:

MONTO    DB      31H,32H,34H
.
.
.
.
CMP     "134",MONTO
JE           .....   

etc. gracias por su ayuda!


Título: Re: comparacion de variables con numeros en ASM 8086
Publicado por: DarK_FirefoX en 31 Julio 2015, 16:21 pm
Primero:

¿Eso te compiló? ¿No te mostró ningún error de compilación?
¿Por qué utilizas las comillas en el valor 134 a la hora de comprobar?

Ahora, ten en cuenta que la instrucción CMP recibe los parámetros de las formas:

Citar
REG, memory
memory, REG
REG, REG
memory, inmediate
REG, inmediate

Por lo tanto creo que deberías poner el 134 segundo la hora de comprobar.

Por otro lado, ¿tu vas a comprobar solo con el primer valor de monto? Porque si quieres comprobar con los otros valores, debes obtener el offset (utilizando "offset" o la instrucción LEA) de la variable e ir incrementando para cambiar de posición en memoria.

Espero haberte podido ayudar

Salu2s


Título: Re: comparacion de variables con numeros en ASM 8086
Publicado por: SENKELLY en 1 Agosto 2015, 03:10 am
tenia un error, es que monto es una tabla, que puede llegar a tener hasta 7 bytes, pero estan en ASCII, por eso colocaba las comillas, la otra opcion que pense fue en comparar con cadena, pero me parecio complicado, mas, porque nunca vi que de una cmparacion de cadena pudiera preguntar si era mayor o igual.
Lo que solucioné, fue preguntar por ciertos bytes. Cualquier dudita vuelvo a preguntar! GRACIAS!! :D