Documente Academic
Documente Profesional
Documente Cultură
htm
1 de 7 12/05/2009 15:52
EL JUEGO DE INSTRUCCIONES DEL X86 http://www.terra.es/personal/guillet/juego.htm
código que existe por tantos nop's como bytes queremos eliminar.
¿Qué es la pila?
Ahora que sabemos como guardar un dato determinado usando los registros,
nos damos cuenta de que en ocasiones necesitaremos guardar mas datos
que registros tenemos. ¿Como solucionamos esto? pues con el uso de la
pila. Supongamos que debemos de guardar 10 números y solo disponemos
de 4 registros de uso general, la solución es hacer los siguiente:
.... así hasta terminar de descargar nuestros datos. ¿Donde se han guardado?
pues en SS:SP.
Para recuperar lo introducido en la pila, hay que saber que siempre sale
primero el último dato que entra, este es el motivo de que se le llame pila, se
apilan los datos. Imagina que amontonas platos uno encima de otro... para
sacar el primer plato que has puesto debes de sacarlos TODOS. Este es el
concepto de la pila.
Bien... Ya hemos visto que son los registro, ahora vamos a ver como los
guardamos en la pila y como los recuperamos de ella...
Instrucciones de salto
Si has programado alguna vez en cualquier Básic, sabrás que las instrucciones de salto
tales como goto y gosub son la madre de cualquier programa. En ensamblador es lo
mismo, solo que tenemos muchisimas más posibilidades.
JMP DIRECCION.... <= Hace que el programa salte a dirección. Sería como el goto del
Básic.
CALL DIRECCION. <= Hace que el programa salte a dirección para ejecutar un
fragmento de código y cuando termina retorna a la siguiente instrucción despues de call
con RET. Sería como el gosub del Básic.
2 de 7 12/05/2009 15:52
EL JUEGO DE INSTRUCCIONES DEL X86 http://www.terra.es/personal/guillet/juego.htm
Instrucción nula
Instrucciones aritméticas
Hay muchas instrucciones que nos permiten sumar, restar, multiplicar, dividir
etc. pero solo mencionaré las de uso mas frecuente.
Instrucciones de bucle
Si necesitamos repetir un fragmento de código cualquier cantidad de veces
usaremos los bucles que son como los for-next del Básic.
3 de 7 12/05/2009 15:52
EL JUEGO DE INSTRUCCIONES DEL X86 http://www.terra.es/personal/guillet/juego.htm
MOV DX , NUMERO_DE_PUERTO
MOV AX , NUMERO_A_ENVIAR
OUT DX , AX
MOV DX , NUMERO_DE_PUERTO
IN AX , DX
4 de 7 12/05/2009 15:52
EL JUEGO DE INSTRUCCIONES DEL X86 http://www.terra.es/personal/guillet/juego.htm
5 de 7 12/05/2009 15:52
EL JUEGO DE INSTRUCCIONES DEL X86 http://www.terra.es/personal/guillet/juego.htm
6 de 7 12/05/2009 15:52
EL JUEGO DE INSTRUCCIONES DEL X86 http://www.terra.es/personal/guillet/juego.htm
7 de 7 12/05/2009 15:52