You are on page 1of 15

Microcomputadoras I

INTRODUCCCION

Un sistema operativo es posible encontrar normalmente en la mayora de los aparatos


electrnicos que utilicen microprocesadores para funcionar, ya que gracias a esto
podemos entender la mquina y que esta cumpla con sus funciones.

Un sistema operativo es una coleccin organizada de rutina o extinciones del software


del hardware. Consiste en rutinas de control que hacen funcionar una computadora y
proporcionar un entorno para la ejecucin de los programas. Existen otros programas
que se apoyan en el SO para poder acceder a los recursos que deben brindar una forma
de que el usuario se pueda comunicar con l a travs de una interfaz que le brinde una
vida de comunicacin con el hardware del sistema informtico.

Para este laboratorio se ha hecho el uso del emulador Turbo Debugger, no siendo este
La nica herramienta que podra ejecutar programas en bajo nivel, ya que en realidad
se intenta poner en prctica los conocimientos que en la teora se aprenden, por lo que
los ejercicios aqu propuestos nos inducen a un mejor entendimiento de estos
dispositivos y a un mayor aprovechamiento de los mismos.

[Fecha]

Microcomputadoras I

MARCO TEORICO
El microprocesador 8086 est dividido en dos sub-procesadores. Por un lado est la
Unidad de Ejecucin (EU) encargada de ejecutar las instrucciones, la cual posee una
ALU (unidad aritmtico-lgica) con un registro de estado con varios flags asociados y un
conjunto de registros de trabajo, y por otro est la Unidad de Interfaz de bus (BIU),
encargada de la bsqueda de las instrucciones, ubicadas en la cola de instrucciones
antes de su ejecucin y facilitar el direccionamiento de la memoria, es decir, encargada
de acceder a datos e instrucciones del mundo exterior.
El 8086 contiene 14 registros de 16 bits que son:
De propsito General:
Registro AX: Registro acumulador
Registro BX: Registro Base, que sirve para direccionar a memoria
Registro CX: Es un registro contador, que tambin es utilizado en ciertas instrucciones
como contador de registros iterativos.
Registro DX: Es un registro de datos, que trabaja con trabaja con nmeros grandes.
Registros de segmentos:
Registro CS: corresponde al segmento de cdigo, que almacena instrucciones
Registro DS: Corresponde al segmento de datos, que almacena datos que sern
utilizados por el programa.
Registro SS:

Es en segmento de Pila, para apilar datos.

Registro ES:

Segmento EXTRA, almacena datos que ya no caben en el registro DS.

Registro de Punteros
Registro IP:

Puntero de instruccin, guarda la siguiente instruccin a ejecutar.

Registro SP: Puntero de pila, nos seala a la cima de la pila.


Registro BP: Puntero Base, sirve para especificar un lugar dentro del segmento de pila.
Registro SI:

Es un ndice fuente

Registro DI:

Es ndice destino

Registros de estado:
Son registro que en ellas se va a registrar la actividad del sistema en un momento
determinado, activando o desactivando el bit, cada bit tiene su nombre y son
considerados como banderas o flags, un bit que corresponde a un indicador de carrin.

[Fecha]

Microcomputadoras I

CF:

es un indicador de carrin que se activa cuando el resultado de la operacin


genera acarreo.

PF:

bandera de paridad, sirve para transistores de datos dentro de la computadora.

AF:

Flag de bandera Auxiliar, se activa cuando existe acarreo del bit 3 al 4.

ZF:

Flag de cero, se activa cuando el resultado es cero.

SF:

Flag de signo, se activa cuando el resultado de una operacin es negativo

IF:

Flag de interrupcin, si est activado permite las interrupciones.

DF:

Flag de direcciones, indica el sentido en que se hagan las operaciones en


memoria.

OF:

Flag de desbordamiento, cuando excede la capacidad del lugar donde se va a


colocar los datos.

Durante el proceso de programacin se pueden utilizar las siguientes instrucciones del


8086 que son.
Instruccin MOV:

transfiere un byte desde el operando fuente al operando destino.


MOV destino, fuente

Instruccin CMP:

Instruccin de comparacin.
CMP op1, op2

Instrucciones aritmticas: las que estn implementadas en el 8086


ADD:

Instruccin de suma
ADD destino, fuente

SUB:

Instruccin de resta.
SUB destino, fuente

INC:

Instruccin de incremento.
INC operando

DEC:

Instruccin de decremento
DEC operando

MUL:

Instruccin de multiplicacin.
MUL multiplicador

DIV:

Operando de divisin.
DIV divisor
[Fecha]

Microcomputadoras I

Instruccin de Salto
Incondicional:
JMP:

se salta la otra instruccin si no se ejecuta.


JMP direccin

Condicional:

se cumple el salto si se cumple una condicin la cual ser verificada en


el registro de estado.

JE dir:

Saltar si es igual

JNE dir:

Saltar si no es igual.

JA dir:

Saltar si es mayor.

JB dir:

Saltar si es menor.

JAE dir:

Saltar si es mayor igual.

JBE dir:

Saltar si es menor igual.

JC dir:

Saltar si hay acarreo

JNC dir:

Saltar si no hay acarreo.

JO dir:

Saltar si hay OVERFLOW.

[Fecha]

Microcomputadoras I

LABORATORIO 01: CONOCIMIENTO DE LA EJECUCION DE UN PROGRAMA EN


ASSEMBLER
FUNCION: INSTRUCCIONES DEL 8086

ACCERDER AL TURBO DEBUGGER:

Clic en Mi PC
Seleccionamos el Disco C: y le damos Clic.

Luego seleccionamos la carpeta del BORLANDC y la abrimos.

[Fecha]

Microcomputadoras I

Posteriormente buscamos la carpeta BIN y la abrimos.

Buscamos el archivo TD, lo seleccionamos y le damos doble clic.

[Fecha]

Microcomputadoras I

Entonces apreciamos la siguiente pantalla, donde nos muestra sus siguientes


reas del emulador TURBO DEBUGGER

3
1

1.
2.
3.
4.
5.

En esta rea se seala la posicin de la instruccin que se va a ejecutar.


En esta rea Guarda la direccin de la siguiente instruccin a ejecutar.
Aqu contiene los flags del registro de estado.
En esta rea inferior izquierda corresponde al segmento de datos.
En esta rea inferior derecha corresponde al segmento de pila.

[Fecha]

Microcomputadoras I

Ahora desarrollamos los EJERCICIOS hechos en clase utilizando este mismo


programa.

Ejercicio N 1

1. Desarrollar una porcin de cdigo en assembler que permita encontrar la suma


de los cinco primeros nmeros naturales.

Mov AX, 0
Mov Cx, 1
Condicin :

Cmp CX, 6
Jae fin
Add AX, BX
Inc BX
Jmp Condicion
Fin:

Ahora utilizando el turbo de debugger:

Ingresamos cada instruccin en una direccin especifica de memoria, para ello


solo hacemos clic donde queremos insertarla, luego escribirla y dar enter.

Insertamos las
instrucciones
una a una.

[Fecha]

Microcomputadoras I

Una vez insertadas las instrucciones tenemos que tener en cuenta la direccin
de memoria donde apunta el registro IP, puesto que de ah empezaremos con
la depuracin.

Se
especifica
la
direccin de memoria
donde se va a saltar
despus de ejecutar
esa instruccin (esto
es una etiqueta)

Luego se empieza a ejecutar cada instruccin presionando la tecla F8, entonces


nos damos cuenta de cmo se van actualizando los registros, tambin hacia
donde apunta el registro IP (la siguiente y que flags se activan cada vez que uno
ejecuta una instruccin.
En la primera
iteracin se
asigna el valor
de cero al
registro
AX
(direccionami
ento
inmediato). Lo
mismo sucede
con
la
segunda
iteracin
donde a CX se
le asigna 1

IP apunta la siguiente
direccin a ejecutar

[Fecha]

Microcomputadoras I

Cuando se ejecuta la comparacin se activan los flags como SF=1,ya que al


tomar el valor cx=1 y evaluarlo con el valor 6,ste resulta ser menor por lo
tanto se activa SF=1., eso lo podemos apreciar en la siguiente imagen.

Activacin del flag de


signo, carry y auxiliar

En la siguiente imagen se podr observar que :


el registro Ax=1 pues ya se ejecut la instruccin ADD.
el registro cx=2, se ejecut la instruccin INC.

[Fecha]

10

Microcomputadoras I

Al ejecutar la instruccin jmp saltaremos a la direccin de memoria 106 donde


compararemos de nuevo a cx con 6 y si es menor volveremos a ejecutar las
instrucciones nuevamente hasta salir del bucle

Al terminar las instrucciones la suma de los cinco primeros dgitos quedar almacenada
en el registro AX, adems el Flag de cero se activar cuando se haga la comparacin de
cx=6, ya que son iguales por lo tanto se activa el ZF.

AX= F=15
Z=1 (activacin del Flag de cero se activa al momento de hacer la
comparacin entre cx,6)

[Fecha]

11

Microcomputadoras I

Ejercicio N 2
Elaborar una porcin de programa en assembler que permita obtener los 10 primeros
dgitos de la serie de Fibonacci y colocarlos en la memoria a partir de la primera posicin.

Mov byte ptr [0], 0


Mov byte ptr [1], 1
Mov bx,2
Condi: bx,11 ; once en decimal
Jae final
Mov al,[bx-2]
Add al, [ bx-1]
Mov byte ptr [bx], al
Inc bx
Jmp condi
Final:

Ahora utilizando el turbo de debugger:

Insertamos las instrucciones en el segmento de cdigo, para encontrar los 10


primeros trminos de la serie de Fibonacci.

[Fecha]

12

Microcomputadoras I

Ejecutamos las dos primeras instrucciones, la posicin de memoria 0 y 1 toma


los valores 0 y 1 respectivamente.

El registro bx=2, por lo tanto, cuando ejecutamos la instruccin de comparacin; Los


registros de estado activan sus bit, como SF=1 ya que bx=2 menor respecto a 10(000A
en hexadecimal).

[Fecha]

13

Microcomputadoras I

Al ejecutar las instrucciones de asignacion AL ,[bx-02],asignamos el valor de 1 a


AL y posteriormente en la siguiente instruccin sumamos a Al=1 el valor de cero
quedando Al=1,valor que se coloca en la siguiente posicin de memoria 2 .
La posicin de memoria 2 toma el valor del registro AL=1 como se muestra en la
figura:

De esta manera muestra todos los 10 primeros trminos de la serie de Fibonacci:


El registro bx=10, por lo tanto al ejecutar la instruccin de comparacin de bx respecto
a 10 se activa el ZF =1.
El
puntero IP salta a la direccin 011Dh ya que bx es >= respecto a 10.El ultimo termino es
34 en decimal el cual est almacenado en el reg.AX =0022 en hexadecimal. Los 10
primeros trminos de la serie de Fibonacci se aprecian en la parte inferior izquierda.

Bueno as de esta forma concluimos los ejercicios desarrollados en el Laboratorio.

[Fecha]

14

Microcomputadoras I

Instrumentos Utilizados en el laboratorio.


Para poder utilizar este Emulador, es mejor utilizarlo en una PC, Pentium IV que
tenga Windows XP o vista, tambin podemos utilizarlo en una PC ms moderna
con Windows 7 pero utilizando Windows XP como mquina virtual.
CONCLUSIONES:

Mediante este laboratorio podemos concluir que la utilidad del emulador turbo
debugger que se encuentra como un archivo de BORLANC, se suele convertir en una
potente utilidad para ejecutar nuestro cdigo assembler.

El turbo debugger permite introducir directamente instrucciones en ensamblador con


el fin de ejecutar las instrucciones una a una.

En general la informacin nos da un concepto amplio del uso del emulador turbo,
porque nos permite ejecutar nuestros programas ya que programar estos tipos de
sistemas es muy complejo. Hemos visto que para programar en este lenguaje hay que
tener algunos conocimientos previos de los registros, adems de manejar los nmeros
hexadecimales.

OBJETIVO:
Conocer el entorno de trabajo del turbo as como la ejecucin de programas en bajo
nivel, tambin conocer la ejecucin paso a paso de un programa en assembler
haciendo el uso correcto de cada registro.

BIBLIOGRAFIA:

http://www.azc.uam.mx/cbi/electronica/rgodinez/Docs_SD1/Instrucciones_8086.pdf.
http://www.dte.us.es/tec_inf/itis/estr_comp/docweb/tema4/tema4ec-3.pdf.
http://mixteco.utm.mx/~resdi/historial/Arquitectura8086.pdf.
http://www.fing.edu.uy/inco/cursos/arqsis2/teorico/notas-8086.pdf.

[Fecha]

15