Sie sind auf Seite 1von 18

MICROPROCESADORES Y MICROCONTROLADORES

1.
1.1

MICROPROCESADORES

1.1.1

INTRODUCCIN A LOS MICROPROCESADORES


DEFINICION DEL MICROPROCESADOR

Microprocesador

El microprocesador (uP) es un circuito integrado que contiene todos los elementos de una "unidad
central de procesamiento" o CPU (por sus siglas en ingls; Central Process Unit). En la actualidad
en el interior de este componente electrnico existen millones de transistores integrados.
Actualmente se dispone de una seccin especial para alojarlo dentro de una computadora. El
microprocesador est compuesto principalmente por: Registros, la Unidad de Control y la Unidad
aritmtico-lgica.

Unidad Central de Proceso (CPU)

Es el "cerebro" de una computadora, de manera ms precisa, es la parte de una computadora que


se encarga de controlar el proceso y la transferencia de informacin. La funcin de la CPU es
interpretar las instrucciones de un programa y coordinar su ejecucin. La CPU desde que es
energizada realiza en forma repetitiva ciclos de instruccin, los cuales se componen de las
actividades descritas en la figura 1.1.

Figura 1.1 Ciclo bsico de instruccin de la CPU

Para realizar este ciclo bsico, la CPU debe ser capaz de coordinar sus dispositivos internos y
externos para realizar:
Lecturas desde memoria interna (registros) y memoria externa
Escrituras a memoria interna y externa
Decodificacin de instrucciones (basada en la consulta de una unidad de microcdigo
interna a la CPU)
Operaciones de tipo aritmtico y lgico.
1.1.2

DIFERENCIA ENTRE EL MICROPROCESADOR Y EL MICROCONTROLADOR

Microprocesador (P): Es una CPU en un slo circuito integrado

Microcomputadora (PC): Es una computadora cuya CPU es un P

Microcontrolador (C): Es una microcomputadora en un slo circuito integrado

Computadora (PC): Una computadora es un sistema secuencial sncrono programable, la


cual para desempear sus funciones debe poseer adems de la CPU: (1) Conductos para
el flujo de la informacin, (2) Dispositivos para almacenar informacin y (3) Dispositivos
para comunicarse con el exterior

La figura 1.2 muestra en forma esquemtica y muy general la estructura de una computadora.

Figura 1.2 Estructura general de una computadora

La figura 1.3 muestra una comparacin sencilla


microcontroladores

entre los

microprocesadores

los

Figura 1.3 Comparacin entre los microprocesadores y los microcontroladores

1.1.3

TIPOS DE MICROPROCESADORES SEGN SU VELOCIDAD Y ANCHO DE


PALABRA
EVOLUCIN

1971
Intel fabrica el primer microprocesador (el 4004, figura 1.4) de tecnologa PMOS. Este era un
microprocesador de 4 bits y fue fabricado por Intel, contena 2,300 transistores y corra a 108 Khz
poda direccionar slo 4096 (4k) localidades de memoria de 4 bits, reconoca 45 instrucciones y
poda ejecutar una instruccin en 20 seg en promedio.

Figura 1.4 El primer microprocesador (4004) de Intel

1972
Intel desarroll una versin ms poderosa (el 8008), el cual poda manipular bytes completos, por
lo cual fue un microprocesador de 8 bits. La memoria que este poda manejar se increment a 16
kbytes, sin embargo, la velocidad de operacin continu igual.

1973
Intel lanza al mercado el 8080 el primer microprocesador de tecnologa NMOS, se increment la
capacidad de direccionamiento de memoria a 64 kbytes.
1975
Zilog lanza al mercado el Z80, uno de los microprocesadores de 8 bits ms poderosos. En ese
mismo ao, Motorola abate dramticamente los costos con sus microprocesadores 6501 y 6502
(este ltimo adoptado por APPLE para su primera microcomputadora personal).
1976
Surgen las primeras microcomputadoras de un slo chip, que ms tarde se denominarn
microcontroladores. Dos de los primeros microcontroladores, son el 8048 de Intel y el 6805R2 de
Motorola.
80s
En la dcada de los 80's comienza la ruptura entre la evolucin tecnolgica de los
microprocesadores y la de los microcontroladores, ya que los primeros han ido incorporando cada
vez ms y mejores capacidades para las aplicaciones en donde se requiere el manejo de grandes
volmenes de informacin y por otro lado, los segundos han incorporado ms capacidades que les
permiten la interaccin con el mundo fsico en tiempo real, adems de mejores desempeos en
ambientes de tipo industrial.
90s
En los 90s aparecen los siguientes microprocesadores como base principal en la construccin de
procesamiento digital:
1993: Intel Pentium, Motorola 68060, AMD K5, MIPS R10000
1995: Intel Pentium Pro
1997: Intel Pentium II, AMD K6, PowerPC (versiones G3 y G4), MIPS R120007
1999: Intel Pentium III, AMD K6-2
Al inicio del ao 2000, aparecen los siguientes microprocesadores de mayores capacidades de
proceso:
2000: Intel Pentium 4 (figura 1.5), Intel Itanium 2, AMD Athlon XP, AMD Duron, PowerPC
G4, MIPS R14000

Figura 1.5 El microprocesador Pentium 4 de Intel

Figura 1.6 El microprocesador AMD Athlon 64 X2

2005: Intel Pentium D, Intel Extreme Edition con hyper threading, Intel Core Duo, AMD
Athlon 64, AMD Athlon X2, AMD Athlon FX.
2006: Intel Core 2 Duo, Intel Core 2 Extreme, AMD Athlon 64 X2 (Figura 1.6)
2007: Intel Core 2 Quad, AMD Quad Core, AMD Quad Fx

En relacin a los microcontroladores, actualmente el mercado de fabricantes se circunscribe en los


siguientes: el microcontrolador PIC de Microchip, el ST-62XX de SGS-Thomson o el Z86XX de
Zilog. La eleccin del microcontrolador toma en consideracin a las caractersticas siguientes: bajo
precio, velocidad, reducido consumo, pequeo tamao, facilidad de uso, fcil programabilidad o la
abundancia de informacin y de herramientas econmicas de soporte.

RESUMEN DE ESPECIFICACIONES TECNICAS (uPs Intel) (Tabla 1.1)


Fecha de

Velocidad Ancho Nmero de

presentacin de reloj

de
bus

4004

15/11/71

108 KHz.

8008

1/4/72

8080

1/4/74

Memoria

Memoria

Breve

transistores

direccionable virtual

descripcin

4 bits

2.300 (10
micras)

640 byte

Primer chip con


manipulacin
aritmtica

108 KHz.

8 bits

3.500

16 KBytes

Manipulacin
Datos/texto

2 MHz.

8 bits

6.000

64 KBytes

10 veces las (6
micras)
prestaciones del
8008

1 MegaByte

10 veces las
prestaciones del
8080

5 MHz.
29.000
8086

8/6/78

8 MHz.

16 bits
(3 micras)

10 MHz.
Idntico al 8086
excepto en su
bus externo de 8
bits

5 MHz.
8088

1/6/79

8 bits

29.000

8 MHz.
8 MHz.
134.000
80286

1/2/82

10 MHz.

16 Bits

De 3 a 6 veces
las prestaciones
del 8086

16 Megabytes

1
Gigabyte

4 Gigabytes

Primer chip x86


capaz de
64
manejar juegos
Terabytes
de datos de 32
bits

(1.5 micras)
12 MHz.
16 MHz.
Microprocesador

275.000

20 MHz.
17/10/85

Intel 386 DX

32 Bits
25 MHz.

(1 micra)

33 MHz.
Microprocesador

275.000

16 MHz.
16/6/88

Intel 386 SX

16 Bits
20 MHz.

Bus capaz de
direccionar 16
bits procesando
Terabytes 32bits a bajo
coste
64

4 gigabytes
(1 micra)

25 MHz.
Microprocesador
10/4/89

33 MHz.

Intel 486 DX

(1 micra, 0.8
32 Bits micras en 50
MHz.)

64
4 Gigabytes
Terabytes

Cach de nivel 1
en el chip

50 MHz.
16 MHz.
Microprocesador

1.185.000

20 MHz.
22/4/91

Intel 486 SX

32 Bits

4 Gigabytes
(0.8 micras)

25 MHz.

Idntico en
diseo al Intel
486DX, pero sin
Terabytes coprocesador
matemtico
64

33 MHz.
60 MHz.
66 MHz.
Procesador
22/3/93
Pentium

75 MHz.
90 MHz.

3,1 millones
32 Bits

4 Gigabytes
(0.8 micras)

Arquitectura
escalable. Hasta
5 veces las
prestaciones del
Terabytes 486 DX a 33
MHz.
64

100 MHz.

Tabla 1.1 Especificaciones tcnicas de los microprocesadores Intel

1.2

ARQUITECTURA DEL MICROPROCESADOR

Arquitectura Von Newmann


Tradicionalmente los microprocesadores se basan en la estructura de Von Neumann (figura 1.7),
que se caracteriza por disponer de una nica memoria principal en la que se almacenan los datos y
las instrucciones. A esta memoria se accede a travs de un sistema de buses nico:
Bus de datos. La CPU necesita interactuar de alguna manera con su entorno (memoria y
puertos). Esto lo realiza mediante un conjunto de lneas paralelas llamadas bus externo de
datos.
Bus de direcciones. Para poder accesar a localidades de memoria es necesario generar
una direccin. Dicha direccin es generada por la CPU y puesta en el bus llamado bus de
direcciones. El tamao del bus de direcciones determina el mximo de memoria accesible.
Bus de control. Organiza y redirige la informacin hacia el bus pertinente para la
informacin que se tiene que transmitir.

Figura 1.7 Arquitectura Von Newmann

Arquitectura Harvard
El modelo Harvard, representado en la figura 1.8, dispone de dos memorias:
Memoria de datos
Memoria de Programa
Adems cada memoria dispone de su respectivo bus, lo que permite, que la CPU pueda acceder
de forma independiente y simultnea a la memoria de datos y a la de instrucciones. Como los
buses son independientes stos pueden tener distintos contenidos en la misma direccin.

Figura 1.8 Arquitectura Harvard

Arquitectura Ortogonal
Cualquier instruccin puede utilizar cualquier elemento de la arquitectura como fuente o destino.
En algunos microcontroladores como el PIC, el manejo del banco de registros, que participan
activamente en la ejecucin de las instrucciones, son ortogonales.
Arquitectura basada en banco de registros
Implica que todos los elementos del sistema, es decir, temporizadores, puertos de entrada/salida,
posiciones de memoria, etc, estn implementados fsicamente como registros.

1.3

CONEXIONES DEL MICROPROCESADOR


MEMORIA

1.3.2

PERIFERICOS (INTERFASE PROGRAMABLE 8255,


PROGRAMABLES 8259, COMUNICACIN SERIAL)

1.3.1

INTERRUPCIONES

1.4

LENGUAJE ENSAMBLADOR

Introduccin
El lenguaje ensamblador es un conjunto de Mnemnicos para representar las instrucciones que
puede realizar una computadora. Adems, es una variante legible para el ser humano del lenguaje
mquina que usan las computadoras para ejecutar programas. Al mismo tiempo es la mejor
manera que se tiene para comunicarse con la PC (tambin conocida como microcomputadora) y
con el lenguaje de programacin que utilice. El ensamblador resulta indispensable cuando se
desea escribir programas que controlen la entrada/salida de la PC, agregar nuevas interfaces de
e/s, escribir rutinas optimizadas de un procedimiento, escribir rutinas que aprovechen y maximicen
el uso del hardware, y en general realizar cualquier tarea que no puedan llevar a cabo los dems
lenguajes de programacin.

Ventajas y desventajas
Aunque cualquier lenguaje de programacin ofrece facilidades para realizar determinadas tareas,
ninguno proporciona un control absoluto con la PC, ni informacin fundamental de lo que sucede
mientras el programa se ejecuta.

El ensamblador le brinda la oportunidad de conocer ms a fondo la operacin de la PC.


El ensamblador, brinda la oportunidad de conservar el control total de lo que deber hacer
la PC, siempre y cuando sta sea fsicamente capaz de hacerlo.
Los programas en ensamblador son ms rpidos, ms compactos y tienen mayor
capacidad que los creados en otros lenguajes.
Se puede optimizar al mximo sus programas (tanto en tamao, como en velocidad de
ejecucin). En el caso de otros lenguajes ya existe cdigo que se genera de una manera
predefinida, haciendo muy difcil su optimizacin.

Ahora que se ha visto las diferencias entre lenguajes, tambin es justo sealar los problemas de
trabajar con el ensamblador

El primero es que una instruccin mal interpretada o un error de lgica en el programa,


pueden crear un caos, a tal grado de que ser necesario apagar y encender la PC.
El segundo problema es que la insuficiencia de conocimientos sobre el funcionamiento
interno de la PC puede causar efectos impredecibles.
Es necesario ajustarse a una convencin respecto al uso de interrupciones.
El programa es ms complejo conforme se le agregan rutinas o funciones adicionales.

1.4.1

REGISTROS Y CONJUNTO DE INSTRUCCIONES

Se le llama conjunto de instrucciones a la cantidad de instrucciones validas que puede ejecutar la


CPU. Generalmente se tienen dos categoras de instrucciones, dependiendo de la CPU diseada.
La primera se denomina RISC (Reduced Instruction Set Computer; Computadora con un conjunto
reducido de instrucciones). Este tipo de CPU est diseado para ejecutar un conjunto de
instrucciones muy pequeo, y deja la carga de lo que se considera instrucciones de alto nivel al
programador.
Un ejemplo de tales instrucciones de alto nivel, sera la multiplicacin de dos operandos en una
sola instruccin (MUL AX, BX). En el caso de la CPU tipo RISC, el programador carga con la tarea
de implementar la instruccin anterior usando instrucciones de ms bajo nivel proporcionadas por
la misma CPU. Estas CPU permiten que la misma CPU sea optimizada va hardware y le dan la
capacidad de ejecutar las instrucciones de su repertorio en forma ms eficiente y rpida.
La familia de microprocesadores 80x86 est formada por procesadores tipo CISC (Complex
Instruction Set Computer: Computadora con un Conjunto Complejo de Instrucciones), cuya

orientacin es ms bien la de ejecutar instrucciones de alto nivel. Algunas familias de


microprocesadores se muestran en la tabla 1.2. En la figura 1.9 se presenta uno de lo
microprocesadores ms recientes.
Max
direccionamiento
en Memoria (Mb)

Bus de direcciones
(bits)

Bus de datos
(bits)

20

16

20

24

16

32

16

32

32

PENTIUM PENTIUM II/III/IV


AMD K5/K6/K7
AMD ATHLON/THUNDERBIRD
AMD ATHLON XP/MP

32

64

16 Gb

INTEL ITANIUM
AMD ATHLON64

32/64

64/128

64 Gb

MicroProcesadores

8086/80186
8088/80188
80286
80386 SX
80386 DX
80486 SX
80486 DX

1
1
16
16

4 Gb

Tabla 1.2. Familia de microprocesadores sealando su capacidad en el bus

Figura 1.9. Procesador Intel Core2 Duo

LOS REGISTROSDEL uP 8086


El 8086 tiene 14 registros de 16 bits (Figura 1.10) que sirven para llevar el control de todo lo que
sucede dentro de la PC. Dichos registros se dividen en categoras de acuerdo con su actividad
preponderante. Existen cuatro registros de uso general, dos registros de apuntadores, dos
registros ndices, cuatro registros de segmento, el registro apuntador de instrucciones, y el registro
de banderas.

Figura 1.10. Registros de uso general del uP 8086, registros apuntadores, registros ndice, registros de
segmento y el registro apuntador de instrucciones.

Los primeros cuatro registros AX, BX, CX y DX son registros de uso general y se pueden usar
tambin como registros de 8 bits. Es decir, AX, se puede dividir en AH y AL (AH es el byte alto High- y AL es el byte bajo -Low-). Lo mismo es aplicable a los otros tres (BX en B y BL, CX en CH y
CL, y DX en DH y DL). Como lo mostr la figura anterior. Estos son los nicos registros que
pueden usarse de modo dual (8 o 16 bits). En la prctica, los registros de la CPU generalmente
son conocidos por sus nombres propios.
AX Acumulador. Enva o recibe datos de puertos y para multiplicacin y divisin.
BX Registro base. Calcula direcciones de memoria.
CX Registro contador. Contador de ciclos.
DX Registro de datos. Guarda direcciones de los puertos
DS Registro del segmento de datos, ES Registro del segmento extra, SS Registro del
segmento de pila y CS Registro del segmento de cdigo, se utilizan para guardar el
valor de un segmento en cualquiera de los registros.
BP Registro de apuntadores base y SP Registro del apuntador de la pila. Se utilizan
para manipular la informacin que se encuentra en la pila.
SI Registro ndice fuente y DI Registro ndice destino, se usan principalmente para las
operaciones de cadena o para el paso de parmetros
IP Registro de apuntador de siguiente instruccin. Este registro siempre apunta a la
siguiente instruccin a ejecutarse.
F Registro de flags (banderas). Este registro se muestra en la tabla 1.3. Est formado por
varios bits cada uno con significado propio, que son modificados por las operaciones que
realiza el uP.

Bit

15 14 13 12 11 10 9 8

5 4

3 2

1 0

Flag -- -- -- -- OF DF IF TF SF ZF -- AF -- PF -- CF
Tabla 1.3. Registro de flags (banderas) del uP 8086

Aunque es un registro de 16 bits slo algunos de ellos tienen significado. Los otros adquieren
valores indeterminados, y se dice que son bits reservados; un programa no debe tocarlos, pues
aunque un equipo dado puede que no los use, otros microprocesadores podran manipularlos
internamente.
CF Carry Flag o indicador de acarreo. Normalmente indica que "se lleva algo" despus de
haber sumado o restado.
OF Overflow Flag o indicador de desbordamiento. Si despus de una operacin el
resultado no cabe en el tamao del registro, se pone a 1.
ZF Zero Flag o indicador de cero. Si el resultado da 0 se pone a 1.
SF Sign Flag o indicador de signo. Si el resultado es negativo se pone a 1.
PF Parity Flag o indicador de paridad. Con algunas operaciones lgicas o aritmticas se
pone a 1 si el resultado es par.
AF Auxiliary Flag o indicador auxiliar. Se usa para operaciones BCD.
DF Direction Flag o indicador de direccin. Se usa en operaciones llamadas "de cadena",
indicando el sentido (ascendente o descendente) en que se recorre la memoria.
IF Interrupt Flag o indicador de interrupciones. Cuando se pone a 1 se permiten las
interrupciones, a 0 se ignoran; se dice que se enmascaran.
TF Trap Flag o indicador de trampa (para ejecucin paso a paso).
1.4.2

DECLARACION DE SEGMENTOS

Un segmento es un rea especial de un programa que inicia en un lmite de un prrafo, un


segmento en modo real puede ser de hasta 64K. Para direccionar un segmento se usan los
registros de direccionamiento de segmentos. Los tres segmentos principales son los segmentos de
cdigo, de datos, y de la pila. Estos segmentos se ilustran en la figura 1.11.
Segmento de cdigo: Contiene las instrucciones de mquina que son ejecutadas. Para
direccionar este segmento se usa el registro CS.
Segmento de Pila: La pila contiene los datos y direcciones que se necesitan guardar
temporalmente. Este segmento se direcciona con el registro SS.
Segmento de datos: Este segmento contiene datos, constantes y reas de trabajo definidos por el
programa, este segmento es direccionado por el registro por el registro DS.
Existen otros registros de direccionamiento de segmento como el ES (segmento extra) el FS y el
GS que tienen usos especializados.

SS

Direccin

Segmento de la pila

DS

Direccin

Segmento de datos

CS

Direccin

Segmento de cdigo

Registros de
Segmento

MEMORIA

Figura 1.11 Segmentos de los uPs Intel

1.4.3

MODOS DE DIRECCIONAMIENTO

La CPU ofrece varios mtodos para calcular direcciones de memoria. Los accesos a memoria se
pueden categorizar como accesos para obtener la siguiente instruccin a ejecutarse, o para
obtener algn dato especfico. En cuanto a conseguir la siguiente instruccin por ejecutarse, la
CPU utiliza la combinacin de los registros CS e IP, los cuales dan la direccin deseada. Antes de
entrar en detalles sobre las diferentes modalidades de direccionamiento de la memoria para
obtener algn dato especfico, vale la pena aclarar algunos conceptos acerca de lo que es un
segmento, as como de la manera que se forma una direccin.
Los segmentos
La arquitectura del 8086 obliga a usar en combinacin un registro de segmento (CS, DS, ES y SS)
y un desplazamiento, para obtener as la localidad absoluta de algn byte de informacin (ya sea
datos o instrucciones) dentro de la memoria (puede ser RAM o ROM). Dichos segmentos sirven
como los separadores de una carpeta: se puede dividir la carpeta en varios temas (mediante
separadores) y tener cierta cantidad de hojas por tema. En el caso del 8086, la cantidad de hojas
se traduce en cantidad de caracteres y su lmite es de 64KB por cada tema o segmento.
Las direcciones
El esquema de direccionamiento que impone la CPU obliga a usar los registros de segmentos en
cada operacin. El 8086 tiene un bus de direcciones de 20 bits, debido a que los registros son de
16 bits. Cada direccin de memoria se divide en dos partes: el segmento y el desplazamiento
dentro del segmento (cada uno de 16 bits). En notacin hexadecimal se tendra SSSS:DDDD
donde SSSS representa el registro de segmento seguido de dos puntos y del desplazamiento
representada por DDDD.
Clculo de una direccin de memoria
La memoria est dividida en segmento y desplazamiento. Se debe juntarla en una sola direccin
de 20 bits, para ello es necesario aplicar la siguiente formula:
Registro de segmento * 10H + desplazamiento
Por ejemplo:
Si el segmento fuera 2A54H, y el desplazamiento de 0022H, sera:
2A54H * 10H = 2A540H + 0022H = 2A562H
Como slo se tienen 20 bits en el bus de direcciones, es posible que una o ms combinaciones de
segmentos y desplazamientos originen la misma direccin. Tal es el caso del siguiente ejemplo:
2A55H * 10H = 2A550H + 0012H = 2A562H

Modos de direccionamiento. Es la forma en que una instruccin obtiene los operandos


requeridos por medio de cualquier instruccin en ensamblador, para explicarlos, utilizaremos como
ejemplo la instruccin "MOV destino, origen", que transfiere datos desde el origen al destino.

Direccionamiento Inmediato
MOV AX, 50
Transferencia de un valor directamente, en este caso el 50 al registro AX

Direccionamiento Directo. Un valor de 16 bits forma parte de la instruccin y es


interpretado como un acceso a la memoria. que ser movida al registro BX.
MOV BX, Cuenta
Transferencia del valor de la variable cuenta al registro BX
Cuenta es una localidad de memoria que tiene alguna informacin

Direccionamiento de Registro a Registro. En esta modalidad, solamente se realiza una


copia del registro fuente al registro destino, dejando intacto el primero.
MOV AX, BX Transfiere el contenido del registro BX al registro AX

Direccionamiento Indirecto. Trae un valor de memoria a un registro o viceversa, pero


primero se tiene que meter un registro (BX, SI, DI o BP), despus pasarlo a otro registro.
MOV BX, 1047H
MOV AX, [BX] (Es el registro que tiene la direccin que se quiere obtener el valor, este
debe ir entre corchetes)
Si usamos los registros DX, SI, DI, tenemos que combinarlos con el registro DS, y si
usamos el registro SP, hay que combinarlo con SS.
Los corchetes indican que se trata de una referencia a memoria, y por lo tanto que debe
interpretarse como el contenido de la direccin especificada.

Direccionamiento de Base. Solo se pueden utilizar (BX o BP) es similar al anterior.


MOV AX, [BX + 4] o tambin
MOV AX, [BX][4]

Direccionamiento Indexado. Solo se pueden utilizar los registros SI o DI


MOV AX, [SI + 7] o tambin
MOV AX, [SI][7]

Direccionamiento Indexado de Base


MOV AX, [BX + SI]
MOV AX, [BX][SI]
El desplazamiento indicado por el registro BX, se toma en funcin al segmento DS, y el
desplazamiento indicado por el registro BP se toma en funcin al registro de segmento SS.
Cuando se usa el registro BP, debe incluirse un segundo operando, ya sea un ndice o un
operando inmediato. Por ejemplo:
MOV AX, [BP]
Ser ensamblada como:
MOV AX, [BP + 0].

1.4.4

CONTROL DE DISPOSITIVOS DE ENTRADA/SALIDA

1.4.5

CONJUNTO DE INSTRUCCIONES

Instrucciones de Movimiento de Datos:

Son instrucciones que no operan con los datos, nicamente los mueven. La abreviatura
utilizada es MOV. Se especifican dos operandos. El procesador almacena el valor especificado
como primer operando en el lugar especificado como segundo operando.

Instrucciones Aritmticas y Lgicas:

Operaciones con uno o dos operandos. Se subdividen en dos clases: Aritmticas y lgicas.
Aritmticas: suma (ADD), resta (SUB), multiplicacin (MUL, IMUL), divisin (DIV, IDIV),
incremento (INC), decremento (DEC). Lgicas: conjuncin (AND), disjuncin (OR), negacin
(NOT), desplazamientos con/sin signo (SAL, SAR,SHL, SHR), rotaciones (RCL, RCR, ROL,
ROR). Las operaciones MUL, IMUL, DIV y IDIV tienen operandos implcitos.

Instrucciones de Control:

Otra parte importante de un programa es el control de la secuencia de instrucciones. El


procesador debe permitir la ejecucin no secuencial de instrucciones. Este mecanismo se basa
en dos tipos de instrucciones: comparacin y salto. La secuencia habitual para alterar el flujo
de ejecucin es opcionalmente comprobar una condicin y realizar un salto a un lugar diferente
del cdigo.

Instrucciones de Comparacin:

Los cdigos de condicin se almacenan el registro de estado y control del procesador y se


actualizan con la ejecucin de cada instruccin. Ejemplo: Si se ejecuta la instruccin
equivalente a t = a + b. Los cdigos de condicin se modifican de la siguiente forma.
CF: Se ha producido acarreo en la suma considerando los operandos como nmeros
naturales.
ZF: t = 0
SF: t < 0
OF: Se ha producido overflow en la suma.
El procesador posee instrucciones especficas que slo modifican los cdigos de condicin
pero no se guarda el resultado.

Instrucciones de Salto:

Las instrucciones de salto hacen que el programa pase a ejecutar una instruccin que no es la
siguiente en memoria. Estas instrucciones modifican el registro contador de programa. La
instruccin JMP requiere especificar un nico parmetro que es la direccin de memoria de la
instruccin a ejecutar a continuacin. Las instrucciones de salto condicional reciben un nico
parmetro idntico a la instruccin JMP, pero realizan el salto nicamente si la condicin a la
que hacen referencia se cumple. La condicin se extrae de los bits de condicin almacenados
en el registro de estado y control.
1.4.6

ESQUELETO DE UN PROGRAMA (FORMATO EN LENGUAJE ENSAMBLADOR)

La programacin en lenguaje ensamblador, necesita al menos tres herramientas: un editor de texto


para crear el archivo fuente, un compilador para convertirlo en archivo objeto (masm) y un
enlazador (linker) para gererar finalmente el programa ejecutable. Una cuarta herramienta sera el
depurador y en caso necesario corregir el programa ejecutable (Figura 1.12).
Se puede usar cualquier editor de texto, el compilador (llamado ensamblador ) es el MASM ( por
Macro Assembler Microsoft) y el enlazador es el programa LINK. Al utilizar el editor de texto para

crear el archivo, el archivo fuente es el archivo creado en lenguaje ensamblador que contiene
todas las instrucciones en el formato del ensamblador). La extensin usada en ensamblador para
el acrhivo fuente es .ASM. Este archivo es traducido por el MASM, generalmente como un archivo
intermedio porque an no es ejecutable. El enlazador (LINKER) combina uno o ms archivos .OBJ
para generar el archivo ejecutable, cuya extensin es .EXE (o tambin puede ser .COM,
dependiendo de la forma que se ensamblo).

Figura 1.12 Diagrama del proceso de procedimiento de programacin en ensamblador

Utilizacin del MASM


Una vez creado el archivo fuente, es necesario que pase por el MASM para generar el archivo
intermedio (formato OBJ). El comando para ello es el MASM archivo; seguido por la tecla [Enter].
MASM es el nombre del macroensamblador, archivo es el nombre del programa (sin extensin), y
el signo; le especifica al MASM que ensamble directamente el programa.
Ejemplo:
MASM Prueba;
Suponiendo que el nombre del programa sea prueba. Si se omitiese el punto y coma, MASM
respondera con lo siguiente:
Source filename [.ASM] Prueba [Enter]
Object filename [prueba.obj] [Enter]
Source listing [NUL.LST] [Enter]
Cross-reference [NUL.CRF] [Enter]
Masm pondr entre corchetes la respuesta que considere correcta. La opcin Source Listing
(listado fuente ) permite generar un archivo que contendr linea por lnea el cdigo mquina (en
notacin hexadecimal) generado y la lnea de su cdigo fuente, Tambin contiene ingformacin
adicional, por ejemplo los smbolos usados en el programa y los diferentes segmentos. El nombre
NUL.LST usado por MASM indica que usted no desea dicho listado. La opcin Cross-reference
(referencias recprocas) contiene informacin sobre cada smbolo de su cdigo fuente, mostrando
el nmero de lnea donde fue declarado y todas las lneas que hacen referencia a l. De nuevo, el
nombre NUL.CRF indica que tampoco desea generar dicho listado.
Todo parmetro va despues del simbolo "/". Es posible utilizar varios parmetros a la vez. Una vez
tecleados todos los parmetros se escribe el nombre del archivo a ensamblar. Por ejemplo, si
queremos que el MASM ensamble un programa llamado prueba, y adems deseamos que
despliegue el nmero de lneas fuente y smbolos procesados (eso lo realiza con el parmetro /v),
y si ocurre un error que nos diga en que lnea ocurri (con el parmetro /z), entonces tecleamos:
MASM /v /z prueba;
Cuando se usa el code view para visualizar, ejecutar y depurar un archivo, se debe ensamblar el
archivo fuente, de la siguiente forma:
MASM /zi prueba;

Usando el enlazador (linker)


El MASM traduce (ensambla) el archivo de cdigo fuente a otro de formato .OBJ. Sin embargo,
MS-DOS no puede ejecutar este ltimo archivo. Primero es necesario pasar el archivo .OBJ por
otro proceso que definir muchos detalles y generar el archivo ejecutable; dicho proceso es
realizado por el Enlazador. El comando para invocar al enlazador, tiene similitud con el que se usa
para invocar al MASM. Simplemente digite LINK archivo + (otros archivos .OBJ o libreras); por
ejemplo, el comando Link prueba; generar el archivo PRUEBA.EXE.
Para ampliar el concepto anterior, suponga que tiene dos archivos con extensin .OBJ:
prueba1.obj y prueba2.obj y que adems desea mezclar los dos archivos anteriores con una
biblioteca de grficos llamada bibliogr.lib. Usando el enlazador para generar el programa
ejecutable, se utilizar el siguiente comando:
Link prueba1 + prueba2 + bibliogr;
Tome en cuenta que en la lnea para comandos, el primer archivo siempre debe ser el principal; es
decir, el que controlar la secuencia de eventos. El objetivo de enlazar todos los archivos .OBJ es
poder generar un solo archivo ejecutable con la extensin .EXE. En el ejemplo anterior, se
generar el archivo Prueba1.Exe.
Como se ejecutan los programas en dos
Los programas con extension .COM y .Exe, tienen una estructura diferente, al momento en que
estos programas se ejecutan, el sistema operativo, crea una estructura que se almacena en
memoria llamada PSP (Program Segment Prefix) de 256 bytes de tamao, esta estructura contiene
alguna de la siguiente informacin:

DESPLAZAMIENTO

TAMAO (BYTES)

CONTENIDO

00H

Llamada a la interrupcin 20H

02H

Memoria total en prrafos

0AH

Direccin se salida

0EH

Direccin del manejador Ctrl-C

12H

Direccin del manejador de errores

80H

Longitud de lnea de comandos

81H

127

Lnea de comandos

Los primeros 128 bytes tienen informacin sobre el programa y los otros sobre la lnea de
comandos. La interrupcin 20H hace que el programa se regrese al sistema operativo al trmino
del mismo. La memoria total en prrafos, es la cantidad de memoria que necesita el programa para
ejecutarse, un prrafo, es igual a 16 bytes. La lnea de comandos es la lnea que se teclea al
momento de ejecutar un programa, esta se almacena a partir de la direccin 127, por ejemplo, si
tecleramos en la lnea de comandos (A:\>):
A:\> dir / p
En la direccin 80H habr un 6

81H = d
82H = i
83H = r
84H =
85H = /
86H = p
El manejador Ctrl-C sirve para que al momento de la ejecucin detenemos un programa utilizando
Ctrl-C, se activa y se regresa al sistema operativo. La interrupcin 12H se utiliza cuando se termina
el programa por un error. La estructura del PSP, se crea cuando se ejecuta un programa .COM o
.EXE, pero en realidad, estos tipos de programas son diferentes, veamos cuales son esas
caractersticas:
Programas COM
Los programas .COM tienen que estar en un solo segmento y no pueden ser mayores a 64 KB de
memoria, al momento que se ejecuta un programa .COM, el registro IP siempre apunta a la
direccin 0100H, que es 256 en decimal. Adems todos los programas .COM, tienen una pila, que
nicamente es de 2 bytes de tamao, la cual se utiliza nicamente para almacenar la direccin de
retorno, entonces, si restamos a 65536 que es lo mximo que puede medir un segmento, por lo
tanto, un programa .COM, los 256 bytes del PSP, y los 2 bytes de la pila, tenemos 65278 bytes,
que es la cantidad real en bytes que puede medir un programa de tipo .COM.

Programas EXE
Los programas .EXE, pueden contener uno o ms segmentos, ya sea de datos, de cdigo, y
adems de un segmento de pila, este tipo de programas, pueden comenzar en cualquier direccin,
y esto se indica a travs del registro IP, dentro de estos programas, existe una cabecera, que
contiene toda la informacin sobre el programa, por ejemplo, el nmero de segmentos, donde
comienzan, etc. Al momento de que se empieza a ejecutar un programa EXE, los registros DS, y
ES apuntan al PSP, el registro CS apunta al cdigo, y el registro SP al segmento de pila.

El sistema Operativo, diferencia a un programa EXE y uno COM, tomando los dos primeros bytes
de la cabecera, y si estos son iguales a 5A4DA, entonces este es un programa .EXE, y si esto no
se cumple, entonces es un programa tipo COM.
Formato de un programa
Los programas en ensamblador, pueden ser de dos tipos, uno, que es un formato interno, el cual
se utiliza en la creacin de programas dentro del debug, y un formato externo, el cual se utiliza en
la creacin de programas fuentes, que despus se ensamblaran, enlazaran, y despus se
ejecutaran, sin necesidad del debug. Todas las instrucciones en ensamblador, ya sea en formato
interno, o en formato externo, tienen la forma:
[Etiqueta]: Nemnico Operando [;Comentario]
En donde, la etiqueta y los comentarios son opcionales

Las etiquetas, no deben tener ms de 31 caracteres, pueden contener letras y nmeros, o


cualquiera de los caracteres @, $,=, _ y ?, deben empezar con una letra, @ o _.
Los nemnicos es el nico que obligatoriamente debe estar en una sola lnea, y en
realidad, un nemnico es una instruccin en ensamblador.
Los operandos dependen del nemnico, y pueden ser ninguno, uno o varios operandos,
estos nicamente pueden tener hasta 31 caracteres, y estos pueden ser variables,
registros, direcciones de memoria, etc.
Los comentarios van despus del punto y coma, y sirven para hacer ms claro el
funcionamiento de un programa o la explicacin de las instrucciones, en caso de que no
exista comentario, no es necesario el punto y coma.

Adems de definir ciertas reglas para que el ensamblador pueda entender una instruccin es
necesario darle cierta informacin de los recursos que se van a utilizar, como por ejemplo los
segmentos de memoria que se van a utilizar, datos iniciales del programa y tambin donde inicia y
donde termina nuestro cdigo.
Un programa sencillo puede ser el siguiente:
.MODEL SMALL
.CODE
Programa:
MOV AX,4C00H
INT 21H
.STACK
END Programa
El programa realmente no hace nada, nicamente coloca el valor 4C00H en el registro AX, para
que la interrupcin 21H termine el programa, pero nos da una idea del formato en un programa en
ensamblador.
La directiva .MODEL define el tipo de memoria que se utilizar; la directiva .CODE nos indica que
lo que esta a continuacin es nuestro programa; la etiqueta Programa indica al ensamblador el
inicio del programa; la directiva .STACK le pide al ensamblador que reserve un espacio de
memoria para las operaciones de la pila; la instruccin END Programa marca el final del programa.
Ejemplo prctico de un programa que escribe una cadena en pantalla:
.MODEL SMALL
.CODE

Programa:
MOV AX, @DATA
MOV DS, AX
MOV DX, Offset Texto
MOV AH, 9
INT 21H
MOV AX,4C00H
INT 21H
.DATA
Texto DB 'Mensaje en pantalla.$'
.STACK
END Programa
Los primeros pasos son iguales a los del programa anterior: se define el modelo de memoria, se
indica donde inicia el cdigo del programa y en donde comienzan las instrucciones. A continuacin
se coloca @DATA en el registro AX para despus pasarlo al registro DS ya que no se puede copiar
directamente una constante a un registro de segmento. El contenido de @DATA es el nmero del
segmento que ser utilizado para los datos. Luego se guarda en el registro DX un valor dado por
"Offset Texto" que nos da la direccin donde se encuentra la cadena de caracteres en el segmento
de datos. Luego utiliza la opcin 9 (Dada por el valor de AH) de la interrupcin 21H para desplegar
la cadena posicionada en la direccin que contiene DX. Por ltimo utiliza la opcin 4CH de la
interrupcin 21H para terminar la ejecucin del programa (aunque cargamos al registro AX el valor
4C00H la interrupcin 21H solo toma como opcin el contenido del registro AH).
La directiva .DATA le indica al ensamblador que lo que est escrito a continuacin debe
almacenarlo en el segmento de memoria destinado a los datos. La directiva DB es utilizada para
Definir Bytes, esto es, asignar a cierto identificador (en este caso "Texto") un valor, ya sea una
constante o una cadena de caracteres, en este ltimo caso deber estar entre comillas sencillas ' y
terminar con el smbolo "$".
1.4.7

USO DE PROCEDIMIENTOS

Das könnte Ihnen auch gefallen