21
ESCUELA SUPERIOR POLITECNICA DEL LITORAL FIEC Laboratorio de Microprocesadores Práctica #2 Modo de Direccionamiento de Datos Estudiantes: Pedro Carvajal Ruiz Jimmy Fuentes Gonzalez Paralelo # 1 Grupo # 2 Fecha de presentación: 25/05/16 2016- 1er Término

Practica 2 Micropro Pedro Ft Jimmy

Embed Size (px)

DESCRIPTION

Practice lab. de Microprocessors ES LA PRACTICE #2 . FACULTY FIEC

Citation preview

Page 1: Practica 2 Micropro Pedro Ft Jimmy

ESCUELA SUPERIORPOLITECNICA DEL LITORAL

FIEC

Laboratorio de Microprocesadores

Práctica #2

Modo de Direccionamiento de Datos

Estudiantes:

Pedro Carvajal Ruiz

Jimmy Fuentes Gonzalez

Paralelo # 1

Grupo # 2

Fecha de presentación:

25/05/16

2016- 1er Término

Page 2: Practica 2 Micropro Pedro Ft Jimmy

1. Enunciado del Proyecto.

a) Ejercicio #1

Este programa nos muestra la dirección física de las instrucciones y los bytes que ocupan en la memoria según direccionamiento Directo.

b) Ejercicio #2

Este programa nos muestra la dirección física de las instrucciones y los bytes que ocupan en la memoria según el direccionamiento indirecto.

c) Ejercicio #3

Este programa transfiere una palabra de dos bytes a la memoria de datos aplicando el ordenamiento del pequeño indio y para visualizar los datos de usa el comando D.

d) Ejercicio #4

Este programa nos permite observar los distintos contenidos de memoria de los diferentes segmentos de datos y de pila gracias a la dirección lógica de operando destino.

e) Ejercicio #5

En este programa usaremos el comando DB que nos sirve para declarar arreglos, este programa nos permite observar la dirección delos arreglos en el segmento de Datos.

f) Ejercicio #6

Este programa ejecuta un lazo seguido de una interrupción.

Page 3: Practica 2 Micropro Pedro Ft Jimmy

1. Diagrama de bloques.

2. Diagrama de flujo de los Programas Principales.

Page 4: Practica 2 Micropro Pedro Ft Jimmy
Page 5: Practica 2 Micropro Pedro Ft Jimmy
Page 6: Practica 2 Micropro Pedro Ft Jimmy
Page 7: Practica 2 Micropro Pedro Ft Jimmy

3. Descripción del algoritmo.

a) Ejercicio #1

Se inicializa con el comando A de ensambla

Se coloca por medio de un direccionamiento directo el valor de 2EA9 en el registro AX.

Luego se suma con el valor 346C con destino en AX

Se realiza una copia del registro AX en el registro CX

Se copia la parte alta del registro AX al registro DX.

Se coloca por medio de un direccionamiento directo el valor de 9B en la parte alta del registro AX.

Luego se procede por medio del comando U a desensamblar para poder visualizar las direcciones físicas ypoder así determinar los números de bytes que requiere cada instrucción.

a) Ejercicio #2

Se inicializa con el comando A de ensambla.

Se realizan las instrucciones de movimiento del valor en el registro AX a la dirección con offset [0200].

Se realiza una copia de la dirección en el segmento de Datos con offset [0150] a la parte baja del registro CX.

Se realiza una copia de la dirección en el segmento de Datos con offset [5614] a la parte baja del registro BX.

a) Ejercicio #3

Se inicializa con el comando A de ensambla con y la dirección base de CS en 0100.

Se le asigna el valor de 1500 como dirección base al segmento DS por medio del registro AX.

Page 8: Practica 2 Micropro Pedro Ft Jimmy

Se le asigna el valor de CDEF al registro AX.

Se le asigna el valor de 0200 al registro SI.

Se coloca el valor del registro AX en la dirección física asignado por el offset de SI 0200 con la dirección base de DS que es 15200.

Para visualizar se ejecuta el comando D.

a) Ejercicio #4

Se inicializa con el comando A de ensambla con y la dirección base de CS en 0100.

Se le asignan valores al registro AX que luego se transfieren a los segmentos DS, SS.

Se le asignan valores a los registros BX, SI, BP para que sean utilizados como offset.

Se le asigna al registro de trabajo AX el valor de 678D.

Se le asigna el valor de AX a las direcciones de memoria datos por los offset donde BX y SI determinan el segmento de Datos y BP el segmento de pila después de alterar el valor de AX incrementándolo o sumándolo y luego incrementándolo.

Se visualiza estos cambios con el comando D.

a) Ejercicio #5

El siguiente programa se lo inicializa con el comando A ensambla y generaremos un arreglo de 9 bytes con el comando DB en la dirección 0050.

Se proceden a sumar y a restar con el registro AX los valores del arreglo y a realizar una serie de instrucciones para luego determinar el valor de AX y de DS.

Se realiza el comando P para poder ejecutar paso a paso las instrucciones.

Page 9: Practica 2 Micropro Pedro Ft Jimmy

a) Ejercicio #6

Se inicializa CS:0100 y con el comando A ensambla se realizan las instrucciones en la cual colocamos DS con dirección base de 1000 con el registro AX

Se coloca en la dirección 0150 el valor de 0AH con el registro AX y CCH en la dirección 0151

Luego se crea un lazo con JNZ que saltara a la dirección 0114, en el cual se ejecutara la suma del valor 20H que se encuentra en el registro AL con decremento de CL con valor 0AH

El valor de AL después del lazo se lo direcciona al valor alto de BX y a la dirección 0151

El valor de la dirección 0151 se lo direcciona a CL para luego ser restada por el valor en 0150.

Antes de ejecutar el programa se verifica la IP que este apuntando en 0100 y se corre el programa con el comandoG.

1. Código de programas:

a) Ejercicio #1

MOV AX, 2EA9 ; mueve el valor 2EA9 al registro AX

ADD AX, 346C ; suma el valor de AX con 346C

MOV CX, AX ; direcciona el valor de AX en CX

MOV DH, AH ; direcciona la parte alta de AH en BH

MOV AH, 9B ; direcciona el valor de 9B a AH.

b) Ejercicio #2

NOP

MOV [0200], AX ; direcciona el valor de AX en offset 0200

MOV CL, [0150] ; direcciona el valor de la dirección 0150 a CL

MOV BX, [5614] ; direcciona el valor de la dirección 5614 a BX

Page 10: Practica 2 Micropro Pedro Ft Jimmy

c) Ejercicio #3

NOP

MOV AX, 1500 ; añade el valor de 1500 al registro AX

MOV DS, AX ; direcciona el valor de AX a DS

MOV AX, 0CDEF ; direcciona el valor de 0CDEF al registro AX

MOV SI, 0200 ; direcciona el valor de 0200 a SI

MOV [SI], AX ; coloca el valor de AX en el offset SI

INT 20

NOP

d) Ejercicio #4

MOV AX, 1300 ; direcciona el valor de 1300 en AX

MOV DS, AX ; coloca el valor de AX en DS

MOV AX, 2000 ; direcciona el valor de 2000 en AX

MOV SS, AX ; coloca el valor de AX en SS

MOV BX, 0200 ; direcciona el valor de 0200 en BX

MOV SI, 0600 ; direcciona el valor de 0600 en SI

MOV BP, 0300 ; direcciona el valor de 0300 a BP

MOV AX, 678D ; direcciona el valor de 678D en AX

MOV [BX] +6, AX; coloca el valor de AX en la dirección 13206

INC AX ; incrementa a AX en uno

MOV [SI]+8, AX ; coloca el valor de AX en la dirección 13608

ADD AX, 7 ; suma el valor de 7 con el valor de AX

INC AX ; incrementa AX en uno.

MOV [BP]+10, AX; coloca el valor de AX en la dirección 20310

INT 20

Page 11: Practica 2 Micropro Pedro Ft Jimmy

e) Ejercicio #5

A DS: 0050

DB A1 B2 C3 D4 E5 F6 E8 00 00; declaración de arreglo de 9 BYTES

NOP

MOV AX, [050] ; el valor de la dirección 050 se mueve a AX

ADD AX, [052] ; el valor de la dirección 052 se suma a AX

ADC AX, 5290

MOV [57], AX

MOV SI, 55

LDS AX, [SI]

NOP

MOV BX, 1000

MOV DS, BX

STC

INT 20

f) Ejercicio #6

NOP

MOV AX, 1000

MOV DS, AX

MOV AL, 0A

MOV [0150], AL

MOV AL, CC

MOV [0151], AL

MOV AL, 20

MOV CL, 0A

ADD AL, [0150]

DEC CL

JNZ 0114 ; implementa un lazo

Page 12: Practica 2 Micropro Pedro Ft Jimmy

MOV BH, AL

MOV [0151], AL

MOV CL, [0151]

SUB CL, [0150]

INT 3

NOP

1. simulaciones

a) Ejercicio #1

Page 13: Practica 2 Micropro Pedro Ft Jimmy

b) Ejercicio #2

Page 14: Practica 2 Micropro Pedro Ft Jimmy

c) Ejercicio #3

Page 15: Practica 2 Micropro Pedro Ft Jimmy

d) Ejercicio #4

Page 16: Practica 2 Micropro Pedro Ft Jimmy

e) Ejercicio #5

Page 17: Practica 2 Micropro Pedro Ft Jimmy
Page 18: Practica 2 Micropro Pedro Ft Jimmy

a) Ejercicio #6

1. Conclusiones

Se logró observar el número de bytes y el OPCODE que segenera en cada instrucción gracias al comando desensambla Uque muestra en cada línea de instrucción el OPCODE y por saltode dirección del offset se puede determinar el número de bytesque ocupa cada instrucción.

Page 19: Practica 2 Micropro Pedro Ft Jimmy

Se cumplió los métodos de direccionamiento por registro, directo,indirecto, base-relativo e indexado-relativo en los cuales se logróobservar las diferentes formas en las que se pueden direccionardatos a los diferentes segmentos como el segmento de DATO y elsegmento de CODIGO.

El estudiante logro obtener información del segmento de Datosya sea por diferentes métodos de direccionamiento o por mediode arreglos generados atreves del comando DB o BYTE, estodeja una amplia gama de posibilidades para el manejo ymovimiento de información por medio de las instrucciones.

1. Recomendaciones

Cuando se use el comando A ensambla procure que ladirección del offset en este caso el valor de IP este en0100 ya que esto ayuda a un mejor rendimiento delcódigo de instrucciones y tendremos más espacio parapoder almacenar en el segmento de código los OPCODEde nuestras instrucciones.

Al momento de comenzar a escribir las instrucciones en elCMD se recomienda a los usuarios usar correctamente lasinstrucciones o su vez colocarlas de forma correcta paraevitar ERRORES al momento de continuar escribiendo lasdemás instrucciones es por eso que se pide totalconcentración de parte del programador

Se recomienda usar solo el CMD de la máquina virtual yaque si usa el CMD de su PC común este podría presentarproblemas en el futuro ya que estaría moviendodirecciones del procesador actual y no el virtual estogenera el problema de que sus datos o direcciones clavesde la maquina se eliminen para siempre.

1. Anexos

a) Ejercicio #1

Con Debug (comando A ensambla, comando U desensambla)obtenga código de máquina de las instrucciones siguientes:

MOV AX, 2EA9 Respuesta: B8A92E # de bytes: 3

Page 20: Practica 2 Micropro Pedro Ft Jimmy

ADD AX, 346C Respuesta: 056C34 # de bytes: 3

MOV CX, AX Respuesta: 89C1 # de bytes: 2

MOV DH, AH Respuesta: 88E6 # de bytes: 2

MOV AH, 9B Respuesta: B49B # de bytes: 2

b) Ejercicio #2

Con Debug genere código de máquina de:

NOP Respuesta: 90 # de bytes: 1

MOV [0200], AX Respuesta: A30002# de bytes: 3

MOV CL, [0150] Respuesta: 8A0E5001 # de bytes: 4

MOV BX, [5614] Respuesta: 8B1E1456 # de bytes: 4

c) Ejercicio #3

La instrucción MOV [SI], AX transfiere una palabra (dos bytes) ala memoria de datos, llene la tabla con la dirección lógica y elcontenido de cada localidad de memoria afectada por suejecución, aplique el ordenamiento del pequeño indio. Paravisualizar datos use el comando D.

Dirección Lógica (DS: desplazamiento)

Contenido de memoria

Dirección menor 200 EFDirección mayor 201 CD

d) Ejercicio #4

Para las tres instrucciones mostradas en la tabla calcule ladirección efectiva EA asociada con el operando destino. Concomando D visualice el contenido de memoria y llene la terceracolumna de la tabla con el valor del contenido de memoriacorrespondiente al operando destino que demanda dos bytes enmemoria.

Instrucción Dirección Lógica deOperando Destino

Contenido de Memoria (operando destino dos

bytes)MOV [BX] +6, AX DS: EA

*EA=BX+6= 0206678D

MOV [SI]+8, AX DS: EA 678E

Page 21: Practica 2 Micropro Pedro Ft Jimmy

*EA=SI+8= 0608MOV [BP]+10,AX

SS: EA *EA=BP+10= 0310

6796

*EA= Dirección Efectiva del dato

e) Ejercicio #5

Después de ejecutar LDS AX, [SI]:

AX=E8F6 DS=1000

Después de ejecutar INT 20: visualice el arreglo de datos y escriba el contenidofinal de las localidades siguientes en la memoria de datos:

DS: 55=F6 DS: 56=E8 DS: 57=00 DS: 58=10

Estado Final de CF= ACTIVADA

a) Ejercicio #6

¿Cuál es el valor hexadecimal final de:

DS: 0150= 0A DS: 0151= 84

Registro CL= 0A