You are on page 1of 12

practica 3: Manejo de memoria e interrupcion

es.

OBJETIVOS

a) Comprender que es un lenguaje de bajo nivel


b) Familiarizarse con el uso de un emulador y lenguaje ensamblador
c) Analizar el lenguaje ensamblador

CONCEPTOS Y TEORÍA

Un computador esta compuesto por un microprocesador (también llamado CPU, por


sus siglas en ingles Unidad Central de Proceso), una memoria y los puertos de entra-
da-salida (E/S). El microprocesador es el que recibe las instrucciones de la memoria,
las ejecuta y almacena los resultados en un registro. Todos estos datos se transfieren
mediante un sistema de buses que comunica al CPU, la memoria y los puertos de E/S.
Pero un computador o un sistema computacional no realiza ninguna acción sin que un
usuario le de instrucciones puntuales de lo que quiere realizar, y para que el usuario se
pueda comunicar con el microprocesador es necesario que se le otorguen instrucciones
en binario. Pero como el dar instrucciones en binario puede ser complicado y bastante
laborioso, se decidió realizar un traductor para remplazar las instrucciones en binario y
en vez de ellas introducir palabras o abstracciones de palabras para que sea mas com-
prensible. A este conjunto de instrucciones se le llamó lenguaje ensamblador.
El lenguaje ensamblador es propio de cada arquitectura de procesador, por ello no es
la misma instrucción en un microprocesador Intel que en un AMD.

Registros de propósito general: Los registros de propósito general AX, BX, CX y DX


son los caballos de batalla del sistema. Son únicos en el sentido de que se puede di-
reccionarlos como una palabra o como una parte de un byte. El ultimo byte de la iz-
quierda es la parte “alta”, y el ultimo byte de la derecha es la parte “baja”.

Registro AX: El registro AX, el acumulador principal, es utilizado para operaciones que
implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones
para multiplicar, dividir y traducir suponen el uso del AX. También, algunas operaciones
generan código mas eficiente si se refieren al AX en lugar de a los otros registros.
Registro BX: El BX es conocido como el registro base ya que es el único registro de
propósito general que puede ser índice para direccionamiento indexado. También es
común emplear el BX para cálculos.
Registro DX: Es conocido como el registro de datos. Algunas operaciones de entra-
da/salida requieren uso, y las operaciones de multiplicación y división con cifras gran-
des suponen al DX y al AX trabajando juntos.

Descripción de la Practica.

La práctica se dividirá en dos partes. La primera parte se analizará y copiara el código


fuente de tres programas en lenguaje ensamblador para que se ensamblen, liguen y
ejecuten en el programa emu8086; la segunda parte se realizarán diferentes programas
que cumplan con los siguientes requisitos:
Uno que realice la suma de 40 + 33; el segundo que realice la multiplicación 3 *15; el
tercero que haga la resta 7-17; y por último, que realice la división 3/66. Todos deberán
mostrar en pantalla el resultado.

Diagrama de Flu- jo

Entrar al Capturar los Guardar el


programa códigos en archivo con
Ejecutar
Anotar elel Dar clic en el Dar clic en el
extensión
EMU8086 lenguaje en-
comporta-
programa botón flags menú
.asmemula-
samblador
miento de los te
registros
RESULTADOS Y CONCLUSIONES

1.- ¿Cuales son las directivas del programa y que significan?

.Model Small: esta directiva significa que nuestro programa van a ser pequeño en base
a las líneas de código que tiene nuestro programa. Igual se refiere a que cabe en un
segmento de 64KB.

.Stack 100: define el segmento de la pila en base a una longitud especificada que en
este caso es de 100.

.data: define un segmento de datos near con valores iniciales.

.msg1: es el mensaje que queremos ver en pantalla.

.code: define el segmento de código.


Mov: copia el contenido del operando fuente (src) en el destino (dest).

@data: Nombre del segmento definido con la directivas .DATA, .DATA?, .CONST y
.STACK (los cuatro están en el mismo segmento.

Offset: retorna el valor del offset.

Int: Salva los flags en la pila, hace TF=IF=0 y ejecuta la interrupción con el número in-
dicado.

2.- ¿qué valor tiene @data?

Tiene la cadena “Hola mundo”

3.-¿qué valor tiene AX?

AX PROGRAMA A AX PROGRAMA B AX PROGRAMA C


H L H L H L
07 17 00 00 00 00
07 17 00 00 07 17
09 17 02 00 07 17
09 17 02 00 07 17
09 17 02 30 07 17
09 24 02 30 02 30
09 24 02 30 02 30
4C 24 02 30 02 30
4C 24 02 30 02 30
4C 24 02 30 02 30
02 30 02 30
02 31 02 30
02 31 02 31
02 31 02 31
02 31 02 31
02 31 02 31
02 31 02 31
02 31 02 31
02 32 02 31
02 32 02 32
02 32 02 32
02 32 02 32
02 32 02 32
02 32 02 32
02 32 02 32
02 33 02 32
02 33 02 33
02 33 02 33
02 33 02 33
AX PROGRAMA B AX PROGRAMA C
H L H L
02 33 02 33
02 33 02 33
02 33 02 33
02 34 02 33
02 34 02 34
02 34 02 34
02 34 02 34
02 34 02 34
02 34 02 34
02 34 02 34
02 35 02 34
02 35 02 35
02 35 02 35
02 35 02 35
02 35 02 35
02 35 02 35
02 35 02 35
02 36 02 35
02 36 02 36
02 36 02 36
02 36 02 36
02 36 02 36
02 36 02 36
02 36 02 36
02 37 02 36
02 37 02 37
02 37 02 37
02 37 02 37
02 37 02 37
02 37 02 37
02 37 02 37
AX PROGRAMA B AX PROGRAMA C
H L H L
02 38 02 37
02 38 02 38
02 38 02 38
02 38 02 38
02 38 02 38
02 38 02 38
02 38 02 38
02 39 02 38
02 39 02 39
02 39 02 39
02 39 02 39
02 39 02 39
02 39 02 39
02 39 02 39
02 39

4.- ¿qué valor tiene SS?


En cuanto al registro de la pila nunca cambia su valor siempre se mantiene en 07 10 en
todos los programas eso pasa porque nunca se está direccionando un valor hacia la
pila por eso se mantiene estático su valor. En cuanto a los valores de int 21h cuando se
ejecutan en cada uno de los programas igual no cambia es el mismo.

5.- ¿qué valor tiene IP?

IP PROGRAMA A IP PROGRAMA B IP PROGRAMA C


00 03 00 02 00 03
00 05 00 04 00 05
00 0A 00 06 00 08
02 00 02 00 00 0A
02 04 02 04 Mostro en 0 00 0C
00 0C 00 08 02 00
00 0E 00 0A 02 04 Mostro en 0
02 04 00 0D 00 0E
00 02 00 0F
00 04 00 01
00 06 00 08
02 00 00 0A
02 04 Mostro en 1 00 0C
02 00
02 04 Mostro en 1

7.-¿porque no son continuos los valores de ip?


Porque en cada línea de código se están haciendo diferentes cosas entonces por ende
el registro de apuntador de direcciones se ve afectado porque va apuntando cada vez
que va compilando el programa y va tomando diferentes valores.

PROGRAMAS SUMA, RESTA, MULTIPLICACION Y DIVISION

8.- ¿que valor tiene AX?

AX SUMA AX RESTA AX MULTIPLICACION AX DIVISION


H L H L H L H L
00 00 00 00 00 00 00 00
00 28 00 07 00 00 00 03
00 49 00 F6 00 00 00 03
00 49 00 F6 00 03 03 00
00 49 02 F6 00 03 03 00
00 49 02 F6 00 2D 02 00
MOSTRO: I MOSTRO:÷ 00 2D 02 00
02 2D 02 03
02 2D MOSTRO:
MOSTRO: -

9.-¿Que valor tiene SS?

En cuanto al registro de la pila nunca cambia su valor siempre se mantiene en 07 10 en


todos los programas eso pasa porque nunca se esta dirrecionando un valor hacia la
pila por eso se mantiene estático su valor.

10.-¿Que valor tiene IP?

IP SUMA IP RESTA IP MULTIPLICA- IP DIVI-


CIÓN SIÓN
00 00 00 00 00 00 00 00
00 02 00 02 00 02 00 02
00 04 00 04 00 04 00 04
00 06 00 06 00 06 00 06
00 08 00 08 00 08 00 08
02 00 02 00 00 04 00 0A
02 04 02 04 00 0C 02 00
02 00 02 04
02 04

11.- ¿Como introdujiste los datos para realizar operaciones matemáticas?


Dándoles un valor a cada registro que iba a utilizar.

12.-¿que valores toman tus datos en el registro? ¿por que?

Son números hexadecimales, porque los valores que toma el microprocesador 8086
son valores hexadecimales o en ascii.

13.-¿En qué registro quedo el resultado? ¿Porque quedo ahí? Y ¿qué valor tiene?

En la multiplicación en AX, la división en AL porque las instrucciones ya están predefi-


nidas, en la suma y la resta el primer operando de la instrucción es el destino en donde
se almacenara la operación.
CUESTIONARIO

1.-¿Cual es la estructura (esqueleto) de un programa en ensamblador?

Contiene dos cosas que son las directivas e instrucciones.Las instrucciones se aplican
en tiempo de ejecución, pero las directivas sólo son utilizadas durante el ensamblaje.

2.-¿Para que se utiliza int21h?

Es usada para procesar acciones diversas las cuales deben estar contenidas en el re-
gistro AH (código de acción) antes de ejecutar la interrupción del DOS.

3.-¿Que es el proceso de ensamblador y ligado?

1.- El programa utiliza un editor de texto para crear un archivo de texto ASCII,
conocido como archivo de código fuente.
2. El ensamblador lee el archivo de código fuete y produce un archivo de código
objeto, una traducción del programa a lenguaje máquina. De manera opcional,
produce un archivo de listado. Si ocurre un error, el programador debe regresar
al paso 1 y corregir el programa.
3. El enlazador lee el archivo de código objeto y verifica si el programa contiene
alguna llamada a los procedimientos en una biblioteca de enlace. El enlazador
copia cualquier procedimiento requerido de la biblioteca de enlace, lo combina
con el archivo de código objeto y produce el archivo ejecutable. De manera op-
cional, el enlazador puede producir un archivo de mapa.
4. La herramienta cargador (loader) del sistema operativo lee el archivo ejecuta
ble y lo carga en memoria, y bifurca la CPU hacia la dirección inicial del progra-
ma, para que éste empiece a ejecutarse.
4.-¿que tipo de instrucciones recuerdas haber utilizado en el programa de la
practica realiza?

Mov,add,sub,div,mul

5.-¿para que se utiliza debug?

Se utiliza para ver que errores arroja cuando compilamos nuestro programa

6.-¿que información se puede obtener en el depurador?

Se puede obtener información de los errores que pudiera tener nuestro código.
7.-¿que se almaceno en el segmento de datos?

En el se almaceno los registros y los resultados que usamos en los programas.

8.-¿cual es el programa fuente?

Son las instrucciones que se escribieron en lenguaje ensamblador con un editor de tex-
to que tiene una extensión .asm

9.-¿cual es el programa objeto?

El programa objeto tiene extensión .obj y es el resultado después de que se realizó el


debug del programa

10.-¿como se termina un programa para regresar el control del sistema operati-


vo?

Con la instrucción end o endp

REFERENCIAS BIBLIOGRAFICAS

 Unidad 1: Introducción al lenguaje ensamblador


http://josejuanm.blogspot.com/2017/03/unidad-1-introduccion-al-lenguaje.html

 Lenguaje Ensamblador
https://es.wikipedia.org/wiki/Lenguaje_ensamblador

You might also like