tp2.pdf

6
INGENIERÍA EN SISTEMAS DE INFORMACIÓN 2013 ARQUITECTURA DE COMPUTADORAS Ing. Juan Carlos Ansaldi TRABAJO PRACTICO Nº 2 Operaciones - Complemento a la Base 1- Hallar el complemento al módulo a los siguientes números: a) 099d b) 056d c) 999d d) 900d e) 0101b f) 1010b g) 0100 0000b h) 0111 1111b i) 1000 0000b j) 1111 1111b k) FFh l) 01h m) 7Fh n) 80h ñ) 81 h o) 3Eh 2- a) En un formato de 8 bits (1 byte) cual es el menor y el mayor número que se pueden representar. Expresarlos en decimal, binario y hexadecimal. b) En un formato de 8 bit (1 byte) con bit de signo, representar el intervalo de números negativos y positivos en decimal, binario y hexadecimal. Menor (-) Mayor(-) 0 Menor (+) Mayor (+) 3- Realizar las siguientes operaciones de suma y resta en complemento a dos en formato binario de 8 bits. Para cada caso indicar si hay acarreo y/o desbordamiento, y si el resultado es correcto o no, e interpretar el mismo. En caso de dar resultado negativo, hallar la magnitud del mismo. a) 19 + 92 b) 19 - 92 c) 127 + 1 d) - 128 -1 e) - 128 + 1 f) -128 - 128 g) -12 - 30 h) +127 - 62 i) -127 + 62 4- Realizar las operaciones del ejercicio anterior en hexadecimal con formato de dos dígitos hexadecimales. 5- a) En un formato de 16 bits (2 bytes ó una palabra) cual es el menor y el mayor número que se pueden representar. Expresarlos en decimal, binario y hexadecimal. b) En un formato de 16 bits (2 bytes ó una palabra) con bit de signo, representar el intervalo de números negativos y positivos en decimal, binario y hexadecimal. Menor (-) Mayor(-) 0 Menor (+) Mayor (+) 6) Realizar las siguientes operaciones algebraicas en formato de 16 bits (una palabra) con bit de signo. Expresar si hay acarreo, desbordamiento y como se debe interpretar el resultado. En caso de dar resultado negativo, hallar la magnitud del mismo. a) FFB4h + 4Ch b) FFFFh + FFFFh c) 7FFFh + 0001h d) 7FFFh + 8000h e) 8000h + 0001h f) 8000h +8000h g) 00A1 + D001 h) 532A + EE01 i) EBC0 + F321 j) 0A13 + 1A03 7) Realizar los ejercicios 3 (tres) y 6 (seis) utilizando el Debug.

Upload: lucho-bracco

Post on 15-Dec-2015

230 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: TP2.pdf

INGENIERÍA EN SISTEMAS DE INFORMACIÓN – 2013

ARQUITECTURA DE COMPUTADORAS

Ing. Juan Carlos Ansaldi

TRABAJO PRACTICO Nº 2 Operaciones - Complemento a la Base

1- Hallar el complemento al módulo a los siguientes números:

a) 099d

b) 056d

c) 999d

d) 900d

e) 0101b

f) 1010b

g) 0100 0000b

h) 0111 1111b

i) 1000 0000b

j) 1111 1111b

k) FFh

l) 01h

m) 7Fh

n) 80h

ñ) 81 h

o) 3Eh

2- a) En un formato de 8 bits (1 byte) cual es el menor y el mayor número que se pueden

representar. Expresarlos en decimal, binario y hexadecimal.

b) En un formato de 8 bit (1 byte) con bit de signo, representar el intervalo de números negativos y

positivos en decimal, binario y hexadecimal.

Menor (-) Mayor(-) 0 Menor (+) Mayor (+)

3- Realizar las siguientes operaciones de suma y resta en complemento a dos en formato binario de

8 bits.

Para cada caso indicar si hay acarreo y/o desbordamiento, y si el resultado es correcto o no, e

interpretar el mismo. En caso de dar resultado negativo, hallar la magnitud del mismo.

a) 19 + 92

b) 19 - 92

c) 127 + 1

d) - 128 -1

e) - 128 + 1

f) -128 - 128

g) -12 - 30

h) +127 - 62

i) -127 + 62

4- Realizar las operaciones del ejercicio anterior en hexadecimal con formato de dos dígitos

hexadecimales.

5- a) En un formato de 16 bits (2 bytes ó una palabra) cual es el menor y el mayor número que se

pueden representar. Expresarlos en decimal, binario y hexadecimal.

b) En un formato de 16 bits (2 bytes ó una palabra) con bit de signo, representar el intervalo de

números negativos y positivos en decimal, binario y hexadecimal.

Menor (-) Mayor(-) 0 Menor (+) Mayor (+)

6) Realizar las siguientes operaciones algebraicas en formato de 16 bits (una palabra) con bit de

signo.

Expresar si hay acarreo, desbordamiento y como se debe interpretar el resultado. En caso de dar

resultado negativo, hallar la magnitud del mismo.

a) FFB4h + 4Ch

b) FFFFh + FFFFh

c) 7FFFh + 0001h

d) 7FFFh + 8000h

e) 8000h + 0001h

f) 8000h +8000h

g) 00A1 + D001

h) 532A + EE01

i) EBC0 + F321

j) 0A13 + 1A03

7) Realizar los ejercicios 3 (tres) y 6 (seis) utilizando el Debug.

Page 2: TP2.pdf

INGENIERÍA EN SISTEMAS DE INFORMACIÓN – 2013

ARQUITECTURA DE COMPUTADORAS

Ing. Juan Carlos Ansaldi

Las operaciones de ambos ejercicios se deben tratar como sumas (siempre utilizar la instrucción

ADD). Para el caso del ejercicio 3 (tres) las restas pasarlas a sumas hallando el complemento del

número negativo.

Copiar y pegar los resultados en un procesador de texto como se indica en el siguiente ejemplo:

AX=0013BX=005CCX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=11F5ES=11F5SS=11F5CS=11F5IP=0100 NV UP EI PL ZR NA PE NC

11F5:0100 00D8 ADD AL,BL

-T

AX=006FBX=005CCX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000

DS=11F5ES=11F5SS=11F5CS=11F5IP=0102 NV UP EI PL NZ NA PE NC

Utilización del "DEBUG" para Visualizar Operaciones a Nivel del

Microprocesador.

Introducción:

El programa "Debug" del DOS se utiliza para la depuración de programas, pues permite ejecutar

un programa instrucción a instrucción y observar como funciona y que valores toman los distintos

registros del microprocesador.

Registros de la familia del 8086:

El microprocesador 8086 se compone de catorce registros de una palabra (16 bits)

Cuatro registros de datos de almacenamiento temporal:

AX: Acumulador. Registro principal utilizado para instrucciones aritméticas.

BX: Base. Se utiliza para indicar un desplazamiento (offset).

CX: Contador. Se utiliza como contador de bucles y en operaciones de tipo repetitivo.

DX: Dato. Se utiliza también en operaciones aritméticas.

Los registros de almacenamiento temporal del 8086, cuya longitud es de una palabra, se pueden

dividir en dos bytes, conocidos como byte alto y byte bajo, indicandose por medio de la letra H el

byte alto y de la letra L el byte bajo, de esta manera, el acumulador lo podemos representar de la

siguiente manera: AX

AH AL

Lo mismo es válido para los registros: BX, CX y DX.

Cuatro registros de segmentos:

Contienen la dirección de comienzo de ciertos segmentos de memoria.

CS: Registro de segmento de código (Code Segment)

DS: Registro de segmento de datos (Data Segment)

SS: Registro de segmento de pila (Stack Segment)

ES: Registro de segmento extra (Extra Segment)

Dos registros punteros de pila:

SP: Puntero de la pila (Stack Pointer)

BP: Puntero base (Base Pointer)

Dos registros índice:

Page 3: TP2.pdf

INGENIERÍA EN SISTEMAS DE INFORMACIÓN – 2013

ARQUITECTURA DE COMPUTADORAS

Ing. Juan Carlos Ansaldi

SI: Indice fuente (Source Index)

DI: Indice destino (Destination Index)

Un registro puntero de instrucciones:

IP: Puntero de instrucción o contador del programa (Instruction Pointer)

Este registro contiene el desplazamiento de la siguiente instrucción a ejecutar respecto al segmento

de código del programa en ejecución.

En conjunción con el registro CS, indica la dirección completa de la siguiente instrucción a

ejecutar, CS:IP.

Un registro de estado o banderas (Flags)

Cada flags es un bit y se utiliza para registrar la información de estado y de control de las

operaciones del microprocesador. Hay nueve (9) Flags, los restantes siete (7) bits no se usan.

Seis flags de estado:

CF (Carry Flag): Bandera de acarreo.

OF (Overflow Flag): Bandera de desbordamiento.

ZF (Zero Flag) : Bandera de resultado cero.

SF (Sign Flag): Bandera de signo.

PF (Parity Flag): Bandera de paridad.

AF (Aauxiliar Flag): Bandera auxiliar.

Tres flags de control:

DF (Direcction Flag) : Bandera de dirección.

IF (Interrup Flag): Bandera de interrupciones.

TF (Trag Flag): Bandera de atrape o modo de ejecución paso a paso.

Segmentos, registros asociados, direcciones

El direccionamiento de memoria se realiza por una dirección "segmentada" en la que se utilizan

dos registros:

Segmento Desplazamiento (Offset)

De manera que una dirección completa será: Segmento:Desplazamiento.

Un programa cuenta de cuatro tipo de segmentos:

Segmento de código: Cada instrucción se direcciona mediante:

Registro de Segmento: CS

Registro de Desplazamiento: IP

Segmento de datos: Los datos se direccionan mediante:

Registro de Segmento: DS

Registro de Desplazamiento: BX, SI o DI

Segmento de pila: La pila se direcciona mediante:

Registro de Segmento: SS

Registro de Desplazamiento: SP o BP

Segmento extra: Igual al de datos, sustituyendo DS por Es:

Registro de Segmento: ES

Registro de Desplazamiento: BX, SI o DI

Page 4: TP2.pdf

INGENIERÍA EN SISTEMAS DE INFORMACIÓN – 2013

ARQUITECTURA DE COMPUTADORAS

Ing. Juan Carlos Ansaldi

CÁLCULOS UTILIZANDO "DEBUG"

Utilizaremos los registros del microprocesador como variables y realizaremos con ellos distintas

operaciones, observando los resultados y el registro de estado. Se debe tener en cuenta que la

representación de los cálculos binarios del 8086 son expresados por "debug" como números

hexadecimales. Al ejecutar el programa DEBUG este nos presentar su indicador: -

Escribiendo el comando R (Register) Registro, nos mostrará el contenido de todos los registros.

a) Binarios de 8 bit, un byte (dos dígitos hexadecimales)

Para realizar la aritmética de 8 bits utilizando el debug, se debe recordar que los registros

temporales o de uso general AX, BX, CX y DX se pueden dividir en dos bytes, de esta manera,

quedan: AX= AH:AL, BX=BH:BL; CX=CH:CL; DX=DH;DL.

Suma de dos bytes

Si queremos sumar dos bytes, podemos ingresarlos en AL y BL, y luego el resultado se guardará

en AL. Los pasos a seguir son:

1. Introducimos el primero en AL por medio del comando R AX, teniendo en cuenta que el primer

byte (los dos primeros dígitos hexadecimales) se deben poner en cero.

2. Introducimos el segundo en BL por medio del comando R BX, con la misma consideración que

en el caso anterior.

3. Introducimos la instrucción de suma ADD AL, BL (código Hexa: 00 D8) en la dirección

0100h por medio del comando E 0100 (escribir en posición XXXXh).

4. Ejecutamos el código por medio del comando T (Trace) Ejecutar.

5. El resultado de la operación se observa en el registro AL.

Ejemplo 1)

Sumar los siguientes bytes y observar que pasa con el registro de estado.

3Ah + 09Ah FFh + 03h

70h + 3Ah FFh + 01h

Practicar con distintos pares de bytes.

Resta de dos bytes

La instrucción de resta es SUB AL, BL (Código Hexa: 28 D8). Los pasos a seguir son similares al

punto anterior, modificando el código de la operación.

Ejemplo 2)

Restar los siguientes bytes y observar que pasa con el registro de estado.

3Ah - 9Ah 00h - 01h FFh - FFh

70h - 80h FFh - 02h

Practicar con distintos pares de números.

b) Binarios de 16 bit, una palabra (cuatro dígitos hexadecimales)

Suma de dos números:

1. Introducimos el primero en AX por medio del comando R AX

2. Introducimos el segundo en BX por medio del comando R BX

3. Introducimos la instrucción de suma ADD AX, BX (código Hexa: 01 D8) en la dirección

0100h por medio del comando E 0100 (escribir en posición XXXXh).

4. Ejecutamos el código por medio del comando T (Trace) Ejecutar.

5. El resultado de la operación se observa en el registro AX.

Ejemplo 3)

Sumar los siguientes números y observar que pasa con el registro de estado.

Page 5: TP2.pdf

INGENIERÍA EN SISTEMAS DE INFORMACIÓN – 2013

ARQUITECTURA DE COMPUTADORAS

Ing. Juan Carlos Ansaldi

03A7h + 092Ah FFFFh + 0002h

7000h + 6000h FFFFh + 0001h

Practicar con distintos pares de números.

Resta de dos números:

La instrucción de resta es SUB AX, BX (Código Hexa: 29 D8). La instrucción de resta es SUB

AL, BL (Código Hexa: 28 D8). Los pasos a seguir son similares al punto anterior, modificando el

código de la operación.

Ejemplo 4)

Restar los siguientes números y observar que pasa con el registro de estado.

03A7h - 092Ah 0000h - 0001h FFFFh - FFFFh

7000h - 8000h FFFFh - 0002h

Practicar con distintos pares de números.

Multiplicación de dos números:

La instrucción de multiplicación es MUL BX (Código Hexa: F7 E3)

El resultado se guarda en el par de registros DX: AX

Ejemplo 5)

Multiplicar los siguientes números y observar que pasa con el registro de estado.

7C4Bh * 0100h 0002h * 0000h

7000h * 8000h 1FFFh * EFFFh

FFFFh * FFFFh Practicar con distintos pares de números.

División de dos números:

La instrucción de división es DIV BX (Código Hexa: F7 F3)

El dividendo se guarda en el par de registros DX:AX

El resultado se guarda en el registro AX y el resto en DX

Ejemplo 6)

Dividir los siguientes números:

7C4B12 / 100 FFFFFFFF / 100

E400/ 10 Practicar con distintos pares de números.

Visualización de los Flags utilizando el Debug

El Debug muestra 8 flags por medio de un código de dos letras, el cual indica la condición en que

el mismo se encuentra. Para visualizar los flags, se debe escribir: RF

A continuación se detalla por medio de una tabla, los estados que pueden asumir las banderas.

Flags ( Banderas) Set Clear

OF Overflow (Si/No) OV NV

DF Direcction (Decrem/Increm) DN UP

IF Interrup (Hab/Desab) EI DI

SF Sign (Negat./Posit) NG PL

ZF Zero (Si/No) ZR NZ

AF Auxiliar (Si/No) AC NA

PF Parity (Even/Odd) PE PO

CF Carry (Si/No) CY NC

Page 6: TP2.pdf

INGENIERÍA EN SISTEMAS DE INFORMACIÓN – 2013

ARQUITECTURA DE COMPUTADORAS

Ing. Juan Carlos Ansaldi

Sintaxis de Debug

DEBUG [[unidad:][ruta]archivo [archivoprueba-parámetros]]

[unidad:][ruta]archivo Especifica el archivo que desea comprobar.

archivoprueba-parámetros Especifica la información de línea de comandos

requerida por el archivo a comprobar.

Comandos de Debug

Comando Sintaxis

ensamblar A [dirección]

comparar C intervalo de direcciones

volcar D [intervalo]

introducir E dirección [lista]

llenar F lista de rango

ir G [=dirección] [direcciones]

hexadecimal H valor1 valor2

info/entrada I puerto

cargar L [dirección] [unidad] [primersector] [número]

mover M intervalo de direcciones

nombre N [ruta\nombre] [arglist]

info/salida O byte de puerto

continuar P [=dirección] [número]

salir Q (cierra la sesión sin guardar en archivo)

registro R [registro]

buscar S lista de rango

seguir T [=dirección] [valor]

desensamblar U [intervalo] (Separado por coma)

escribir W [dirección] [unidad] [primersector] [número]

asignar-memoria expandida XA [#páginas]

desasignar-memoria expandida XD [identificador]

trazar páginas-memoria expandida XM [Lpágina] [Ppágina] [identificador]

mostrar estado-memoria expandida XS