comparacion de variables con numeros en ASM 8086

Iniciado por SENKELLY, 31 Julio 2015, 05:05 AM

0 Miembros y 1 Visitante están viendo este tema.

SENKELLY

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!

DarK_FirefoX

#1
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:

CitarREG, 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

SENKELLY

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