You are on page 1of 26

Tema 3.

Lenguaje mquina y lenguaje ensamblador

Arquitectura de
Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

ndice

2 / 51
52

z
z
z
z
z

Introduccin
Juego de instrucciones
Estructura de un programa ensamblador del P i80x86/88
Modos de direccionamiento
Ejemplo de hardware real: P i80x86/88
Segmentacin de memoria en P i80x86/88
Modos de direccionamiento en el P i80x86/88
Formato de instrucciones:
Ejemplos de instrucciones
Formato de instrucciones en P i80x86/88
Bibliografa

Arquitectura de Computadores I

Introduccin (I)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Instruccin:
z Operacin expresada mediante la codificacin binaria de
cadenas de 1's y 0's. Se le denomina lenguaje mquina
z

El lenguaje mquina es distinto para cada computador. Excepto


cuando existe compatibilidad entre familias

Repertorio de instrucciones o juego de instrucciones:


z Conjunto de rdenes que puede ejecutar un computador
Lenguaje ensamblador:
z Juego de instrucciones expresado con mnemnicos

3 / 51
52

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Introduccin (II)

4 / 51
52

Programa
Consiste en un conjunto ordenado de instrucciones que resuelve una
determinada tarea del computador

Secuencia bsica de ejecucin de una instruccin:


Lectura de memoria de la instruccin
Interpretacin de la instruccin (por la unidad de control)
Ejecucin de la instruccin (bajo las seales generadas por la
unidad de control)
Actualizacin del contador de programa

Las instrucciones deben expresar:


El tipo de operacin a realizar
El valor o la posicin donde se hallan los operandos
El lugar donde se tiene que depositar el resultado

Las instrucciones se pueden clasificar segn:


El juego de instrucciones: operaciones posibles y
determinacin de la siguiente instruccin a ejecutar
El modo de direccionamiento: ubicacin de los operandos
Formato de las instrucciones: codificacin en binario de la informacin
Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (I)


z

El campo que contiene el cdigo de operacin (CO) indica a la unidad


de control (UC) la operacin lgica o aritmtica que tiene que realizar
la ALU

El juego de instrucciones debe ser:


z Capaz de realizar una tarea computable en tiempo finito
z Eficaz (alta velocidad de clculo)
Tipos de instrucciones u operaciones:
z Instrucciones de transferencia
z Instrucciones aritmticas y lgicas
z Instrucciones de bifurcacin (saltos)
z Instrucciones de comparacin y de bit
z Instrucciones de desplazamiento
z Instrucciones de entrada/salida
z Instrucciones de control

5 / 51
52

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (II)


Instrucciones de transferencia (I)

6 / 51
52

z
z
z
z

Copian en el operando destino la informacin del operando fuente


sin modificar ste ltimo
Especficamente, mueven informacin entre registros y posiciones de
memoria o puertos de entrada/salida
No modifican el estado de los flags
Generalmente transfieren palabras pero pueden mover fracciones
de ellas o bloques enteros

Las ms frecuentes son (8088/80x86):


MOV
transfiere el operando fuente al destino
PUSH
transfiere el operando fuente a la pila
POP
transfiere el ltimo dato de la pila al operando destino

Arquitectura de Computadores I

Juego de instrucciones (III)


Instrucciones de transferencia (II) PUSH y POP

Las instrucciones PUSH y POP se utilizan para acceder a la pila


La pila es un rea de memoria que se utiliza como espacio temporal para
almacenar direcciones y datos
Cada elemento de la pila es una palabra de 16 bits
La pila esta direccionada mediante el registro SP el cual apunta siempre al
ltimo elemento depositado (El elemento ms alto)
A medida se depositan (PUSH) elementos, el contenido de SP va
disminuyendo
A medida se recuperan (POP) elementos, el contenido de SP va
aumentando

Funcionamiento de las instrucciones PUSH y POP

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

z
z

PUSH AX
========>

AX 89AB
BX CDEF
SS:SP - 2

123

SS:SP

4567

SS:SP + 2

POP BX

*. SP debe
========>
apuntar a la
AX 89AB posicin
AX 89AB
inmediatamente
BX CDEF superior
BX 89AB
*. Se mueve el
contenido de la
SS:SP 89AB palabra
SS:SP - 2 89AB
SS:SP + 2 4567 especificada por SS:SP 4567
el operando
SS:SP + 4
SS:SP + 2
fuente a SP

7 / 51
52

*. SP apunta al ltimo
elemento depositado en la
pila
*. Se realiza el movimiento
de la palabra SP al
operando destino
*. SP ahora debe apuntar al
nuevo ltimo elemento de
la pila

Arquitectura de Computadores I

Juego de instrucciones (IV)


Instrucciones aritmticas y lgicas
z

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

8 / 51
52

Son aquellas operaciones que son realizadas por la ALU


La ejecucin de estas instrucciones siempre afecta al estado de los flags

Instrucciones aritmticas:
z
ADD: Suma sin acarreo
z
ADC: Suma con acarreo
z
SUB: Resta sin acarreo
z
SBB: Resta con acarreo
z
MUL: Multiplicacin sin signo
z
IMUL: Multiplicacin con signo
z
DIV: Divisin sin signo
z
IDIV: Divisin con signo
z
INC: Incrementar destino a uno
z
DEC: Decrementar destino a uno
z
NEG: Cambia de signo (negar) dejando el operando en Ca2
z
CMP: Compara operandos
Instrucciones lgicas:
z
AND, NOT, OR, XOR
z
Estas operaciones se realizan bit a bit
Arquitectura de Computadores I

Juego de instrucciones (V)


Instrucciones de bifurcacin (I)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

z
z
z
z

Modifican la secuencia normal de ejecucin de un programa (Generalmente


controlada por el contador del programa)
Actan sobre el registro CP
Controlan la secuencia de ejecucin de un programa
Son un caso especial de transferencia, donde el operando destino es CP

Se pueden clasificar de la siguiente manera:


z Salto: Sirven para romper la secuencia ordenada de las instrucciones que
componen un programa
z Incondicionales:
z Disponen de un nico operando (El destino), el cual define la nueva
direccin de memoria, en donde hay que ir a buscar la siguiente
instruccin del programa a ejecutar
z Para saltar no se tiene que cumplir condicin alguna
z Ej: JMP etiqueta ,3HWLTXHWD
z Condicionales:
z Para saltar y no continuar con la siguiente instruccin del programa, se
tiene que cumplir una condicin
z Dicha condicin esta relacionada con el valor que tiene algn
sealizador de estados o flag
z Ej: J {condicin} etiqueta
6LFRQGLFLyQ,3HWLTXHWD6LQR,3VLJLQVWUXFFLyQ

9 / 51
52

Arquitectura de Computadores I

Juego de instrucciones (VI)


Instrucciones de bifurcacin (II)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Las condiciones ms frecuentes admitidas por el 80x86/8088 son:

[N]

Z Cero
E Igual
C Acarreo
S Signo
O Overflow (Desbordamiento)

[N][E]

G Mayor que
L Menor que
A Superior*
B Inferior*

P Paridad
PE Paridad par
PO Paridad impar
z

10
10 // 52
51

Llamadas a subrutinas (Saltos con retorno)


z Procedimientos:
z CALL (Llama a un procedimiento)
z RET (Retorno de un procedimiento)
z Interrupciones:
z INT
z Software
z BIOS
z Sistema Operativo
z Hardware (Sistema de entrada/salida)
z Del propio microprocesador

* Se refieren a operandos sin signo


Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (VII)


Instrucciones de bifurcacin (III)
z

Bucles
z Son instrucciones especiales que agrupan dos operaciones que suelen ir
asociadas en muchas ocasiones
z La operacin de decremento de un contador y un salto condicional sobre
esa operacin
z El nmero de iteraciones se determina mediante el valor del registro CX
(contador)

Sintaxis lgica

LOOP etiqueta (realiza un bucle)
CX CX 1;
Si CX HQWRQFHV,3etiqueta, VLQR,3VLJXLHQWHLQVWUXFFLyQ

Ejemplo:
MOV CX, 4
Bucle:
INC BX
ADD BX, CX
LOOP Bucle

11
11 // 52
51

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (VIII)


Instrucciones de bifurcacin (IV) CALL

12
12 // 52
51

CALL: Llamada a una subrutina


Se salva la posicin de retorno al programa principal
Van emparejadas la instruccin de salto a la subrutina y la de
regreso al programa principal

LLAMADA A UNA SUBRUTINA


Ej:
CALL Etiqueta: Salto con retorno a una subrutina
SP SP 2;
[SP@,3
,3Etiqueta;

1) Guardar en la pila la direccin de la siguiente instruccin a


ejecutar
SP
SP

1234h

Direccin de retorno
1234h

 ,3'LUHFFLyQGHODVXEUXWLQD
Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (IX)


Instrucciones de bifurcacin (V) RET
z

RETORNO DE UNA SUBRUTINA


Ej:
RET: Retorno a la secuencia principal
,3>SP];SP SP + 2;

1) Extraer de la pila la direccin de la siguiente instruccin a


ejecutar
SP

Direccin de retorno
1234h

SP

1234h

 ,3'LUHFFLyQGHUHWRUQRGHODVXEUXWLQD

13
13 // 52
51

Arquitectura de Computadores I

Juego de instrucciones (X)


Instrucciones de bifurcacin (VI) Interrupciones

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

14
14 // 52
51

z
z
z

Implican una ruptura en la secuencia del programa


Se salta al cdigo que da ese servicio y cuando se ha terminado, se vuelve a la
ejecucin del programa en curso
Las interrupciones salvaguardan los flags y los registros que emplean
Pueden ser:
Interrupciones hardware: Generadas por los circuitos asociados al
microprocesador en respuesta a algn evento como pulsar una tecla del
teclado

Interrupciones software: Generadas por un programa para llamar a ciertas


subrutinas almacenadas en memoria ROM o RAM. Es posible cambiarlas y
crear otras nuevas.

Pasos para llamar a una interrupcin:


Identificar la interrupcin necesaria
Pasar los parmetros a la subrutina
Llamar a la interrupcin

Ej:

MOV AH, 4Ch


INT 21h

;Indica al S.O. de la terminacin del programa en curso

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (XI)


Instrucciones de bifurcacin (VII) INT
z

LLAMADA A UNA INTERRUPCIN


INT: Llamada a una rutina de interrupcin (CALL + flags a la pila)

1) Guardar en la pila los flags


2) Guardar en la pila la direccin de la siguiente instruccin a ejecutar
SP
SP

Direccin de retorno
Flags
1234h

1234h

3 ,3'LUHFFLyQGHODLQWHUUXSFLyQ

15
15 // 52
51

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (XII)


Instrucciones de bifurcacin (VIII) IRET

16
16 // 52
51

REGRESO DE UNA INTERRUPCIN


IRET: Retorno de la rutina de interrupcin (RET + devuelve flags)

1) Guardar en la pila la direccin de la siguiente instruccin a ejecutar


SP

Direccin de retorno
Flags
1234h

SP

1234h

 ,3'LUHFFLyQGHODVXEUXWLQD
3) Flags Flags anteriores a la llamada de la interrupcin

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (XIII)


Instrucciones de comparacin y de bit
Instruccin de comparacin:
z Operaciones aritmticas o lgicas que no almacenan el resultado, slo
modifican los flags
z Suelen preceder a los saltos condicionales
z

CMP: Compara nmeros (resta pero no guarda el resultado solamente


modifica los flags de estado). Determina si dos nmeros son iguales
(devuelve cero) o cul de los dos es mayor que otro

Instrucciones de bit:
z Modifican un solo bit o leen su estado. Son tpicas en la configuracin de
los flags
z TEST:
Comparacin lgica de dos operandos a nivel de bits (AND)
z CLI:
Clear flag de interrupcin (flag de interrupcin = 0)
z STI:
Set flag de interrupcin (flag de interrupcin = 1)
z CLC:
Clear flag de acarreo (flag de acarreo = 0)
z STC:
Set flag de acarreo (flag de acarreo = 1)

17
17 // 52
51

Arquitectura de Computadores I

Juego de instrucciones (XIV)


Instrucciones de desplazamiento

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

18
18 // 52
51

Todas las instrucciones de desplazamiento y rotaciones tienen en


comn:
El ltimo valor desplazado se copia en el flag de acarreo
Si el nmero de desplazamientos es mayor que uno, se debe
colocar el valor en el registro CL

Instrucciones de desplazamiento:
z SAR:
Desplazamiento aritmtico a la derecha
z SAL:
Desplazamiento aritmtico a la izquierda
z SHR:
Desplazamiento lgico a la derecha
z SHL:
Desplazamiento lgico a la izquierda
z ROR:
Rotacin a la derecha
z ROL:
Rotacin a la izquierda
z RCR:
Rotacin a la derecha a travs del acarreo
z RCL:
Rotacin a la izquierda a travs del acarreo

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Juego de instrucciones (XV)


Instrucciones de E/S y de control
Instrucciones de entrada/salida
z Son un caso especial de las instrucciones de transferencia
IN: Transfiere informacin desde un puerto de entrada a un registro
OUT: Escribe informacin en un puerto de salida desde un registro
Instrucciones de control
Controlan la operacin del microprocesador
WAIT: Detienen la ejecucin hasta que se cumpla una condicin
externa (Hace esperar al procesador)
HLT: Detiene la ejecucin de instrucciones hasta que no se dispare
una interrupcin (Detiene el procesador)
NOP: No realiza ninguna tarea (No operacin). til en bucles de
retardo

19
19 // 52
51

Arquitectura de Computadores I

Estructura de un programa en ensamblador (I)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Estructura de un programa en ensamblador

20
20 // 52
51

dosseg
.model small
.stack 100h
.data

% Definicin de datos % ; los comentarios son con (% %) o (;)

.code

; comienzo del segmento de cdigo del programa

mov ax, @data

; inicializacin de los datos en el segmento de datos

mov ds, ax
% Fin del segmento de cdigo %
mov AH, 4Ch
; terminacin del programa y devolucin del
int 21h
; control al DOS
end
; fin de programa

z
z
z

z
z
z
z

; prepara los segmentos para trabajar con DOS


; define el modo del ejecutable
; define el tamao de la pila
; zona de definicin de los datos (Segmento de dato)

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Estructura de un programa en ensamblador (II)


Suma de dos nmeros Num1 y Num2
dosseg
; prepara los segmentos para trabajar con DOS
.model small
; define el modo del ejecutable
.stack 100h
; define el tamao de la pila
.data
; zona de definicin de los datos (segmento de dato)
% Definicin de datos %
Num1 DB 20h
; reserva un byte de memoria y lo inicializa a 20h
Num2 DB 33h
; reserva un byte de memoria y lo inicializa a 33h
Res DB ?
; reserva un byte de memoria sin inicializar
.code
; comienzo del segmento de cdigo del programa
mov AX, @data
; inicializacin de los datos en el segmento de datos
mov DS, AX
mov AL, Num1
add AL, Num2
mov Res, AL
% Fin del segmento de cdigo %
mov AH, 4Ch
; terminacin del programa y devolucin del
int 21h
; control al DOS
end
; fin de programa

21
21 // 52
51

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Estructura de un programa en ensamblador (III)


Escritura del texto Hola Mundo

22
22 // 52
51

dosseg
.model small
.stack 100h
.data
% Definicin de datos %
Texto DB +RODPXQGR
.code
mov AX, @data
mov DS, AX
mov AH, 9
lea DX, Texto

; prepara los segmentos para trabajar con DOS


; define el modo del ejecutable
; define el tamao de la pila
; zona de definicin de los datos (segmento de dato)

; inicializacin de los datos en el segmento de datos


; despliega en pantalla la cadena apuntada por
; el par de registros DS:DX. Fin de cadena = $
; carga de la direccin efectiva. Hace que el
; procesador calcule el offset correspondiente al
; operando de memoria y lo copie en el registro
;de 16 bits especificado

int 21h
% Fin del segmento de cdigo %
mov Ah, 4Ch
; terminacin del programa y
int 21h
; devolucin del control a DOS
end
; fin de programa
Arquitectura de Computadores I

Modos de direccionamiento (I)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

El modo de direccionamiento determina la ubicacin de un operando:


En la propia instruccin
En un registro
En memoria principal
Modos de direccionamiento
Inmediato
Directo

Relativo

Ejemplos

Inmediato

MOV AX, 15H

De registro
De memoria
De pgina base

A registro
(No existe)
Directo

MOV AX, BX

Al contador de
programa
A un registro base

Solamente para saltos

A un registro ndice

Mediante ndice
Mediante ndice y
base
A pila

A pila

23
23 // 52
51

3 8086/88

Relativo a base

Indirecto

(No existe)

Implcito

Algunas instrucciones

MOV CX, ETIQUETA

MOV BX + ARTCULO,
AL
MOV DL, VECTOR[SI]
MOV AH, [BH][SI] +
ARRAY
PUSH BX

Clasificacin de
los modos de
direccionamiento
en el 8086/88

Arquitectura de Computadores I

Modos de direccionamiento (II)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

24
24 // 52
51

Direccionamiento inmediato: Expresa el valor inmediato y directo del dato


Direccionamiento directo: Indica la direccin de la memoria principal donde
reside el valor del dato
Absoluto: Se especifica la direccin de forma absoluta
z De registro: Se especifica el registro donde est el dato
z De memoria: Se especifica la posicin de memoria donde est el
dato
Relativo: Se especifica un desplazamiento para poder acceder al dato
Direccionamiento indirecto: Se indica la direccin de la direccin del dato
De registro: Se especifica el registro donde est la direccin
De memoria: Se especifica la posicin de memoria donde est la
direccin
Direccionamiento implcito: No se especifica nada, pues de antemano se
conoce donde se encuentra el dato

Arquitectura de Computadores I

Modos de direccionamiento (III)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Inmediato
dato
Instruccin

Directo absoluto de registro


registro
Instruccin

dato

Banco de
registros
z

Directo absoluto de memoria


direccin
Instruccin

dato

Memoria

25
25 // 52
51

Arquitectura de Computadores I

Modos de direccionamiento (IV)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

26
26 // 52
51

Relativo
registro

direccin

desplaz.

Instruccin
dato

Memoria
z

Relativo a base o ndice con desplaz. en registro


registro 1
Instruccin

registro 2
base o ndice

dato

desplaz.
Banco de
registros

Memoria

Arquitectura de Computadores I

Modos de direccionamiento (V)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Indirecto de registro
registro
Instruccin

dato
direccin

Banco de
registros
z

Memoria

Indirecto absoluto
direccin 1

dato

Instruccin
direccin 2

Memoria

27
27 // 52
51

Arquitectura de Computadores I

Modos de direccionamiento (VI)


La ordenacin de los bytes

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

28
28 // 52
51

z
z
z
z

Las guerras de Lilliput (big-endian little-endian)


En una palabra compuesta por varios bytes
Cul es el byte menos significativo?
(OTXHWHQJDODGLUHFFLyQPiVEDMDlittle-endian
(OTXHWHQJDODGLUHFFLyQPiVDOWDbig-endian
Ejemplos:
El dato 12345678h
Direcciones
Datos

400

401

402

403

(big-endian)

12

34

56

78

(little-endian)

78

56

34

12

Arquitectura de Computadores I

Modos de direccionamiento (VII)


Direccionamiento directo

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

z
z

Es directo cuando la instruccin contiene el lugar donde se encuentra el


operando
Segn el lugar donde se encuentra el operando puede ser:
Direccionamiento directo a registro
Direccionamiento directo a memoria
z Direccin completa (p. ej. Z80 sobre 64 Kb con 16 bits)
z Direccin sobre una pgina del mapa de memoria; tambin se
conoce como direccionamiento de pgina base

Ejemplos:
MOV AX, BX
MOV CX, Etiqueta

29
29 // 52
51

Arquitectura de Computadores I

Modos de direccionamiento (VIII)


Direccionamiento relativo (I)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

30
30 // 52
51

La instruccin indica el desplazamiento del operando con respecto a un


puntero
La direccin efectiva es calculada por la unidad de control sumando, o
restando, el desplazamiento al puntero de referencia que suele estar en
un registro
Dependiendo del puntero se tienen diferentes modos de
direccionamiento

Ejemplos:
MOV AL, [BX]
ADD CH, Numero[SI]
MOV BL, [SP+4]

Arquitectura de Computadores I

Modos de direccionamiento (IX)


Direccionamiento relativo (II)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Direccin efectiva = Reg. Referencia + desplazamiento


Modo de direccionamiento

Registro de referencia

Clculo direccin efectiva

Relativo a contador de
programa

Contador de programa (CP)

DE = CP + desplazamiento

Relativo a registro base

Un registro base (R B)

DE = RB + desplazamiento

Relativo a registro ndice

Un registro ndice (R I)

DE = RI + desplazamiento

Relativo a pila

Registro de pila (SP)

DE = SP + desplazamiento

Ventajas

Inconvenientes

Las instrucciones son ms compactas


El cdigo puede cambiar de lugar en el
mapa de memoria con cambiar el valor del
puntero
Gran facilidad de manejo de estructuras de
datos

Se requiere una operacin adicional para el


clculo de la direccin del operando

31
31 // 52
51

Arquitectura de Computadores I

Modos de direccionamiento (X)


Direccionamiento indirecto

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

32
32 // 52
51

z
z

La posicin indicada por la instruccin no es el operando sino la


direccin de memoria en la que se encuentra, por lo que se necesita un
acceso adicional a memoria
La direccin de memoria se puede dar mediante:
Direccionamiento directo a memoria
Direccionamiento relativo
Es posible que se realicen mltiples niveles de indireccin
Su utilidad ms comn es la de acceso a diversas informaciones
mediante tablas de punteros

Ejemplos:
z MOV AL, [ [100] ]
z MOV CL, [ [B + 1234h] ]

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Modos de direccionamiento (XI)


Direccionamiento implcito

33
33 // 52
51

z
z

En la instruccin no se indica explcitamente el lugar donde se


encuentra el operando
Requiere que el programador conozca con que operandos se est
trabajando

Ejemplos:
z MUL %;';$; $;[%;
donde AX y DX son operandos implcitos
z

RET
realiza las siguientes operaciones:
z ,3>63@
z 6363

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Ejemplo de hardware real: P i80x86/88 (I)

34
34 // 52
51

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Ejemplo de hardware real: P i80x86/88 (II)


Segmentacin de memoria en P i80x86/88 (I)
z
z
z
z
z

El 80x86/88 se puede direccionar 1MB con 20 lneas de direccin pero


sus registros internos tan solo son de 16 bits
6ROXFLyQVHJPHQWDFLyQGHPHPRULD
Las direcciones se generan combinando una base y un desplazamiento,
cada uno de 16 bits:
Direccin fsica = base x 10h + desplazamiento
Cada base genera una pgina o segmento de 64 Kb con funciones
especificas:
Base

Funcin

Registro de segmento
CS

Contiene el cdigo ejecutable

SS

Se reserva para la pila (stack)

DS

Contiene los datos

ES

Segmento extra de datos

35
35 // 52
51

Arquitectura de Computadores I

Ejemplo de hardware real: P i80x86/88 (III)


Segmentacin de memoria en P i80x86/88 (II)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Banco de registros:

36
36 // 52
51

Registros de datos:
AX (AH, AL)
BX (BH, BL)
CX (CH, CL)
DX (DH, DL)

Punteros:
SP
BP
SI
DI
IP

- Puntero de pila
- Puntero base de pila
- Registro ndice
- Registro ndice
- Contador de programa

Registros de segmentos:
z
SS - Segmento de pila

DS
ES

- Segmento de datos
- Segmento extra de datos

CS

- Segmento de cdigo

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Ejemplo de hardware real: P i80x86/88 (IV)


Segmentacin de memoria en P i80x86/88 (III)

37
37 // 52
51

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Ejemplo de hardware real: P i80x86/88 (V)


Segmentacin de memoria en P i80x86/88 (IV)

38
38 // 52
51

Modo de direccionamiento

Ejemplo

Clculo direccin efectiva

Directo

MOV CL, Etiqueta

DF = DS x 10h + Etiqueta

Relativo a base

MOV AH, [BX] + Elemento

DF = DS x 10h + BX + Elemento

Mediante ndice

MOV DL, Elemento[SI]

DF = DS x 10h + SI + Elemento

Mediante ndice y base

ADD CH, Elemento[BX][SI]

DF = DS x 10h + BX + SI + Elemento

La segmentacin solamente se emplea cuando uno de los operandos se encuentra en memoria


En el caso de que se trate de la direccin de la siguiente instruccin a ejecutar se emplear CS y no DS
Si lo que se busca es un operando en la pila el registro de segmento a emplear ser el SS

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Ejemplo de hardware real: P i80x86/88 (VI)


Segmentacin de memoria en P i80x86/88 (V)
B. Registros
CS = 0100h
DS = 0200h
SS = 0300h
BX = 1234h

B. Registros
SI = 0010h
IP = 0025h
SP = 0200h

Memoria
Num = 1500h

Ejemplos

Direccin fsica de memoria de la instruccin a ejecutar:


DF = CS x 10h + IP = 0100h x 10h + 0025h = 01025h

Direccin fsica de memoria del operando fuente MOV AL, Num[SI]


DF = DS x 10h + Num + SI = 0200h x 10h + 1500 h + 0010h = 03510h

Direccin fsica en la que se encuentra la cabecera de la pila


DF = SS x 10h + SP = 0300h x 10h + 0200h = 03200h

39
39 // 52
51

Arquitectura de Computadores I

Formato de instrucciones (I)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

40
40 // 52
51

Es la representacin en binario de cada una de las instrucciones


&DGDLQVWUXFFLyQFRQWLHQHH[SOtFLWDPHQWHRLPSOtFLWDPHQWHWRGDOD
informacin que necesita para ejecutarse:
Cdigo de operacin, indica a la UC el tipo de operacin, aritmtica,
lgica, de transferencia, salto, etc.
El valor o la posicin donde se hallan los operandos
El lugar donde se tiene que depositar el resultado
Direccin de la siguiente instruccin a ejecutar

Cod. Operacin

Operandos

Resultado

Dir. sig. instrucc.

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Formato de instrucciones (II)


Caractersticas generales:
z Las instrucciones se "encajan" en alguno de los formatos disponibles
z Los formatos son sistemticos (campos de longitud y posicin fijas)
z El primero de los campos es el cdigo de operacin
z Siempre que se pueda, se supone informacin implcita para acortar:
z Siguiente instruccin en la siguiente posicin de memoria, salvo
bifurcaciones
z En vez de usar la operacin pura se asignan diferentes cdigos de
operacin para diferentes modos de direccionamiento
z La ubicacin del resultado coincide con el operando destino

Cod. operacin

Operandos

41
41 // 52
51

Arquitectura de Computadores I

Formato de instrucciones (III)


Ejemplos de instrucciones
z

Z80

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Tipo de instruccin

42
42 // 52
51

Transferencia

L. Mquina

L. Ensamblador

Operacin

323353

LD (5333), A

M(5333) A

Transfiere el contenido del registro A a la posicin de memoria 5333h


Multiplicacin

L. Mquina

L. Ensamblador

Operacin

A33353

MOV [5333], AX

0  AX

No existe equivalente

i80x86/8088
Tipo de instruccin
Transferencia

Transfiere el contenido del registro AX (acumulador)


a la posicin de memoria 5333 h
Multiplicacin

F7E3

MUL BX

DX, AX AX x BX

Multiplica el contenido de los registros AX y BX, y


deja el resultado en AX y DX (32 bits)

Arquitectura de Computadores I

Formato de instrucciones (IV)


Formato de instrucciones P i80x86/8088 (I)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Cuenta con mltiples formatos cuyo cdigo mquina va desde un


byte hasta seis bytes

Formato de las instrucciones registro-registro y registro-memoria:

43
43 // 52
51

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Formato de instrucciones (V)


Formato de instrucciones P i80x86/8088 (II)

44
44 // 52
51

El primer byte contiene:


Cdigo de operacin

El bit de direccin de registro (D):


z Si D = 1 tengo que REG = operando destino
z Si D = 0 tengo que REG = operando fuente

El bit de tamao del dato (W): especifica si la operacin ser


realizada sobre datos de media palabra o de una palabra:
z Si W = 0 los datos son de 8 bits ( 16 bits)
z Si W = 1 los datos son de 16 bits ( 32 bits)

Arquitectura de Computadores I

Formato de instrucciones (VI)


Formato de instrucciones P i80x86/8088 (III)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

El segundo byte contiene los operandos


(uno de ellos es un registro):
REG se usa para identificar un registro

REG

W=0

W=1

000

AL

AX

001

CL

CX

010

DL

DX

011

BL

BX

100

AH

SP

101

CH

BP

110

DH

SI

111

BH

DI

MOD indica el modo de direccionamiento


MOD

Funcin

00

Modo memoria sin desplazamiento

01

Modo memoria con desplazamiento de media palabra

10

Modo memoria con desplazamiento de una palabra

11

Modo registro

45
45 // 52
51

Arquitectura de Computadores I

Formato de instrucciones (VII)


Formato de instrucciones P i80x86/8088 (IV)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

46
46 // 52
51

z
z
z
z

El segundo byte contiene los operandos (continuacin):


R/M se usa para identificar un registro o una posicin de memoria y
depende del valor del campo MOD
D8 es un desplazamiento de tamao media palabra (8 16 bits) y D16
es un desplazamiento de tamao palabra (16 bits 32 bits)
MOD = 11

CLCULO DE LA DIRECCIN EFECTIVA

R/M

W=0

W=1

R/M

MOD = 00

MOD = 01

MOD = 10

000

AL

AX

000

[BX] + [SI]

[BX] + [SI] + D8

[BX] + [SI] + D16

001

CL

CX

001

[BX] + [DI]

[BX] + [DI] + D8

[BX] + [DI] + D16

010

DL

DX

010

[BP] + [SI]

[BP] + [SI] + D8

[BP] + [SI] + D16

011

BL

BX

011

[BP] + [DI]

[BP] + [DI] + D8

[BP] + [DI] + D16

100

AH

SP

100

[SI]

[SI] + D8

[SI] + D16

101

CH

BP

101

[DI]

[DI] + D8

[DI] + D16

110

DH

SI

110

direccin directa

[BP] + D8

[BP] + D16

111

BH

DI

111

[BX]

[BX] + D8

[BX] + D16

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Formato de instrucciones (VIII)


Formato de instrucciones P i80x86/8088 (V)

47
47 // 52
51

La instruccin MOV BL, AL "mueve el byte contenido en el registro


fuente AL al registro destino BL"
Solucin:
z En el primer byte los primeros 6 bits especifican la operacin de mover
y, por tanto, deben ser:

CODIGO DE OPERACION = 100010


z

El bit D indica si el registro que seala el campo REG del segundo byte
es el operando fuente o el destino. En este caso se codificar el registro
BL en el campo REG del segundo byte; por tanto, D ser igual a 1

El bit W debe indicar una operacin de tamao byte. Por esta razn su
valor ser 0

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Formato de instrucciones (IX)


Formato de instrucciones P i80x86/8088 (VI)

48
48 // 52
51

El resultado ser el siguiente:


z 1er byte = 1000 10102 = 8Ah
z En el segundo byte, REG indica el operando es BL.
z Su cdigo correspondiente es:

REG = 011
z Como el segundo operando es tambin un registro

MOD = 11
z El campo R/M debe especificar que el registro es AL

R/M = 000
z Por tanto, el segundo byte completo es:

2 byte = 1101 10002 = D8h


z Y el cdigo hexadecimal completo para la instruccin MOV BL, AL es:

8A D8h

Arquitectura de Computadores I

Formato de instrucciones (X)


Formato de instrucciones P i80x86/8088 (VII)

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Supongamos que se dispone de las siguientes variables, definidas en


el segmento de datos:
Cadena DB 0, 0, 0, 0
Dato DW 0

Nota: Cadena empieza en la posicin de memoria 0h del DS y Dato en


la posicin 4h

Se desea saber cul es el cdigo en de las siguientes instrucciones del


80x86/88:

MOV AL, BL:

Byte1: C.O.: 1000 10 - D: 1 - W: 0

Byte2: MOD: 11 - REG: 000 - R/M:011

Cdigo en hexadecimal: 8AC3 h

49
49 // 52
51

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Formato de instrucciones (XI)


Formato de instrucciones P i80x86/8088 (VIII)

50
50 // 52
51

MOV Dato, BX:


z Byte1: C.O.: 1000 10 - D: 0 - W: 1
Byte2: MOD:00 - REG:011 - R/M:110
z Cdigo en hexadecimal: 891E 0400h

MOV BX, Dato:


z Byte1: C.O.: 1000 10 - D: 1 - W: 1
Byte2: MOD:00 - REG:011 - R/M:110
z Cdigo en hexadecimal: 8B1E 0400h

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Formato de instrucciones (XII)


Formato de instrucciones P i80x86/8088 (IX)
MOV CL, Cadena[SI]:
z Byte1: C.O.: 1000 10 - D: 1 - W: 0
Byte2: MOD:10 - REG:001 - R/M:100
z Cdigo hexadecimal: 8A8C 0000h

51
51 // 52
51

Arquitectura de Computadores I

Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador

Bibliografa

52
52 // 52
51

Estructura y diseo de computadores (Captulo 3)


D. A. Patterson, J. L. Hennessy
Ed. Revert

Fundamentos de los Computadores (Captulos 6 y 13)


Pedro de Miguel Anasagasti
Ed. Paraninfo

Arquitectura de Computadores (Captulo 3)


Jos A. de Frutos, Rafael Rico
Ed. Universidad de Alcal

8088-8086, 8087: Programacin en Ensamblador en entorno MS-DOS


Miguel A. Rodrguez-Rosell
Ed. Anaya Multimedia

Arquitectura de Computadores I

You might also like