Vous êtes sur la page 1sur 11

Universidad Estatal Pennsula de Santa Elena

LABORATORIO DE MICROPROCESADORES

PRACTICA # 02
Modos de Direccionamiento

Alumno:
Gabriel Romn Lanez

Tutor:
Carlos Saldaa

Grupo :4
Paralelo :1

17 de Mayo del 2017


Modos de Direccionamiento de Datos

El CPU puede acceder operandos (datos) de varias maneras que se denominan modos de
direccionamiento. El nmero de modos de direccionamiento se determina cuando el
procesador se disea y no puede cambiarse. Los modos de direccionamiento son:

1. por registro
2. inmediato
3. directo
4. indirecto
5. base+ relativo
6. indexado+ relativo
7. base indexado + relativo

Direccionamiento por registro:


Este modo de direccionamiento involucra el uso de registros para el almacenamiento de
los datos que una instruccin procesa. En este caso el CPU no accede memoria por lo
que su ejecucin es muy rpida. A continuacin tenemos algunos ejemplos:

MOV BX, DX; copia el contenido de DX en BX


MOV ES, AX; copia el contenido de AX en ES
ADD AL, BH; suma el contenido de BH al contenido de AL

Debe notarse que los registros fuente y destino deben coincidir en tamao. Por ejemplo,
MOV CL, AX marca error porque la fuente y destino son de distinto tamao. L(1,0) X
(bits)

Direccionamiento inmediato:
Con este modo de direccionamiento el operando fuente es una constante. Cuando la
instruccin se ensambla el operando (dato) se ubica inmediatamente despus del cdigo
de operacin de la instruccin. Por esta razn, este direccionamiento se ejecuta muy
rpido. Este modo de direccionamiento no se usa para cargar informacin en los
registros de segmento y en el registro de banderas, pero s en todos los dems registros.
Ejemplos:
MOV AX, 2550H; carga 2550H em registro AX
MOV CX, 625; carga el valor decimal 625 en CX
MOV BL, 40H; carga 40H en BL.

Para cargar informacin en los registros de segmento, primero se mueve el dato a uno
de los registros de propsito general y de aqu se carga el registro de segmento.
Ejemplo:

MOV AX, 2550H


MOV DS, AX
MOV DS, 2550H; ilegal!!!!
Ejercicio #1:
Con debug (comando A ensambla, comando U desensambla) genere cdigo de mquina
de las instrucciones siguientes:
MOV BX, 1234 Respuesta: bb3412 # de bytes: 3
MOV AX, BX Respuesta: 89d8 # de bytes: 2
MOV BL, AL Respuesta: 88c3 # de bytes: 2
MOV AX, ABCD Respuesta: b8cdab # de bytes: 3
MOV AH, 1F Respuesta: b41f # de bytes: 2

Direccionamiento Directo:
En este modo de direccionamiento el dato reside en alguna localidad de memoria cuya
direccin se ubica inmediatamente despus del cdigo de operacin de la instruccin, es
decir, ahora la direccin del dato forma parte del cdigo de mquina de la instruccin.
Esta direccin es un desplazamiento desde el origen del segmento, para calcular la
direccin fsica multiplicamos DS por 16 y luego sumamos este desplazamiento.
Ejemplo:
MOV DL, [2400]; mueve contenido de memoria DS: 2400H a DL
MOV [0500], AX; mueve contenido de AX a memoria DS: 0500H

Ejercicio #2:
Con debug genere cdigo de mquina de:
NOP Respuesta: 90 # de bytes: 1
MOV [3518], AX Respuesta: a31835 # de bytes: 3
MOV CL, [3518] Respuesta: 8a0e1835 # de bytes: 4
MOV DX, [3518] Respuesta: 8b161835 # de bytes: 4
Direccionamiento Indirecto:
En este modo de direccionamiento, la direccin de la localidad de memoria del
operando reside en un registro. Los registros usados para este propsito son SI, DI, y
BX. Estos registros actan como punteros, y como tales siempre guardan el
desplazamiento de direccin de la localidad de memoria que almacena el operando
(dato), este desplazamiento se combina con DS para generar la direccin fsica.
Ejemplos:
MOV AL, [BX]; carga AL con el contenido de memoria apuntada por DS: BX. Note
; que BX est entre corchetes.
MOV CL, [SI]; transfiere contenido de memoria DS: SI a registro CL
MOV [DI], AH; carga memoria DS:DI con el contenido de AH

Ejercicio #3:
Com debug obtenga cdigo de maquina de:
MOV AL, [BX] Respuesta: 8a07 # de bytes: 2
MOV [DI], AH Respuesta: 8825 # de bytes: 2
MOV AX, [SI] Respuesta: 8b04 # de bytes: 2

Ensamble el siguiente programa en CS: 100 y ejecute paso a paso con P.


NOP
MOV AX, 1120
MOV DS, AX
MOV AX, 17FE
MOV SI, 2498
MOV [SI], AX
INT 20
Sabemos que la instruccin MOV [SI], AX transfiere a la memoria un dato tipo palabra
(2 bytes). En la tabla escriba (en su reporte no aqu) la direccin lgica de memoria y el
contenido de cada localidad de la palabra transferida, aplique el ordenamiento del
pequeo indio.
Direccin lgica DS: desplazamiento Contenido de memoria
Direccin menor 2498 fe
Direccin mayor 2499 17

Direccionamiento Base Relativo:


En este modo de direccionamiento, la direccin efectiva del dato se calcula sumando a
BX BP un valor numrico. Por defecto el segmento de BX es DS y de BP es SS. Por
ejemplo:
MOV CX, [BX]+10; mueve DS: BX+10 y DS: BX+10+1 a registro CX.
; PA=DSx16 + BX+10 para LSB.
; PA=DSx16 + BX+10+1 para MSB.

MOV AL, [BP]+5; mueve SS: BP+5 a registro AL.


; PA=SSx16 + BP+5
Para el programa ensamblador las tres instrucciones siguientes son equivalentes
MOV AL, [BP]+5
MOV AL, [BP+5]
MOV AL, 5[BP].

Direccionamiento Indexado Relativo:


Este direccionamiento es similar al direccionamiento base relativo, excepto que ahora
usamos SI y DI ms un desplazamiento numrico para el clculo de la direccin efectiva
del dato. Ejemplos:
MOV DX, [SI]+5; PA= DSx16 + SI +5
MOV CL, [DI] + 20; PA= DSx16 + DI + 20
Ejercicio #4:
Ensamble en CS: 100 el siguiente segmento de programa:
MOV AX, 4500
MOV DS, AX
MOV AX, 2000
MOV SS, AX
MOV BX, 2100
MOV SI, 1486
MOV DI, 8500
MOV BP, 7814
MOV AX, 2512
MOV [BX] +20, AX
INC AX
MOV [SI]+10, AX
ADD AX, 7
MOV [DI]+4, AX
INC AX
MOV [BP]+12, AX
INT 20

Con comando P, ejecute el programa paso a paso. Con cada instruccin examine los
registros del CPU y tambin el valor de los operandos que se encuentran en la memoria
de datos para aquellas instrucciones que hacen referencia a operandos en memoria.
Luego llene la tabla ilustrada en la siguiente pgina.

r
Calcule la direccin efectiva EA asociada con el operando destino en cada una de las
cuatro instrucciones del programa que se acaba de ejecutar y que se muestran en la
tabla. Con comando D visualice el contenido de memoria y llene la tercera columna de
la tabla con el valor del operando destino.

Instruccin Direccin Lgica de Contenido de Memoria (valor del


Operando Destino operando destino)
MOV [BX] +20, AX DS: EA 2512
*EA=BX+20= 2120
MOV [SI]+10, AX DS: EA 2513
*EA=SI+10= 1496
MOV [DI]+4, AX DS: EA 251a
*EA=DI+4= 8504
MOV [BP]+12, AX SS: EA 251b
*EA=BP+12=7826
.
*EA= Direccin Efectiva del dato
Ejercicio #5
Directiva DB: Define datos tipo byte (8bits)
Use DEBUG para crear en el segmento de datos el arreglo siguiente: AA, 1B, CC, 2D,
00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,00.
El proceso se ilustra a continuacin:
A DS: 0200 enter
DB AA,1B,CC,2D,00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,00 ENTER.
Observe que este arreglo es de 16 bytes. DB es una directiva para crear datos tipo
byte. Use la barra de espacio o comas para separar el ingreso de cada uno de los 16
datos. Con ENTER valida el arreglo.
Visualice el arreglo (enteros hexadecimales) con el comando D DS: 0200 ENTER.
El siguiente programa usa el arreglo que se acaba de crear. Ensamble el programa en
CS: 100.
NOP
MOV AX, 2000
MOV DS, AX
MOV AX, [200]
ADD AX, [202]
ADD AX, 36
MOV [206], AX ; suma acumulada se transfiere a segmento de datos
MOV WORD PTR [20A], ABCD
MOV BYTE PTR [20D], FF
INT 20
Con el comando P ejecute paso a paso el programa. Despus de ejecutar el programa,
visualice el arreglo de datos y escriba el contenido final de las localidades siguientes:
DS:200 = aa
DS:201= 1b
DS:202= cc
DS:203=2d
DS:204=00
DS:205=00
DS:206=02 ;suma acumulada ocupa 2 bytes de memoria
DS:207=2e
DS:208=00
DS:209=00
DS:20A=cd
DS:20B=ab
DS:20C=00
DS:20D=ff

Ejercicio #6:
Con el comando A CS: 0100 ingrese al segmento de cdigo las instrucciones
siguientes:
CS: 0100 NOP
CS: 0101 MOV AX, 2000
CS: 0104 MOV DS, AX
CS: 0106 MOV AL, 5
CS: 0108 MOV CL, 0A
CS: 010A ADD AL, [0100]
CS: 010E DEC CL DECREMENTAR
CS: 0110 JNZ 010 INSTRUCCION JUMP IF NOT ZERO
CS: 0112 MOV BH, AL
CS: 0114 MOV [0101], AL
CS: 0118 INT 3 ; BREAKPOINT
CS: 0119 NOP
Con comando E ingrese a memoria el dato siguiente:

DS: 0100 0A
DS: 0101 FF
Corra el programa: -G = 100 ENTER.

Cul es el valor hexadecimal final en BH = 69?


Cul es el valor hexadecimal final en memoria DS: 0101= 69?
Cul es el valor hexadecimal final en CL = 00?
Conclusin:
En esta prctica aprendimos que el CPU puede acceder operandos (datos) de
varias maneras, a esto se le denominan modos de direccionamiento. Ahora ya
sabemos que el nmero de modos de direccionamiento se determina cuando el
procesador se disea y no puede cambiarse.
Ahora ya sabemos que los modos de direccionamiento son: por registro,
inmediato, directo, indirecto, base+ relativo, indexado+ relativo, base indexado
+ relativo.
Aprendimos la diferencia que hay entre cada modo de direccionamiento, las
instrucciones que debemos seguir para mover datos.
Gracias al nmero de ejercicios se pudo generar dudas y a la vez respuestas para
los diferentes casos de direccionamiento de datos.
Seguimos trabajando con la herramienta del debug, y seguimos revisando otras
instrucciones para la misma.

Recomendaciones:

Antes de comenzar a programar hay que tener en cuenta las definiciones de cada
segmento y partes del CPU y registros de propsito general para no tener
ninguna confusin.
Practicar varias veces y varios ejemplos para no tener ninguna duda de la
implementacin de ciertas funciones y comandos especiales
Investigar las nuevas definiciones y profundizar ms los conocimientos.

Vous aimerez peut-être aussi