Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Contenido
1.- SISTEMAS QUE COMPONEN LA COMPUTADORA XT ..................................................4
2.- CARACTERISTICAS DEL PROCESADOR 8088/8086 ........................................................4
3.-FUNCIONAMIENTO EN GENERAL .................................................................................... 5
4.- SISTEMAS DESCRITOS POR BLOQUES Y POR CIRCUITOS ........................................ 6
5.- ESQUEMATICO DEL SISTEMA COMPLETO DE APLICACIÓN ................................... 9
6.- MUESTRA DE UNA DE UNA MAINBOARD XT CON IDENTIFICACION DE
DISPOSITIVOS............................................................................................................................10
7.- REGISTROS DEL 8088 ......................................................................................................... 10
7.1- Registros de Propósito General ................................................................................11
7.1.1Registro AX
7.1.2 Registro BX
7.1.3 Registro CX
7.1.4 Registro DX
7.2 Registros Índice ........................................................................................................11
7.1.1 Registro SI
7.1.2 Registro DI
7.3 Registros de punteros ...............................................................................................11
7.3.1 Registro SP
7.3.2 Registro BP
7.4 Registros de Estado .................................................................................................11
7.5 Registros de Segmento ............................................................................................11
7.5.1 Registro CS
7.5.2 Registro DS
7.5.3 Registro SS
7.5.4 Registroo ES
7.6 Registro Puntero de Instrucciones .........................................................................12
8.- MODOS DE DIRECCIONAMIENTO ..............................................................................13
9.- SET DE INSTRUCCUIONES ...........................................................................................15
2
9.1 Instrucciones de Transferencia de Datos....................................................................15
9.2 Control de Bucles (instrucciones simples) ................................................................15
9.3 Instrucciones de Prueba, Comparación y Saltos.........................................................15
9.4 Instrucciones de Llamado y Retorno de Subrutinas....................................................16
9.5 Instrucciones Aritméticas. ..........................................................................................16
9.6 Instrucciones Lógicas. ................................................................................................17
9.7 Instrucciones de Desplazamiento, Rotación y Adeudos.............................................17
9.8 Instrucciones de Pila...................................................................................................17
9.9 Instrucciones de Control del microprocesador............................................................17
9.10 Instrucciones de Interrupción....................................................................................18
10.- LENGUAJE LENGUAJE DE DE MAQUINA, MAQUINA, MACROENSANBLADOR
DEL MACROENSANBLADOR DEL 8088……………………………………………………19
11.- DEBUGER Y SIMULADORES DEL 8088 …………………………………………...…..20
BIBLIOGRAFIA ..........................................................................................................................23
3
1. SISTEMAS QUE COMPONEN LA COMPUTADORA XT
La IBM Personal Computer XT, conocida como la IBM XT o simplemente XT (eXtended
Technology), lanzada en 1983, tenía por componentes:
4
hasta 64K (65536 puertos), por lo que las máquinas construidas entorno a estos microprocesadores
no suelen emplear la entrada/salida por mapa de memoria.
Las frecuencias internas de reloj típicas son 4.77 MHz en la versión 8086; 8 MHz en la versión
8086-2 y 10 MHz en la 8086-1. Por lo que un PC estándar a 4,77 MHz puede ejecutar de 20.000
a unos 0,5 millones de instrucciones por segundo, según la complejidad de las mismas (un 486 a
50 MHz, incluso sin memoria caché externa es capaz de ejecutar entre 1,8 y 30 millones de estas
instrucciones por segundo).
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.
24 modos de direccionamiento de operandos.
Acceso directo a memoria
Soporte para coprocesadores de bus local.
Soporte para E/S mapeada en memoria.
Operaciones de cadena.
Clock de 5 MHz
3. FUNCIONAMIENTO GENERAL
La función básica de una computadora es ejecutar programas, los cuales están compuesto de un
conjunto de instrucciones almacenadas en memoria. La CPU es la encargada de ejecutar las
instrucciones específicas del programa. Para comprender esta función debe considerarse el detalle
del proceso de ejecución del programa. Desde el punto de vista más simple, se considera el
procesamiento de una instrucción en dos etapas: la CPU lee (busca, trae; “fetch” en inglés) la
instrucción de memoria y la ejecuta. La ejecución del programa consiste en la repetición del
proceso de traer y ejecutar la instrucción.
El 8086 y el 8088 tienen internamente dos componentes, la Unidad de Interfaz del Bus y la Unidad
de ejecución (Bus Interface Unit (BIU) y Execution Unit (EU)).
La Unidad de Ejecución procesa las instrucciones del CPU. Está conformada por los registros
generales, los registros índices y apuntadores, los flags, la unidad aritmética lógica, y la lógica de
control que maneja todo el proceso para ejecutar las instrucciones.
La Unidad de Interfaz del Bus maneja la lectura y escritura desde y hacia la memoria y los
puertos de entrada/salida. Está conformada por los registros de segmento, una cola de 4
bytes para instrucciones en el 8088 y de 6 en el 8086, y lógica para controlar los buses
externos del microprocesador.
La Unidad de Ejecución y la Unidad de Interfaz del Bus están interconectadas mediante un
bus interno.
5
Al ser inicializado el microprocesador, lo primero que hace es generar la dirección de memoria
0000h, para el ROM BIOS. Luego activa el pin ALE, para que el los bits bajos de la dirección
(AD0-AD7) queden almacenados en el circuito de Báscula Cerrojo. Luego de ello, activa el pin
RD, con lo que recibe el dato correspondiente al código de operación de la primera instrucción
almacenada el ROM BIOS a través de sus líneas de datos (con ello se explica la necesidad del
circuito báscula cerrojo). Una vez recibido este primer dato, el microprocesador busca en su tabla
de códigos, a qué operación se refiere y según ello, puede generar una nueva dirección al siguiente
dato para completar su operación. Este ciclo se repite siempre, la variación puede estar en que el
periférico direccionado, puede ser ROM, RAM o un periférico.
En caso que el microprocesador desee escribir en la memoria, se genera primero la dirección, como
en el caso anterior, sólo que esta vez se ponen los datos en el bus de datos y luego se activa el pin
WR.
4. SISTEMA DESCRITO POR BLOQUES Y POR CIRCUITOS
4.1.Diagrama de bloques de los microprocesadores Intel 8086/8088
6
5 Cola de instrucciones (4 bytes para el 8088 y 6 bytes para el 8086)
6 Unidad de control (muy simplificada)
7 Interfaz del bus
8 Bus de datos interno
9 Unidad aritmético lógica (ALU)
10, 11, 12 Bus de direcciones, datos y control externos
GND 1| |40 Vcc (+5V)
<-- A14 2| |39 A15 -->
<-- A13 3| |38 A16 --> S3 -->
<-- A12 4| |37 A17 --> S4 -->
<-- A11 5| |36 A18 --> S5 -->
<-- A10 6| |35 A19 --> S6 -->
<-- A9 7| |34 !SSO....HIGH, -->
<-- A8 8| |33 MN/!MX <--
<-> D7 <-- A7 9| Intel |32 !RD -->
<-> D6 <-- A6 10| 8088 |31 HOLD....!RQ/!GTO <->
<-> D5 <-- A5 11| |30 HLDA</spanreen">!RQ/!GT1 <->
<-> D4 <-- A4 12| |29 !WR.....!LOOK -->
<-> D3 <-- A3 13| |28 M/!IO...!S2 -->
<-> D2 <-- A2 14| |27 DT/!R...!S1 -->
<-> D1 <-- A1 15| |26 !DEN....!S0 -->
<-> D0 <-- A0 16| |25 ALE.....QS0 -->
--> NMI 17| |24 !INTA...QS1 -->
-->INTR 18| |23 !TEST <--
--> CLK 19| |22 READY <--
GND 20| |21 RESET <--
Los 40 pines del 8088 en modo mínimo tienen las siguientes funciones:
1-GND (Masa)
2-A14 (Bus de direcciones)
3-A13 (Bus de direcciones)
4-A12 (Bus de direcciones)
5-A11 (Bus de direcciones)
6-A10 (Bus de direcciones)
7-A9 (Bus de direcciones)
8-A8 (Bus de direcciones)
9-AD7 (Bus de direcciones y datos)
10-AD6 (Bus de direcciones y datos)
11-AD5 (Bus de direcciones y datos)
12-AD4 (Bus de direcciones y datos)
7
13-AD3 (Bus de direcciones y datos)
14-AD2 (Bus de direcciones y datos)
15-AD1 (Bus de direcciones y datos)
16-AD0 (Bus de direcciones y datos)
17-NMI (Entrada de interrupción no enmascarable)
18-INTR (Entrada de interrupción enmascarable)
19-CLK (Entrada de reloj generada por el 8284)
20-GND (Masa)
21-RESET (Para inicializar el 8088)
22-READY (Para sincronizar periféricos y memorias lentas)
23-/TEST
24-/INTA (El 8088 indica que reconoció la interrupción)
25-ALE (Cuando está uno indica que salen direcciones por AD, en caso contrario, es el bus de
datos)
26-/DEN (Data enable: cuando vale cero debe habilitar los transceptores 8286 y 8287 (se conecta
al pin de "output enable"), esto sirve para que no se mezclen los datos y las direcciones).
27-DT/R (Data transmit/receive: se conecta al pin de dirección de los chips recién indicados).
28-.IO/M (Si vale 1: operaciones con ports, si vale 0: operaciones con la memoria)
29-/WR (Cuando vale cero hay una escritura)
30-HLDA (Hold Acknowledge: el 8088 reconoce el HOLD)
31-HOLD (Indica que otro integrado quiere adueñarse del control de los buses, generalmente se
usa para DMA o acceso directo a memoria).
32-/RD (Cuando vale cero hay una lectura)
33-MN/MX (Cuando esta entrada está en estado alto, el 8088 está en modo mínimo, en caso
contrario está en modo máximo)
34-/SSO (Junto con IO/M y DT/R esta salida sirve para determinar estados del 8088)
35-A19/S6 (Bus de direcciones/bit de estado)
36-A18/S5 (Bus de direcciones/bit de estado)
37-A17/S4 (Bus de direcciones/bit de estado)
38-A16/S3 (Bus de direcciones/bit de estado)
39-A15 (Bus de direcciones)
40-Vcc (+5V)
8
5. ESQUEMATICO DEL SISTEMA COMPLETO SISTEMA DE APLICACIÓN
9
6. Muestra de una mainboard XT con identificación de dispositivos, etiquetado y accesorios
10
BX (Registro Base): Se usa principalmente para indicar posiciones de memoria
(offset).
CX (Registro Contador): Este registro se usa siempre que se necesite un
contador en operaciones repetitivas y bucles.
DX (Registro Dato): Se usa como registro auxiliar en operaciones aritméticas y
como contenedor de datos a la hora de usar instrucciones de comunicación de
puertos.
Estos cuatro registros, como todos los restantes, son de 16 bits, pero para permitir la
realización de operaciones de tipo byte (8 bits) cada uno de estos cuatro registros está
dividido en dos subregistros de 8 bits a los que se puede acceder de forma independiente
(como se observa en la figura 1.2). Así, por ejemplo, los 8 bits inferiores de AX se
llaman AL (L de low, bajo) y los 8 superiores AH (H de high, alto). En consecuencia,
BX, CX y DX se dividen en BH/BL, CH/CL y DH/DL respectivamente. De esta forma
se tiene que todas las instrucciones ensamblador pueden operar con datos de 8 y 16 bits
según lo que se precise. En los demás registros esta subdivisión no es posible.
b. Registros de pila:
La pila es un área de memoria importante. Tiene, en vez de uno, dos registros que se
usan como desplazamiento (offset) para apuntar su contenido. Se usan como
complemento al registro SS y son:
SP (Stack Pointer): Es el registro que se reserva el procesador para uso propio
en instrucciones de manipulación de la pila.
BP (Base Pointer): Se usa como registro auxiliar.
c. Registros de segmento:
Son cuatro registros de 16 bits usados para indicar direcciones de memoria:
CS (Code Segment): Este registro es usado por el procesador, junto con el
registro IP, para conocer dónde está la instrucción actual que está siendo
ejecutada.
DS (Data Segment): Se usa para indicar dónde están todos los datos del
programa en ejecución.
SS (Stack Segment): En este registro se indica al procesador dónde está la zona
de memoria que se usa como segmento de pila.
ES (Extra Segment): Es el registro que referencia al segmento extra, y se usa
como apuntador de memoria auxiliar en operaciones complejas donde se
necesitan dos punteros de datos simultáneos.
d. Registros Indices:
Se utilizan como desplazamientos complementarios para DS y ES a la hora de indicar
la posición donde se encuentran los datos a los que se desea acceder. Son:
SI (Source index): Se usa como puntero origen en operaciones de
desplazamiento de datos entre dos zonas de memoria.
DI (Destination index): Se usa como destino en operaciones de desplazamiento
de datos.
11
e. Registros de instrucción:
Sólo hay uno, el registro IP (Instruction Pointer), es usado por la CPU para conocer la
posición relativa a la base CS donde se encuentra la instrucción que se está ejecutando
actualmente. Este registro no puede ser modificado directamente por parte del
programador. Este puntero cambia su contenido automáticamente cada vez que se
ejecuta una instrucción o cuando se salta a otro punto del programa mediante una
instrucción de salto.
f. Registro de banderas:
Este registro es usado para tener el control de estado y control de las operaciones. La
mayoría de sus 16 bits se utiliza para representar un estado concreto:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CF -- PF -- AF -- ZF SF TF IF DF OF -- -- -- -
Bit 0 - CF (Carry Flag): Es la bandera de acarreo. Se pone a 1 cuando se produce un
resultado con acarreo tras una operación aritmética.
Bit 1: No usado.
Bit 2 - PF (Parity Flag): Cuando está a 1, indica que hay un número par de bits activos.
Bit 3: No usado.
Bit 4 - AF (Auxiliar Flag): Se usa como bandera auxiliar. Se pone a 1 cuando hay
necesidad de realizar ajustes tras una operación de tipo BCD.
Bit 5: No usado.
Bit 6 - ZF (Zero Flag): Indica si se ha producido un resultado cero o una comparación
con operadores iguales.
Bit 7 - SF (Sign Flag): Indica si se ha producido un resultado negativo o comparación
menor.
Bit 8 - TF (Trap Flag): Es la bandera de atrape, usada en procesos de depuración de
código.
Bit 9 - IF (Interrupt Flag): Si está a 1, indica que está permitida la generación de
interrupciones hardware que generan algunos periféricos, como la que realiza el teclado
cada vez que una tecla es pulsada.
Bit 10 - DF (Direction Flag): Indica a la CPU hacia donde se desplazan los punteros
relativos en operaciones repetitivas de cadenas de datos.
Bit 11 - OF (Overflow Flag): Indica si se ha producido un desbordamiento aritmético.
Bit 12 al 15: No usados.
La Figura mostrada a continuación muestra el Conjunto de Registros del 8088:
12
8. MODOS DE DIRECCIONAMIENTO
En el 8086/8088, los parámetros (operadores) de una instrucción pueden ser de tres tipos:
1.-Registros internos de la CPU
2.-Valores inmediatos
3.-Direcciones de memoria, de las que hay cinco tipos diferentes de representación.
En total son siete las clases de parámetros que se pueden utilizar y conjuntamente forman los
llamados siete modos de direccionamiento.
1. Registros internos: el origen y destino de la operación son los registros internos de la CPU.
2. Valores inmediatos: en este modo, el origen de los datos (y sólo el origen) es un valor numérico.
13
3. Valores de memoria. Hay cinco modos de acceso a memoria:
3.1 Modo directo: Se indica la dirección de memoria a la que se quiere acceder.
3.2 Modo indirecto mediante registro: Es similar al modo anterior sólo que el valor del
desplazamiento del operando no se indica directamente sino que se encuentra en un registro de la
CPU.
3.3 Modo relativo a base: Es unir los dos modos anteriores. Consiste en indicar la posición
del operando utilizando como desplazamiento el valor de un registro sumado con una cantidad
constante.
3.4 Modo directo indexado: Idéntico al anterior pero usando como registro de
desplazamiento el registro SI o el DI.
3.5 Modo indexado a base: Este es el modo más complejo, y se podría decir que es el
resultado de unir los cuatro anteriores. En este modo, el desplazamiento del operando se compone
a partir de un registro que hace de base, un registro índice y un valor inmediato que se les suma.
Los procesadores 8086 y 8088 tenían los siguientes modos de direccionamiento:
Implícito. El dato está implícito en la propia instruciión. Ej. STC, STD y STI, (Set Carry,
Set Direcction y Set Interrupts) encienden el flag correspondiente indicado en la propia
instrucción. CBW (Convert Byte to Word) extiende el registro AL a AX. Ni el AL ni el
AX son especificados, CBW implícitamente trabaja sobre ellos.
Inmediato. El dato a operar está inmediatamente después del opcode de la instrucción. Ej,
MOV AX, 5
Registro. El dato está en un segundo registro. Ej. MOV AX, BX. Aquí, el dato está en el
registro BX
Directo. La dirección del dato está en el campo de la dirección del opcode. Ej. MOV AX,
[100h]. Aquí se mueve (copia) el contenido de las direcciones 100h y 101h al registro AX.
En este caso se mueven dos bytes puesto que AX es de 16 bits. Si fuera MOV BL, [100h]
se movería solo un byte pues BL es un registro de 8 bits
Indirecto. El dato es especificado mediante una combinación de registros índice y base, y
puede haber un desplazamiento
Base. Un registro base (BX o BP) tienen la dirección de donde se tomará el dato. Ej.
MOV AX, [BX]
Índice. Un registro índice (SI o SI) tienen la dirección de donde se tomará el dato. Ej.
MOV AX, [SI]
Base + Desplazamiento. El dato se tomará de la dirección apuntada por la suma de un
registro base más un desplazamiento. Ej. MOV AX, [BP + 7]
Índice + Desplazamiento. El dato se tomará de la dirección apuntada por la suma de un
registro índice más un desplazamiento. Ej. MOV AX, [DI + 7]
Base + Índice. El dato se tomará de la dirección apuntada por la suma de un registro
base más un registro índice. Ej. MOV AX, [BX + SI]
Base + Índice + Desplazamiento. El dato se tomará de la dirección apuntada por la
suma de un registro base, más un registro índice, más un desplazamiento. Ej. MOV
AX, [BX + SI + 9]
14
9. Set de instrucciones del 8088
Se pueden clasificar en los siguientes grupos:
a. Instrucciones de Transferencia de Datos.
Estas instrucciones mueven datos de una parte a otra del sistema; desde y hacia la memoria
principal, de y a los registros de datos, puertos de E/S y registros de segmentación.
Las instrucciones de transferencia de datos son las siguientes: MOV transfiere
XCHG intercambia
IN entrada
OUT salida
XLAT traduce usando una tabla
LEA carga la dirección efectiva
LDS carga el segmento de datos
LES carga el segmento extra
LAHF carga los indicadores en AH
SAHF guarda AH en los indicadores
PUSH FUENTE (sp) fuente
POP DESTINO destino (sp)
b. Control de Bucles (instrucciones simples).
Estas posibilitan el grupo de control más elemental de nuestros programas. Un bucle es un
bloque de código que se ejecuta varias veces. Hay4 tipos de bucles básicos:
Bucles sin fin
Bucles por conteo
Bucles hasta
Bucles mientras
Las instrucciones de control de bucles son las siguientes:
INC incrementar
DEC decrementar
LOOP realizar un bucle
LOOPZ,LOOPE realizar un bucle si es cero
LOOPNZ,LOOPNE realizar un bucle si no es cero
JCXZ salta si CX es cero
c. Instrucciones de Prueba, Comparación y Saltos.
Este grupo es una continuación del anterior, incluye las siguientes instrucciones:
TEST verifica
CMP compara
JMP salta
JE, JZ salta si es igual a cero
JNE, JNZ salta si no igual a cero
JS salta si signo negativo
JNS salta si signo no negativo
JP, JPE salta si paridad par
15
JNP, JOP salta si paridad impar
JO salta si hay capacidad excedida
JNO salta si no hay capacidad excedida
JB, JNAE salta si por abajo (no encima o igual)
JNB, JAE salta si no está por abajo (encima o igual)
JBE, JNA salta si por abajo o igual (no encima)
JNBE, JA salta si no por abajo o igual (encima)
JL, JNGE salta si menor que (no mayor o igual)
JNL, JGE salta si no menor que (mayor o igual)
JLE, JNG salta si menor que o igual (no mayor)
JNLE, JG salta si no menor que o igual (mayor)
d. Instrucciones de Llamado y Retorno de Subrutinas.
Para que los programas resulten eficientes y legibles tanto en lenguaje ensamblador como
en lenguaje de alto nivel, resultan indispensables las subrutinas:
CALL llamada a subrutina
RET retorno al programa o subrutina que llamó
e. Instrucciones Aritméticas.
Estas instrucciones son las que realiza directamente el 8086/8088
a. Grupo de adicion:
ADD suma
ADC suma con acarreo
AAA ajuste ASCII para la suma
DAA ajuste decimal para la suma
b. Grupo de sustracción:
SUB resta
SBB resta con acarreo negativo
AAS ajuste ASCII para la resta
DAS ajuste decimal para la resta
c. Grupo de multiplicación:
MUL multiplicación
IMUL multiplicación entera
AAM ajuste ASCII para la multiplicación
d. Grupo de división:
DIV división
IDIV división entera
AAD ajuste ASCII para la división
e. Conversiones
CBW pasar octeto a palabra
CWD pasar palabra a doble palabra
NEG negación
16
f. Tratamiento de cadenas
Permiten el movimiento, comparación o búsqueda rápida en bloques de datos:
MOVC transferir carácter de una cadena
MOVW transferir palabra de una cadena
CMPC comparar carácter de una cadena
CMPW comparar palabra de una cadena
SCAC buscar carácter de una cadena
SCAW buscar palabra de una cadena
LODC cargar carácter de una cadena
LODW cargar palabra de una cadena
STOC guardar carácter de una cadena
STOW guardar palabra de una cadena
REP repetir
CLD poner a 0 el indicador de dirección
STD poner a 1 el indicador de dirección
f. Instrucciones Lógicas.
Son operaciones bit a bit que trabajan sobre octetos o palabras completas:
NOT negación
AND producto lógico
OR suma lógica
XOR suma lógica exclusiva
g. Instrucciones de Desplazamiento, Rotación y Adeudos.
Básicamente permiten multiplicar y dividir por potencias de 2
SHL, SAL desplazar a la izquierda (desplazamiento aritmético)
SHR desplazar a la derecha
SAR desplazamiento aritmético a la derecha
ROL rotación a la izquierda
ROR rotación a la derecha
RCL rotación con acarreo a la izquierda
RCR rotación con acarreo a la derecha
CLC borrar acarreo
STC poner acarreo a 1
h. Instrucciones de Pila.
Una de las funciones de la pila del sistema es la de salvaguardar (conservar) datos (la otra
es la de salvaguardar las direcciones de retorno de las llamadas a subrutinas):
PUSH introducir
POP extraer
PUSHF introducir indicadores
POPF extraer indicadores
i. Instrucciones de Control del microprocesador.
Hay varias instrucciones para el control de la CPU, ya sea a ella sola, o en conjunción con
otros procesadores:
17
NOP no operación
HLT parada
WAIT espera
LOCK bloquea
ESC escape
j. Instrucciones de Interrupción.
STI poner a 1 el indicador de interrupción
CLI borrar el indicador de interrupción
INT interrupción
INTO interrupción por capacidad excedida (desbordamiento)
IRET retorno de interrupción
Las instrucciones de transferencia condicional del control del programa se pueden
clasificar en 3 grupos:
18
c. JNO Salta si no hay desbordamiento (jump if not overflow) El salto se efectúa si OF =
0.
d. JNP o JPO Salta si no hay paridad o salta si la paridad en non. El salto se efectúa si PF=
0.
e. JNS Salta si el signo está apagado (jump if not sign) El salto se efectúa si SF = 0.
f. JO Salta si hay desbordamiento El salto se efectúa si OF= 1.
g. JP o JPE Salta si hay paridad o salta si la paridad es par (jump if parity o jump if parity
even) El salto se efectúa si PF = 1.
h. JS Salta si el signo está prendido El salto se efectúa si SF = 1.
19
trabajar con las direcciones de memoria de los datos, los saltos y las direcciones de llamadas a
subrutinas, además de que para poder hacer ejecutable un programa, se deben enlazar las rutinas
de run-time y servicios del sistema operativo. Este proceso es al que se le denomina ensamblado
de código. Para
facilitar la elaboración de programas a este nivel, se desarrollaron los Ensambladores y el Lenguaje
Ensamblador.
Existe una correspondencia 1 a 1 entre las instrucciones del lenguaje de máquina y las del lenguaje
ensamblador. Cada uno de los valores numéricos del lenguaje de máquina tiene una representación
simbólica de 3 a 5 letras como instrucción del lenguaje ensamblador. Adicionalmente, este
lenguaje proporciona un conjunto de pseudooperaciones (también conocidas como directivas del
ensamblador) que sirven para definir datos, rutinas y todo tipo de información para que el programa
ejecutable sea creado de determinada forma y en determinado lugar.
Lenguaje de máquina es el sistema de códigos directamente interpretable por un circuito
microprogramable, como el microprocesador de una computadora o el microcontrolador de un
autómata. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones
a ser tomadas por la máquina. Un programa 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.
Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos
únicos niveles de tensión. Dichos niveles, por abstracción, se simbolizan con el cero, 0, y el uno,
1, por eso el lenguaje de máquina sólo utiliza dichos signos. Esto permite el empleo de las teorías
del álgebra booleana y del sistema binario en el diseño de este tipo de circuitos y en su
programación.
11. Debuger y simuladores del 8088
Usamos el DEBUG para ejecutar el programa en lenguaje de máquina
DEBUG.EXE (o DEBUG.COM) es un programa DOS que permite a los programas de 16 bits que
se ejecute una instrucción a la vez con pausas para buscar en los registros y la memoria.
Ejecutarlo desde la línea de comandos MS-DOS como:
DEBUG name.EXE
Donde nombre es el nombre del archivo ejecutable.
DEBUG tiene una interfaz de usuario de línea de comandos.
Cada línea comienza con una letra clave posiblemente seguida de otra información.
Todos los números están en hexadecimal.
Por lo general, puede omitir los espacios en blanco - a veces es necesario hacerlo.
20
El "mini-lenguaje ensamblador" en adelante sólo entiende un código op y números hexadecimales
y registrar los nombres - que no entiende las etiquetas del programa.
A continuación se muestra un resumen de comandos. Las piezas que comienzan con / / son las
explicaciones no parte de los comandos. La notación xxxx representa un número hexadecimal
arbitrario (podría ser menos dígitos).
q / / quit DEBUG
r / / buscar en los registros y la siguiente instrucción a ser ejecutada
/ u / o desmontaje del lenguaje de máquina de nuevo en asamblea.
Sin embargo, note:No hay etiquetas de dirección.Se dan las direcciones en hexadecimal.
u xxxx / / desmonte a partir de la dirección xxxx
d xxxx / / volcado de memoria en formato hexadecimal y ASCII a partir de la dirección xxxx
t / / Ejecutar una sola instrucción
p / / Trace través de una llamada procedimiento o instrucción int.
g xxxx / / Ejecutar las instrucciones hasta que llegue a la instrucción en la dirección xxxx. Si la
ejecución falla que las instrucciones de su programa puede salirse de control.
g / / Ejecuta el programa hasta que sale (o nunca). Los valores de registro se muestran no son los
que dan al final de la ejecución de su programa.
r nn / / Donde nn es un nombre de registro. Muestra el valor actual del registro y luego a: Puede
escribir un nuevo valor para el registro y, a continuación, presione ENTRAR. O simplemente se
presiona Enter para salir del valor anterior sin cambios.
a / xxxx / Empieza a traducir las líneas de lenguaje ensamblador en ML y poner la instrucción ML
por primera vez en la dirección xxxx. Las líneas siguientes de AL irán a las direcciones de la
máquina posterior. Al pulsar Intro en una línea vacía AL saldrá de este "mini-ensamblador modo".
e xxxx / / Inicia el examen de bytes individuales a partir de la uno a la dirección xxxx. Si escribe
un espacio que pasa a la siguiente byte. Si escribe un número hexadecimal, se cambia el byte de
edad en lo que ha escrito. Si se pulsa enter, sale este "examinar" el modo.
NSSS / / ¿Dónde sss es uno o más caracteres ASCII dando un nombre de archivo. Este sss registros
como el nombre de archivo predeterminado .
l / / Esta es la carta de ell, NO la de un dígito. Esto carga el archivo con el nombre de archivo
predeterminado en la memoria. Si se trata de un archivo. Exe, que se carga correctamente y
establece las SS, CS e IP para el inicio del programa.
w / / Graba la memoria en el archivo con el nombre de archivo predeterminado . El número de
bytes escritos está dada por la división de entero de 32 bits entre los registros BX y CX. BX es el
21
más alto en 15 bits, CX es el más bajo en 15 bits. Esto presenta problemas para crear un programa
ejecutable.. Se puede utilizar para crear un programa.
22
Bibliografía
Los microprocesadores 8086 y 8088, Dario Alejandro Alpern, www.alpertron.com.ar/8088.HTM
Descripción de los componentes del sistema mínimo del microprocesador Intel,
www.members.tripod.com/wingsze_liu/trabajos_A8.htm
Arquitectura del procesador 8086-8088, www.monografias.com/trabajos104/arquitectura-del-
8086-8088/arquitectura-del-8086-8088.shtml
Caracteristicas del microprocesador 8086, www.techlandia.com/caracteristicas-del-
microprocesador-8086-lista_46568/
Instrucciones y directivas de 8086 y 8088, dario alejando Alpert,
www.alpertron.ar/INST8088.HTM
Capitulo V: El lenguaje ensamblador del 80x86, www.galia.fc.uaslp.mx/-
cantocar/ARQUI_COM_II/LIBRO%20IBM-PC/05.htm
23