Vous êtes sur la page 1sur 32

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI.

Ana Francisca Lule Rangel

1 FUNDAMENTOS
1.1 INTRODUCCIN Todo procesador, grande o pequeo, desde el de una calculadora hasta el de un supercomputador, ya sea de propsito general o especfico, posee un lenguaje nico que es capaz de reconocer y ejecutar. Por razones que resultan obvias, este lenguaje ha sido denominado Lenguaje Mquina y ms que ser propio de un computador pertenece a su microprocesador. El lenguaje Mquina est compuesto por una serie de instrucciones, que son las nicas que pueden ser reconocidas y ejecutadas por el microprocesador. Este lenguaje es un conjunto de nmeros que representan las operaciones que realiza el microprocesador a travs de su circuitera interna. Estas instrucciones, por decirlo as, estn grabadas o "alambradas" en el hardware y no pueden ser cambiadas. El nivel ms bajo al que podemos aspirar a llegar en el control de un microprocesador es precisamente el del lenguaje de mquina. Obviamente es el lenguaje ms simple es el empleado por el propio ordenador (compuesto de 0 y 1, cdigo binario). Es comprensible que al usar slo ceros y unos su utilizacin sea difcil, larga y motivo de frecuentes errores. Con el Lenguaje Mquina, se obtiene un control total del microprocesador sin embargo, la programacin en este lenguaje resulta muy difcil y fcil para cometer errores. No tanto por el hecho de que las instrucciones son slo nmeros, sino porque se debe calcular y trabajar con las direcciones de memoria de los datos, los saltos y las direcciones de llamadas a subrutinas, adems 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 cdigo. Para facilitar la elaboracin de programas a este nivel, se desarrollaron los Ensambladores y el Lenguaje Ensamblador. Lenguaje Ensamblador Programar en Ensamblador es como programar en un lenguaje mquina ya que hay una identificacin entre lenguaje mquina de 0 y 1 y un lenguaje simblico El ensamblador es un lenguaje intermedio, creado para facilitar la comunicacin entre el hombre y la mquina. Utiliza cdigos nmotcnicos o nmnicos, generalmente difciles de aprender y que adems son especficos de cada microprocesador. Para facilitar el trabajo del programador y hacer la programacin accesible al mayor nmero de personas, se han creado lenguajes avanzados, que no dependen del ordenador. En realidad, estos lenguajes son programas que convierten las distintas instrucciones y datos en lenguaje mquina, el nico que es procesado por el ordenador. Por lo tanto, se deduce que el Lenguaje Ensamblador es un lenguaje de bajo nivel compuesto por una serie de cdigos nmotcnicos (o nmnicos) o de peticin que son traducidos a lenguaje mquina. Sus caractersticas son: 1. Muy rpido. 2. Difcil de aprender. 3. Propio de cada procesador. Una caracterstica fundamental del lenguaje ensamblador es que cada una de sus sentencias es una codificacin simblica de una instruccin numrica mquina. Otra caracterstica que presenta es que nos permite llegar a usar cualquier recurso del sistema (hw), cosa que no nos permiten los lenguajes de alto nivel.
1

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

El uso de referencias simblicas es una caracterstica bsica del lenguaje ensamblador, evitando tediosos clculos y direccionamiento manual luego de cada modificacin del programa. Tambin incluyen facilidades para crear macros , a fin de generar series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utilizar subrutinas. Existe una correspondencia 1 a 1 entre las instrucciones del lenguaje de mquina y las del lenguaje ensamblador. Cada uno de los valores numricos del lenguaje de mquina tiene una representacin simblica de 3 a 5 letras como instruccin del lenguaje ensamblador. Adicionalmente, este lenguaje proporciona un conjunto de pseudo-operaciones (tambin conocidas como directivas del ensamblador) que sirven para definir datos, rutinas y todo tipo de informacin para que el programa ejecutable sea creado de determinada forma y en determinado lugar. El propsito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en cdigo binario, que es el nico cdigo entendible por la computadora, es en la prctica imposible.

USUARIO

APLICACIONES

P R O G R A M A D O R

Lenguajes Visuales

SOFTWARE

Lenguaje de Alto Nivel Lenguaje Ensamblador

HARDWARE
Lenguaje Mquina

Ensambladores
El proceso importante que convierte las instrucciones de Lenguaje Ensamblador en un cdigo Mquina es el de traduccin. Los traductores son programas que realizan ese proceso de conversin. En el proceso de traduccin es necesario identificar los diferentes tipos de cdigo que se involucran. Cdigo Fuente se denomina al programa escrito con las instrucciones propias del lenguaje. El Cdigo Objeto es el que se genera cuando ha pasado por la traduccin y est escrito generalmente en cdigo mquina. Los traductores se dividen en dos grupos dependiendo de la relacin entre cdigo fuente y cdigo objeto. Cuando una instruccin de un cdigo fuente nos genera una nica instruccin numrica mquina decimos que ese cdigo fuente es ensamblador. Cuando la instruccin simblica de cdigo fuente (como Basic, Cobol, Fortran, llamados de Lenguajes de Alto Nivel) nos genera varias instrucciones mquina o varias instrucciones simblicas de otro lenguaje, el traductor realiza la transformacin en una de 2 formas: Cuando todas las instrucciones son traducidas en un solo bloque se le llama compilador. Si las instrucciones y datos son traducidas a lenguaje mquina lnea por lnea, entonces se llama intrprete. 2

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel Un ensamblador crea cdigo objeto traduciendo instrucciones mnemnicas a cdigos operativos, y resolviendo los nombres simblicos para posiciones de memoria y otras entidades. Los ensambladores son por lo general ms fciles de programar que los compiladores de lenguajes de alto nivel, y han estado disponibles desde la dcada de 1950. Los ensambladores modernos, especialmente para arquitecturas basadas en RISC, como por ejemplo MIPS, SPARC y PA-RISC optimizan las instrucciones para explotar al mximo la eficiencia de segmentacin del CPU.

Diferencias entre Lenguaje de Alto Nivel y Lenguaje Ensamblador. 1. El lenguaje ensamblador es muy prximo al lenguaje mquina, mientras que el lenguaje de alto nivel es muy prximo al lenguaje humano. 2. La sintaxis del lenguaje ensamblador es muy sencilla, y la de los lenguajes de alto nivel son ms complicadas. 3. La estructura en el lenguaje ensamblador se presenta nicamente en tres columnas, mientras que en los lenguajes de alto nivel, se hace uso de las identaciones como herramienta para la escritura. 4. La lgica para desarrollar un programa en ensamblador debe ser mucho ms cuidadosa y especfica, ya que en este lenguaje el programador realiza todas las operaciones, mientras que en el lenguaje de alto nivel existen instrucciones que ejecutan operaciones que son transparentes para el usuario, es decir, no se visualiza paso a paso, slo se obtiene el resultado final. 1.1.1 Uso y aplicaciones del Lenguaje Ensamblador Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se pretenden rendimientos inusuales de los equipos. Su uso ms frecuente se especifica en las siguientes categoras: Programacin de aplicaciones. No necesita de un conocimiento especfico del hardware o de cualquier otro aspecto asociado con el lenguaje ensamblador. Manejador de Hardware. Est ntimamente ligada con la arquitectura del procesador, la direccin de los puertos de los perifricos e interrupciones. Programacin de sistemas. Se utiliza para desarrollar programas que sean marco de referencia para mantener la computadora activa y en espera de que el usuario proporcione instrucciones para el manejo de archivos, de memoria o para la ejecucin de comandos e instrucciones, un sistema operativo, por ejemplo. Los ensambladores de alto nivel proveen posibilidades de abstraccin que incluyen: Control avanzado de estructuras Procedimientos de alto nivel, declaracin de funciones. Tipos de datos que incluyen estructuras, registros, uniones, clases y conjuntos. Sofisticado procesamiento de macros.

1.1.2 Escalabilidad de los microprocesadores El procesador mayormente usado en el mundo es toda la zaga de Intel, desde el 8086 hasta el ms reciente lanzamiento de este fabricante.
3

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Obviamente, el lenguaje de mquina de un microprocesador no puede ser ejecutado por otro microprocesador de arquitectura distinta, a menos que haya cierto tipo de compatibilidad prevista. Por ejemplo, un 80486 es capaz de ejecutar lenguaje de mquina propio y soporta el cdigo generado para microprocesadores anteriores de la misma serie (desde un 8086 hasta un 80386). Por otra parte, un PowerPC es capaz de ejecutar instrucciones de los microprocesadores Motorola 68xxx y de los Intel 80xx/80x86. En ambos casos, el diseo de los microprocesadores se hizo tratando de mantener cierto nivel de compatibilidad con los desarrollados anteriormente. En el segundo caso, este nivel de compatibilidad se extendi a los de otra marca. Sin embargo, un 8088 no puede ejecutar cdigo de un 80186 o superiores, ya que los procesadores ms avanzados poseen juegos de instrucciones y registros nuevos no contenidos por un 8088. Un caso similar es la serie 68xxx, pero de ninguna manera podemos esperar que un Intel ejecute cdigo de un Motorola y viceversa. Y esto no tiene nada que ver con la compaa, ya que Intel desarrolla otros tipos de microprocesadores como el 80860 y el iWARP, los cuales no pueden compartir cdigo ni entre ellos ni entre los 80xx/80x86. Una caracterstica importante en la evolucin de los procesadores es la longitud (o tamao) de los datos que manejan, por ello es importante detallar en qu consiste esta caracterstica. Longitud de los Datos. Los tipos principales de datos permitidos por los micro-programa de Intel tiene una longitud de palabras de 1, 4, 8, 16 y 32 bits y se denominan, respectivamente, Bit, Nibble, Byte, Palabra, Doble Palabra. Composicin de Palabra, Byte, Nibble y Bit La informacin en el procesador, se almacena en bits, esto es 0 1. Como ya es sabido, el procesador solo reconoce dos estados: encendido (1) o apagado (0). 1. El byte, con 8 bits, determina el valor en decimal segn la posicin en que se encuentre un 0 un 1.
Base Elevada Valor Posicional Combinacin Binaria 27 128 1 1*128 12810 26 64 0 25 24 32 16 1 0 1*32 3210 (128+32+8+4+1) = 17310 23 8 1 1*8 810 22 4 1 1*4 410 21 2 0 20 1 1 1*1 110

2. Este byte es dividido es 2 partes, cada uno de 4 bits. Cada una de estas partes recibe el nombre de NIBBLE. El sistema de numeracin hexadecimal es usado en esta conversin, siendo sus dgitos del 0 al 9 que representan respectivamente los nmeros del 0 al 9, los nmeros del 10 al 15 se representan como sigue: A=10, B=11, C=12, D=13, E=14 y F=15.
Nibble Alto 23 8 1 1*8 22 4 0 21 2 1 1*2 20 1 0 23 8 1 1*8 22 4 1 1*4

Nibble Bajo 21 2 0 20 1 1 1*1 4

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel 8 2 (8+2) = 1010 = A16 161 16 10*16 16010 8 4 (8+4+1) = 1310 = D16 160 1 13*1 1310 1

(160+13)= 17310

3. El procesador 80386 utiliza la PALABRA que est compuesto de 2 bytes. El byte de valores mayores (las 8 posiciones de la izquierda) recibe el nombre de byte ms significativo, el de valores menores (8 posiciones a la derecha) recibe el nombre de byte menos significativo.

PALABRA Byte menos significativo Nibble Nibble 23 20 23 20 23 22 21 20 23 22 21 8 1 8 1 8 4 2 1 8 4 2 1 0 1 0 1 0 1 0 0 0 1 8 8 8 2 1 Valores en Hexadecimal, que es la forma en que se representan las direcciones en ensamblador. 8 8 A (10) 1 163 162 161 160 8*16*16*16=32768 8*16*16=2048 10*16=160 1*1=1 Valor Decimal 34977 Nibble 22 21 4 2 0 0 Nibble 22 21 4 2 0 0 Byte ms significativo

20 1 0

Los nmeros decimales se pueden almacenar de varias formas, como por ejemplo: Desempaquetado, donde cada byte contiene un dgito. Ejemplo: 1434 01 04 03 0000 0001 0000 0100 0000 0011

04 0000 0100

Empaquetado, donde cada byte contiene dos dgitos. Ejemplo: 1434 14 0001 0100 Agrupaciones superiores al byte:
Nombre Palabra Doble Palabra Cudruple Palabra

34 0011 0100

Tamao 2 bytes. 2 palabras, 4 bytes 4 palabras, 8 bytes 5

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel Prrafo Pgina Segmento 8 palabras, 16 bytes. 128 palabras (normalmente) 256 bytes 64k bytes ( normalmente) 32,768 palabras 65,536 bytes

Familias de Procesadores 8086.


Procesador 8086 / 8088 80186 / 80188 80286 80386 80486 Modos disponibles Real Real Real y Protegido Real y Protegido Real y Protegido Memoria Direccionable 1 MegaB 1 MegaB 16 MegaB 4 GigaB 4 GigaB Tamao del Registro 16 bits 16 bits 16 bits 16 o 32 bits 16 o 32 bits

En modo Real solo se puede ejecutar a la vez un proceso. El sistema operativo DOS solo funciona en modo real. En el modo Protegido, ms de un proceso pueden ser activados a la vez. 1.1.3 Tipos de Lenguajes Ensambladores Podemos distinguir entre tres tipos de ensambladores: Ensambladores bsicos. Son de muy bajo nivel, y su tarea consiste bsicamente en ofrecer nombres simblicos a las distintas instrucciones, parmetros y cosas tales como los modos de direccionamiento. Adems, reconoce una serie de directivas (o meta instrucciones) que indican ciertos parmetros de funcionamiento del ensamblador. Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores bsicos, fueron muy populares en las dcadas de los 50 y los 60, antes de la generalizacin de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador, y adems proporcionan una serie de directivas para definir e invocar macroinstrucciones (o simplemente, macros). Ensambladores modulares 32-bitso de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrs pudiendo trabajar con programas con estructuras de 16 bits. Adems de realizar la misma tarea que los anteriores, permitiendo tambin el uso de macros, permiten utilizar estructuras de programacin ms complejas propias de los lenguajes de alto nivel. 1.1.4 Clasificacin de la Memorias Para las PCs la memoria se clasifica en tres tipos:

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Convencional. Es la memoria de tipo bsico y que abarca las direcciones de 0 a 640KB. En sta es donde se cargan los programas de usuario y el sistema operativo, y es la que est disponible para equipo XT (8088,8086, 80186 y 80188). Extendida. Esta memoria slo est disponible para procesadores 80286 y mayores (equipo AT, 80386 y 80486). Muchos programas que usan la memoria convencional no pueden usar la memoria extendida porque las direcciones en memoria extendida estn ms all de las que el programa puede reconocer. nicamente las direcciones dentro de los 640KB pueden ser reconocidas por todos los programas. Para reconocer la memoria extendida se requiere de un manejador de memoria extendida, como HIMEM.SYS que provee MS-DOS. Expandida. Esta es la memoria que se agrega al computador a travs de una tarjeta de expansin, y que debe ser administrada por un programa especial, como el EMM386.EXE. A diferencia de la memoria convencional o extendida, la memoria expandida es dividida en bloques de 16K llamados pginas (pages). Cuando un programa solicita informacin de memoria expandida el manejador copia la pgina correspondiente en un rea denominada page frame para poder ser accedida en la memoria extendida. Como podremos ver, el 8088, 8086, 80188 y 80186 son capaces de direccionar hasta 1 MB de memoria. Ya hemos indicado que la memoria convencional slo abarca 640KB, as nos quedan 384KB libres. Esta parte de la memoria es denominada parte alta, y como no est disponible para muchos programas generalmente se usa para cargar drivers del sistema operativo, programas residentes y datos de hardware (ROM y pginas de video). La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamao. Cada localidad de almacenamiento tiene asignada una direccin que la identifica. La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, as como algunos datos a emplear. Un mtodo de asignacin de memoria es la manera mediante la cual el Sistema Operativo lleva el control de la memoria tratando de que sea lo ms eficiente posible. El mtodo de asignacin usada por ensamblador es la segmentacin. Arquitectura de Segmentos. Los registros son elementos con un nmero determinado de bits que usa el procesador para hacer unas operaciones especficas. Un segmento es una porcin de memoria seleccionada por el procesador para almacenar cierto tipo de informacin. Con la llegada de procesadores en modo protegido, la arquitectura de segmento consigui que los segmentos puedan separarse en bloques diferentes para protegerlos de interacciones indeseables. La arquitectura de segmentos realiz otro cambio significativo con el lanzamiento de procesadores de 32 bits, empezando con el 80386, que minimizan las limitaciones de memoria de la arquitectura de segmentos de los 16 bits, siendo, adems, compatibles con stos de 16 bits. Ambos ofrecen paginacin para mantener la proteccin de los segmentos. En DOS los segmentos se asignan normalmente adyacentes uno al otro. En modo Protegido los segmentos estaran en cualquier parte de memoria. El programador no sabe donde estn ubicados y no tiene ningn control sobre ellos. Los segmentos pueden incluso moverse a una nueva posicin de memoria o cambiarse al disco mientras que el programa se est ejecutando.

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Asignacin Programa Modo Real Memoria Segmento 0 1 direccin disponible

Segmento 1

Siguiente direccin a partir de segmento0

Asignacin Programa Modo Protegido Memoria ... ... Segmento 0 direccin disponible en alguna parte de memoria

... ... Segmento 1 Siguiente direccin despus del segmento0, en alguna parte de memoria

Direccionamiento de los segmentos.

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Las direcciones en ensamblador estn divididas en 2 componentes: segmentos y desplazamientos (offset). Segmento: Es un rea de memoria que puede tener una longitud de 64 Kbytes, esto es 32,768 palabras, o sea 65,536 bytes. Debe iniciar en un rea de memoria cuya direccin sea lmite de 16 bytes. Puede traslaparse con otros segmentos intercalando localidades de memoria. La direccin de inicio del segmento define su localizacin. Cuando se trabaja la memoria en Ensamblador se divide en 4 regiones de 64k. Estas seran: 1. 2. 3. 4. El de cdigo, que contiene los cdigos de instruccin del programa que se est ejecutando. El de datos, que guarda las variables del programa. El de stack, con informacin referente a la pila o stack. El extra, o rea de datos complementario, usada generalmente para operaciones con cadenas.

Desplazamiento: Dado que los segmentos pueden tener hasta 64 Kbytes de tamao, es necesario especificar la ubicacin de las localidades dentro de un segmento. Este parmetro es el desplazamiento de la localidad de memoria. El desplazamiento necesita de una palabra de 16 bits para definir todas las posiciones posibles dentro de un segmento de 64 Kbytes (64*1024=65,536) de longitud mxima. La representacin de una localidad de memoria que incluye la direccin de inicio del segmento y el desplazamiento es la siguiente:

88A1:0015 Direccin del Desplazamiento Direccin de inicio del Segmento Este mecanismo interior combina el valor del segmento y un valor de desplazamiento para crear una direccin. Las 2 partes representan una direccin 'segmento:desplazamiento'.
Memoria <--- 1 byte ---> Segmento 0 0000:0000 0000:0001 ..... 0000:FFFF

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel Memoria <--- 1 byte ---> Segmento 1 0001:0000 0001:0001 ...... 0001:FFFF .....

La porcin del segmento es siempre de 16 bits. La porcin del desplazamiento es de 16 y 32 bits. En modo real el valor del segmento es una direccin fsica que tiene una relacin aritmtica con el desplazamiento. El segmento y el desplazamiento crean junto una direccin fsica de 20 bits, con la que se puede acceder a un MegaB de memoria (220), aunque, por ejemplo, el sistema operativo de IBM usa sobre 640k de memoria por programa. Para efectos de explicacin se considera un desplazamiento de 16 bits. El segmento seleccionar una regin de 64k y se usar el desplazamiento para seleccionar 1 byte dentro de esa regin. La forma de hacerlo sera: 1. El procesador desplaza la direccin del segmento 4 posiciones binarias a la izquierda y la rellena con 0. Este funcionamiento tiene el efecto de multiplicar la direccin del segmento por 16. 2. El procesador aade esta direccin de segmento de 20 bits resultante a la direccin de desplazamiento de 16 bits. La direccin de desplazamiento no se cambia. 3. El procesador usa la direccin de 20 bits resultante, a menudo llamada direccin fsica, al acceder a una posicin en el MegaB de espacio direccionado. Ejemplo:
Hexadecimal --> Binario ------> + 5 0101 0101 0101 5 3 0011 0011 0001 0100 4 C 1100 1100 0000 1100 C 2 0010 0010 0111 1001 9 : 1 0001 0 0000 7 0111 A 1010

0000 1010 1010 A Direccin Fsica

Ejemplo:
Hexadecimal --> Binario ------> + 1 0001 0001 0001 1 3 0011 0011 0011 0111 7 F 1111 1111 1000 1000 8 7 0111 0111 1010 0001 1 : 3 0011 8 1000 A 1010 C 1100

0000 1100 1100 C Direccin Fsica

10

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Las direccines base actuales de cada segmento se guardan en registros punteros especiales de 16 o 32 bits, denominados Registro de Segmento.

DIRECCIONAMIENTO MS-DOS MS-DOS(Segmentacin) 8086 (16 Bits)

Capacidad de direccionamiento: 220=1'048,576=1MB.

80286 (16 Bits) Puede funcionar de alguno de los 2 modos: Modo real = 8086 Modo protegido: Para cada programa se implementa una tabla de descriptores. El valor que contenga un registro de segmento se utiliza como un apuntador (selector) a la tabla de descriptores.
11

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Capacidad de direccionamiento: 224=16'777,216=16MB

SEGMENTACION MS-DOS Si un programa trata de asignar un bloque de memoria de cierto tamao, MS-DOS busca un bloque apropiado, si lo encuentra, se modifica para que pertenezca al proceso solicitado. Si el bloque es demasiado grande, MS-DOS divide en un bloque asignado y un nuevo bloque libre. Cuando un programa libera un bloque de memoria, MS-DOS lo modifica para indicar que est disponible. Cuando un programa reduce la cantidad de memoria que necesita, MS-DOS crea un nuevo bloque de control de memoria para la memoria liberada. Tamao Maximo de Segmento. En realidad no solo se ampliaron solo los registros de 32 bits, sino que tambin la longitud mxima del segmento que puede ocupar hasta 4 GB (232). Existe un tipo de segmento que especficamente sirve para la gestin de programas en modo protegido el SEGMENTO DEL SISTEMA.

1.1.5 Unidades de Entrada/Salida

1.2 EL MICROPROCESADOR 1.2.1 Buses Bus es el conjunto o grupo de cables que transportan los datos, las direcciones (ubicaciones) en las que puede encontrarse informacin especfica, y las seales de control para asegurar que las diferentes partes del sistema utilizan su ruta compartida sin conflictos. Los buses se caracterizan por el nmero de bits que pueden transmitir en un determinado momento. Un equipo con un bus de 8 bits de datos, por ejemplo, transmite 8 bits de datos cada vez, mientras que uno con un bus de 16 bits de datos transmite 16 bits de datos simultneamente. Para diferenciar las cuatro funciones diferentes, el bus est dividido en cuatro partes: lneas de potencia, bus de control, bus de direcciones y bus de datos.
12

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

La informacin codificada viaja a travs de la computadora por un bus. El bus soporta tres tipos principales de informacin: El grupo de cables que transporta datos, tales como la letra A codificada El grupo de cables que lleva la direccin del componente al que van dirigidos los datos. Cada componente acepta slo la informacin que va dirigida a l; por ejemplo, la informacin enviada a la impresora no ser aceptada de forma inadvertida por la unidad de disco. El grupo de cables que lleva la tercera clase de informacin que son seales de tiempo, que sincronizan todo lo que hay conectado al bus para enviar y recibir mensajes en el instante correcto. 1.2.2 Registros Todos los procesadores 8086 tiene la misma base de registros de 16 bits. Se puede acceder a algunos registros como 2 registros separados de 8 bits. En el 80386/486 se puede acceder a registros de 32 bits.

Registros de Datos
L Low (Baja) H High (Alta) AH AL AX Acumulador

Funcin

Funciona como AC en algunas ocasiones. Realiza operaciones como entrada/salida de datos, multiplicacin, divisin, operaciones con decimales codificados en binario. Funciona como registro Base, en algunas ocasiones, para referenciar direcciones de memoria En estos casos mantiene la direccin de base, inicio de tabla o matrices, en la que la direccin se determina usando valores de desplazamiento. Funciona como registro Contador, en algunas ocasiones, es decir, cuenta el nmero de bits o palabras en una determinada cadena de datos durante los operaciones con cadenas. Ejemplo: Si se va a mover de un rea de memoria a otra n palabras, CX mantiene inicialmente el nmero total de palabras a desplazar llevando la cuenta de la palabra o byte que va siendo trasladada. En las instrucciones de desplazamiento y rotacin CL se usa como contador. Se usa en la multiplicacin para mantener parte del producto de 32 bits o en las divisin, para mantener el valor del resto. Y en operaciones de Entrada/Salida de datos para especificar la direccin del puerto de E/S usado.

BH

BL

BX Base

CH

CL

CX Contador

DH

DL

DX Extra

8 bits

8 Bits

Total 16 bits

Registros Punteros e Indices


SP Puntero de Pila

Funcin

Apunta a la posicin de la cima de la pila del segmento de pila en memoria. Es un registro usado 13

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel para guardar un valor de desplazamiento que direcciona la posicin de un operando origen durante operaciones de tratamiento de cadenas. BP Puntero de Base ndice Origen

Apunta a una zona dentro del segmento de pila dedicada al almacenamiento de datos. Es usado como registro ndice en ciertos modos de direccionamiento indirecto. Tambin puede guardar un valor de desplazamiento indirecto. Se usa para almacenar un desplazamiento que direcciona la posicin de un operando origen durante operaciones de tratamiento de cadenas. Tambin se usa como registro ndice en determinados modos de direccionamiento indirecto. Adems almacena un desplazamiento de direccin, la posicin de un operando destino durante operaciones con cadenas.

SI

DI

ndice Destino

16 bits (4 nibbles)

Los registros Indices SI y DI y los registros Punteros SP y BP guardan los valores de desplazamiento empleados para el acceso a determinadas posiciones de memoria. Una caracterstica importante de los 4 registros es que se pueden usar operaciones aritmticas y lgicas de modo que los valores de desplazamiento que almacenan pueden ser el resultado de clculos previos.

Registros de Segmentos
CS DS SS ES 16 bits Segmento de Cdigo Segmento de Datos Segmento de Pila Segmento Extra

Funcin Apunta la direccin donde inicia el segmento de cdigo en memoria. Apunta la direccin donde inicia el segmento de datos en memoria. Apunta la direccin donde inicia el segmento de pila en memoria. Apunta la direccin donde inicia el segmento de datos extra en memoria.

Las reas de memoria asignadas al cdigo de programa, datos y pila se direccionan por separado a pesar de poder solaparse. En un momento dado hay siempre 4 bloques disponibles de memoria direccionable denominadas segmento. Cada uno de los segmento suele tener una longitud de 64k. Para determinar una direcciones en el segmento de cdigo tendremos que realizar el desplazamiento de 4 bits hacia la izquierda del registro CS poniendo a 0 los bits 0, 1, 2 y 3. Lo que equivale a multiplicar CS por 16. Sumando a continuacin el valor de 16 bits almacenado en IP. La direccin dentro de los otro 3 registros se calcula similarmente. Las combinaciones de registro de segmento y desplazamiento depende de los tipos de operaciones que se est ejecutando. Por omisin se asume que la direccin de un operando est en el segmento de datos y el registro de segmento a usar es por tanto DS con el desplazamiento BX, SI o DI.

Segmento de

Segmento de

Segmento de

Segmento de 14

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel Datos DS : BX DS : SI DS : DI Cdigo CS : IP Extra de Datos ES : DI ES : SI

Stack SS : SP SS : BP

Si el desplazamiento est almacenado en un registro puntero como SP o BP se asume que el operando est en el segmento de pila y, por tanto, el registro de segmento de pila SS se usa como base. Si la direccin del operando es el destino de una instruccin de cadena, el registro del segmento Extra ES constituye la base y el desplazamiento se almacena en DI o SI.
Funcin Se usa para localizar la posicin inicial de la prxima instruccin a ejecutar dentro del segmento de cdigo en curso. Como el registro CS contiene la direccin base del segmento de cdigo, cualquier direccin de 20 bits dentro del segmento se localizar empleando cualquier IP como desplazamiento desde CS.

Puntero de Instruccin
IP Puntero de instruccin

16 bits

Registro de Indicadores o de Banderas


15 . . . 11 10 OF DF 9 8 7 6 . 4 AF . 2 PF . 0 CF FLAGS: Registro de Indicadores IF TF SF ZF

Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condicin que reflejan los resultados de operaciones del programa. Los bits del 8 al 10 son indicadores de control. Los indicadores de condicin pueden comprobarse tras ejecutar determinadas operaciones usando el resultado de la comprobacin en la toma de decisiones de bifurcacin condicional. Indicadores de Condicin: Bit 0. Indicador de acarreo (CF) Se pone a 1 si en una operacin de suma o resta se produce un acarreo por exceso o por defecto. Si una operacin no produce acarreo estar a 0. Bit 2. Indicador de paridad (PF) Se pone a 1 si el resultado de una operacin tiene un nmero par de bits a 1. Y se pone a 0 cuando el resultado tiene un nmero impar de bits a 1. Bit 4 acarreo por exceso o defecto de los 4 bits menos significativos en los valores de BCD (decimal codificado en binario). Bit 6 e a 1 si el resultado de una operacin es 0, esto ocurre, por ejemplo, despus de usar una instruccin de resta o decremento o al hacer una comparacin entre 2 nmero de igual valor. Para resultados distintos de 0 el indicador estar a 0. Bit 7. Indicador aritmticas de complemento a 2. Se usa el bit ms significativo de cualquier nmero en complemento 2
15

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

para indicar si dicho nmero es positivo cuando est a 0 o negativo cuando est a 1. Y se copia en el bit 7 del registro de indicadores. Bit 11 operando provoca un desbordamiento (overflow) y activar este indicador a 1. Registro indicador de Control: Bit 8 activado, haciendo que el micro-procesador ejecute la instruccin paso a paso. El procesador genera instruccin una detrs de otra. Un debugging puede usar este rango para procesar un programa instruccin a instruccin. Bit 9 activarla. IF se controla con la instruccin CLI (desactiva interrupcin externa) y STI (activa interrupcin externa). Bit 10 en relacin con SI y DI. Se pone a 0 para la cadena que se procesa hacia arriba, o sea, hacia direcciones de memoria ms altas y se pone a 1 para las cadenas que se procesan hacia abajo, o sea, hacia direcciones ms bajas. Solo para 80386 / 486. Los procesadores de este tipo usan registros de 8 y 16 bits igual que el resto de la familia de los 8086. Todos los registros se extienden a 32 bits excepto los registros de segmento de 16 bits. Los registros extendidos comienzan con la letra E: el registro extendido de AX es EAX. Los procesadores 386 / 486 tienen 2 registros de segmento adicionales: FS y GS.

Registro de Datos Extendidos HL AX BX CX DX AH BH CH DH 8 bits. 16 bits 16 bits AL BL CL DL 8 bits.

L Low (Baja) H High (Alta) EAX: Acumulador EBX: Base ECX: Contador EDX: Extra

Total 32 bits L Low (Baja) H High (Alta) ESP: Puntero de Pila EBP: Puntero de Base ESI: Indice de Orden

Registro Puntero e Indice Extendido SP BP SI

16

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel DI H 16 bits L 16 bits EDI: Indice de Destino

Total 32 bits

Puntero de Instruccin Extendido IP 16 bits Registro de Segmentos Extendidos CS DS SS ES FS GS 16 bits CS: Segmento de Cdigo DS: Segmento de Dato SS: Segmento de Pila ES: Segmento Extra FS: Segmento Extra GS: Segmento Extra 16 bits EIP: Reg Total 32 bits

Puntero de Bandera Extendida (EFlags)


31 30 . . . . . . . . . . 19 18 A 17 V 16 R 15 14 N 13 IOP 12 11 OF 10 DF 9 . . . . . . . 1 0 CF

<--- 386/486 ---> <- 286/386/486 --> <--- Para todo los procesadores 8086 ->

IOP indica el nivel de proteccin para operaciones de Entrada/Salida. El bit 14 (N) se usa en relacin con procesos anidados. R para reanudacin de procesos. V est relacionado con el modo 8086 virtual. A est relacionado con el control de alineacin.

1.2.3 Modos de Direccionamiento Estas maneras de obtener la direccin se denominan Modos de Direccionamiento y cada uno tiene asignado un registro de segmento por defecto.
Modo de Direccionamiento Comentario Ejemplo 17

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel 1. Implcito 2. Inmediato 3. De Registro 4. Directo 5. De Registro Indirecto En este tipo de direccionamiento se omiten especificaciones de origen o destino de los datos, ya que la instruccin misma lo indica. El registro AX ser colocado en la pila o stack El valor es especificado por el usuario. El 18 en decimal (la D al final indica que el valor est en decimal), es colocado en el registro AX 12 registros bsicos con los que trabaja el microprocesador). Indica que se tomar el valor contenido en BX y ser colocado en AX. El valor es tomado de un identificador definido por el usuario. El valor que contenga DDDW es asignado a AX. En este caso, en el registro BX, BP, SI o DI nicamente se colocar una direccin. La instruccin OFFSET se encarga de buscar la direccin inicial (no el valor) del dato que se especifique. (En BX se coloca la direccin de inicio de almacenamiento del identificador DDDX.) Despus usando el registro en el que se coloc la direccin, se obtiene el valor contenido en esa direccin y ser asignado a otro registro Es importante el uso de los corchetes, pues indican que en AX se asignar el valor almacenado dentro de la direccin indicada por BX, es decir BX indica una direccin, no un valor. Son usados nicamente los registros BX o BP, ya que son los que se usan para indicar base. A la direccin del desplazamiento contenida en el registro (sea BP o BX), se suma un valor: BX+2. En AX, se asignar el valor almacenado en la direccin que resulte de sumar 2 a la direccin indicada en BX. Se utilizan los registros SI o DI (ndice), a los cuales es asignado un valor. Al combinarlo con un identificador, que tiene una direccin, a sta ltima se sumar el valor del registro ndice. En AX, se asignar el valor que est en la direccin que tenga DDDZ + 2. El valor que tomar el registro, es la que est contenida en la direccin determinada por la suma de lo que contenga BX ms SI DI y un valor, este ltimo es opcional. BX contendr la direccin inicial de DDDW A SI se le asigna el valor de 8, que funciona como desplazamiento Por ltimo a AX se le asignar el contenido de la direccin que resulte de la operacin de suma de BX ms SI. PUSH AX

MOV AX, 18D

MOV AX, BX MOV AX, DDDW

MOV BX, OFFSET DDDX MOV AX, [BX

6. Relativo a la Base

MOV AX, [BX+2

7. Indexado Directo

MOV SI, 2 MOV AX, DDDZ [SI

8. Indexado de Base

MOV BX, OFFSET DDDW MOV SI, 8 MOV AX, [BX+SI

Especificaciones de Modos de Direccionamiento Absoluto e Indirecto


Denominacin Obtencin Desplazamiento Segmento Ejemplo

Direccionamiento Absoluto Direccionamiento Indirecto con Base (BX) Direccionamiento Indirecto con base (BP) Direccionamiento Indirecto con Indice (SI)

Inmediato BX+XX BP+XX SI+XX

DS DS SS DS

MOV al, 0 MOV cx, [bx+2] MOV ax, [bp+4] MOV dx, [si+2] 18

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel Direccionamiento Indirecto con Indice (DI) Direccionamiento Indirecto con Base (BX) e Indice (SI) Direccionamiento Indirecto con Base (BX) e Indice (DI) Direccionamiento Indirecto con Base (BP) e Indice (SI) Direccionamiento Indirecto con Base (BP) e Indice (DI) DI+XX BX+SI+XX BX+DI+XX BP+SI+XX BP+DI+XX DS DS DS SS SS

MOV [di], es MOV [bx+si-2], cx MOV dx, [bx+di] MOV ds, [bp+si] MOV ax, [bp+di]

Puede apreciarse que todos los modos admiten que despus de obtener el valor de desplazamiento de un registro o de la suma de dos, se aada una constante a ste, antes de generar la lectura, indicada por XX. Si se omite el valor XX se generan instrucciones que no aaden ningn valor al desplazamiento obtenido por los registros. Cada modo usa un registro de segmento por defecto para componer la direccin completa pero siempre es posible que le CPU use, no el registro de segmento por defecto, sino uno especificado por nosotros. A nivel de lenguaje mquina lo que se hace es aadir a la instruccin un prefijo de 1 byte que modifica el comportamiento de la siguiente instruccin haciendo que use el registro de segmento correspondiente al prefijo en lugar del registro por defecto. Hay 4 prefijos distintos, uno para cada registro de segmento y se denominan Prefijos de Segmento por convenio se aade el prefijo inmediato antes de la apertura de corchetes o despus de PTR, si este aparece. As las siguientes instrucciones acceden a posicin de memoria dentro del segmento de cdigo de datos extra y segmento de pila, respectivamente. MOV al, cs:[bx+4] MOV word ptr ds:[bp-0fh], 0 MOV es:[di], al MOV word ptr ss:[bx], 0 Es interesante tener en cuenta que por ejemplo: MOV [bx], ax y MOV ds:[bx], ax son equivalentes. Ya que si no se indica nada el registro por defecto es DS. Tambin es interesante resaltar que para acceder a una posicin de un vector, que haya sido previamente definido en el segmento de datos, usamos los corchetes. Segmento de datos... tabla word 100 dup (0) inicial 0. Segmento de cdigo... MOV ax, tabla[si] MOV bx, 0 MOV ax, tabla[5] MOV ax, tabla+5 MOV ax, tabla[bx]+5
19

; Vector de 100 posicines, cada posicin sera de 1 palabra con valor

; Donde SI acta como ndice del vector. ; Esto sera equivalente ; todas las sentencias pasaran al registro AX ; el valor de la posicin 5 de la tabla pasa AX.

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

MOV ax, tabla[bx][di] MOV ax, tabla[di][bx] MOV ax, tabla[bx+di] MOV ax, [tabla+bx+di] MOV ax, [bx][di]+tabla

; Todas estas instrucciones tambin son equivalentes ; todas las sentencias mueven la posicin ; indicada por BX+DI dentro de la tabla a AX.

1.3 INTERRUPCIONES Como se mencion anteriormente la PC esta constituida lgicamente por su BIOS y sistema operativo. La mayora de las rutinas que controlan al computador estn grabadas en el ROM del BIOS, aunque muchas rutinas son establecidas por el sistema operativo y se cargan en RAM al momento de encender al computador. Estas rutinas son denominadas interrupciones y son activadas mediante la instruccin: INT nmero. Una interrupcin es una operacin que invoca la ejecucin de una rutina especfica que suspende la ejecucin del programa que la llam, de tal manera que el sistema toma control del computador colocando en el stack el contenido de los registros CS e IP. El programa suspendido vuelve a activarse cuando termina la ejecucin de la interrupcin y son restablecidos los registros salvados. Existen dos razones para ejecutar una interrupcin: (1) intencionalmente como peticin para la entrada o salida de datos de un dispositivo, y (2) un error serio y no intencional, como sobreflujo o divisin por cero. El operando de una interrupcin indica cul es la rutina a activar. La direccin de la rutina es localizada por medio de una tabla que el sistema mantiene a partir de la direccin 0000:0000h. Existen 256 entradas de 4 bytes de longitud, y cada interrupcin proporciona varias funciones. Las interrupciones de 00h a 1Fh corresponden al BIOS y de 20h a FFh son del DOS y BASIC. Una interrupcin es una seal que provoca la suspensin del programa que se estaba ejecutando y provoca el comienzo de ejecucin de un programa de tratamiento que de solucin a esa interrupcin. A ese programa se le conoce como RUTINA DE TRATAMIENTO de esa interrupcin. 1.3.1 Hardware Interrupciones Hardware o Interrupciones Externas, que son aquellas provocadas por los dispositivos perifricos, controladas por un procesador especial de interrupciones (8259) o IPC (Controlador de Interrupciones Programable), y la rutina de tratamiento est "cableada". Interrupciones Internas, que son aquellas provocadas dentro del propio procesador por una situacin anormal de funcionamiento de alguna de sus partes. 1.3.2 Software Son aquellas que son programables y que podemos cambiar. Las interrupciones de software podemos llegar a manejarlas y por ello el ensamblador nos proporciona una instruccin que nos permita poner en funcionamiento una determinada rutina de interrupcin; esta instruccin es INT. Interrupcin Formato INT nm_entero.
20

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Ese "nm_entero", asociado a la instruccin, es un identificativo que indica, mediante la aplicacin de un algoritmo, la posicin de Memoria Interna donde se encuentra almacenada la direccin de comienzo de la rutina de tratamiento de esa interrupcin. El ensamblador permite, normalmente, identificar 256 interrupciones. Una parte de ellas son las correspondientes a la ROM-BIOS y las proporciona el fabricante. Otra parte de ellas forman del sistema operativo DOS, y otra parte de ellas queda libre para que el programador genere sus propias rutinas de interrupcin. Las interrupciones correspondientes a la parte de la BIOS y las correspondientes a la parte del DOS representas caractersticas similares. Existe un flag denominado IF (Interrupcin Flag, bandera de Interrupcin) que determina la reaccin del microprocesador ante una interrupcin. Si el flag est a uno, el rpocesador responde a la interrupcin producida; pero si el flag IF est a cero, la peticin de interrupcin ser ignorada completamente por el microprocesador. En algunas secciones de cdigo, resulta necesario deshabilitar las interrupciones (poner el flag IF a cero) durante algunos ciclos, y habilitarlas de nuevo despus. La familia 8086 provee dos instrucciones que realizan estas tareas: STI (Activar flag de interrupciones): Pone la bandera IF a i, de forma que se premiten las interrupciones. CLI (Borrar flag de interrupciones): Pone la bandera IF a 0, de modo que el microprocesador no responde a ms interrupciones hasta que se ejecuta un STI o se altera el contenido de las banderas (entre ellas el de IF) recuperndolos de la pila con POPF o IRET. MOV ax, 8000h CLI MOV ss, ax MOV sp, 2000h STI Retorno de interrupcin. Formato IRET (no tiene operandos) Retorna de una rutina de servicio a la interrupcin, extrayendo de la pila los nuevos valores de IP y CS, en este orden, y el contenido del registro de flags. La ejecucin contina en la instruccin siguiente a la que se estaba ejecutando cuando ocurri la interrupcin. Ejemplos de interrupciones del DOS. La interrupcin ms conocida (y utilizada) es la 21h. Esta interrupcin presenta una gran cantidad de funciones diversas; por ello adems de indicar el "n entero", debemos indicar tambin el "n funcin" que se desea dentro de esa interrupcin. Dicho nmero se almacena siempre el registro AH.
No. De Interrupcin No. De Funcin INT 21h. Funcin 01h Accin Cdigo

Permite dar entrada a un carcter de teclado y al mismo tiempo dicho carcter aparece en pantalla, en la posicin en la que se encuentre el cursor. El carcter tecleado queda almacenado en AL. Si no hay ningn carcter disponible, se espera hasta que haya alguno.

MOV ah, 01h INT 21h ; El carcter tecleado queda en AL

21

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel INT 21h. Funcin 02h INT 21h. Funcin 08h Permite llevar un carcter desde el procesador hacia la pantalla. Dicho carcter debe estar almacenado en el registro DL. Aparecer en la posicin donde se encuentre el cursor. Permite dar una entrada de un carcter desde el teclado pero sin que aparezca en pantalla. El carcter tecleado queda almacenado en el registro Al. Si no hay un carcter disponible se espera hasta que lo haya. Visualizacin de una cadena de caracteres. Nos permite llevar una cadena de caracteres hacia la pantalla. Dicha cadena aparecer a partir de la posicin en la que se encuentre el cursor. Esta funcin necesita que en el registro DX se encuentre la direccin de comienzo de la cadena a presentar en pantalla. (DS:DX). Acabar el proceso con cdigo de retorno. Permite realizar el retorno al Sistema Operativo. Acaba el proceso actual, enviando un cdigo de retorno al programa original. Se trata de uno de los diversos mtodos con los que se puede provocar una salida definitiva de un programa. MOV dl, carcter MOV ah, 02h INT 21h MOV ah, 08h INT 21h ; El carcter tecleado queda en AL En DX queda el desplazamiento que hay que hacer dentro; de DS para llegar a la posicin donde se encuentra; "cadena" MOV dx, offset cadena MOV ah, 09h INT 21h MOV ah, 4ch INT 21h

INT 21h. Funcin 09h

INT 21h. Funcin 4Ch

1.4 ESTRUCTURA DE UN PROGRAMA EN ENSAMBLADOR Cualquier lenguaje de programacin tiene 3 caractersticas, es decir, debe cumplir con 3 requisitos: Sintaxis. Son las reglas que deben seguirse para escribir un programa. Estructura. Es la forma de escribir el programa, para que sea claro y legible y sea menos complicado encontrar errores. Lgica. Es el pensamiento del programador, que hace que el programa ejecute las instrucciones adecuadamente Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de rdenes ejecutables que pueden ser cargadas en la memoria de una computadora. Por ejemplo, un procesador x86 puede ejecutar la siguiente instruccin binaria como se expresa en cdigo maquina: Binario Hexadecimal 1011 0000 0110 0001 0xb061)

La representacin equivalente en ensamblador es ms fcil de recordar: mov al, 061h Esta instruccin significa: Mueva el valor hexadecimal 61 (97 decimal) al registro "al". El mnemnico "mov" es un cdigo de operacin u "opcode" , elegido por los diseadores de la coleccin de instrucciones para abreviar "move" (mover).- El opcode es seguido por una lista de argumentos o parmetros, completando una instruccin de ensamblador tpica. El siguiente es un ejemplo del programa clsico Hola mundo escrito para la arquitectura de procesador x86 (bajo el sistema operativo DOS ).
22

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

dosseg .model small .stack 100h .data Cadena1 DB 'Hola Mundo.$' .code programa: mov ax, @data mov ds, ax mov dx, offset Cadena1 mov ah, 09h int 21h end programa 1.4.1 Data Segment Cuando el programa requiere del uso de datos, deben definirse en este segmento, en ensamblador no existen tipos de datos, solo tamao de datos.
Dato DB DW DD DT Tamao en bits 8 16 32 64 Valor Numrico Mximo 255 65,535 4,294,967,296 18,446,744,073,709,551,616 No. De Bytes por cada caracter 1 byte 2 bytes 4 bytes 8 bytes

El segmento se define de la siguiente manera: .data Iden1 db 23d Iden2 dw 420 Cadena db mensaje$ 1.4.2 Stack Segment En esta seccin se define el tamao que tendr el segmento de stack para ese programa. Este segmento debe definirse una sola vez. Si se est trabajando con programas modularizados, esta definicin deber escribirse en el programa principal. .stack 100h ; Se define un stack de 256 bytes de tamao (162 =256) ; es db, por lo tanto su valor mximo podra ser 255 ; se define dw porque 420 sobrepasa el valor de 255 para un db ; cada carcter de la cadena se almacenar en 1 byte

1.4.3 Code Segment En este segmento del programa se escriben todas las instrucciones que se realizarn. .code xor ax, ax mov ax, @data mov ds, ax
23

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

mov bx, offset cadena mov al, [bx+1] .. .. end 1.4.4 Instrucciones del Programa Cada arquitectura de computadoras tiene su propio lenguaje de mquina, y en consecuencia su propio lenguaje ensamblador. Las computadoras difieren en el tipo y nmero de operaciones que soportan; tambin pueden tener diferente cantidad de registros, y distinta representacin de los tipos de datos en memoria. Aunque la mayora de las computadoras son capaces de cumplir esencialmente las mismas funciones, la forma en que lo hacen difiere, y los respectivos lenguajes ensambladores reflejan tal diferencia. Pueden existir mltiples conjuntos de mnemnicos o sintaxis de ensamblador para un mismo conjunto de instrucciones, instanciados tpicamente en diferentes programas ensamblador. En estos casos, la alternativa ms popular es la provista por los fabricantes, y usada en los manuales del programa. Cdigo mquina El lenguaje de mquina esta formado por instrucciones discretas, que -dependiendo de la arquitectura del procesador- pueden especificar: Registros especficos para operaciones aritmticas, direccionamiento o control de funciones. Posiciones de memoria especficas (offset). Modos de direccionamiento usados para interpretar a los operandos. Las operaciones ms complejas se realizan combinando estas simples instrucciones, que pueden ser ejecutadas secuencialmente o mediante instrucciones de control de flujo. Las operaciones disponibles en la mayora de los conjuntos de instrucciones incluye: Mover Llenar un registro con un valor constante Mover datos de una posicin de memoria a un registro o viceversa Escribir y leer datos de dispositivos Computar Sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de ellos o en otro registro Realizar operaciones binarias, incluyendo operaciones lgicas (AND/OR/XOR/NOT) Comparar valores entre registros (mayor, menor, igual) Afectar el flujo del programa Saltar a otra posicin en el programa y ejecutar instrucciones all Saltar si se cumplen ciertas condiciones (IF) Saltar a otra posicin, pero guardar el punto de salida para retornar (CALL, llamada a subrutinas) Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instruccin compleja hace lo mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo: Salvar varios registros en la pila de una sola vez Mover grandes bloques de memoria Operaciones aritmticas complejas o de punto flotante (seno, coseno, raz cuadrada )
24

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

1.4.5 Directivas El MASM (Macro Assembler, ensamblador) posee un conjunto de instrucciones que no pertenecen al lenguaje ensamblador propiamente sino que son instrucciones que nicamente son reconocidas por el ensamblador y que han sido agregadas para facilitar la tarea de ensamblado, tanto para el programador como para el programa que lo lleva a cabo. Dichas instrucciones son denominadas directivas. En general, las directivas son usadas para especificar la organizacin de memoria, realizar ensamblado condicional, definir macros, entrada, salida, control de archivos, listados, cross-reference, direcciones e informacin acerca de la estructura de un programa y las declaraciones de datos. Conjunto de instrucciones Dentro de las directivas ms importantes, tenemos las que establecen el conjunto de instrucciones a soportar para un microprocesador en especial: .8086(defecto).- Activa las instrucciones para el 8086 y 8088 e inhibe las del 80186 y 80286. .8087(defecto).- Activa instrucciones para el 8087 y desactiva las del 80287. .186.- Activa las instrucciones del 80186. .286c.- Activa instrucciones del 80286 en modo no protegido. .286p.- Activa instrucciones del 80286 en modo protegido y no protegido. .287.- Activa las instrucciones para el 80287. Declaracin de segmentos En lo que respecta a la estructura del programa tenemos las directivas SEGMENT y ENDS que marcan el inicio y final de un segmento del programa. Un segmento de programa es una coleccin de instrucciones y/o datos cuyas direcciones son todas relativas para el mismo registro de segmento. Su sintaxis es: nombre SEGMENT [alineacin] [combinacin] [clase nombre ENDS El nombre del segmento es dado por nombre, y debe ser nico. Segmentos con el mismo nombre se tratan como un mismo segmento. Las opciones alineacin, combinacin, y clase proporcionan informacin al LINK sobre cmo ajustar los segmentos. Para alineacin tenemos los siguientes valores: byte (usa cualquier byte de direccin), word (usa cualquier palabra de direccin, 2 bytes/word), para (usa direcciones de prrafos, 16 bytes/prrafo, deafult), y page (usa direcciones de pgina, 256 bytes/page). Combinacin define cmo se combinarn los segmentos con el mismo nombre. Puede asumir valores de: public (concatena todos los segmentos en uno solo), stack (igual al anterior, pero con direcciones relativas al registro SS, common (crea segmentos sobrepuestos colocando el inicio de todos en una misma direccin), memory (indica al LINK tratar los segmentos igual que MASM con public, at address (direccionamiento relativo a address). clase indica el tipo de segmento, sealados con cualquier nombre. Cabe sealar que en la definicin est permitido el anidar segmentos, pero no se permite de ninguna manera el sobreponerlos.
25

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Fin de cdigo fuente Otra directiva importante es la que indica el final de un mdulo. Al alcanzarla el ensamblador ignorar cualquier otra declaracin que siga a sta. Su sintaxis es: END [expresin] la opcin expresin permite definir la direccin en la cual el programa iniciar. Asignacin de segmentos La directiva ASSUME permite indicar cuales sern los valores por defecto que asumirn los registros de segmento. Existen dos formas de hacer esto: ASSUME registrosegmento:nombre,,, ASSUME NOTHING NOTHING cancela valores previos. Etiquetas Las etiquetas son declaradas nombre: donde nombre constituye una cadena de caracteres. Declaracin de datos Estos se declaran segn el tipo, mediante la regla [nombre] directiva valor,,, donde directiva puede ser DB (bytes), DW (palabras), DD (palabra doble), DQ (palabra cudruple), DT (diez bytes). Tambin pueden usarse las directivas LABEL (crea etiquetas de instrucciones o datos), EQU (crea smbolos de igualdad) , y el smbolo = ( asigna absolutos) para declarar smbolos. Estos tienen la siguiente sintaxis: nombre = expresin nombre EQU expresin nombre LABEL tipo donde tipo puede ser BYTE, WORD, DWORD, QWORD, TBYTE, NEAR, FAR.
26

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

Declaracin de estructuras Para la declaracin de estructuras de datos se emplea la directiva STRUC. Su sintaxis es: nombre STRUC campos nombre ENDS

1.5 PROCEDIMIENTO DE ENSAMBLE, ENLACE Y EJECUCIN La transformacin del lenguaje ensamblador en cdigo mquina la realiza un programa ensamblador, y la traduccin inversa la puede efectuar un des-ensamblador. A diferencia de los lenguajes de alto nivel, aqu hay usualmente una correspondencia 1 a 1 entre las sencillas instrucciones en ensamblador y el lenguaje mquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un cdigo de mquina ms largo a fin de proveer la necesaria funcionalidad. Por ejemplo, para un cdigo mquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudo instruccin al grupo "haga si menor que" , y "si = 0" sobre el resultado de la condicin anterior. Los ensambladores ms completos tambin proveen un rico lenguaje de macros que se utiliza para generar cdigo ms complejo y secuencias de datos. El nivel de lenguaje ensamblador tiene aspectos importantes de los niveles de micro-arquitectura, en los cuales se encuentra (ISA y sistema operativo) estos dos se utilizan para la traduccin en lugar de la interpretacin. Algunas caractersticas del lenguaje se describen a continuacin Como se especific al inicio, se usa la traduccin cuando se cuenta con un procesador (ya sea hardware o un interprete) para el lenguaje objeto pero no para el lenguaje fuente. Si la traduccin se realiza correctamente, la ejecucin del programa traducido dar exactamente los mismos resultados que habra dado la ejecucin del programa fuente. Hay dos diferencias entre traduccin e interpretacin, en la traduccin no se ejecuta directamente el programa original, en el lenguaje fuente se convierte en un programa equivalente llamado programa objeto o programa binario ejecutable y este funciona solo cuando se ha acabado la traduccin. El cdigo mquina, un simple patrn de bits, es hecho legible reemplazando valores crudos por smbolos denominados mnemnicos. Se invent para facilitar la tarea de los primeros programadores que hasta ese momento tenan que escribir directamente en cdigo binario. Antes an era peor, ya que el cdigo de ceros y unos (el programa) deba introducirse en una tarjeta perforada. La posicin ocupada por cada punto equivala a un "1" o a un "0" segn hubiera un hueco o no. Lo cual supona una forma casi idntica en la que hoy se escriben los datos binaros en soportes tales como los CDs y DVDs. Mientras que una computadora reconoce la instruccin de mquina IA-32 10110000 01100001 para los programadores de microprocesadores x86 es mucho ms fcil reconocer dicha instruccin empleando lenguaje ensamblador:
27

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

mov al, 0x61 (que significa mover el valor hexadecimal 61 (97 decimal) al registro 'al'.) Cada instruccin de la mquina se transforma en una nica instruccin en cdigo simblico. Pero adems, para mejorar la legibilidad del programa, el cdigo simblico introduce instrucciones adicionales, que no corresponden a ninguna instruccin de la mquina y que proporcionan informacin. Se llaman "pseudo-instrucciones". El cdigo simblico puede parecer de difcil acceso, pero es ms fcil de recordar e interpretar que el binario o el hexadecimal. Los lenguajes simblicos no resuelven definitivamente el problema de cmo programar un ordenador de la manera ms sencilla posible. Para utilizarlos, hay que conocer a fondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas ms. Adems, el lenguaje ensamblador est demasiado ligado al microprocesador para que sea posible escribir programas independientes de la mquina en que van a ejecutarse. Este cdigo simblico no puede ser ejecutado directamente por un ordenador, por lo que es preciso traducirlo previamente. Pero la traduccin es un proceso mecnico y repetitivo, que se presta a su realizacin por un programa de ordenador. Los programas que traducen cdigo simblico al lenguaje de mquina se llaman ensambladores ("assembler", en ingls), porque son capaces de ensamblar el programa traducido a partir de varias piezas, procedimientos o subrutinas a cdigo binario ("1" y "0") que entiende el procesador.

INTERPRETE

Programa Fuente .PAS .BAS .CBL .PRG .ASM

EJECUCIN

.OBJ COMPILACION O ENSAMBLE Programa Objeto

.EXE

Programa Ejecutable

Para la elaboracin de programas ejecutables, se sigue el proceso esquematizado en la figura anterior. 1. Se inicia con la captura de un programa denominado Programa Fuente, escrito en cdigo ASCII en cualquier editor de textos que almacene sus archivos es este formato (cdigo ASCII), ya que algunos editores, como el WORD, guardan sus archivos en un formato diferente. 2. Una vez capturado el programa fuente, se procede a la verificacin de la sintaxis del mismo, esto es que no tenga errores en la escritura y las instrucciones. Segn la forma que se ejecute se denomina:
28

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

intrprete, cuando se verifica lnea a lnea, y compilado o ensamblado cuando se verifica la totalidad del programa. En el caso del intrprete la ejecucin es inmediatamente despus de la verificacin de la lnea, esto tiene como consecuencia que el programa se ejecutar hasta que encuentre un error y no genera programa objeto. En el caso del compilado o ensamblado no es as, una vez que el programa ya no tiene errores sintcticos, se genera el Programa Objeto, que est escrito en cdigo mquina. 3. El proceso de ligado es el que se lleva a cabo despus del compilado o ensamblado, es este paso, se determinan las direcciones de las localidades de memoria que utilizar el programa cuando se ejecute. Se genera el Programa Ejecutable, que al ser llamado directamente de sistema operativo se ejecutar. PASO 1: EDICION. Los archivos fuente de cdigo ensamblador deben estar en formato ASCII standard. Para esto puede usarse cualquier editor que permita crear archivos sin formato, por ejemplo: Edlin, Edit, Write, el editor del Turbo Pascal, Works, Word. Las declaraciones pueden ser introducidas en maysculas y/o minsculas. Una buena prctica de programacin es poner todas las palabras reservadas (directivas e instrucciones) en maysculas y todo lo del usuario en minsculas para fines de facilidad de lectura del cdigo. Las sentencias pueden comenzar en cualquier columna, no pueden tener ms de 128 caracteres, no se permiten lneas mltiples ni cdigos de control, y cada lnea debe ser terminada con una combinacin de line-feed (avance de linea) y carriage-return (retorno de carro). Los comentarios se declaran con ; y terminan al final de la lnea. PASO 2: ENSAMBLADO. El ensamblado se lleva a cabo invocando al MASM. Este puede ser invocado, usando una lnea de comando, de la siguiente manera: MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;] donde: archivo objeto listado. cross. opciones. Corresponde al programa fuente. Por defecto se toma la extensin .ASM. Es el nombre para el archivo objeto. Nombre del archivo de listado de ensamblado. Es un archivo de referencias cruzadas. Pueden ser: /A escribe los segmentos en orden alfabtico /S escribe los segmentos en orden del fuente /Bnum fija buffer de tamao num /C especifica un archivo de referencias cruzadas /L especifica un listado de ensamble /D crea listado del paso 1 /Dsym define un smbolo que puede usarse en el ensamble /Ipath fija path para buscar archivos a incluir /ML mantiene sensitividad de letras (mays./mins) en nombres /MX mantiene sensitividad en nombre pblicos y externos
29

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

/MU /N /P /R /E /T /V /X /Z

convierte nombres a maysculas suprime tablas en listados checa por cdigo impuro crea cdigo para instrucciones de punto flotante crea cdigo para emular instrucciones de punto flotante suprime mensajes de ensamble exitoso despliega estadsticas adicionales en pantalla incluir condicionales falsos en pantalla despliega lneas de error en pantalla

Si el ; al final se omite es necesario poner todas las comas que se indican. Si no se quiere poner algn valor basta con dejar la coma. La otra forma de invocar al ensamblador es slo tecleando MASM y respondiendo a la informacin que se solicita. Para omitir algn valor slo basta teclear ENTER si dar ningn valor. TERCER PASO: LIGADO De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser invocado de la misma forma que el MASM. Los parmetros que este requiere son: LINK objeto [,[ejecutable][,[mapa][,[librera]]]]][opciones][;] donde: objeto Es el nombre para el archivo .OBJ ejecutable Nombre del archivo .EXE mapa Nombre del archivo mapa librera Nombre del archivo biblioteca de rutinas opciones Pueden ser: /HELP muestra lista de opciones /PAUSE pausa en el proceso /EXEPACK empaca archivo ejecutable /MAP crea mapa se smbolos pblicos /LINENUMBERS copia nmero de lneas al mapa /NOIGNORECASE mantiene sensitividad en nombres /NODEFAULTLIBRARYSEARCH no usa bibliotecas por defecto /STACK:size fija el tamao del stack a usar /CPARMAXALLOC:nmero fija alojacin mxima de espacio /HIGH fija la direccin de carga ms alta /DSALLOCATE aloja grupo de datos /NOGROUPASSOCIATION ignora asociaciones para direcciones /OVERLAYINTERRUPT:nmero asigna nuevo nmero a la INT 03Fh /SEGMENTS:nmero procesa un nmero de segmentos /DOSSEG sigue la convencin de orden de DOS PASO 4: EJECUCION. Para la ejecucin del programa simplemente basta teclear su nombre en el prompt de MS-DOS y teclear ENTER. Con esto el programa ser cargado en memoria y el sistema proceder a ejecutarlo. El
30

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

proceso completo para poder crear un programa ejecutable con el Microsoft Macro Assembler se muestra abajo.

PASO 5: DEPURACION. Para la depuracin de un programa en ensamblador tenemos disponibles dos herramientas. Por un lado tenemos el debugger que nos proporciona MS-DOS (DEBUG.EXE) y por otro lado tenemos el que nos proporciona Microsoft (SYMDEB.EXE). Este ltimo trabaja igual que el de MS-DOS pero nos proporciona muchas ventajas ms. Una de ellas es la facilidad de desplegar el cdigo fuente correspondiente a la instruccin que se esta ejecutando (si el programa ejecutable fue ensamblado o compilado con un ensamblador o compilador compatible), nos permite ejecutar comandos del S.O. y nos permite obtener informacin de las interrupciones de manera simblica. Otra opcin es usar el programa TD.EXE o Turbo Debugger.

1.6 ENTORNO DE PROGRAMACIN Se recomienda ampliamente trabajar en ensamblador en modo de consola, para un adecuado uso de los registros del procesador, utilizarlo en entorno grfico puede tener como consecuencia interrupciones abruptas del sistema. Por tanto el entorno de programacin es el austero modo de consola, pantalla negra, tecleando los comando, sin el entretenido uso del ratn. Ejecutando el proceso de ensamble y ligado, lo que se vera en la pantalla sera lo siguiente: Ensamblado C:\DATA\PROGRAMS\ASM>masm main Microsoft (R) Macro Assembler Version 4.00 Copyright (C) Microsoft Corp 1981, 1983, 1984, 1985. All rights reserved. Object filename [main.OBJ]: Source listing [NUL.LST]: Cross-reference [NUL.CRF]: 50966 Bytes symbol space free 0 Warning Errors
31

INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

0 Severe Errors
Ensamblado del programa MAIN.ASM

C:\DATA\PROGRAMS\ASM>masm task Microsoft (R) Macro Assembler Version 4.00 Copyright (C) Microsoft Corp 1981, 1983, 1984, 1985. All rights reserved. Object filename [task.OBJ]: Source listing [NUL.LST]: Cross-reference [NUL.CRF]: 51034 Bytes symbol space free 0 Warning Errors 0 Severe Errors
Ensamblado del programa TASK.ASM

Ligado C:\DATA\PROGRAMS\ASM>link main+task Microsoft (R) 8086 Object Linker Version 3.05 Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved. Run File [MAIN.EXE]: List File [NUL.MAP]: Libraries [.LIB]: C:\DATA\PROGRAMS\ASM>main Entrando a un submodulo.... .......saliendo del submodulo.
Ligado de los programas MAIN.OBJ y TASK. OBJ

C:\DATA\PROGRAMS\ASM>

32

Vous aimerez peut-être aussi