Programación en ensamblador

Page 39

39

CC-BY-SA • PID_00178132

En algunos casos es obligatorio especificar el tamaño del operando; esto se lleva a cabo utilizando los modificadores BYTE, WORD, DWORD y QWORD ante la referencia a memoria. La función del modificador es utilizar tantos bytes como indica a partir de la dirección de memoria especificada, independientemente del tamaño del tipo de dato (db, dw, dd, dq) que hayamos utilizado a la hora de definir la variable.

En los casos en los que no es obligatorio especificar el modificador, se puede utilizar para facilitar la lectura del código o modificar un acceso a memoria. Los casos en los que se debe especificar obligatoriamente el tamaño de los operandos son los siguientes: 1) Instrucciones de dos operandos en los que el primer operando es una posición de memoria y el segundo operando es uno inmediato; es necesario indicar el tamaño del operando. Ejemplo .data var1 dd 100 . text mov DWORD [var1], 0ABCh

;variable definida de 4 bytes ;se indica que la variable var1 ;es de 32 bits

La instrucción siguiente es incorrecta: mov [var1], 0ABCh

En el caso anterior, el compilador no sería capaz de averiguar cómo ha de copiar este valor a la variable [var1], aunque cuando lo hemos definido se haya especificado el tipo.

2) Instrucciones de un operando en las que el operando sea una posición de memoria. Ejemplo inc QWORD [var1] push WORD [var1]

;se indica que la posición de memoria afectada es ;de tamaño de un byte. [var1]=[var1]+1 ;se indica que ponemos 2 bytes en la pila.

3.4.2. Modos de direccionamiento Cuando un operando se encuentra en la memoria, es necesario considerar qué modo de direccionamiento utilizamos para expresar un operando en una instrucción para definir la manera de acceder a un dato concreto. A continuación, veremos los modos de direccionamiento que podemos utilizar en un programa ensamblador:

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.