Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modos PDF
Modos PDF
MODOS DE DIRECCIONAMIENTO
3.1. Introduccin
El campo de operacin de una instruccin especica la operacin que se debe realizar. sta
debe ser ejecutada sobre algunos datos almacenados en registros del computador o en palabras
de memoria, es decir, sobre los operandos. El modo de direccionamiento especica la forma
de interpretar la informacin contenida en cada campo de operando para localizar, en base a
esta informacin, el operando.
Los ordenadores utilizan tcnicas de direccionamiento con los siguientes nes:
59
60 Modos de direccionamiento
Registro
Implicito
Pila
Inmediato
Registro
Absoluto
Memoria
Contador de programa
Apuntador de pila
Directo
Base (Base y desplazamiento)
Relativo a registros (indexados)Registro general
ndice
Autoincremental
Autoindexados
Autodecremental
A = f (x)
El acceso a los registros es muy rpido, por tanto el direccionamiento por registro debe usarse
en las variables que se usen con ms frecuencia para evitar accesos a memoria que son
62 Modos de direccionamiento
ms lentos, un ejemplo muy tpico del uso de este direccionamiento son los ndices de
los bucles.
El nmero de bits necesarios para especicar un registro es mucho ms pequeo que el ne-
cesario para especicar una direccin de memoria, esto es debido a que el nmero de
registros del procesador es muy pequeo comparado con el nmero de direcciones de
memoria. Sin embargo, hay que tener en cuenta que en los ordenadores modernos el n-
mero de registros ha aumentado considerablemente.
registro con el campo de operando obtendremos la direccin efectiva. Hay varios direcciona-
mientos basados en esta tcnica que reciben diferentes nombres dependiendo de cul sea el
registro en el que radica la direccin tomada como referencia. Todos ellos podran catalogarse
como direccionamientos relativos a un registro.
El direccionamiento denominado habitualmente relativo toma como valor de referencia el
registro contador de programa. Cuando se usa este modo de direccionamiento, el campo de
operando consiste en un nmero (normalmente con signo) que expresa la diferencia entre la
direccin del dato y la direccin siguiente a la instruccin en curso (contenida en el contador de
programa). Si el campo de operando, llamado en este caso desplazamiento u offset, es positivo
el operando residir en una direccin posterior a la de la instruccin y si es negativo, en una
direccin anterior.
Este modo de direccionamiento es usado muy frecuentemente en programas cuyo cdigo
deba ser independiente de la posicin de memoria donde estn situados (programas relocaliza-
bles) ya que el desplazamiento es independiente de la localizacin del programa. Tambin se
usa con mucha frecuencia en instrucciones de bifurcacin.
Los apartados siguientes se reeren a diferentes versiones de direccionamientos relativos
a registros.
matrices en bucles ya que, si se quieren direccionar elementos consecutivos del vector o matriz,
basta mantener en el desplazamiento la direccin del primer elemento e ir incrementando el
registro ndice. Tambin sirve para acceder de forma relativa a elementos de vectores cercanos
a uno dado, para ello, se carga la direccin del elemento de referencia en el registro ndice y
despus se accede mediante direccionamiento indexado, con el desplazamiento adecuado, al an-
terior, al siguiente, etc., esto mismo tambin es aplicable a pilas, en que, algunas veces, hay que
acceder a datos cercanos, por encima o por debajo, al dato sealado por algn apuntador. Una
consecuencia de todo esto es una modalidad de direccionamiento indexado de que disponen
algunos ordenadores, denominada autoindexacin, que hace que el registro ndice sea incre-
mentado o decrementado en el tamao del operando antes o despus de acceder al mismo. Los
ordenadores que poseen autoindexacin incorporan los modos de direccionamiento descritos
en los dos apartados siguientes. En algunos ordenadores existen variantes del direccionamiento
indexado en que se obtiene la direccin del operando sumando el contenido de varios registros
con el desplazamiento, esto puede servir para especicar el comienzo de un vector mediante un
desplazamiento respecto a un registro y el elemento del vector mediante un registro ndice.
En este modo para obtener la direccin del operando hay que decrementar un registro en
el tamao del operando; el nuevo contenido del registro despus de efectuar esa operacin, es
la direccin del operando.
Este modo complementa al anterior y se emplea para direccionar elementos de vectores
y matrices en orden descendente y tambin para introducir datos en las pilas ya que, si se
aplica este modo sobre el apuntador de pila, conseguiremos que antes de efectuar el acceso el
apuntador seale al siguiente hueco libre de la pila.
Inmediato Operando
Operando
Aotodecremental o
predecremental
Registro Direccin - Operando
Longitud
MODOS UTILIDADES
Inmediato Operaciones con constantes
Directo por registro Variables locales de procedimientos no recursivos
Indirecto por registro Variables referenciadas a travs de apuntadores
Absoluto Direcciones de sistema
Relativo Variables globales
Indexado Acceso a vectores, matrices y cadenas
Autoincremental Desapilar parmetros de procedimientos
Recorrido de vectores y cadenas
Autodecremental Apilar parmetros de procedimientos
Recorrido de vectores y cadenas hacia atrs
Nota:
En el captulo siguiente se matizarn los conceptos de variables locales y globales.
Tambin se analizar la forma de almacenamiento de las variables locales de
procedimientos recursivos.
3.4.1. PDP-11
Los modos de direccionamiento del PDP-11 (DEC, 1983) son bastante renados y muy
potentes. De los formatos de instruccin de esta mquina, vistos en el captulo anterior, se
desprende que cada operando se especica mediante 6 bits, 3 que indican el modo de direccio-
namiento otros 3 que indican el registro sobre el que este modo acta. El PDP-11 tendr, por
tanto, 8 modos de direccionamiento, aunque, como veremos, en la prctica tiene algunos ms.
2 si es una palabra). El contenido del registro despus del decremento es la direccin del
operando.
3.4.2. VAX
Los modos de direccionamiento del VAX (DEC, 1986, Baase, 1983) estn claramente inspi-
rados en los del PDP-11 aunque con algunas novedades bastante interesantes. De los formatos
de instruccin, vistos en el captulo anterior (apartado 2.6.2), se desprende que la especicacin
de cada operando se realiza mediante 8 bits, 4 que especican el modo de direccionamiento y
otros 4 que especican el registro; por tanto la mquina tendr 16 modos de direccionamiento,
aunque, como veremos, hay modos que, segn las circunstancias, pueden tener varias codi-
caciones diferentes y tambin, al igual que en el PDP-11, hay modos que, cuando se aplican
sobre el contador de programa, reciben nombres diferentes y, en lenguaje ensamblador, tienen
simbologa distinta.
4: Indexado b[Rn]
Este modo es diferente al direccionamiento indexado del PDP-11 ya que su propsito
70 Modos de direccionamiento
Fig. 3.5. Formato de la palabra adicional del modo indexado completo del MC68000.
(a)
(b)
Fig. 3.6. Formato de la palabra adicional de las variantes del modo indexado completo del MC68020.
donde S = W o L y Escala = 1, 2, 4 u 8.
(Se utiliza el formato de la gura 3.6 (a)) Debe observarse que este direccionamiento
es compatible con el indexado completo del MC68000 haciendo Escala = 1.
Indexado por factor de escala y desplazamiento largo (db,An,Xi.SEscala) En es-
te modo el clculo de la direccin efectiva se realiza as:
A = db + An + Xi.S Escala
La diferencia entre este direccionamiento y el anterior radica en que el desplaza-
miento db (llamado desplazamiento base) puede tener 16 o 32 bits y que los tres
parmetros son opcionales, por lo que este modo puede adoptar mltiples formas
como, por ejemplo, direccionamiento indirecto por registro de datos. Se utiliza el
formato de la gura 3.6(b) codicndose el desplazamiento db en la(s) palabra(s)
siguiente(s).
Indirecto postindexado ([db,An],Xi.S Escala, do) La direccin efectiva en este
modo se calcula de la siguiente forma:
A = [db + An] + Xi.S Escala + do
En esta expresin los corchetes representan un acceso a memoria adicional, es de-
cir, una indireccin ms; por otra parte, do (desplazamiento exterior) representa un
3.4. Modos de direccionamiento en ordenadores reales 73
mod
00 01 10 11
000 (BX+SI) (BX+SI+d8 ) (BX+SI+d16 ) AX o AL
001 (BX+DI) (BX+DI+d8 ) (BX+DI+d16 ) CX o CL
010 (BP+SI) (BP+SI+d8 ) (BP+SI+d16 ) DX o DL
r/m 011 (BP+DI) (BP+DI+d8 ) (BP+DI+d16 ) BX o BL
100 (SI) (SI+d8 ) (SI+d16 ) SP o AH
101 (DI) (DI+d8 ) (DI+d16 ) BP o CH
110 Directo (BP+d8 ) (BP+d16 ) SI o DH
111 (BX) (BX+d8 ) (BX+d16 ) DI o BH
3.4. Modos de direccionamiento en ordenadores reales 75
mod
00 01 10 11
000 (EAX) (EAX+d8 ) (EAX+d32 ) EAX o AL
001 (ECX) (ECX+d8 ) (ECX+d32 ) ECX o CL
010 (EDX) (EDX+d8 ) (EDX+d32 ) EDX o DL
r/m 011 (EBX) (EBX+d8 ) (EBX+d32 ) EBX o BL
100 SIB SIB y d8 SIB y d32 ESP o AH
101 Directo (EBP+d8 ) (EBP+d32 ) EBP o CH
110 (ESI) (ESI+d8 ) (ESI+d32 ) ESI o DH
111 (EDI) (EDI+d8 ) (EDI+d32 ) EDI o BH
por el factor de escala (que puede ser 1, 2, 4 u 8), se le suma el registro base y en algunas
ocasiones (ver tabla 3.3) un desplazamiento de 8 o 32 bits. El modo SIB es til para direccio-
nar elementos de vectores de longitudes diferentes en bucles. Es una alternativa a los modos
autoindexados que esta mquina no soporta.
La direccin del operando se calcula sumando los contenidos de dos registros ([ %rn+
%rm]).
La direccin del operando se calcula sumando el contenido de un registro y un
desplazamiento ([ %rn+d]). Un caso particular de este modo es el direccionamiento
indirecto por registro, en que el desplazamiento es 0 ([ %rn]).
76 Modos de direccionamiento
Bibliografa y referencias
BAASE , S. 1983. VAX-11 Assembly Language Programming. Prentice-Hall.
C RAWFORD , J, & G ELSINGER , P. 1987. Programming the 80386 (Featuring 80386/80387). Sybex.
Existe traduccin al castellano: Programacin del 80386/387, Anaya Multimedia, 1991.
D E B LASI , M. 1990. Computer Architecture. Addison Wesley.
DEC. 1983. PDP-11 Architecture Handbook. Digital Equipment Corporation.
DEC. 1986. VAX Architecture Handbook. Digital Equipment Corporation.
H ARMAN , T.L. 1989. The Motorola MC68020 and MC68030 Microprocessors, Assembly Language,
Interfacing and Design. Vol. II. Prentice-Hall International.
TANENBAUM , A.S. 2006. Structured Computer Organization. 5 edn. Prentice-Hall International.
Existe traduccin al castellano de la edicin anterior: Organizacin de computadores: un enfoque es-
tructurado, 4a edicin, Prentice-Hall Hispanoamericana, 2000.
CUESTIONES Y PROBLEMAS
Nota importante: Para la resolucin de muchos problemas de este captulo y del siguiente es
necesario consultar los apndices.
3.1 Traducir a cdigo mquina las siguientes instrucciones de lenguaje ensamblador del PDP-11:
a) ADD R2,R3 b) INC (R5)+ c) CLR -(SP) d) ADD (R2),R1
e) CLR 5(R3) f) MOV #4,R1 g) INCB A h) MOV #A, A
Se puede suponer, cuando sea necesario, que cada instruccin est localizada en la direc-
cin 077420(8 y que el smbolo A representa a la direccin 063246(8 .
3.2 Poner cada una de las siguientes instrucciones del VAX en cdigo mquina:
a) INCW (R5)+ b) MOVL (R10)+, -(SP)
c) BICL3 #18, (R4)+, -(R6) d) MOVB #4, (R7)
e) ADDL3 R8, R9, 5(R4)[R3] f) SUBW2 4(R6), 2500(R7)[R4]
3.3 Traducir las siguientes instrucciones de VAX a cdigo mquina, suponiendo que el sm-
bolo A representa a la direccin 0034AAF8H, que el smbolo B representa a la constante
258(10 y que cada instruccin se encuentra en la direccin 0034AB70H (las instrucciones
son independientes unas de otras):
a) CLRW A b) MOVL #B, A
c) MOVB 4(R1), A d) SUBW2 A, 5(R2)[R4]
e) ADDL3 (R5)+, #4, A f) MULL3 #B, A, A[R3]
Cuestiones y problemas 77
3.4 Describir los efectos de cada una de las instrucciones de los problemas 3.1, 3.2 y 3.3.
3.7 Sean las siguientes instrucciones correspondientes a un VAX (las instrucciones son inde-
pendientes unas de otras):
Nota: En el ensamblador del MC68000, el prejo $ indica que la constante siguiente debe in-
terpretarse en hexadecimal y la ltima letra del nemnico y separada por un punto de ste,
indica el tamao de los operandos.
3.9 Analizar los efectos de las siguientes instrucciones correspondientes a un MC68020, su-
poniendo que los registros A5, D2 y D3 contienen respectivamente los valores 08F9A204H,
A0BAC902H y FAB9A2F0H. Suponer valores arbitrarios en las direcciones de memoria
afectadas:
a) ADDQ.L #1, D3 b) SUBQ.W #5, D3
c) AND.B 8(A5), D3 d) EOR.L D2, 4(A5,D3)
e) LEA 8(A5,D3.L), A2 f) CLR.W 4(A5,D3*4)
g) NEG.L -(A5) h) ADDI.W #400, (A5)+
3.10 Cules de las instrucciones del problema anterior no se podran ejecutar en un MC68000?
3.11 Traducir a cdigo mquina cada una de las instrucciones de los problemas 3.8 y 3.9.
78 Modos de direccionamiento
Registros Memoria
Direccin Contenido
017426 003025
R1 017430
017430 004023
R2 017432
017432 003015
017434 001430
Fig. 3.9.
MOV #A, R0
ADD #4, (R0)+
3.14 Supongamos un PDP-11 cuya situacin es la mostrada en la gura 3.9. Qu habr cam-
biado despus de ejecutarse la instruccin
SUBB2 A, A
del VAX suponiendo que reside a partir de la direccin 0A0D02D9H y que la etiqueta A
representa a la direccin 0A0D02C0H.
Cuestiones y problemas 79
COMIENZO: .......
.......
MOV #CADENA1, R4
MOV #CADENA2, R5
MOV N, R1
LOOP: CMPB (R4)+, (R5)+
BNE FIN
SOB R1, LOOP
MOV #177777, R0
BR COMIENZO
FIN: CLR R0
BR COMIENZO
Fig. 3.10.
Direccin Contenido
004352 012703
004354 003000
004356 012704
004360 003500
004362 016701
004364 176356
004366 121327
004370 000060
004372 002413
004374 121327
004376 000071
004400 003010
004402 112367
004404 176334
004406 162767
004410 000060
004412 176326
004414 016724
004416 176322
004420 000401
004422 005203
004424 077120
004426 000000
Fig. 3.11.
Registros Memoria
Direccin Contenido
404F08 A4
R6 00404F08
404F09 C2
R7 A034378A
404F0A FB
404F0B 77
Fig. 3.12.
Cuestiones y problemas 81
Versin A Versin B
CLR R0 CLR R0
MOV M, R1 MOV #X, R1
C: ADD X(R1), R0 MOV N, R2
SUB #2, R1 C: ADD (R1)+, R0
BGE C SOB R2, C
MOV R0, R MOV R0, R
Fig. 3.13.
Fig. 3.14.
Fig. 3.15.