parte 1: debug

Anuncio
Laboratorio . Estructura de Computadores
Universidad Tecnica Federico Santa Maria - Campus Rancagua
EXPERIENCIA NO.2
Título: Arquitectura de un computador con microprocesador INTEL 80x86
modo real .
Objetivo: Identificar los elementos que conforman la arquitectura del computador..
Aplicar “ Debug “ del computador para escribir programas en assembler y
generar programas *. Com .
Procedimiento:
PARTE 1: DEBUG
1. Acceda a la consola DOS e inicie el comando DEBUG.
2. Realice un vaciado de memoria, sin parámetros, con la opción "d" de DEBUG. Anote a a
partir desde que dirección de memoria se realiza este despliegue de localizaciones y cuanto
es el numero de bytes desplegados. Observe la nomenclatura que utiliza DEBUG para mostrar
las direcciones. Esta escritura responde a la nomenclatura Registro_Segmento: Offset. El
termino OFFSET corresponde a la position de memoria dentro del segmento y es manejado
por el registro IP (INSTRUCTION POINTER).
3. Realice un vaciado con modo RANGO. Vea los ejemplos a continuación: -D 100 130; -D110
15F. Observe la presentación en pantalla.
4. Realice un vaciado con longitud. Vea ejemplo a continuación: -D 105 L A.
5. Modifique valores de memoria primaria principal, usando el comando "e": -E 105 Observe la
presentación en pantalla. Coloque tres valores AA, BB, CC en las tres primeras localizaciones
de memoria desplegadas (la barra espaciadora permite el avance hacia nuevas
localizaciones). Realice el mismo vaciado del punto 5 y tome nota.
6. Ingrese un valor STRING o cadena en memoria usando el comando "e". Previo haga el
mandato d 120 para mirar el sector de memoria que usted modificará con un STRING,
enseguida ingrese la cadena con el comando "e": -E 120 "ESTE ES UN EJEMPLO". Observe
resultado.
7. Realice un llenado (FILL) de localizaciones de memoria con el comando “f”, por ejemplo: -F
100 LF AA BB CC DD EE. Observe resultado.
8. Ejecute el mandato "h" que realiza la suma y resta de dos números hexadecimales. Por
ejemplo: -H 19F 10 A. Observe y verifique resultado.
9. Ejecute el comando de comparación de celdas de memoria. Por ejemplo: -C 100 L10 300. Si
usted observa lo desplegado en pantalla, verá que se comparan los valores almacenados a
partir de DS:0100 por un lado con los valores a partir de DS:0300 por el otro, en un rango de
10H bytes. Cuando dos direcciones son idénticas, ¿qué se muestra (o no se muestra) en
pantalla?.
10. Pruebe cambiar los valores de los registros de la CPU en modo de comando, desde DEBUG
con las órdenes pertinentes. Ejecute la orden a continuación y cambie el valor del registro AX
a 1C1C.
1/3
Laboratorio . Estructura de Computadores
Universidad Tecnica Federico Santa Maria - Campus Rancagua
11. Ejecute a continuación: cambie el valor del registro BX a AAAA; cambie el valor del registro CX
a BBBB; cambie el valor del registro DX a 3333.
12. Ejecute a continuación: cambie el valor del registro SI a 1111; cambie el valor del registro DI a
2222; cambie el valor del registro BP a 4444; cambie el valor del registro SP a FF21.
13. Cambie el valor del registro CS a 1212. Enseguida vuelva al valor original del registro CS. Se
reitera volver al valor original de CS!!
14. Cambie los valores de los registros DS a 1414; ES a 3131; SS a 4040.PARTE 2: arquitectura
80x86
Dentro de DEBUG ejecute el comando "r" e identifique los registros que componen la arquitectura
del PC:
AX=
SP=
BX=
BP=
CX=
SI=
DX=
DI=
DS=
ES=
SS=
CS=
IP=
0=
D=
I=
S=
Z=
P=
C=
Flags:
A=
Nota: Para los flags considerar:
O --> overflow: OV (1); NV (0)
D -->Direction: DN (1); UP (0) Indicador de dirección de strings o cadenas
I -->interrupt: EI (1); DI (0)
S --> Signo: NG (1); PL (0)
Z --> Zero: ZR (1); NZ (0)
A-->Carry Auxiliar (BCD): AC (1); : NA (0)
P-->Parity: PE par(1); PO impar(0)
C-->Carry: CY(1); NC(0)
T-->Trap
b15
b14
b13
bl2
b11
b10
b9
b8
b7
b6
b5
b4
b3
b2
b1
bo
X
X
A
X
P
X
C
X
X
X
O
D
--Modo
NT
0IPL
Nested (nivel
de solamente
Task
privilegio)
I
T
S
Z
protegido
1. Construya un programa que cargue en los registros AX, BX, CX y DX los valores 10,20, 30 y 40
respectivamente. La instrucción de fin de programa puede ser INT 20.
2. Construya un programa que cargue en los registros SP, BP, SI, DI, los valores FF00, 100, 200 y 300
respectivamente. Fin de programa con INT 20.
2/3
Laboratorio . Estructura de Computadores
Universidad Tecnica Federico Santa Maria - Campus Rancagua
Nota: si ensaya mas de una vez un programa, es decir, escribe prototipos en otros valores offset,
recuerde de reponer el registro IP.
3. Construya un programa que realice lo siguiente:
RAX
0001
RBX
RAX
Rcx
0002
RDX
 RCX
4. Determine como cambiar por programa los valores de los registros de segmentos.
5. Realice un vaciado (dump) de memoria con referencia al registro DS de los F primeros bytes de
memoria.
6. Introduzca en DS:0000 y 0001 los valores AA y BB respectivamente.
7. Con los bytes modificados en el punto anterior construya un programa que mueva al registro AX
los dos primeros bytes del segmento DS, usando direccionamiento directo.
8. Limpie el registro BX y realice la operación indicada en el punto anterior pero ahora usando
direccionamiento de registro indirecto. Se sugiere modificar el contenido de los dos primeros bytes
de DS:0000 y 0001 a CC y DD respectivamente para diferenciar del caso anterior.
9. Use direccionamiento base relativo(relativo a BX) para cargar el registro AX con el contenido de
DS:0003.
10. Use direccionamiento indexado directo (relativo a DI) para cargar el byte 6 y 7 de DS:0000 en el
registro AX.
11. Use direccionamiento base indexado con un offset de 2 para cargar los bytes 8 y 9 de DS:0000.
12. Cargue el registro AX por programa con AABB (16 bits). El valor del registro AX cárguelo ahora
en las direcciones DS:0000 a 0004.
13. Cargue el registro AL con 00. Mueva éste contenido a las direcciones DS:0000 a 0002
14. Construya un programa que lea los valores A1.A2, A3 y A4 desde DS: 0000 (previamente cargados
desde DEBUG) y los escriba en las direcciones DS:0004 y consecutivas respectivamente en orden
inverso.
15. Construya un programa que haga uso de la sentencia de lazo (LOOP) para repetir una o varias
sentencias. Use comando t de DEBUG para ejecutar step-by-step (:paso-a-paso) y hágalo con un
pequeño número de repeticiones.
Estudio.
 Explique cual de los registros es usado para los siguientes propósitos: (a) direccionamiento de
segmentos; (b)dirección offset de una instrucción a ejecutar; (c) suma y resta; (d) conteo para
lazos; (e) indicación de un resultado cero
 Indique cuales son los tipos de direccionamientos habilitados en el procesador INTEL 80x86
en modo real. Ilustre con ejemplos haciendo uso de la instrucción MOV
 Construya un pequeño programa *.COM con DEBUG y proceda a su almacenamiento en disco
Evaluación
Se realizará en el certamen fijado en la fecha indicada. El aprendizaje relacionado con esta
experiencia está de acuerdo al trabajo realizado en el procedimiento de laboratorio. Debe preparar
conocimiento complementario que complete lo cubierto en laboratorio.
3/3
Descargar