NASM

From Movaxes

(Difference between revisions)
Line 1: Line 1:
-
La razón por la que escogí NASM es porque usa la sintaxis de Intel que es menos complicada que la de AT&T y es mejor para aprender, mas adelante pondré algunos tutoriales sobre las diferencias entre las dos sintaxis.
+
La razón por la que escogí NASM es porque usa la sintaxis de Intel que es menos complicada que la de AT&T y es mejor para aprender, mas adelante pondré algunos tutoriales sobre las diferencias entre las dos sintaxis. Claro que el GAS en GNU/Linux es excelente y te enseña a entender todo lo que haces, pero en nuestro caso empezaremos con NASM y luego al programar en Linux usaremos el GAS que se lleva muy bien con el GCC y el G++ (útil para sistemas operativos)
-
 
+
-
Los tutoriales sobre programación de Sistemas Operativos estarán escritos para ser compilados en NASM.
+
Algunas cosas que debes tener en cuenta es NASM:
Algunas cosas que debes tener en cuenta es NASM:
-
Diferencia entre mayúsculas y minúsculas, así que no es lo mismo '''foo''' que '''FOO''' o que '''Foo'''.
+
*Diferencia entre mayúsculas y minúsculas, así que no es lo mismo '''foo''' que '''FOO''' o que '''Foo'''.
-
----
+
*En NASM siempre que quieras acceder al ''contenido'' de una locación de la memoria debes encerrar en '''[]'''.
-
En NASM siempre que quieras acceder al ''contenido'' de una locación de la memoria debes encerrar en '''[]'''.
+
*Si una línea es demasiado larga puedes seguir en la de abajo usando '''\''' que le indica a NASM que la línea de abajo es parte de la misma.
-
----
+
 
-
Si una línea es demasiado larga puedes seguir en la de abajo usando '''\''' que le indica a NASM que la línea de abajo es parte de la misma.
+
-
----
+
Otra cosa muy útil es que si te confundes y pones algo como '''loadsb''' cuando lo correcto es '''lodsb''' NASM piensa que estás declarando un label:
Otra cosa muy útil es que si te confundes y pones algo como '''loadsb''' cuando lo correcto es '''lodsb''' NASM piensa que estás declarando un label:
<pre>
<pre>
loadsb
loadsb
</pre>
</pre>
 +
Nasm no se dará cuenta de tu erro y pensará que es un label, me ha pasado y es difícil encontrar el error. Lo que puedes hacer es agregar '''-w+orphan-labels''' cuando compiles, así:
Nasm no se dará cuenta de tu erro y pensará que es un label, me ha pasado y es difícil encontrar el error. Lo que puedes hacer es agregar '''-w+orphan-labels''' cuando compiles, así:
 +
<pre>
<pre>
nasm -w+orphan-labels -o boot boot2.asm
nasm -w+orphan-labels -o boot boot2.asm
</pre>
</pre>
 +
 +
Eso te salvará de errores.

Revision as of 16:26, 12 March 2007

La razón por la que escogí NASM es porque usa la sintaxis de Intel que es menos complicada que la de AT&T y es mejor para aprender, mas adelante pondré algunos tutoriales sobre las diferencias entre las dos sintaxis. Claro que el GAS en GNU/Linux es excelente y te enseña a entender todo lo que haces, pero en nuestro caso empezaremos con NASM y luego al programar en Linux usaremos el GAS que se lleva muy bien con el GCC y el G++ (útil para sistemas operativos)

Algunas cosas que debes tener en cuenta es NASM:

  • Diferencia entre mayúsculas y minúsculas, así que no es lo mismo foo que FOO o que Foo.
  • En NASM siempre que quieras acceder al contenido de una locación de la memoria debes encerrar en [].
  • Si una línea es demasiado larga puedes seguir en la de abajo usando \ que le indica a NASM que la línea de abajo es parte de la misma.

Otra cosa muy útil es que si te confundes y pones algo como loadsb cuando lo correcto es lodsb NASM piensa que estás declarando un label:

loadsb

Nasm no se dará cuenta de tu erro y pensará que es un label, me ha pasado y es difícil encontrar el error. Lo que puedes hacer es agregar -w+orphan-labels cuando compiles, así:

nasm -w+orphan-labels -o boot boot2.asm

Eso te salvará de errores.

Personal tools