Está en la página 1de 6

INFORME #2 DE LABORATORIO

Microprocesadores

Federico Pineda, 9-752-1766 Lab_A

Licenciatura en Ingeniería Eléctrica y Electrónica - Universidad Tecnológica de Panamá,


Facultad de Ingeniería Eléctrica - Universidad Tecnológica de Panamá.

Resumen el estudiante tuvo la oportunidad de conocer la interfaz del programa “Code Warrior” y de
desarrollar la actividad que consistía en usar el programa para dar ciertas instrucciones y ver el cambio en los
registros a causa de las instrucciones previamente dadas.

Introducción en la siguiente asignación de laboratorio se llevó acabo por parte del estudiante el uso de
algunos de los modos de direccionamientos que se utilizan programando en assembler, el cual nos permitió
ver la funcionalidad de cada uno de ellos y su uso adecuado a la hora de ejecutar determinada acción en un
programa

Objetivos
• que el estudiante domine correctamente el uso de los modos de direccionamientos
• desarrollar y ejecutar cada una de las instrucciones facilitadas en la guía y que el estudiante sepa que
es lo que se está haciendo o ejecutando en cada una de las instrucciones
• tener claro cuáles son instrucciones correctas que se le pueden dar a los distintos modos de
direccionamiento y distinguirlas

Desarrollo de la asignación:
EndlessLoop:

LDAA #KTE2; MDD _ INMEDIATO_____. Resultado: ____ A=$10_________.

LDD #KTE1; MDD __ INMEDIATO_____. Resultado: ______D=$1250_______.

LDX #0; MDD _____ INMEDIATO_____. Resultado: ______ IX=$0__________.

EXG X, D; MDD ____ INDEXADO______. Resultado: ____D=0; IX=$1250__.

LDAA tabla; MDD __ DIRECTO________. Resultado: ______A=$41_______.

LDX #3; MDD ________INMEDIATO _____. Resultado: ______IX=$03________.

LDAA tabla, X; MDD ___INDEXADO______. Resultado: ______A=$44________.

LDY #12; MDD _______INMEDIATO______. Resultado: ______IY=C; Ch=12d___.

LDAB tabla, Y; MDD ___INDEXADO_______. Resultado: __B=4D; (TABLA”41” + C)____.

LDD tabla, Y; MDD ____ INDEXADO______. Resultado: ____D=$4D4E__B=$4D+1______.

LDD dat_ext; MDD ____DIRECTO________. Resultado: ____D=$0987__________.

LDD #dat_ext; MDD ___INMEDIATO______. Resultado: ____D=$C047____________.

LDX 0; MDD __________DIRECTO________. Resultado: ____IX=$0_____________.

LDAA D, X; MDD ______INDEXADO ______. Resultado: _____A=$0947___________.

LDD #vect_ind; MDD ___INMEDIATO_______. Resultado: ___D=$C049__________.

LDAB [D, X]; MDD _____INDEXADO INDIRECTO ACUMULADOR D OFFSET

. Resultado: ___B=$41___________.

LDX #datos; MDD _____INMEDIATO________. Resultado: ___IX=$C069____________.

LDD 2, +X; MDD _INDEXADO PRE-INCREMENTO. Resultado: X = _$C06B_ y D = _$02___.

LDD 4, +X; MDD _ INDEXADO PRE-INCREMENTO. Resultado: X = $C06F y D = $ABCD_.

LDD 2, X-; MDD INDEXADO POS-DECREMENTO. Resultado: X =$C06D y D = $ABCD.

LDD 4, X-; INDEXADO POS-DECREMENTO Resultado: X = $C069 y D = __3____.

LDX #0

LDD [puntero, X]; Indirecto, usando puntero.

BRA Endless Loop; restart.

Dat_ext dc.w $0987

vect_ind dc.w tabla


Preguntas

7. ¿Cuál es el principal aspecto estudiado en esta práctica?


El estudiante debe adquirir conocimiento y dominio de los modos de direccionamiento que hay o por lo
menos lo que más se utilizan y así tener una noción del funcionamiento de un microprocesador.

2. ¿Cuántos modos de direccionamiento posee el MCU revisado?


En total utilice 6 MDD

3. Mencione ventajas y desventajas comparativas entre usar lenguajes convencionales y usar Assembler.

Ventajas:
Es posible realizar el programa de manera más minuciosa y con mucho más detalle teniendo en cuenta los
tiempos y el muestreo de los datos.

Se puede ver la programación en sí, bien estructurada, y con esto se aprende a programar en lenguaje máquina
entendiendo y controlando mas todo lo que está pasando.

Otra ventaja de assembler es la flexibilidad entre los diferentes sistemas operativos que andan circulando en la
informática.

Desventajas:
Los comandos no son tan fáciles a comparación de un lenguaje de programación de alto nivel, ya que estos
están hechos para que la interpretación sea más didáctica

Peligro de afectar recursos inesperadamente a causa de mala disposición de los datos

Para escribir un gran código, se requiere escribir un código eficiente. El escribir un código eficiente requiere
la elección de buenos algoritmos y la implementación buena de esos algoritmos, no es una desventaja desde el
punto de vista funcional, pero podría causar muchos errores si no se domina bien el lenguaje.

4. ¿Cuáles son las direcciones iniciales de tabla, datos y puntero?


Tabla: $C0CE ; datos: $C069 ; puntero: $C074

5. ¿Cuáles de los MDD estudiados son los que menos ciclos consumen y los que más ciclos consumen?
Menor cantidad de ciclos: directo, inmediato
Mayor cantidad de ciclos: indexado, indexado pre-incremento, indexado pos-decremento, indexado indirecto
acumulador D offset

6. Además del IX y el IY ¿Qué otros registros pueden ser usados en los MDD indexados?
SP, PC

7. Mencione razones por la que la mayoría de los lenguajes convencionales incluyen dentro de sus
características la posibilidad de escribir instrucciones directamente en Assembler.
Presente un resumen del modelo de programación y los modos de direccionamiento de
un microprocesador
comercial diferente del HC12 por ejemplo uno de los ATMEGA o algún
microprocesador clásico de Intel.

INTEL 8088

Es un microprocesador diseñado en 1978 por la empresa Intel que fue uno de los iniciadores de la arquitectura
x86. Se dio a conocer gracias a que IBM lo utilizó para su IBM-PC (lanzado en 1981), que arrasó en ventas.

CARACTERÍSTICAS

• Arquitectura CISC de 16 bits.

• Frecuencia de reloj: desde 4,77 a 10 Mhz (según modelo).

• Registros de 16 bits.

• Bus interno de 16 bits.

• Bus de direcciones de 20 bits.

• Bus externo de 8 bits (su antecesor el 8086 tiene un bus externo de 16 bits).

MANEJO DE LA MEMORIA

los microprocesadores 8088 poseen registros de un tamaño máximo de 16 bits. Con estos 16 bits podemos
direccionar como máximo un total de 64 KB de memoria. Pero este microprocesador puede direccionar hasta
1 MB.

Los registros de propósito general son el AX, BX, CX, y DX, de 16 bits. Un programa podía usar tanto los
registros de 16 bits como los registros de 8 bits. Aparte del uso general de los registros para hacer cálculos
aritméticos y lógicos, existen instrucciones que usan estos registros con un uso particular especializado, como
se indica a continuación:

• Registro AX: El registro AX es el registro acumulador, es utilizado para operaciones que implican
entrada/salida, multiplicación y división (estas dos últimas en conjunto con el registro DX)

• Registro BX: El registro BX es el registro base, y es el único registro de propósito general que
puede ser un índice para direccionamiento indexado

• Registro CX: El registro CX es conocido como el registro contador. Puede contener un valor para
controlar el número de veces que un ciclo se repite o un valor para corrimiento de bits

• Registro DX: El registro DX es el registro de datos. En algunas operaciones se indica mediante este
registro el número de puerto de entrada/salida, y en las operaciones de multiplicación y división de
16 bits se utiliza junto con el acumulador AX
MODOS DE DIRECCIONAMIENTO:

• Implícito. El dato está implícito en la propia instrucción. Ej. STC, STD y STI, (Set Carry, Set
Direcction y Set Interrupts) encienden el flag correspondiente indicado en la propia
instrucción. CBW (Convert Byte to Word) extiende el bit del signo del registro AL a AX. Ni el AL
ni el AX son especificados, puesto que la instrucción CBW implícitamente trabaja sobre ellos.

• Inmediato. El dato para operar está inmediatamente después del opcode de la instrucción.
Ejemplo, MOV AX, 5

• Registro. El dato está en un segundo registro. Ej. MOV AX, BX. Aquí, el dato está en el registro BX

• Directo. La dirección del dato está en el campo de la dirección del opcode. Ejemplo. MOV AX,
[100h]. Aquí se mueve (copia) el contenido de las direcciones 100h y 101h al registro AX. En este
caso se mueven dos bytes puesto que AX es de 16 bits. Si fuera MOV BL, [100h] se movería sólo un
byte pues BL es un registro de 8 bits

• Indirecto. El dato es especificado mediante una combinación de registros índice y base, y puede
haber un desplazamiento

➢ Base. Un registro base (BX o BP) tienen la dirección de donde se tomará el dato. Ej. MOV
AX, [BX]

➢ Índice. Un registro índice (SI o DI) tienen la dirección de donde se tomará el dato.
Ej. MOV AX, [SI]

➢ Base + Desplazamiento. El dato se tomará de la dirección apuntada por la suma de un


registro base más un desplazamiento. Ej. MOV AX, [BP + 7]

➢ Índice + Desplazamiento. El dato se tomará de la dirección apuntada por la suma de un


registro índice más un desplazamiento. Ej. MOV AX, [DI + 7]

➢ Base + Índice. El dato se tomará de la dirección apuntada por la suma de un registro base
más un registro índice. Ej. MOV AX, [BX + SI]

➢ Base + Índice + Desplazamiento. El dato se tomará de la dirección apuntada por la suma


de un registro base, más un registro índice, más un desplazamiento. Ej. MOV AX, [BX + SI
+ 9]
Recomendaciones
• el usuario debe ser cuidadoso a la hora de escribir las instrucciones y saberlas interpretar dado que el
uso incorrecto de estas podía arrojar resultados que no son los esperados
• antes de ejecutar el código desarrollado es preferible que se compile y se revise la sintaxis del código
programado para que de esta manera podamos corregir errores antes de una simulación
• a la hora de la ejecución del programa y la simulación hay algunas opciones de ejecución de las
instrucciones, en lo personal recomiendo step by step para ver línea a línea cada instrucción que se
realiza

conclusiones
• La importancia de este es que en el ensamblador se pueden hacer cualquier tipo de programas que en
otros lenguajes de alto nivel no, al igual que ocupan menos espacio en la memoria.
• Los microprocesadores son dispositivos complejos pero que son indispensable en el mundo de la
informática y que nos permite desarrollar mucha más tecnología
• Se analizo las ventajas que presenta programar en el ensamblador que hacerlo de manera tradicional

También podría gustarte