PDF de programación - Programación en ensamblador (x86-64)

Imágen de pdf Programación en ensamblador (x86-64)

Programación en ensamblador (x86-64)gráfica de visualizaciones

Actualizado el 12 de Mayo del 2021 (Publicado el 12 de Enero del 2020)
1.502 visualizaciones desde el 12 de Enero del 2020
857,2 KB
126 paginas
Creado hace 12a (05/09/2011)
Programación
en ensamblador
(x86-64)


Miquel Albert Orenga
Gerard Enrique Manonellas

PID_00178132

CC-BY-SA • PID_00178132

Programación en ensamblador (x86-64)

Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– a una licencia de
Reconocimiento-Compartir igual (BY-SA) v.3.0 España de Creative Commons. Se puede modificar la obra, reproducirla, distribuirla
o comunicarla públicamente siempre que se cite el autor y la fuente (FUOC. Fundació per a la Universitat Oberta de Catalunya), y
siempre que la obra derivada quede sujeta a la misma licencia que el material original. La licencia completa se puede consultar en:
http://creativecommons.org/licenses/by-sa/3.0/es/legalcode.ca

CC-BY-SA • PID_00178132

Índice

Programación en ensamblador (x86-64)


Introducción...............................................................................................

Objetivos.......................................................................................................

1. Arquitectura del computador........................................................
1.1. Modos de operación ...................................................................
1.1.1. Modo extendido de 64 bits ...........................................
1.1.2. Modo heredado de 16 y 32 bits ....................................
1.1.3.
El modo de gestión de sistema ......................................
El modo de 64 bits .....................................................................
1.2.1. Organización de la memoria .........................................
1.2.2.
Registros .........................................................................

1.2.


2. Lenguajes de programación............................................................
Entorno de trabajo ......................................................................

2.1.


3. El lenguaje de ensamblador para la arquitectura x86-64.......
Estructura de un programa en ensamblador ..............................
3.1.
3.2. Directivas .....................................................................................
3.2.1. Definición de constantes ...............................................
3.2.2. Definición de variables ..................................................
3.2.3. Definición de otros elementos ......................................
Formato de las instrucciones ......................................................
3.3.1.
Etiquetas .........................................................................
Juego de instrucciones y modos de direccionamiento ...............
3.4.1.
Tipos de operandos de las instrucciones x86-64 ...........
3.4.2. Modos de direccionamiento ..........................................
3.4.3.
Tipos de instrucciones ...................................................

3.3.

3.4.


4.

4.2.

Introducción al lenguaje C..............................................................
4.1.
Estructura de un programa en C ................................................
4.1.1. Generación de un programa ejecutable ........................
Elementos de un programa en C ................................................
4.2.1. Directivas .......................................................................
4.2.2. Variables .........................................................................
4.2.3. Operadores .....................................................................
4.2.4. Control de flujo .............................................................
4.2.5. Vectores ..........................................................................
4.2.6. Apuntadores ...................................................................
Funciones .......................................................................
4.2.7.
4.2.8.
Funciones de E/S ...........................................................

7

9

11
11
13
14
15
15
16
18

22
23

25
25
26
26
27
31
33
34
35
36
39
43

46
46
47
48
48
49
50
51
54
56
57
58

CC-BY-SA • PID_00178132

Programación en ensamblador (x86-64)


5. Conceptos de programación en ensamblador y C.....................
5.1. Acceso a datos .............................................................................
Estructuras de datos .......................................................
5.1.1.
5.1.2. Gestión de la pila ..........................................................
5.2. Operaciones aritméticas ..............................................................
5.3. Control de flujo ..........................................................................
Estructura if.....................................................................
5.3.1.
Estructura if-else..............................................................
5.3.2.
Estructura while...............................................................
5.3.3.
Estructura do-while..........................................................
5.3.4.
5.3.5.
Estructura for...................................................................
Subrutinas y paso de parámetros ................................................
5.4.1. Definición de subrutinas en ensamblador ....................
Llamada y retorno de subrutina ....................................
5.4.2.
Paso de parámetros a la subrutina y retorno de
5.4.3.
resultados .......................................................................
5.4.4.
Llamadas a subrutinas y paso de parámetros desde C ...
Entrada/salida ..............................................................................
5.5.1.
E/S programada ..............................................................
5.6. Controlar la consola ...................................................................
Funciones del sistema operativo (system calls) ...........................
5.7.
Lectura de una cadena de caracteres desde el teclado ...
5.7.1.
5.7.2.
Escritura de una cadena de caracteres por pantalla .......
Retorno al sistema operativo (exit) ................................
5.7.3.

5.4.

5.5.


6. Anexo: manual básico del juego de instrucciones.....................
6.1. ADC: suma aritmética con bit de transporte ..............................
6.2. ADD: suma aritmética .................................................................
6.3. AND: Y lógica ..............................................................................
6.4. CALL: llamada a subrutina .........................................................
6.5. CMP: comparación aritmética ....................................................
6.6. DEC: decrementa el operando ....................................................
6.7. DIV: división entera sin signo ....................................................
IDIV: división entera con signo ..................................................
6.8.
IMUL: multiplicación entera con signo ......................................
6.9.
6.9.1.
IMUL fuente: un operando explícito ............................
IMUL destino, fuente: dos operandos explícitos ...........
6.9.2.
6.10. IN: lectura de un puerto de entrada/salida .................................
6.11. INC: incrementa el operando .....................................................
6.12. INT: llamada a una interrupción software ..................................
6.13. IRET: retorno de interrupción .....................................................
6.14. Jxx: salto condicional .................................................................
6.15. JMP: salto incondicional .............................................................
6.16. LOOP: bucle hasta RCX=0 ..........................................................
6.17. MOV: transferir un dato .............................................................
6.18. MUL: multiplicación entera sin signo ........................................

61
61
63
64
66
67
67
68
69
70
70
71
71
72

73
78
83
83
85
86
87
88
90

91
92
93
94
95
96
97
97
98
100
100
101
102
102
103
104
105
106
107
107
108

CC-BY-SA • PID_00178132

Programación en ensamblador (x86-64)

6.19. NEG: negación aritmética en complemento a 2 .........................
6.20. NOT: negación lógica (negación en complemento a 1) ..............
6.21. OUT: escritura en un puerto de entrada/salida ...........................
6.22. OR: o lógica .................................................................................
6.23. POP: extraer el valor de la cima de la pila ..................................
6.24. PUSH: introducir un valor en la pila ..........................................
6.25. RET: retorno de subrutina ...........................................................
6.26. ROL: rotación a la izquierda .......................................................
6.27. ROR: rotación a la derecha .........................................................
6.28. SAL: desplazamiento aritmético (o lógico) a la izquierda ...........
6.29. SAR: desplazamiento aritmético a la derecha .............................
6.30. SBB: resta con transporte (borrow) ..............................................
6.31. SHL: desplazamiento lógico a la izquierda .................................
6.32. SHR: desplazamiento lógico a la derecha ...................................
6.33. SUB: resta sin transporte .............................................................
6.34. TEST: comparación lógica ...........................................................
6.35. XCHG: intercambio de operandos .............................................
6.36. XOR: o exclusiva .........................................................................

109
110
111
112
113
114
115
116
117
118
119
120
121
121
122
123
124
125

CC-BY-SA • PID_00178132

Introducción

7

Programación en ensamblador (x86-64)

En este módulo nos centraremos en la programación de bajo nivel con el fin
de conocer las especificaciones más relevantes de una arquitectura real con-
creta. En nuestro caso se trata de la arquitectura x86-64 (también denominada
AMD64 o Intel 64).

El lengu
  • Links de descarga
http://lwp-l.com/pdf17145

Comentarios de: Programación en ensamblador (x86-64) (1)

12 de Julio del 2023
estrellaestrellaestrellaestrellaestrella
El link de descarga me envía a un blog donde hablan de cosas de Apple, no entiendo
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad