NASM
From Movaxes
Line 7: | Line 7: | ||
En NASM siempre que quieras acceder al ''contenido'' de una locación de la memoria debes encerrar en '''[]'''.<br> | En NASM siempre que quieras acceder al ''contenido'' de una locación de la memoria debes encerrar en '''[]'''.<br> | ||
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.<br> | 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.<br> | ||
+ | |||
+ | 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> | ||
+ | loadsb | ||
+ | </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í: | ||
+ | <pre> | ||
+ | nasm -w+orphan-labels -o boot boot2.asm | ||
+ | </pre> |
Revision as of 20:28, 9 February 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.
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 es que 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