fundamentos_de_programacion 8086
Post on 05-Jul-2015
1.210 Views
Preview:
TRANSCRIPT
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERIA DE PRODUCCIÓN Y SERVICIOS
DEPARTAMENTO ACADEMICO DE INGENIERIA DE SISTEMAS E INFORMÁTICA
ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS
Curso:
Arquitectura de Computadoras
Segundo Trabajo sobre:
<Componentes de Computadoras>
PRESENTADO POR:
< Velasco Añasco Hossmell >
U.N.S.A F.I.P.S
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
CURSO: ARQUITECTURA DE COMPUTADORAS
SEGUNDA PRÁCTICA DE LABORATORIO
FUNDAMENTOS DE PROGRAMACIÓN DEL 8086
I. OBJETIVOS
Identificar los principales elementos que conforman el Ambiente Integrado de Programación
(IDE) del programa EMU8086.
Identificar los registros del modelo de programación del 8086.
Observar la relación que existe entre los lenguajes de ensamblador y máquina.
Reconocer los modos de direccionamiento básicos del micro 8086.
Imprimir un carácter en la pantalla de usuario, modificando sus parámetros.
Utilizar el emulador en la creación y ejecución un archivo tipo COM.
II. CUESTIONARIO PREVIO
1. Defina los siguientes términos //glosario de los terminos 10
a) Lenguaje máquina
-Lenguaje de máquina es el sistema de códigos directamente interpretable por un circuito micro
programable, como el microprocesador de una computadora o el microcontrolador de un autómata (un
PLC) . Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser
tomadas por la máquina. Un programa de computadora consiste en una cadena de estas instrucciones de
lenguaje de máquina (más los datos). Estas instrucciones son normalmente ejecutadas en secuencia, con
eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de máquina
es específico de cada máquina o arquitectura de la máquina, aunque el conjunto de instrucciones
disponibles pueda ser similar entre ellas.
El lenguaje máquina es el único lenguaje que puede ejecutar una computadora. El lenguaje de máquina es
un código que es interpretado directamente por el microprocesador.
Todo código fuente en última instancia debe llevarse
un lenguaje máquina mediante el proceso decompilación o
Interpretación para que la computadora pueda ejecutarlo.
La Segmentación de memoria es un esquema de manejo de memoria mediante el cual la estructura del
programa refleja su división lógica; llevándose a cabo una agrupación lógica de la información en bloques
de tamaño variable denominados segmentos.
Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de
direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división
lógica del programa.
Obviamente este sistema de gestión de memoria es utilizado en Sistemas operativos avanzados, pero ya
existían muestras de su actividad desde los S.O.’s Unix y D.O.S
b) Interrupción
El sistema de interrupciones para un programador consiste en un conjunto de posiciones de memoria
comenzando en la dirección absoluta de memoria 0, que contienen, cada dos palabras, una dirección de
salto a una rutina de atención a la interrupción. (la dirección 0 corresponde a la interrupción 0, la dirección
2 a la interrupción 1, etc). Cuando se invoca una interrupción, sea física, por algún dispositivo, o lógica,
algún error de ejecución o invocación de programa, el mecanismo de atención toma de la dirección
correspondiente que le indica el número de interrupción, la dirección destino del salto y obtiene de allí la
siguiente instrucción a ejecutar. Para crear una rutina de atención a determinada interrupción, el
programador tiene que localizar el programa en memoria y luego almacenar en la posición de la
interrupción correspondiente la dirección de comienzo del mismo. Naturalmente escribir una rutina de
interrupción obliga a respetar ciertos protocolos.
c) Bifurcación
Una bifurcación, rama o fork en el ámbito de desarrollo de software, es la creación de un proyecto en una
dirección distinta de la principal u oficial tomando el código del proyecto ya existente. Comúnmente se
utiliza el término inglés.
Una bifurcación o fork, cuando se aplica en el contexto de un lenguaje de programación o un sistema
operativo, hace referencia a la creación de una copia de sí mismo por parte de un programa, que entonces
actúa como un "proceso hijo" del proceso originario, ahora llamado "padre".
d) Bifurcación condicional
la bifurcación condicional permite someter a prueba condiciones y, a continuación, en función del resultado
de la prueba, realizar distintas operaciones. Visual FoxPro ofrece dos comandos que permiten realizar una
bifurcación condicional:
IF ELSE IF ENDIF.
e) Puntero
El puntero es un herramienta que se utiliza para señalar un punto o región de la memoria.
Un puntero o apuntador es una variable que referencia una región de memoria; en otras palabras es una
variable cuyo valor es una dirección de memoria
f) Pila
Es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del
inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se
aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia
estructura.
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la
pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
g) Acceso a memoria
El acceso directo a memoria es una características de las computadoras microprocesadores modernos que
permite que ciertos subsistemas de hardware dentro de la computadora puedan acceder a
la memoria del sistema para la lectura y/o escritura, independientemente de la unidad central de
procesamiento (CPU). De lo contrario, la CPU tendría que copiar cada porción de dato desde él
origen hacia el destino, haciendo que ésta no esté disponible para otras tareas.
EN Aquellas computadoras que tienen canales DMA pueden transferir datos desde y hacia los dispositivos
con menos utilización de CPU que aquellas computadoras sin canales DMA. Básicamente una transferencia
DMA consiste en copiar un bloque de memoria de un dispositivo a otro. Esa transferencia se lleva a cabo
por el controlador DMA, en lugar del CPU. El controlador DMA es generalmente un chipset de la placa
madre.
h) Tipos de variables
es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase
de datos sobre los que se va a procesar. Esto incluye imponer restricciones en los datos, como qué valores
pueden tomar y qué operaciones se pueden realizar. Tipos de datos comunes son: enteros, números
de coma flotante (decimales), cadenas alfanuméricas, fechas, horas, colores, coches o cualquier cosa que se
nos ocurra.
i) Macro
es una serie de instrucciones que se almacenan para que se puedan ejecutar de forma secuencial mediante
una sola llamada u orden de ejecución.
Con el fin de evitar al programador la tediosa repetición de partes idénticas de un programa,
los ensambladores y compiladores cuentan con macroprocesadores que permiten definir una abreviatura
para representar una parte de un programa y utilizar esa abreviatura cuantas veces sea necesario. Para
utilizar una macro, primero hay que declararla. En la declaración se establece el nombre que se le dará a la
macro y el conjunto de instrucciones que representará.
2. Utilizando cualquier editor de programación, identifique en la opción memoria los
segmentos de memoria disponibles y sus tamaños por defecto
//programación estruncturada buscar a lo que esa memoria
3. Explique claramente la diferencia entre un programa COM y un EXE, cual de ellos se
ejecuta más rápidamente, ¿Porqué?
Los programas .EXE es una extensión que se refiere a un archivo ejecutable de código re ubicable y los
programas.COM son es un tipo simple de fichero ejecutable.
Para MS-DOS sólo existen dos tipo de archivos ejecutables los .COM y .EXE. Ambos archivos difieren en
algunas cosas. Primero, las ventajas de los .EXE son dobles,tiene lo que se llama PSP o program segment
prefix que es una cabecera nos permiten tener archivos reubicables y el uso de hasta cuatro segmentos
(STACK, DATA, EXTRA y CODE) de hasta 64KB cada uno.
Un archivo .COM sólo puede tener un segmento de 64KB, en el que se tiene tanto código como pila, y
datos. La desventaja de los .EXE es que agrega n 512 bytes como cabecera con información para la
reubicación del código. Un .COM no es reubicable, siempre inicia en la dirección 0100H.
La Que se ejecuta mas rapido es la .com por que su direccion es unica.
4. Visite la página www.emu8086.com, luego de revisar la documentación proporcionada, de
una breve explicación de su objetivo y funcionalidad (en línea hay manuales en español)
Es un programa que permite desarrollar la programación en lenguaje ensamblador de forma muy intuitiva,
también brinda una serie de recursos que permite ejecutar y depurar programas.
Dentro de los lenguajes ensamblador que se puede desarrollar tenemos: COM template, EXE template,
BIN template y BOOT template .
III. MARCO TEÓRICO
El microprocesador 8088/8086.//paralelismo
Microprocesador de 8 bits, primero en presentar un diseño estructural, hecho pensando en las
necesidades del usuario (aplicaciones), aparece en junio de 1978, fabricado por Intel, el 8086
aparece casi en simultáneo siendo el primer uprocesador de 16 bits
Características técnicas:
– Bus de datos interno: 16 bits
– Bus de datos externo: 16 bits
– Bus de direcciones: 20 bit
– Velocidad: 4.77-8 MHz
– 92 instrucciones
– 7 modos de direccionamiento
– El 8086 es up de 16 bits, en su estructura como en conexiones externas
– 8088 es un procesador de 8 bits que internamente es casi idéntico al 8086. La única
diferencia entre ambos es el tamaño del bus de datos externo
– Cada procesador tiene dos sub-procesadores: unidad de ejecución (EU: Execution Unit) y
unidad interfaz del bus (BIU: Bus Interface Unit). La unidad de ejecución realiza
operaciones mientras que la unidad de interfaz del bus es la encargada de acceder a datos e
instrucciones
– Las unidades de ejecución son idénticas en ambos microprocesadores, pero las unidades de
interfaz del bus son diferentes en varias cuestiones. La ventaja de esta división fue el ahorro
de esfuerzo necesario para producir el 8088. Sólo una mitad del 8086 (el BIU) tuvo que
rediseñarse para producir el 8088.
– Arquitectura interna de 16 bits
– Soporta 1 MB de memoria
– Aritmética con signo y sin signo de 8 y 16 bits, tanto en binario como en decimal,
incluyendo multiplicación y división.
– 14 registros de 16 bits.
– Interrupción enmascarable y no enmascarable.
– Acceso directo a memoria
– Soporte para coprocesadores de bus local.
– Soporte para E/S mapeada en memoria.
– Operaciones de cadena.
Se muestra la estructura interna del 8088
Unidad Aritmética Lógica: Realiza operaciones aritméticas y lógicas. Las operaciones pueden ser
de 16 bits o de 8 bits.
Sistema de Control de EU: Decodifica instrucciones que le envía la cola y genera órdenes según
tabla que tiene almacenada en ROM llamada CROM (Control Read Only Memory).
Cola de Instrucciones: Almacena instrucciones a ser ejecutadas, se carga cuando el bus está
desocupado (La del 8086 tiene 6 bytes, el del 8088 tiene cuatro bytes).
Registros de trabajo: El microprocesador 8088, posee 14 registros internos, distribuidos en las dos
unidades especificadas, algunos son de uso general, otros de segmento, registros puntero y registro
de banderas o flags.
Los REGISTROS GENERALES son registros de 16 bits, pudiéndose usar cada uno de ellos como
dos registros de 8 bits. Aun siendo registros de uso general tiene asignadas unas operaciones
específicas.
AX es el acumulador de 16 bits y usándolo a veces provoca que el ensamblador produzca un
lenguaje máquina codificado en muy pocos octetos. Se emplea en multiplicaciones,
divisiones, entradas/salidas, etc., además AL es el acumulador de 8 bits
BX se utiliza como registro base para el direccionamiento de memoria
CX se utiliza como contador y almacenaje de datos
DX se utiliza para almacenar datos de 16 bits. Puede pensarse que es una extensión del
registro AX para multiplicaciones y divisiones con 16 bits. Otra de sus funciones específicas
es para almacenar la dirección de E/S durante algunas operaciones de E/S.
Los REGISTROS PUNTERO son registros de 16 bits:
IP (instruction pointer) como registro puntero de instrucciones conocido principalmente
como contador de programa. Este contiene un valor de 16 bits que es un desplazamiento
sobre la dirección del registro CS ( segmento de código ) detallado más adelante.
SP (stack pointer) como registro de pila.
BP (base pointer) actúa como base de la dirección de la pila.
Los registros puntero de instrucciones ( IP ) y puntero de pila ( SP ) se encargan del control de flujo
del programa.
Los registros SI (source index) y DI (destine index) actúan como índices asociados al
registro DS ( segmento de datos ).
El grupo de registros de segmento está formado por los registros CS, SS, DS y ES. Apuntan al
inicio de un área de memoria destinada a almacenar información específica:
CS ( segmento de código ): código del programa
DS ( segmento de datos ): datos del programa
SS ( segmento de pila ): pila para almacenamiento local y temporal
ES (segmento extra ): almacenamiento extra para textos, menús y estructuras estáticas
La importancia de dichos registros queda reflejada en la estructura de la memoria con la técnica de
segmentación, que principalmente radica en el que el espacio total de memoria se divide en trozos
de 64K bytes, que reciben el nombre de “segmentos”.
El REGISTRO DE ESTADO (F) de 16 bits, aunque algunos de ellos no se utilizan. Cada uno de los
bits se denomina indicador o flag, que generalmente, se modifican por las operaciones lógicas y
aritméticas.
CF Carry Flag: indica que hubo "arrastre"
CS
DS
SS
ES
00000
FFFFF
SEGMENTOCODIGO
SEGMENTOEXTRA
SEGMENTODE DATOS
SEGMENTOEXTRA
PF Parity Flag: paridad impar del resultado, se usa para detectar errores en transmisiones.
ZF Zero Flag: si resultado de la operación es cero.
AF Auxiliary carry: indica "arrastre" del nibble (cuatro bits) menos significativo al nibble
más significativo. Para BCD.
SF Sign Flag: bit más significativo de resultado. representa el signo: 0 si es positivo, 1 si es
negativo.
TF Trap Flag: Si vale 1, el procesador está en modo paso a paso. En este modo, la CPU
automáticamente genera una interrupción interna después de cada instrucción, permitiendo
inspeccionar los resultados del programa a medida que se ejecuta instrucción por
instrucción. .
IF Interrupt Flag: Si vale 1, la CPU reconoce pedidos de interrupción externas
enmascarables (por el pin INTR). Si vale 0, no se reconocen tales interrupciones. Las
interrupciones no enmascarables y las internas siempre se reconocen independientemente
del valor de IF.
DF Direction Flag: Si vale 1, las instrucciones con cadenas sufrirán "auto-decremento",
esto es, se procesarán las cadenas desde las direcciones más altas de memoria hacia las más
bajas. Si vale 0, habrá "auto-incremento", lo que quiere decir que las cadenas se procesarán
de "izquierda a derecha".
OF Overflow flag: Si vale 1, hubo un desborde en una operación aritmética con signo, esto
es, un dígito significativo se perdió debido a que tamaño del resultado es mayor que el
tamaño del destino.
Memoria segmentada
La forma en que se completan los 20 bits requeridos por el bus de direcciones, disponiendo en la
CPU, solamente, registros de 16 bits, se consigue de la siguiente manera: se parte del contenido de
uno de los registros de segmento, que actúan como base. Después, se multiplica por 16 el contenido
del registro de segmento, lo que, en binario, significa añadirle 4 ceros a la derecha y convertirlo en
una magnitud de 20 bits. Finalmente, se suma un desplazamiento al resultado de la multiplicación
anterior. La fórmula para calcular una dirección de memoria es:
Dirección Física = 16 * ( registro de segmento ) + desplazamiento.
Juego de instrucciones
Conjunto de códigos binarios que reconoce el uP y ejecuta
Formato de instrucciones del 8088
Clasificación:
a) Por el número de operandos:
• Sin operando Ejemplo: STI, CLC, HALT
• Con un operando. Ejemplo: INC CX, DEC AL, JMP 07H
• Con dos operandos. Ejemplo: MOV AX,CX ADD AL,28H
b) Por el tipo de operación:
• Transferencia: MOV, PUSH, POP, etc
• Aritméticas: ADD, ADC, SUB, DIV, etc
• Lógicas: CMP, AND, XOR, etc
• Manipulación de cadenas: MOVS. COMPS, etc
• Control del procesador: HALT, CLI, STC, etc
• Control de programa: JMP, JNZ, JE, etc
Ver el juego de instrucciones en el anexo
Modos de direccionamiento
Formas de referenciar al segundo operando
a) Directo:
El campo de direcciones contiene la dirección del operando
Ejemplo: MOV AX,[2315H]
b) Por valor: ADD CX, DATA
La localidad de memoria apuntada por el campo de dirección de la instrucción contiene la
dirección (apuntador) al operando, EA = (A), Busca en A, encuentra la dirección (A) y ahí
busca el operando
c) Por registro:
Cod-op d w mod reg r/m Data o adress Data o adress
1er byte
obligatorio
2do byte
opcional
3er byte
opcional
4to byte
opcional
El operando está en el registro nombrado en el campo dirección
Ejemplo: ADD AX,BX
d) Inmediato
El operando es parte de la instrucción
e) Relativo a base XOR AL,[BX+12H]
f) Indexado a base
A = base, R = desplazamiento, EA = A + R
Ejemplo: AND CL,[BP+DI]
g) Directo indexado
Ejemplo: CMP BL,[SI+2312H]
III. ACTIVIDADES
1. Ejecute el EMU 8086
2. Presione el botón que indica “New”.
3. Observará una ventana donde escribirá sus futuros programas, llamados en general “código
fuente”.
4. Desde ahí se puede crear un nuevo documento. Observe la figura “Choose code template” ,
elija “empty workspace”.
5. Seleccione en la barra de menú la opción “EMULATOR” y en ésta “SHOW
EMULATOR”. Se abrirá una ventana donde podrá observar diferentes elementos: cargar
(load), recargar (reload), ejecutar paso a paso (single step) y ejecutar (run). También podrá
ver, en la parte central, tres columnas en las que se detalla el contenido de los registros del
8086, el contenido de la memoria y el programa desensamblado.
Abajo podrá acceder a la pantalla de usuario (user screen),
el código fuente (actual source),
la Unidad Aritmética y Lógica (ALU), (FPU), memoria en la opción vars
Las variables
la Pila (stack), un debug y el registro de banderas (flags) o estados.
Cierre la ventana del emulador, pero no cierre la ventana del código fuente.
6. Escriba el programa mostrado, analize su función
.model small
.stack
.data
.code
mov AX,@data ;carga en DS la dirección ;donde está el
mov ds,ax ;segmento de datos
mov AH, 7Ah ;carga AH con 7Ah
mov BL, 99 ;carga BL con 99
mov CL, 11001111b ;carga CL con 11001111b
mov AX, 100 ;carga AX con 100
mov BX, 'A' ;carga BX con carácter A
mov CX, 0ABCDh ;carga CX con ABCDh
mov DX, 6540 ;carga DX, con 6540
mov ax, 4c00h ;fin del programa
int 21h
end
7. Compile el programa usando el menú, el programa le informará la creación de un COM o
EXE (Ud. indique) , asígnele un nombre al programa
8. Emule el programa, verá marcada la instrucción que se ejecuta, el contenido de los registros,
la memoria y el programa desensamblado
9. Llene los datos antes de la ejecución
AX:00 00 BX:00 00 CX:01 1C DX:00 00
CS:0720 DS:0700 ES:0700 SS:0710
BP:0000 IP:0000 SP:0100
DI:0000 SI:0000
10. Presione RUN y anote los resultados, ¿porqué se obtienen estos?
AX:4C 00 BX:0041 CX:ABCD DX:198C
CS:F400 DS:0720 ES:0700 SS:0710
BP:0000 IP:0204 SP:00FA
DI:0000 SI:0000
11. Cargue nuevamente el programa y ejecútelo paso a paso SINGLE STEP, explique los
resultados que va obteniendo, ponga atención especial en CS e IP
CS 0720 0720 0720 0720 0720 0720
IP 0003 0005 0007 0009 000B 000E
12. Complete la tabla
direccion direccion lenguaje maquina Lenguaje ensamblador
Seg(cs) offset campo campo campo linea
0720 0005 B4 7A Mov AH,7
0705 0007 B3 63 Mov BL,99
0720 0009 B1 Cf Mov CL,11001111b
0720 000b B8 64 00 Mov AX,100
0720 000E bb 41 00 Mov BX,78
0720 0011 B9 cd Ab mov CX,0ABCDh
0720 0014 ba 8c 19 Mov DX,6540
Apartir de Esta parte Se hace Con las interrupciones
0720 0017 B8 00 4c Mov AX,4C00h
0720 001A cd 21 Int 21h
13. Cierre el emulador y cree ahora el siguientes programa
.model small
.stack
.data
.code
MOV AX,@data
MOV DS,AX
MOV DX, 0112h ; Carga dato inmediato en DX
MOV BX, DX ; Copia DX en BX, movimiento entre
;registros
MOV AL, 'A' ; Almacena carácter en AL
MOV AH, 61h ; Guarda dato en AH
MOV [BX], AH ; Almacena en dirección indicada por
; DS:BX, indirecto
MOV [BX+1], AL ; Almacena dato relativo a base:
; DS:BX+1
MOV CX, [BX] ; Copia el dato de la dirección en CX
;registro, indirecto
mov ax, 4c00h ;fin del programa
int 21h
end
14. Emule el programa y antes de ejecutarlo anote en la tabla el contenido de las direcciones con
desplazamiento 0112H y 0113H, así como el contenido de CX, luego ejecute paso a paso
anotando resultados en ambas tablas según se solicita
seg offset Inicio
programa
Antes de 5 Despues 5 Despues 6 Despues 7
0112h B8 20 07 B041 B461 8827 884701
0113h B8 20 07 B041 B461 8827 884701
registro cx 011A 011A 011A 011A 011A
direccion Lenguaje de maquina Lenguaje de Ensamblador
seg offset campo campo linea linea
0720 0000 B8 20 Mov ax 00720h
0720 0003 8e D8 Mov ds Ax
0720 0005 BA 13 Mov DX 0013h
0720 0008 8b da Mov BX Dx
0720 000a B0 41 Mov AL 041
0720 000c B4 61 Mov AH 061h
15. Cierre el emulador y escriba ahora el tercer programa
16. Emule y ejecute, observe la información en la pantalla de usuario, describa la misma e
indique las diferencias obtenidas
cambia las direcciones iniciales nos muestra la letra A por screem.
17. Modifique el programa sustituyendo el dato en BX por 10Eh, corra el programa, que ha
sucedido
muestra la letra „A‟ a un costado del screem.
18. Modifique ahora el dato almacenado en CH, cambiándolo por 11010000b y observe su
efecto, anote sus observaciones.
muestra el fondo de la letra en blanco.
19. Vuelva a cambiar CH, ahora por 10011110b, observe y describa el cambio.
muestra el fondo de la letra en amarillo.
20. Pruebe a hacer algunos cambios en CH, CL y BX, anote sus observaciones:
si ponemos ch=11111111b no muestra nada de la letra.
si ponemos ch=00000000h no mestra nada en el screem.
21. Para cada instrucción usada en los tres programas, identifique el modo de direccionamiento
de cada uno.
primero ejemplo:
mov AX,@data ;por dato
mov ds,ax ;por dato
mov AH, 7Ah ;por regsitro
mov BL, 99 ;por registro
mov CL, 11001111b ;po registro
mov AX, 100 ;por registro
mov BX, 'A' ;por registro
mov CX, 0ABCDh ;por registro
mov DX, 6540 ;por registro
mov ax, 4c00h ;por registro
int 21h
segundo ejemplo:
MOV AX,@data por dato;
MOV DS,AX
MOV DX, 0112h ; por dato
MOV BX, DX ; por registro
MOV AL, 'A' ; por dato
MOV AH, 61h ; por dato
MOV [BX], AH ; directo
MOV [BX+1], AL ; relativo a base
MOV CX, [BX] ;indexado a base
para el tercero:
MOV AX,0B800h :por registro
MOV DS,AX :por registro
MOV CL, 'A' :por registro
MOV CH,11011111b :por registro
MOV BX,15E0h por registro
MOV [BX],CX indexado a base
IV. CUESTIONARIO
1. En el encabezado del primer programa ¿por qué se incluye la línea “org 100h”?
-Es un requerimiento para poder correrlo sin problemas, es una dirección inicial del
programa .
2. Al introducir datos en los registros del microprocesador se usan diferentes formatos (bases
de numeración) ¿cuántos y cuáles son?
byte ,Word deword,qword,tword.
3. La sintaxis de la instrucción MOV define tres campos: instrucción, dato1 y dato2. Al
moverse los datos ¿cuál es la fuente y cual el destino?
la fuente es el dato2.
el destino es dato1.
4. Al observar las tablas se nota que a la misma instrucción MOV se le asignan diferentes
códigos hexadecimales ¿a qué se debe esto?
se debe a la variable de dato que esta utilizando que tiene que estar hexadecimal.
5. ¿Cuál es la función que cumple el registro IP?
sirve para ver la dirección inicial de la línea de código.
Registro puntero de instrucción o contador de programa (PC).
Contiene el desplazamiento de la Siguiente instrucción a ejecutar respecto al segmento de código
en ejecución. Por lo tanto, la dirección completa de la siguiente instrucción sería CS:IP.
La única forma de influir en este registro es de forma indirecta mediante instrucciones de
bifurcación.
6. En la columna OFFSET de las tablas, éstos no se incrementan a una razón constante ¿por
qué?
es la dirección de memoria 0100Hh dentro del segmento específico.
7. En las instrucciones donde se incluyeron corchetes ¿Qué diferencias observó en su
ejecución?
en que donde hay corchetes ahí necesariamente tienes que ir a la memoria a acceder el dato
que se necesita, en cambio sin el corchete, solo se busca entre los registros.
8. Al ejecutar el tercer programa, a medida que hacía las modificaciones ¿qué efecto
concreto logra el cambio en el registro BX?
cambia el desplazamiento de la imagen para diferentes lugares en screem.
9. Al modificar CH ¿qué bits específicos se modificaron para lograr cambios en el fondo y
color de los caracteres?
cuando se modifica el CH cambia los colores la imagen a veces según sea el código
desaparece.
V. CONCLUSIONES
Consigne al menos cinco conclusiones a las que ha arribado en el desarrollo de la práctica
pude ver como ver imprimir un carácter por el screem.asi como también modificar sus parámetros
ya sea de CH para los colores, BX para el desplazamiento.
vi algunos elementos del programa de EMU8086.
vi también algunos registros del emulador.
y por ultimo los modos de direccionamiento.
top related