Professional Documents
Culture Documents
Ing. M. Logreira V. A.
Nota: Recuerde que la asistencia puntual a cada prctica vale 10% de la nota obtenida.
Prctica No 3 de Computadoras Digitales (IET)
Modelo de Programacin y Modos de Direccionamiento
Inmediato: el dato se especifica directamente con la instruccin, ej.
LDAA #$55 ; El dato corresponde al valor 55 en hex.
LDX #$1234 ; El dato es 1234 en hex.
Directo: el dato est en la direccin de memoria que se especifica en la instruccin.
LDAA $55 ; El dato est en la memoria en la direccin 55 en hex.
Extendido: cuando la direccin es completa
LDAA $F03B ; El dato puede estar en cualquier direccin dentro de los 64K direccionables.
Relativo: solo es usado por las instrucciones de salto relativo branch la direccin donde cae el salto se
especifica relativa a la posicin de la direccin donde reside la instruccin. Los branch cortos usan
direccionamiento relativo de 8 bits y se limitan a saltos de 127 bytes hacia adelante y 128 bytes en
retroceso. Los branch largos son de 16 bits y tienen un alcance de 32767 hacia adelante y 32768 bytes
en retroceso.
Indexado: la direccin del dato se calcula basndose en el registro ndice IX, IY, SP o PC y una constante
que se especifica con la instruccin. Existen siete variaciones de este modo de direccionamiento.
o Indexado con offset constante de 5 bits: la direccin es especifica en base a la suma del contenido
del registro y una constante con signo que puede variar desde -16 hasta 15, ej.
LDAA 0, X ; La direccin est en IX.
STAB -8, Y ; La direccin es -8 + IY.
o Indexado con offset constante de 9 bits: igual que el anterior pero con un offset que puede estar
entre -256 y +255.
o Indexado con offset constante de 16 bits: igual al anterior pero con un offset que puede ser desde
32767 hacia adelante o 32768 hacia atrs.
o Indexado indirecto con offset constante de 16 bits: la direccin del dato reside en la memoria. la
direccin de la memoria es la suma del contenido del registro al offset de 16 bits, ej.
LDAA [10, X] ; Asuma que IX contiene 30, la direccin del dato est almacenado en la
; memoria en la direccin IX + 10 = 40 si en la direccin 40 reside FF45,
; entonces esta es la direccin que contiene el futuro valor de A.
o Indexado con pre/post incremento/decremento automtico: la direccin se obtiene sumndole o
restndole al registro el offset el registro mantiene el nuevo valor modificado por el offset. Esta
operacin puede realizarse antes de obtener el dato con lo que sera pre
decremento/incremento o puede realizarse despus de obtener el dato con lo que sera post
decremento/incremento, ej.
STAA 1, - SP ; Primero la direccin se obtiene restndole 1 a SP. Segundo se almacena
A
; en la direccin resultante. SP es modificado.
LDX 2, SP+ ; Primero se carga X con el dato cuya direccin est en SP, posteriormente
;se modifica SP sumndole 2.
o Direccionamiento indexado con offset en acumulador: la direccin del dato se obtiene sumando
el contenido del registro ndice con el contenido de uno de los acumuladores A o B del HCS12, ej.
LDAA B, X ; la suma de B con X forman la direccin desde la cual se carga A.
o Direccionamiento indirecto indexado con offset en acumulador D: la direccin efectiva reside en
la memoria cuya direccin se obtiene sumando el contenido del acumulador de 16bits D al
Ing. M. Logreira V. A.
Nota: Recuerde que la asistencia puntual a cada prctica vale 10% de la nota obtenida.
Prctica No 3 de Computadoras Digitales (IET)
Modelo de Programacin y Modos de Direccionamiento
registro ndice utilizado, ej.
JMP [D, PC] ; la direccin destino del salto la tiene el vector que reside en la direccin
; que resulta de sumar D y PC.
Es comn que las instrucciones hagan uso de mltiples modos de direccionamiento, ej.
MOVB $2000, 2, PC ; Copia el byte de datos desde la direccin 2000 hex a la direccin
; ubicada en PC + 2.
En el ejemplo anterior la instruccin MOVB combina los MDD directo extendido y el indexado con offset
constante de 5bits.
Procedimiento
Para la prueba de los modos de direccionamientos usaremos la instruccin LDAA carga acumulador A con el
contenido de una memoria cuya direccin efectiva estar expresada en diferentes MDD
1. En el Code Warrior, cree un nuevo proyecto tipo Relocatable Assembler con full chip simulation
modifique main.c para incluir el siguiente programa:
; Constantes para modo inmediato.
KTE1 EQU $1250
KTE2 EQU $10
; variables para modo directo.
variable_t dc.w 0
variable_p dc.w 0
tabla: dc.b "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
datos: dc.w 1,2,3,$ABCD, $8000, $AF00
puntero: dc.w tabla
; code section
MyCode: SECTION
main:
_Startup:
Entry:
LDS #__SEG_END_SSTACK ; initialize the stack pointer
CLI ; enable interrupts
EndlessLoop:
LDAA #KTE2 ; MDD _______________________. Resultado: _____________________.
LDD #KTE1 ; MDD _______________________. Resultado: _____________________.
LDX #0 ; MDD _______________________. Resultado: _____________________.
EXG X,D ; MDD _______________________. Resultado: _____________________.
Ing. M. Logreira V. A.
Nota: Recuerde que la asistencia puntual a cada prctica vale 10% de la nota obtenida.
Prctica No 3 de Computadoras Digitales (IET)
Modelo de Programacin y Modos de Direccionamiento
LDD dat_ext ; MDD _______________________. Resultado: _____________________.
LDX #0
LDD [puntero,X] ;Indirecto, usando puntero.
Ing. M. Logreira V. A.
Nota: Recuerde que la asistencia puntual a cada prctica vale 10% de la nota obtenida.