Está en la página 1de 1

Operaciones involucradas en el uso de subrutinas: S,-R1 'Su*rutina 5ue llama(

1 2 3 12 13 1. )alva! !e"ist!os /0ea1, 0ec1, 0ed12 8aso de pa!-met!os 7lamada a )45.2 .eco"e! !esultado ,limina! pa!-met!os .estau!a! !e"ist!os /0ed1, 0ec1, 0ea12

S,-R2 'Su*rutina llamada(


. / 0 ,stablece! enlace din-mico .ese!va! espacio pa!a va!iables locales )alva! !e"ist!os /0eb1, 0esi, 0edi2 3 +di"o de )452 1 2 3 14 11 6evolve! !esultado .estau!a! !e"ist!os /0edi, 0esi, 0eb12 7ibe!a! espacio de va!iables locales 6es*ace! enlace din-mico .eto!no

NOTA: La numeracin indica el orden cronolgico en el que se ejecutan las operaciones.

Instrucciones bsicas de IA32:


/* Copiar contenidos: op2 = op1 */
movl op1, op2 movw op1, op2 movb op1, op2 addl op1, op2 addw op1, op2 addb op1, op2 subl op1, op2 subw op1, op2 subb op1, op2 inc[b|w|l] dec[b|w|l] imull op1, op2 imull op1, op2, op# imulw op1, op2 imulw op1, op2, op# /* op2, op1 de 4 bytes */ /* op2, op1 de 2 bytes */ /* op2, op1 de 1 byte */ /* op2, op1 de 4 bytes */ /* op2, op1 de 2 bytes */ /* op2, op1 de 1 byte */ /* op2, op1 de 4 bytes */ /* op2, op1 de 2 bytes */ /* op2, op1 de 1 byte

/* Suma: op2 = op2 + op1 */

/* Resta: op2 = op2 - op1 */


*/

/* Incremento: op1 = op1 + 1

Decremento: op1 = op1 - 1 */

/* op1 = op1 + 1 con op1 de 1, 2 4 bytes */ /* op1 = op1 -1 con op1 de 1, 2 4 bytes */

/* Producto: op2 = op2 * op1

op3 = op2 * op1*/

/* op2, op1 de 4 bytes op2 es !e"ist!o */


/* op#, op2, op1 de 4 bytes, op1 es inmediato, */ /* op2 es memo!ia o !e"ist!o y op# es !e"ist!o */ /* op2, op1 de 2 bytes, op2 es !e"ist!o /* op#, op2, op1 de 2 bytes, op1 es inmediato, */ /* op2 es memo!ia o !e"ist!o y op# es !e"ist!o */

/* Salto incondicional */
$mp eti%ueta /* salto a eti%ueta */

/* Comparacin: op2 - op1


cmpl op1, op2 cmpw op1, op2 cmpb op1, op2 $e $ne $" $"e $l $le eti%ueta eti%ueta eti%ueta eti%ueta eti%ueta eti%ueta

slo modi!ica re"istro de !la"s */

/* op2, op1 de 4 bytes */ /* op2, op1 de 2 bytes */ /* op2, op1 de 1 byte */ /* /* /* /* /* /* salto salto salto salto salto salto a a a a a a eti%ueta eti%ueta eti%ueta eti%ueta eti%ueta eti%ueta si si si si si si op1 op1 op2 op2 op2 op2 == op2 &= op2 ' op1 '= op1 ( op1 (= op1 */ */ */ */ */ */

/* Salto condicional se"#n $alores del re"istro de !la"s */

/* Con$ersin de tipo: op2 = %&tSi"no'op1( */


movsbl op1, op2 movsbw op1, op2 movswl op1, op2 call eti%ueta !et
/* op2 de 4 bytes, op1 de 1 byte /* op2 de 2 bytes, op1 de 1 byte /* op2 de 4 bytes, op1 de 2 byte op2 es !e"ist!o */ op2 es !e"ist!o */ op2 es !e"ist!o */

/* )estin de su*rutinas */
/* )alto a eti%ueta y "ua!da en pila la di!eccin de !eto!no */ /* )aca de la pila la di!eccin de !eto!no y e$ecuta la inst!uccin %ue se encuent!a en la di!eccin de !eto!no */

/* Instrucciones para el mane+o de la pila */


pus*[w|l] op1 pop[w|l] op1
/* +opia el ope!ando op1 en la cima de la pila op1 de 2 4 bytes */ /* +opia en el ope!ando op1 lo %ue se encuent!a en la cima de la pila op1 de 2 4 bytes */

También podría gustarte