You are on page 1of 11

UNIVERSIDAD CATOLICA DE SANTA MARIA

FACULTAD DE CIENCIAS E INGENIERIAS FISICAS Y


FORMALES

ESCUELA PROFESIONAL DE INGENIERIA


ELECTRÓNICA

Asignatura: MICROPROCESADORES

Informe Guía de Práctica 1: Lenguaje


Assembler (parte 1)

Grupo: 1

Horario: Miecoles 7 – 9 am

Apellidos/Nombre: Castillo Amado Edgar Raúl

Semestre 2018-I
Programación en lenguaje Assembler

DESARROLLO DE LA PRACTICA:

1. Primer Programa

a. Paso 7: Código de Primer Programa

Vista antes de ejecutar Primer Programa


AX: 0000 BX: 0000 CX: 0013 DX: 0000

CS: 0700 DS: 0700 ES: 0700 SS: 0700

BP: 0000 IP: 0100 SP: FFFE

DI: 0000 SI: 0000

b. Paso 13: Vista después de ejecutar Primer Programa

AX: 0064 BX: 0041 CX: ABCD DX: 198C

CS: 0700 DS: 0700 ES: 0700 SS: 0700

BP: 0000 IP: 0112 SP: FFFE

DI: 0000 SI: 0000

c. Paso 14: Cargue nuevamente el programa


Se reinicia cada dato obtenido a su forma original. CS no
ha cambiado sigue siendo 0700H, pero IP volvió a ser 0100H,
es decir a la primera instrucción de programa.

d. Paso 15: Ejecute sólo la primera instrucción


Se cargó el dato tal cual como fue esperado, realizándose
con éxito el comando MOV AH, 7AH. El registro CS no ha
cambiado, sin embargo IP avanzó 2 posiciones, que es lo
que equivale la instrucción realizada.

e. Paso 16: Interprete la información de la tabla


En la tabla 1, se puede observar que los datos en cada
registro son los iniciales. Casi cada registro está varío
y algunos toman valores específicos ya esperados. Además,
el valor de IP es el que se ingresó al inicio.

f. Paso 17: Continúe ejecutando paso a paso y llene la tabla


DIRECCIONES LENGUAJE LENGUAJE
DE ENSAMBLADOR
MÁQUINA

SEGM OFFSET CAMPOS LÍNEA


(CS)

0700 0100 B4 7A mov AH, 7A

0700 0102 B3 63 mov BL, 99

0700 0104 B1 CF mov CL,


11001111b

0700 0106 B8 64 00 mov AX, 100

0700 0109 BB 41 00 mov BX, 78

0700 010C B9 CD AB mov CX, 0ABCDh


0700 010F BA 8C 19 mov DX, 6540

0700 0112 C3 ret

NOTA: A partir de este punto, el programa


ejecuta un procedimiento predeterminado llamado
Interrupción.

0700 0000 CD 20 INT20H

0700 0150 FF FF BIOS DI

2. Segundo Programa

a. Paso 20: Código de Segundo Programa

b. Paso 23: Observe y anote en la tabla


SEG OFFSET Inicio Antes Después Después Después
(DS) del de 5a de 5a de 6a de 7a
Programa

0700h 0112h 90h 90h 61h 61h 61h

0700h 0113h 90h 90h 90h 41h 41h

REGISTRO CX 0011h 0011h 0011h 0011h 4161h

c. Paso 27: Vista después de ejecutar Primer Programa


DIRECCIONES LENGUAJE LENGUAJE
DE ENSAMBLADOR
MÁQUINA

SEGM OFFSET CAMPOS LÍNEA


(CS)

0700 0100 BA 12 01 mov DX, 0112h

0700 0103 8B DA mov BX, DX

0700 0105 B0 41 mov AL, ‘A’

0700 0107 B4 61 mov AH, 61h

0700 0109 88 27 mov [BX], AH

0700 010B 88 47 01 mov [BX+1], AL

0700 010E 8B 0F mov CX, [BX]

0700 0110 C3 ret

3. Tercer Programa

a. Paso 29: Código de Tercer Programa

b. Paso 30: Emule y ejecute el programa


Después de haber ejecutado el programa correspondiente, se
obtiene una ventana emergente con una letra A blanca con
fondo del carácter en magenta, y el resto de negro.
c. Paso 27 y 28: Modifique el programa sustituyendo el dato
que se almacena en BX (15Eh) por 10Eh y corra el programa
Al realizar la modificación anterior se obtiene que el
carácter A ha sido desplazado hacia la derecha, lo cual
nos lleva a pensar que este dato interviene con el
espaciado.

d. Paso 33: Modifique ahora el dato almacenado en CH,


cambiándolo por 11010000b
Al realizar la modificación, se obtiene que el color de la
letra A ha cambiado de blanco a negro, lo cual nos lleva a
pensar que este dato tiene que ver con el color de fuente.

e. Paso 34: Vuelva a cambiar CH, ahora por 10011110b


Al realizar la modificación, se obtiene que el color de la
letra A y su fondo ha cambiado de color a blanco y azul
respectivamente. Esto nos lleva a pensar que este dato
interviene tanto en el fondo del carácter como su color de
fuente.
f. Paso 35: Pruebe a hacer algunos cambios en CH, CL y BX
Se hizo algunos cambios menores como CH=10100000b, CL='C',
y BX=12Eh. Se obtuvo lo siguiente:

Análisis de Resultados

a. Primer Programa

 En el encabezado del programa ¿por qué se incluye la línea


“org 100h”?
Con esto se determina en qué posición de memoria el
microprocesador debe buscar la primera instrucción del
programa.

 Al introducir datos en los registros del microprocesador


se usan diferentes formatos (bases de numeración) ¿cuántos
y cuáles son?
Se puede ingresar datos en sistema binario, decimal o
hexadecimal. Para distinguir entre estas diferentes bases
numéricas, se adiciona una b al final para sistema binario,
una h para sistema hexadecimal, o nada por defecto para
sistema decimal.
 La sintaxis de la instrucción MOV define tres campos:
instrucción, dato1 y dato2. Al moverse los datos ¿cuál es
la fuente y cual el destino?
Dato1 vendría a ser el destino y Dato2 vendría a ser la
fuente.

 Al observar la tabla1 se nota que a la misma instrucción


MOV se le asignan diferentes códigos hexadecimales ¿a qué
se debe esto?
Se debe a que dependiendo del dato que queramos mover, el
código de programa variará de manera drástica. Para esto,
es necesario conocer cuál es la sintaxis completa.

 ¿Cuál es la función que cumple el registro IP dentro del


PRIMER PROGRAMA?
El registro IP realiza el seguimiento de cada instrucción
a través de cada instrucción del programa. De esta manera
el microprocesador sabe cuál es la instrucción que va a
ejecutar y en qué posición de memoria lo debe buscar.

 En la columna OFFSET de la tabla1, éstos no se incrementan


a una razón constante ¿por qué?
Esto se debe a que dependiendo de la instrucción, los bits
necesarios para cada una puede aumentar o disminuir, de
esta manera, no siempre se utilizará el mismo número de
bits para una instrucción mov.

b. Segundo Programa

 Al comparar las dos primeras instrucciones ¿qué diferencias


hay al ejecutarlas, siendo que las dos son MOV?
La diferencia es que la primera instrucción utiliza el tipo
de direccionamiento inmediato (carga un dato definido por
la instrucción), mientras que la segunda utiliza un tipo
de direccionamiento mediante registro.

 En las últimas tres instrucciones se incluyeron corchetes


(paréntesis cuadrados) en las instrucciones ¿Qué
diferencias observó en su ejecución respecto a las primeras
dos instrucciones?
Cuando se usa corchetes se refiere que el dato que se está
buscando se encontrará en la dirección definida por el
valor en corchete. Este es un tipo de direccionamiento
relativo a registro.

 ¿Por qué al ejecutar la séptima instrucción los datos se


almacenan en CX en ese orden específico?
Porque en lenguaje assembler, siempre se carga primero el
dato menos significativo, y posteriormente el más
significativo.

c. Tercer Programa

 Al ejecutar el programa, a medida que hacía las


modificaciones ¿qué efecto concreto logra el cambio en el
registro BX?
Este cambio define la posición del carácter con respecto a
la venta emergente. Mientras más grande, más a la derecha
se ubicará

 Al modificar CH ¿qué bits específicos se modificaron para


lograr cambios en el fondo y color de los caracteres?
Los cuatro bits menos significativos intervienen en el
color de fuente del caracter, mientras que los cuatro bits
más significativos intervienen en el color de fondo del
caracter.

INVESTIGACION COMPLEMENTARIA

¿Qué son los modos de direccionamiento?

Es la forma de ubicar un operando, este puede ubicarse en el


código de la instrucción, en la memoria principal o en algún
registro interno.

¿Cuántos y cuáles modos de direccionamiento tiene el


microprocesador 8086?

o Direccionamiento inmediato
o Direccionamiento directo
o Direccionamiento indirecto
o Direccionamiento relativo a registro
o Direccionamiento indexado

¿Qué modos de direccionamiento posee la instrucción MOV?

o Direccionamiento Inmediato
o Direccionamiento Directo
o Direccionamiento Indirecto
o Direccionamiento Relativo a Registro
o Direccionamiento Indexado

¿Qué diferencias hay entre las instrucciones XCHG ya la


instrucción MOV?

MOV destino, origen

𝑀𝑜𝑣 es una instrucción en el lenguaje ensamblador de la


mayoría de procesadores, cuyo propósito es la transferencia
de datos entre registros de procesador o registro y memoria.

Adicionalmente mov también permite el uso de datos absolutos,


como por ejemplo mover el número 10 a un registro del
procesador.

XCHG destino, origen (𝑒𝑋𝐶𝐻𝑎𝑛𝐺𝑒, intercambiar)

Intercambia destino con origen; no se puede usar con


registros de segmento. Esta instrucción encuentra su utilidad
en aquellas instrucciones que tienen asociados registros
específicos.

You might also like