Programaciónenensambladordela 1/198 arquitecturaIA-32 Programación en ensamblador de la arquitectura IA-32 Universidad Carlos III de Madrid Programaciónenensambladordela arquitecturaIA-32 2/198 Copyright©2007UniversidadCarlosIIIdeMadrid Programaciónenensambladordela arquitecturaIA-32 3/198 COLABORADORES TÍTULO: REFERENCE : Programación en ensamblador de la arquitec- turaIA-32 ACCIÓN NOMBRE FECHA FIRMA ESCRITOPOR AbelardoPardo 6demayode2008 HISTORIALDEREVISIONES NÚMERO FECHA MODIFICACIONES NOMBRE Programaciónenensambladordela arquitecturaIA-32 4/198 Índice general 1. Ejecucióndeprogramasenunordenador 15 1.1. Perspectivasdeunordenador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.2. Nivelesdeabstracción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2.1. Estudiodeunprocesadoranivellenguajemáquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.3. Estructuradeunordenador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4. Definicióndeunprograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.5. Ellenguajeensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.5.1. Programaciónenlenguajeensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.5.2. Ejecucióndeunprogramaenensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.6. Ejecucióndeunprograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.8. Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2. Codificacióndelainformación 29 2.1. Lógicabinaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.1.1. Propiedadesdeunacodificaciónbinaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2. Representacióndenúmerosendiferentesbases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.2.1. Traduccióndeunnúmeroadiferentesbases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3. Codificacióndenúmerosnaturales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.4. Codificaciónenbases8y16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5. Tamañodeunacodificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.6. Codificacióndenúmerosenteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.7. Codificacióndenúmerosreales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.7.1. Desbordamientoenlarepresentaciónencomaflotante . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.7.2. ElestándarIEEE754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.8. Representacióndeconjuntosdesímbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.8.1. Codificacióndecaracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.8.2. Codificacióndeinstrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.8.3. Descripcióndeunlenguajemáquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.9. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.10.Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Programaciónenensambladordela arquitecturaIA-32 5/198 3. Almacenamientodedatosenmemoria 51 3.1. LamemoriaRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2. Operacionessobrememoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.3. Conexiónentrememoriayprocesador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4. Almacenamientodedatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.4.1. Almacenamientodebooleanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.4.2. Almacenamientodecaracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.4.3. Almacenamientodeenterosynaturales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.4.4. Almacenamientodeinstrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.4.5. Tamañodedatosenoperacionesdelecturayescritura . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.5. Almacenamientodetablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.5.1. AlmacenamientodetablasenJava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.6. Almacenamientodedireccionesdememoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.6.1. Ejemplosdeindirección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4. ArquitecturaIA-32 72 4.1. ElentornodeejecucióndelaarquitecturaIA-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.1.1. Espaciodedirecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.1.2. Registrosdepropósitogeneral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.1.3. Registrodeestadoycontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.1.4. Elregistrocontadordeprograma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.1.5. OtrosregistrosdelaarquitecturaIA-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.1.6. Estadovisibledeunprograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.2. Ciclodeejecucióndeunainstrucción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.2.1. Fasedefetch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.2.2. Fasededecodificacióninicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.2.3. Fasededecodificaciónfinal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.2.4. Fasedeejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.2.5. Fasedeescrituraderesultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.2.6. Ejecucióndeunainstrucción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.2.7. Ciclodeejecucionesenprocesadoresactuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.3. Lapila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.3.1. Instruccionesdemanejodelapila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.3.2. Elpunterodepila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.3.3. Valoresinicialesdelpunterodepila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Programaciónenensambladordela arquitecturaIA-32 6/198 5. Juegodeinstrucciones 89 5.1. Tiposdejuegosdeinstrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.2. FormatodeinstruccionesmáquinadelaarquitecturaIA-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.3. Ellenguajeensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.3.1. Formatodeinstrucciónensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 5.3.2. Descripcióndetalladadelasinstrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.3.3. Tiposdeoperandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.3.4. Elsufijodetamaño . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.4. InstruccionesmásrepresentativasdelaarquitecturaIA-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.4.1. Instruccionesdetransferenciadedatos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.4.2. Instruccionesaritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.4.2.1. Instruccionesdesumayresta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 5.4.2.2. Instruccionesdemultiplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 5.4.2.3. Instruccionesdedivisiónentera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.4.3. Instruccioneslógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.4.4. Instruccionesdedesplazamientoyrotación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.4.4.1. Instruccionesdedesplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.4.4.2. Instruccionesderotación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4.5. Instruccionesdesalto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4.6. Instruccionesdecomparaciónycomprobación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.4.7. Instruccionesdellamadayretornodesubrutina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6. Elprogramaensamblador 109 6.1. Creacióndeunprogramaejecutableenensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.2. Definicióndedatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.2.1. Definicióndebytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.2.2. Definicióndeenteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.2.3. Definicióndestrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.2.4. Definicióndeespacioenblanco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.3. Usodeetiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.4. Gestióndelapila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.5. Desarrollodeprogramasenensamblador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.6. Ejemplodeprogramaenensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Programaciónenensambladordela arquitecturaIA-32 7/198 7. ModosdeDireccionamiento 120 7.1. Notación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 7.2. ModosdeldireccionamientodelaarquitecturaIA-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 7.2.1. Modoinmediato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 7.2.2. Modoregistro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 7.2.3. Modoabsoluto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 7.2.4. Modoregistroindirecto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 7.2.5. Modoauto-incremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 7.2.6. Modoauto-decremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 7.2.7. Modobase+desplazamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 7.2.8. Modobase+índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 7.2.9. Modoíndiceescalado+desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 7.2.10. Modobase+índiceescalado+desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 7.2.11. Utilizacióndelosmodosdedireccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 7.3. Hardwareparaelcálculodeladirecciónefectiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 7.4. Resumendelosmodosdedireccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 7.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 8. Construccionesdealtonivel 141 8.1. Desarrollodeaplicacionesenmúltiplesficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 8.2. Programasenmúltiplesficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 8.3. Traduccióndeconstruccionesdealtonivelaensamblador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.3.1. Traduccióndeunif/then/else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.3.2. Traduccióndeunswitch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 8.3.3. Traduccióndeunbuclewhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 8.3.4. Traduccióndeunbuclefor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 8.4. Ejecucióndesubrutinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 8.4.1. Lasinstruccionesdellamadayretornodeunasubrutina . . . . . . . . . . . . . . . . . . . . . . . . . . 152 8.4.2. Pasodeparámetrosydevoluciónderesultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8.4.2.1. Pasodeparámetrosatravésderegistro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8.4.2.2. Pasodeparámetrosatravésdememoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 8.4.2.3. Pasodeparámetrosatravésdelapila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 8.4.2.4. Almacenamientodevariableslocalesaunasubrutina . . . . . . . . . . . . . . . . . . . . . . 157 8.5. Gestióndelbloquedeactivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 8.6. Ejemplodeevolucióndelbloquedeactivación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 8.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Programaciónenensambladordela arquitecturaIA-32 8/198 A. SubconjuntodeinstruccionesdelaarquitecturaIA-32 165 A.1. Nomenclatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 A.2. Instruccionesdemovimientodedatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 A.2.1. MOV:Movimientodedatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 A.2.2. PUSH:Instruccióndecargasobrelapila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 A.2.3. POP:Instruccióndedescargadelapila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 A.2.4. XCHG:Instruccióndeintercabmio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 A.3. Instruccionesaritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 A.3.1. ADD:Instruccióndesuma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 A.3.2. SUB:Instrucciónderesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 A.3.3. INC:Instruccióndeincremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 A.3.4. DEC:Instruccióndedecremento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 A.3.5. NEG:Instruccióndecambiodesigno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 A.3.6. MUL:Instruccióndemultiplicaciónsinsigno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 A.3.7. DIV:Instruccióndedivisiónsinsigno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 A.3.8. IMUL:Instruccióndemultiplicaciónconsigno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 A.3.9. IDIV:Instruccióndedivisiónconsigno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 A.4. Instruccioneslógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 A.4.1. AND:Instruccióndeconjunción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 A.4.2. OR:Instruccióndedisyunción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 A.4.3. XOR:Instruccióndedisyunciónexclusiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 A.4.4. NOT:Instruccióndenegación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 A.5. Instruccionesdedesplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 A.5.1. SAL/SAR:Desplazamientoaritmético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 A.5.2. SHL/SHR:Desplazamientológico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 A.5.3. RCL/RCR:Instrucciónderotaciónconacarreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 A.5.4. ROR/ROL:Instrucciónderotaciónsinacarreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 A.6. Instruccionesdesalto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 A.6.1. JMP:Instruccióndesaltoincondicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 A.6.2. Jcc:Instruccionesdesaltocondicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 A.6.3. CALL:Instruccióndellamadaasubrutina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 A.6.4. RET:Instrucciónderetornodesubrutina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 A.7. Instruccionesdecomparaciónycomprobación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 A.7.1. CMP:Instruccióndecomparación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 A.7.2. TEST:Instruccióndecomprobación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Programaciónenensambladordela arquitecturaIA-32 9/198 B. Eldepurador 182 B.1. Arranqueyparadadeldepurador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 B.2. Visualizacióndecódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 B.3. Ejecucióncontroladadeunprograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 B.4. Visualizacióndedatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 B.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 B.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 C. LicenciaCreativeCommons 194 Programaciónenensambladordela arquitecturaIA-32 10/198 Índice de figuras 1.1. Perspectivadelprogramador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.2. Perspectivadeldiseñador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3. Diferentesperspectivasdeunordenador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.4. Relaciónentrelosnivelesdeabstracción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.5. Estructuradeunordenador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.6. CreacióndeunejecutableenJava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.7. Creacióndeunejecutableapartirdeunprogramaenlenguajeensamblador . . . . . . . . . . . . . . . . . . . . 24 1.8. Introducciónelcomandoprograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.9. Copiadelejecutabledediscoamemoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.10.Ejecucióndelaprimerainstruccióndeunprograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.1. Rangodeenteroscodificadospor8bitsensignoymagnitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.2. Rangodeenteroscodificadospor8bitsencomplementoa2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.3. Estructuradelarepresentaciónbinariaencomaflotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.4. Estructuradelasinstruccionesdeual-1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.5. Formatodecodificacióndelconjuntoual-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.6. Ejemplodecodificacióndeinstrucción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.7. Estructuradelasinstruccionesdeual-2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.8. Estructuradelacorrespondenciadeual-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.9. Codificacióndelosoperandosenual-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.10.Formatodelacodificacióndeual-3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.1. EstructuradelamemoriaRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2. Operacionessobrememoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.3. Señalesqueconectanelprocesadorylamemoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4. MemoriarealyposibleenunprocesadorconarquitecturaIA-32 . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.5. Almacenamientodebooleanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.6. Almacenamientodeunstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.7. Almacenamientodeenterosenmemoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.8. Interpretacióndebytesenlittleendianybigendian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.9. Almacenamientodeinstruccionesenformatofijoyvariable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Description: