Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: criskapunk en 8 Febrero 2012, 14:32 pm



Título: [HLA] - Error de comprensión
Publicado por: criskapunk en 8 Febrero 2012, 14:32 pm
Buenas,

Tengo una duda bastante boluda, pero prefiero preguntarlo. Estoy leyendo Art of Assembly y cuando habla de valores booleanos dice lo siguiente:

Citar
Furthermore, as long you ensure that your boolean variables only contain zero and one, you can use de 80x86 AND, OR, XOR and NOT instructions...

Que las variables booleanas solamente contengan ceros y unos? Según tengo entendido esos son los ÚNICOS valores que pueden tener. Es un error del manual o me estoy equivocando en algo?

Un saludo y disculpas por semejante pregunta.


Título: Re: [HLA] - Error de comprensión
Publicado por: Eternal Idol en 8 Febrero 2012, 15:32 pm
La minima unidad a la que podes acceder atomicamente es un byte, supongo que se refiere entonces a eso, mientras te asegures que en tu byte solo hay unos o ceros ...


Título: Re: [HLA] - Error de comprensión
Publicado por: criskapunk en 8 Febrero 2012, 16:46 pm
Que el valor almacenado dentro del byte sea únicamente cero o uno? Si es una variable booleana, únicamente no puede tener esos valores?

Creo que me estoy complicando mucho con algo simple :P

Gracias Eternal, un saludo.


Título: Re: [HLA] - Error de comprensión
Publicado por: Eternal Idol en 8 Febrero 2012, 16:52 pm
¿Que es una variable? Un espacio en memoria ... tal vez HLA permite definir variables de un tipo llamado boolean y asignarle valores mayores a 1 (por la razon que te di antes, minimo ocupa un byte).


Título: Re: [HLA] - Error de comprensión
Publicado por: _Enko en 8 Febrero 2012, 17:49 pm
El bit es lo unico que puede tener como valor 1 o 0.
Un byte almacena 8 bits en x86. Por eso puede tener valores de 0 a 255.

Normalmente, si es 0 es FALSE.
Si es cualquier otro valor, TRUE. Es decir, TRUE == not FALSE.
( por ejemplo 5 seria true)


Esta muy sacado de contexto, habria que leer el texto completo para ver a que se referia.


Título: Re: [HLA] - Error de comprensión
Publicado por: criskapunk en 10 Febrero 2012, 01:16 am
El tema está en que HLA usa 0 para false y 1 para true, no otros valores:

Citar
Internally, HLA represents the value true using the numeric value one; HLA represents false using the value zero. Most programs treat zero as false and anything else as true, so HLA’s representations for true and false should prove sufficient.

Entonces por eso me parece raro que diga que te asegures que en el byte solo haya uno y cero.

Edit:
Se podría ver que valor en binario tienen las variables booleanas en tiempo de ejecución? Como lo podría hacer?
Según el texto, únicamente podrían valer 00000000 o 00000001, no?

Edit 2:
El texto que habla sobre los valores booleanos es el siguiente:

:http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/www.artofasm.com/Windows/HTML/HelloWorlda2.html#998344

Y ahí me surgió otra duda, porque al principio dice que HLA usa 0 para false y 1 para true, sin embargo al final dice lo siguiente:

Citar
This routine prints the text "true" or "false" depending upon the value of the boolean parameter ( zero is false, anything else is true).

Cero es falso y todo lo demás verdadero? Pero si sólo puedo usar los valores true y false :huh: En el siguiente código si pongo cualquier otro valor que no sea verdadero o falso tira un error:

Código
  1. program prueba3;
  2.  
  3. // Bibliotecas
  4. #include("stdlib.hhf");
  5.  
  6. // Variables
  7. static
  8. bool:boolean:=true;
  9.  
  10. begin prueba3;
  11.  
  12. stdout.put("El valor de bool es: ", bool, nl);
  13.  
  14. end prueba3;

Un saludo y disculpas nuevamente.


Título: Re: [HLA] - Error de comprensión
Publicado por: _Enko en 10 Febrero 2012, 16:41 pm
Sinceramente, hasta ahí tenia alguna idea.

Pocas ganas de tratar de entender un lenguaje que es una mezcolanza entre Pascal, C y Asm.
No le veo utilidad. C con inline assembly me parece una opción mejor.
Que va, Pascal con Inline assembly me sigue pareciendo una  mejor alternativa.

Me imagino que stdout.put debe ser parte de una libreria interna de hla, de manera que acepta solo 1 o 0 para booleanos, otro valor y emite un error.
Si quieres saltearte eso, usa el stdout de la winapi o de c runtime que es mas sencillo.


Título: Re: [HLA] - Error de comprensión
Publicado por: criskapunk en 11 Febrero 2012, 04:12 am
Buenas _Enko,
Estoy tratando de aprender HLA porque es el lenguaje que explica en el libro Art of Assembly (Por lo que vi en internet, es de los mejores libros para aprender asm), y si, como bien decís, stdout.put forma parte de la biblioteca stdlib.hhf (La biblioteca estándar de HLA).
El problema no creo que sea dicha función, ya que lo único que hace es mostrar el texto en pantalla con la correspondiente constante booleana (true o false).

Un saludo y gracias.


Título: Re: [HLA] - Error de comprensión
Publicado por: _Enko en 11 Febrero 2012, 20:50 pm
Citar
Por lo que vi en internet, es de los mejores libros para aprender asm),
No, definitivamente no. Mejor revisa la sección de Libros y Entry Point de este subforo.

Demas decir que su sintaxis se aleja de cualquiera de los ensambladores BUENOS del mercado como masm, fasm, nasm (mh... tasm32?).

masm está hiper documentado y es el ensamblador mas usado para windows.
Si quieres programar para otros OS ademas de windows, fasm o masm.

Citar
(true o false).
ya creo que habia quedado que guarda 1 o 0.
Habria que depurar esa funcion, pero se me hace que es algo asi:
Código:
if var=1
   print("true")
elseif var=0
   print("false")
else
   exception
endif


Saludos.


Título: Re: [HLA] - Error de comprensión
Publicado por: criskapunk en 12 Febrero 2012, 17:05 pm
Pero la duda que yo tengo no es sobre la función en si, sino sobre los valores que tienen las variables booleanas, como expliqué en el primer mensaje.

No, definitivamente no. Mejor revisa la sección de Libros y Entry Point de este subforo.

Entry point (http://foro.elhacker.net/asm/entry_point-t256455.0.html)

Citar
The Art of Assembly Language: Uno de los libros mas recomendados para aprender assembly.

Un saludo.


Título: Re: [HLA] - Error de comprensión
Publicado por: Eternal Idol en 12 Febrero 2012, 17:28 pm
Pero no dice que tomes la edicion de HLA ...


Título: Re: [HLA] - Error de comprensión
Publicado por: criskapunk en 12 Febrero 2012, 17:33 pm
Y qué otra edición del libro hay? La única que encontré fue la de HLA.


Título: Re: [HLA] - Error de comprensión
Publicado por: Eternal Idol en 12 Febrero 2012, 17:54 pm
La mas vieja para MS-DOS (y calcula que el otro hilo tiene casi 3 años).

En fin, esta pregunta es sobre HLA y no ASM, pregunta aca si todavia te interesa:
http://tech.groups.yahoo.com/group/aoaprogramming/