Вы находитесь на странице: 1из 16

ESCUELA SUPERIOR

POLITECNICA DEL LITORAL

FIEC
Laboratorio de Microprocesadores
Prctica 1
FAMILIARIZACION CON LA
ARQUITECTURA DE LOS
PROCESADORES x86
Estudiantes:
Pedro Carvajal Ruiz
Jimmy Fuentes Gonzlez
Paralelo # 1
Grupo # 2
Fecha de presentacin:
18/05/16
2016- 1er Trmino

1. Enunciado del Proyecto


Se realiz una pequea introduccin de cmo funciona los comandos que se
utilizan en el programa Debug, el cual se los utilizar para trazar, ejecutar y
editar los bytes que sern ejecutados en el Windows virtual pc.

2. Diagrama de bloques

3. Diagrama de flujo del programa principal

4. Descripcin del algoritmo


Ejercicio 1
1. Se verifica si el valor de la IP del segmento de cdigo es 100, si no lo
es utilice R IP para poder hacerlo.
2. Se ensambla las instrucciones del programa con el comando A.
3. Se inicializa con la instruccin NOP que no realiza ninguna funcin.
4. Se utiliza la instruccin MOV para asignar a los registros AX y BX
datos.
5. Mediante la instruccin ADD, se suma los datos de ambos registros y
se lo guarda en el registro AX.
6. Se finaliza con la instruccin NOP.

Ejercicio 2
1. Se verifica si el valor de la IP del segmento de cdigo es 100, si no lo
es utilice R IP para poder hacerlo.
2. Se ingresa el dato 1ABF mediante el ordenamiento del pequeo indio
en la direccin 200 del segmento de datos
3. Se ensambla las instrucciones del programa con el comando A.
4. Se inicializa con la instruccin NOP que no realiza ninguna funcin.
5. Se utiliza la instruccin MOV para asignar al registro AX el dato 5A48.
6. Se asigna a BX el contenido que hay en la posicin 200 del
segmento de datos.
7. Mediante la instruccin ADD, se suma los datos de ambos registros y
se lo guarda en el registro AX.
8. Se finaliza con la instruccin NOP.

Ejercicio 3
1. Se verifica si el valor de la IP del segmento de cdigo es 100, si no lo
es utilice R IP para poder hacerlo.
2. Se instala los datos en memoria, es decir en el segmento de datos en
la posicin 150 y 151 y en 200 y 201. Se utilizan 4 casillas de
direcciones debido a que se est trabajando con 16 bits.
3. Se ensambla las instrucciones del programa con el comando A.
4. Se inicializa con la instruccin NOP que no realiza ninguna funcin.
5. Se utiliza la instruccin MOV para asignar a los registros AX y BX los
datos anteriormente almacenados, a AX se le asigna [150] y BX
[200].
6. Mediante la instruccin ADD, se suma los datos de ambos registros y
se lo guarda en el registro BX.
7. Se finaliza con la instruccin NOP.

Ejercicio 4
1. Se verifica si el valor de la IP del segmento de cdigo es 100, si no lo
es utilice R IP para poder hacerlo.
2. Se ensambla las instrucciones del programa con el comando A.
3. Se inicializa con la instruccin NOP que no realiza ninguna funcin.
4. Se asigna el valor de 02 al registro AH y 24 al registro DL.
5. Se utiliza la instruccin INT 21 que sirve para concatenar los datos
anteriores.
6. Se asigna el valor de 24 al registro DL.
7. Se utiliza nuevamente la instruccin 21 para concatenar el dato de
AH y DL.
8. Se finaliza con la instruccin NOP.

Ejercicio 5
1. Se verifica si el valor de la IP del segmento de cdigo es 100, si no lo
es utilice R IP para poder hacerlo.
2. Se ensambla las instrucciones del programa con el comando A.
3. Se inicializa con la instruccin NOP que no realiza ninguna funcin.
4. Se asigna el valor de 2 al registro AH y 2H al registro DL.
5. Se utiliza la instruccin INT 21 que sirve para concatenar los datos
anteriores.
6. Se asigna el valor de 23 al registro DL.
7. Se utiliza nuevamente la instruccin INT 21 para concatenar el dato
de AH y DL.
8. Se utiliza la instruccin INT 20 el cual al terminar de ejecutar las
instrucciones me permite el regreso al nivel de comandos del
programa Debug.
9. Se finaliza con la instruccin NOP.

Ejercicio 6
1. Cambiar el valor de la IP del segmento de cdigo a 200.
2. Se procede a ensamblar las instrucciones del programa con el
comando A.
3. Se inicializa con la instruccin NOP que no realiza ninguna funcin.
4. Se asigna el valor de 9 al registro AH y 020C al registro DX.
5. Se utiliza la instruccin INT 21 que sirve para concatenar los datos
anteriores.
6. Se asigna el valor de 0 al registro AH.
7. Se utiliza nuevamente la instruccin INT 21 para concatenar el dato
de AH y DL.
8. En la siguiente lnea de programa se escribe una cadenas de
caracteres

Ejercicio 7
1. Se verifica si el valor de la IP del segmento de cdigo es 100, si no lo
es utilice R IP para poder hacerlo.
2. En la direccin 200 del segmento de cdigo se asigna una cadena de
caracteres.
3. Se ensambla las instrucciones del programa con el comando A.
4. Se inicializa con la instruccin NOP que no realiza ninguna funcin.
5. Se asigna el valor de 9 al registro AH y 0200 al registro DX.
6. Se utiliza la instruccin INT 21 que sirve para concatenar los datos
anteriores.
7. Se utiliza la instruccin INT 20 el cual al terminar de ejecutar las
instrucciones me permite el regreso al nivel de comandos del
programa Debug.
8. Se finaliza con la instruccin NOP.

5. Cdigo del Programa Principal


Ejercicio 1
NOP
MOV

AX, 1234

Se asigna el valor 1234 al registro AX

MOV

BX, 28AB

Se asigna el valor 28AB al registro BX

ADD

AX, BX

NOP

Ejercicio 2
NOP
MOV

AX, 1234

MOV

BX, 28AB

ADD

AX, BX

Guarda la suma de AX y BX en el registro AX.

NOP

Ejercicio 3
DS: 150

2E

DS: 151

BA

DS: 200

4C

DS: 201

12

Almacena el dato en la direccin 150

Almacena el dato en la direccin 200

NOP
MOV

AX, [150]

MOV
BX, [200]
cdigo la asigna a BX
ADD

BX, AX

El contenido de la direccin 150 las asigna a AX


El contenido de la direccin 200 del segmento de
Guarda la suma de AX y BX en el registro BX.

NOP

Ejercicio 4
NOP
MOV

AH, 02

MOV

DL, 24

INT

21

MOV

DL, 26

INT

21

Concatena el dato de AH y DL

Concatena el contenido de AH y DL

NOP

Ejercicio 5
NOP
MOV

AH, 2; funcin 2 de MSDOS

MOV

DL, 2A; dato que demanda la funcin 2

INT

21; ejecuta la funcin 2

MOV

DL, 23; nuevo dato

INT

21; ejecuta la funcin 2

INT

20; regresa al nivel de comandos

NOP

Ejercicio 6
NOP
MOV

AH, 9

MOV

DX, 020C

INT

21

MOV

AH, 0

INT

21

DB 0D, 0A, FUNCION 9 DE SISTEMA MS-DOS,0D, 0A,$

Ejercicio 7
NOP
MOV

AH, 9

MOV

DX, 0200

INT

21

INT

20

NOP

6. Simulaciones
Ejercicio# 1

Regresa al nivel de comandos del programa

Ejercicio# 2

Ejercicio# 3

Ejercicio# 4

Ejercicio# 5

Ejercicio# 6

Ejercicio# 7

7. Conclusiones

Se logr familiarizar con la arquitectura del lenguaje ensamblador, para


esto se necesit la ayuda de una mquina virtual (Windows Virtual PC
en Windows 7) ya que si trabajamos directamente desde nuestra
computadora podramos modificar registros o incluso a la memoria y
esto ocasionara daos en el CPU.

Con el uso del programa DEBUG en el entorno MS-DOS se logr


visualizar y modificar el contenido de los registros del CPU y de la
memoria (segmento de datos y segmento de cdigo), a travs de los
comandos como son: D, E, R, A, U, Q, T, S, G. Con estos comandos se
logr ensamblar programas que realizaban operaciones bsicas como la
suma.

Se lograron observar los registros y punteros que contiene el CPU, con


la utilizacin de la mquina virtual en modo XP, usando el Debug.
Modificamos registros mediante asignacin u operaciones entre
registros. Entendimos el uso de funciones del procesador mediante la
visualizacin e implementacin al trabajar con caracteres ASCCI e
imprimindolos por pantalla.

8. Recomendaciones

Cuando se ingresan datos se debe tomar en cuenta el ordenamiento del


pequeo indio, esto significa que primero se ingresa el menos
significativo y luego el mas significativo.

Se debe tomar en cuenta en que lnea de cdigo se encuentra al


ejecutar el tracer, por lo cual siempre se debe preguntar que marca el IP,
siempre es preferible inicializar el puntero de instrucciones IP con el
valor que deseamos usar en el comando CS: IP con el objetivo de
apuntar a una lnea de cdigo; generalmente 100, conocida por nosotros
y as poder visualizar la ejecucin del segmento de instrucciones.

Es preferible la creacin de una mquina virtual para evitar daos


internos a nuestro procesador, hay funciones de mucho cuidado que
afectan la ejecucin normal de los procesos del CPU si no reciben los
parmetros correctos, pudiendo caer en un lazo sin fin e inhibiendo la
mquina.

9. Anexos
Ejercicio# 1
Cul es el resultado de la suma que la instruccin ADD deja en el
operando destino AX?
AX=3ADF
Ejercicio# 2
Con el comando T ejecute paso a paso las tres instrucciones. Cul es el
resultado de la suma que la instruccin ADD AX, [200] deja en su
operando destino AX?
AX= 7507

Ejercicio# 3
En el segmento de cdigo CS: 100, con comando A ensamble una
secuencia de instrucciones que sume los dos nmeros de 16 bits y deje el
resultado en el registro BX. Con T ejecute sus instrucciones paso a paso
y verifique el contenido final de BX.
Escriba el contenido final de BX = CC7A
Ejercicio# 4
Qu pasa en pantalla cuando el procesador ejecuta por primera vez la
instruccin INT 21?, luego qu pasa en pantalla cuando ejecuta INT 21
por
segunda
vez?
La funcin INT al ejecutarse por primera vez se concatena el AH&DL y
guardndolo en AX= 0224. La segunda vez se concatena el AH&DL y se
guarda en AX, como se cambi el DL=26 ahora AX= 0226.
Ejercicio# 5
Qu se visualiza en pantalla?
Se visualiza el mensaje: El programa ha terminado de forma normal
Ejercicio# 6
1) En la Funcin 9 de MSDOS, Qu papel desempea el carcter
especial $?
Sirve para finalizar el programa.
2) La directiva DB.
La directiva DB (Define byte) reserva memoria para datos de tipo
byte (8 bits), o para una variable de este tipo, inicializando o no dicho
byte y los posteriores.
3) Significado de los caracteres de control 0D y 0A.
0A: Es en smbolo el LF (linefeed) que es salto de lnea.
0D: Es el smbolo CR que es retorno de carro.
Ejercicio# 7
Qu imprime, tome foto a la pantalla?

Visualice el cdigo de mquina de las cinco instrucciones, use el


comando
U CS: 100 109 y escriba el cdigo de mquina de cada instruccin:
CODIGO DE MAQUINA
NOP

09E: 0100 90

MOV AH, 9

09E: 0101 b409

MOV DX, 0200

09E: 0103 BA0002

INT

21

09E: 0106 CD21

INT

20

09E: 0108 CD20

Explique el papel que desempean los tres ltimos cdigos ASCII de la


cadena de caracteres mostrada arriba.
0A: Es en smbolo el LF (linefeed) que es salto de lnea.
0D: Es el smbolo CR que es retorno de carro.
24: Es el smbolo $, cuando se lee este smbolo salimos del programa.

Вам также может понравиться