Programación en ensamblador

Page 36

CC-BY-SA • PID_00178132

36

Ejemplos mov rax [vec+rsi];mueve el valor de la posición del vector vec ;indicada por rsi; es el operando fuente, en rax, ;rax es el operando destino add rax, 4 ;rax=rax+4 Operando fuente y operando destino El operando fuente especifica un valor, un registro o una dirección de memoria donde hemos de ir para buscar un dato que necesitamos para ejecutar la instrucción. El operando destino especifica un registro o una dirección de memoria donde hemos de guardar el dato que hemos obtenido al ejecutar la instrucción. El operando destino también puede actuar como operando fuente y el valor original se pierde cuando guardamos el dato obtenido al ejecutar la instrucción.

3.4.1. Tipos de operandos de las instrucciones x86-64 Operandos fuente y destino En las instrucciones con un solo operando, este se puede comportar solo como operando fuente, solo como operando destino o como operando fuente y destino. Ejemplos push rax El registro rax es un operando�fuente; la instrucción almacena el valor del operando fuente en la pila del sistema, de manera que la pila es un operando destino implícito. pop rax El registro rax se comporta como operando�destino; la instrucción almacena en rax el valor que se encuentra en la cima de la pila del sistema, de manera que la pila es un operando fuente implícito. inc rax El registro rax es a la vez operando�fuente�y�destino; la instrucción inc realiza la operación rax = rax + 1, suma el valor original de rax con 1 y vuelve a guardar el resultado final en rax.

En las instrucciones con dos operandos, el primer operando se puede comportar como operando fuente y/o destino, mientras que el segundo operando se comporta siempre como operando fuente. Ejemplos mov rax, rbx El primer operando se comporta solo como operando destino; la instrucción almacena el valor indicado por el segundo operando en el primer operando (rax = rbx). add rax, 4 El primer operando se comporta al mismo tiempo como operando fuente y destino; la instrucción add lleva a cabo la operación rax = rax + 4, suma el valor original de rax con el valor 4, vuelve a almacenar el resultado en rax, y se pierde el valor que teníamos originalmente.

Programación en ensamblador (x86-64)


Turn static files into dynamic content formats.

Create a flipbook

Articles inside

6.8. IDIV: división entera con signo

2min
pages 98-99

5.7.3. Retorno al sistema operativo (exit

0
page 90

6. Anexo: manual básico del juego de instrucciones

1min
page 91

5.6. Controlar la consola

1min
page 85

5.7. Funciones del sistema operativo (system calls

1min
page 86

5.7.1. Lectura de una cadena de caracteres desde el teclado

1min
page 87

5.4.4. Llamadas a subrutinas y paso de parámetros desde C

6min
pages 78-82

4.2.6. Apuntadores

1min
page 56

4.2.4. Control de flujo

3min
pages 51-53

4.2.5. Vectores

2min
pages 54-55

4.2.3. Operadores

1min
page 50

4.1.1. Generación de un programa ejecutable

1min
page 47

4.2.2. Variables

1min
page 49

3.4.2. Modos de direccionamiento

7min
pages 39-42

3.4.3. Tipos de instrucciones

3min
pages 43-45

3.4.1. Tipos de operandos de las instrucciones x86-64

5min
pages 36-38

3.2.3. Definición de otros elementos

2min
pages 31-32

2. Lenguajes de programación

1min
page 22

1.1.2. Modo heredado de 16 y 32 bits

1min
page 14

1.2.1. Organización de la memoria

1min
pages 16-17

2.1. Entorno de trabajo

2min
pages 23-24

1.2.2. Registros

5min
pages 18-21

Objetivos

0
pages 9-10

3.2.2. Definición de variables

5min
pages 27-30

Introducción

2min
pages 7-8
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.