Está en la página 1de 15

1Laboratorio I conocimiento de la ejecución

de un programa en Assembler

Enero.

Universidad Nacional de Piura.


Facultad de Ingeniería Industrial.
Microcomputadoras I
ii
Tabla de Contenidos

Capítulo 1 Introducción e información general...................................................................1


Capítulo 2 Figuras y tablas.................................................................................................2
Título 2.............................................................................................................................2
Título 3.........................................................................................................................2
Título 3.........................................................................................................................2
Capítulo 4 Resultados y discussion....................................................................................5
List of References................................................................................................................6
Apéndice..............................................................................................................................7
Vita......................................................................................................................................8
1

Introducción e Información General

El único lenguaje que entienden los microcontroladores es el código máquina formado

por ceros (0) y unos (1) del sistema binario. El lenguaje ensamblador expresa las

instrucciones de una forma más natural al hombre a la vez que muy cercana al

microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en

código máquina.

Para poder ejecutar el lenguaje ensamblador haremos uso del emulador DosBox y Turbo

Debugger (TD.EXE). DOSBox es un emulador que nos permitirá ejecutar Turbo

Debugger, permitiendo poder visualizar una interfaz, en la cual podremos apreciar los

procesos que se ejecutan, es decir, podemos decirle al programa que se ejecute hasta una

posición de memoria concreta, y que nos muestre en ese momento el contenido de los

registros del microprocesador y de la memoria permitiéndonos por tanto analizar

cualquier variable que estemos empleando. La ventana principal de TD muestra una barra

de menú estándar en la parte superior, en este menú podemos encontrar los campos File,

Edit, View, Run, Breakpoint, Data, Options, Windows, Help. La barra de estado en la

parte inferior de la ventana de TD contiene información muy interesante acerca del

contexto actual. Por ejemplo, muestra a menudo la lista de todas las funciones asociadas

con las teclas de función F1 a F10. Por ejemplo, F5 es el comando "Zoom".


2

Objetivos

Objetivo Principal

Establecer bases de conocimientos en programación a bajo nivel (lenguaje de maquina)

utilizando el DOSBox ejecutando el Turbo Debugger

Objetivos Secundarios

Aprender a instalar y ejecutar el TD utilizando el DOSBox

Aprender los comandos básicos para el uso del leguaje de máquina.

Realizar ejercicios utilizando los comandos aprendidos del lenguaje de máquina,


3

Desarrollo del Tema

El microprocesador 8086 está dividido en dos sub-procesadores. Por un lado está la

Unidad de Ejecución (EU) encargada de ejecutar las instrucciones, la cual posee una

ALU (unidad aritmético-lógica) 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 búsqueda de las instrucciones, ubicadas en la cola de instrucciones

antes de su ejecución 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 propósito General

Registro AX: Registro acumulador

Registro BX: Registro Base, que sirve para direccionar a memoria

Registro CX: Es un registro contador, que también es utilizado en ciertas instrucciones

como contador de registros iterativos.

Registro DX: Es un registro de datos, que trabaja con trabaja con números grandes.
4

Registros de segmentos:

Registro CS: corresponde al segmento de código, que almacena instrucciones

Registro DS: Corresponde al segmento de datos, que almacena datos que serán

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 e

Registro de Punteros

DS.

Registro IP: Puntero de instrucción, guarda la siguiente instrucción a ejecutar.

Registro SP: Puntero de pila, nos señala a la cima de la pila.

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

Registro SI: Es el índice fuente.

Registro DI: Es el índice destino.


5

Registros de estado:

Se registra la actividad del sistema en un momento

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 carry.

CF: es un indicador de carry que se activa cuando el resultado de la operación genera

acarreo.

PF: Bandera de paridad, controla que la transmisión de datos se haya hecho de manera

correcta.

AF: Bandera de bandera Auxiliar, se activa cuando existe acarreo del bit 3 al 4.

ZF: Bandera de cero, se activa cuando el resultado es cero.

SF: Bandera de signo, se activa cuando el resultado de una operación es negativo

IF: Bandera de Interrupción, si está activado permite las interrupciones.

DF: Bandera de direcciones, indica el sentido en que se hagan las operaciones en la

memoria.

OF: Bandera de desbordamiento, cuando excede la capacidad del lugar donde se va a

colocar los datos.

Durante el proceso de programación se pueden utilizar las siguientes instrucciones del

8086, que son.


6

Instrucción MOV: transfiere un byte desde el operando fuente al operando destino.

MOV destino, fuente

Instrucción CMP: Instrucción de comparación.

CMP op1, op2

Instrucciones aritméticas: las que están implementadas en el 8086

ADD: Instrucción de suma

ADD destino, fuente

SUB: Instrucción de resta.

SUB destino, fuente

INC: Instrucción de incremento.

INC operando

DEC: Instrucción de decremento

DEC operando

MUL: Instrucción de multiplicación.

MUL multiplicador

DIV: Operando de división.

DIV divisor
7

Instrucción de Salto

Incondicional:

JMP: se salta la otra instrucción si no se ejecuta.

JMP dirección

Condicional: Salta si se cumple una condición 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.


8

Acceder al Turbo Debugger:

Necesitaremos de 2 archivos

El primero, el DOSBox0.74-win32-installer, lo vamos a instalar para poder ejecutar el

DEBUGGER.

El segundo archivo el TD.EXE, lo tendremos que copiar a una carpeta de nuestro Disco

Local, en nuestro caso la ruta es la siguiente:


9

Una vez instalado, ejecutamos el DOSBox0.74 y nos aparece la interfaz de inicio del

programa, desde el cual ejecutaremos al DEBUGGER.

. Ingresamos los siguientes comandos:

mount c E:\Micro1

C:

TD

este último ejecuta el DEBUGGER, que se encuentra en la dirección E:\Micro1

*Pantalla de inicio del

TURBO DEBUGGER
10

 Entonces apreciamos la siguiente pantalla, donde nos muestra sus siguientes áreas

de emulador TURBO DEBUGGER

1. Es la primera área que representa al segmento de código, aquí colocaremos todas

las instrucciones que deseemos.

2. Esta área corresponde al registro 8086.

3. Aquí contiene los flags del registro de estado.

4. En esta área inferior izquierda corresponde al segmento de datos.

5. Esta área inferior derecha corresponde al segmento de pila.


11

Ultilizar el Turbo Debuger:

Tenemos que ubicarnos en el área del segmento de código, en la cual podremos ingresar
las instrucciones que ejecutaremos

En esta ventana se
ingresarán las
instrucciones

Solo será necesario comenzar a digitar las instrucciones que queremos ingresar en el
segmento de código para ser ejecutadas

Al momento de ejecutar una instrucción se tomará en cuenta el valor que tenga el registro
IP el cual marcará la instrucción que se ejecutará

Este es registro IP con el valor que tiene


asignado
12

Ejecicios:

1. Desarrollar una porción de código en assembler que permita encontrar la suma de


los cinco primeros números naturales.

MOV AL, 0
MOV CL, 1
Otro: ADD AL, CL
INC CL
CMP CL, 5
JBE Otro
Ahora utilizando el turbo de debugger:

 Ingresamos cada instrucción en una dirección especifica de memoria, para ello


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

Insertamos los
datos uno por
uno

Al ejecutar la instrucción CMP se compara CL con el valor 5 (si es que es menor o igual),
y si es menor volveremos a ejecutar las instrucciones nuevamente hasta salir del bucle.
13

Al terminar las instrucciones la suma de los cinco primeros dígitos quedará almacenada
en el registro AL, además el Flag de cero se activará cuando se haga la comparación de
cl<=6.

También podría gustarte