LI U1 Fundamentos

32
INSTITUTO TECNOLÓGICO SUPERIOR DE SAN ANDRES TUXTLA INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel 1 1 FUNDAMENTOS 1.1 INTRODUCCIÓN Todo procesador, grande o pequeño, desde el de una calculadora hasta el de un supercomputador, ya sea de propósito general o específico, posee un lenguaje único que es capaz de reconocer y ejecutar. Por razones que resultan obvias, este lenguaje ha sido denominado Lenguaje Máquina y más que ser propio de un computador pertenece a su microprocesador. El lenguaje Máquina 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 números que representan las operaciones que realiza el microprocesador a través de su circuitería interna. Estas instrucciones, por decirlo así, están grabadas o "alambradas" en el hardware y no pueden ser cambiadas. El nivel más bajo al que podemos aspirar a llegar en el control de un microprocesador es precisamente el del lenguaje de máquina. Obviamente es el lenguaje más simple es el empleado por el propio ordenador (compuesto de 0 y 1, código binario). Es comprensible que al usar sólo ceros y unos su utilización sea difícil, larga y motivo de frecuentes errores. Con el Lenguaje Máquina, se obtiene un control total del microprocesador sin embargo, la programación en este lenguaje resulta muy difícil y fácil para cometer errores. No tanto por el hecho de que las instrucciones son sólo números, sino porque se debe calcular y trabajar con las direcciones de memoria de los datos, los saltos y las direcciones de llamadas a subrutinas, además de que para poder hacer ejecutable un programa, se deben enlazar las rutinas de run-time y servicios del sistema operativo. Este proceso es al que se le denomina ensamblado de código. Para facilitar la elaboración de programas a este nivel, se desarrollaron los Ensambladores y el Lenguaje Ensamblador. Lenguaje Ensamblador Programar en Ensamblador es como programar en un lenguaje máquina ya que hay una identificación entre lenguaje máquina de 0 y 1 y un lenguaje simbólico El ensamblador es un lenguaje intermedio, creado para facilitar la comunicación entre el hombre y la máquina. Utiliza códigos nmotécnicos o nmónicos, generalmente difíciles de aprender y que además son específicos de cada microprocesador. Para facilitar el trabajo del programador y hacer la programación accesible al mayor número 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 máquina, 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 códigos nmotécnicos (o nmónicos) o de petición que son traducidos a lenguaje máquina. Sus características son: 1. Muy rápido. 2. Difícil de aprender. 3. Propio de cada procesador. Una característica fundamental del lenguaje ensamblador es que cada una de sus sentencias es una codificación simbólica de una instrucción numérica máquina. Otra característica que presenta es que nos permite llegar a usar cualquier recurso del sistema (hw), cosa que no nos permiten los lenguajes de alto nivel.

Transcript of LI U1 Fundamentos

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    1

    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.

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    2

    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. 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.

    Lenguaje Mquina

    Lenguaje de Alto

    Nivel

    Lenguaje Ensamblador

    Lenguajes Visuales

    HARDWARE

    APLICACIONES

    SOFTWARE

    P

    R

    O

    G

    R

    A

    M

    A

    D

    O

    R

    USUARIO

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    3

    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.

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    4

    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 27 26 25 24 23 22 21 20

    Valor Posicional 128 64 32 16 8 4 2 1

    Combinacin Binaria 1 0 1 0 1 1 0 1

    1*128 1*32 1*8 1*4 1*1

    12810 3210 810 410 110

    (128+32+8+4+1) = 17310

    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 Nibble Bajo

    23 22 21 20 23 22 21 20

    8 4 2 1 8 4 2 1

    1 0 1 0 1 1 0 1

    1*8 1*2 1*8 1*4 1*1

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    5

    8 2 8 4 1

    (8+2) = 1010 = A16 (8+4+1) = 1310 = D16

    161 160

    16 1

    10*16 13*1

    16010 1310

    (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 ms significativo Byte menos significativo

    Nibble Nibble Nibble Nibble

    23 22 21 20 23 22 21 20 23 22 21 20 23 22 21 20

    8 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1

    1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0

    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

    Los nmeros decimales se pueden almacenar de varias formas, como por ejemplo:

    Desempaquetado, donde cada byte contiene un dgito. Ejemplo:

    1434 01 04 03 04

    0000 0001 0000 0100 0000 0011 0000 0100

    Empaquetado, donde cada byte contiene dos dgitos. Ejemplo:

    1434 14 34

    0001 0100 0011 0100

    Agrupaciones superiores al byte:

    Nombre Tamao Palabra 2 bytes. Doble Palabra 2 palabras, 4 bytes Cudruple Palabra 4 palabras, 8 bytes

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    6

    Prrafo 8 palabras, 16 bytes. Pgina 128 palabras (normalmente)

    256 bytes Segmento 64k bytes ( normalmente)

    32,768 palabras 65,536 bytes

    Familias de Procesadores 8086.

    Procesador Modos disponibles Memoria Direccionable Tamao del Registro

    8086 / 8088 Real 1 MegaB 16 bits

    80186 / 80188 Real 1 MegaB 16 bits

    80286 Real y Protegido 16 MegaB 16 bits

    80386 Real y Protegido 4 GigaB 16 o 32 bits

    80486 Real y Protegido 4 GigaB 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

    7

    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

    8

    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

    9

    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. El de cdigo, que contiene los cdigos de instruccin del programa que se est ejecutando. 2. El de datos, que guarda las variables del programa. 3. El de stack, con informacin referente a la pila o stack. 4. 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

    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

    10

    Memoria .....

    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 --> 5 3 C 2 : 1 0 7 A Binario ------> 0101 0011 1100 0010 0001 0000 0111 1010 0101 0011 1100 0010 0000

    + 0001 0000 0111 1010 0101 0100 1100 1001 1010 5 4 C 9 A Direccin Fsica

    Ejemplo:

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

    + 0011 1000 1010 1100 0001 0111 1000 0001 1100 1 7 8 1 C Direccin Fsica

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    11

    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.

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    12

    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.

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    13

    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)

    Funcin

    AH AL AX Acumulador Funciona como AC en algunas ocasiones. Realiza operaciones como entrada/salida de datos, multiplicacin, divisin, operaciones con decimales codificados en binario.

    BH BL BX Base 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.

    CH CL CX Contador 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.

    DH DL DX Extra 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.

    8 bits

    8 Bits Total 16 bits

    Registros

    Punteros e

    Indices

    Funcin

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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    14

    para guardar un valor de desplazamiento que direcciona la posicin de un operando origen durante operaciones de tratamiento de cadenas.

    BP Puntero de Base Apunta a una zona dentro del segmento de pila dedicada al almacenamiento de datos.

    SI ndice Origen 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.

    DI ndice Destino 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.

    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 Funcin

    CS Segmento de Cdigo Apunta la direccin donde inicia el segmento de cdigo en memoria.

    DS Segmento de Datos Apunta la direccin donde inicia el segmento de datos en memoria.

    SS Segmento de Pila Apunta la direccin donde inicia el segmento de pila en memoria.

    ES Segmento Extra Apunta la direccin donde inicia el segmento de datos extra en memoria.

    16 bits

    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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    15

    Datos DS : BX DS : SI DS : DI

    Cdigo CS : IP

    Stack SS : SP SS : BP

    Extra de Datos ES : DI ES : SI

    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.

    Puntero de Instruccin Funcin

    IP Puntero de instruccin

    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.

    16 bits

    Registro de Indicadores o de Banderas

    15 . . . 11 10 9 8 7 6 . 4 . 2 . 0

    OF DF IF TF SF ZF

    AF PF

    CF FLAGS: Registro de Indicadores

    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 4acarreo 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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    16

    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 11operando provoca un desbordamiento (overflow) y activar este indicador a 1. Registro indicador de Control: Bit 8activado, 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 9activarla. IF se controla con la instruccin CLI (desactiva interrupcin externa) y STI (activa interrupcin externa). Bit 10en 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

    H L L Low (Baja) H High (Alta)

    AX AH AL EAX: Acumulador

    BX BH BL EBX: Base

    CX CH CL ECX: Contador

    DX DH DL EDX: Extra

    16 bits

    8 bits. 8 bits.

    16 bits Total 32 bits

    Registro Puntero e Indice Extendido

    L Low (Baja) H High (Alta)

    SP ESP: Puntero de Pila

    BP EBP: Puntero de Base

    SI ESI: Indice de Orden

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    17

    DI EDI: Indice de Destino

    H 16 bits

    L 16 bits Total 32 bits

    Puntero de Instruccin Extendido

    IP EIP: Reg

    16 bits 16 bits Total 32 bits

    Registro de Segmentos

    Extendidos

    CS CS: Segmento de Cdigo

    DS DS: Segmento de Dato

    SS SS: Segmento de Pila

    ES ES: Segmento Extra

    FS FS: Segmento Extra

    GS GS: Segmento Extra

    16 bits

    Puntero de Bandera Extendida (EFlags)

    31 30 . . . . . . . . . . 19 18 17 16 15 14 13 12 11 10 9 . . . . . . . 1 0

    A V R

    N I O P OF DF

    CF

    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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    18

    1. Implcito 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

    PUSH AX

    2. Inmediato 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

    MOV AX, 18D

    3. De Registro 12 registros bsicos con los que trabaja el microprocesador). Indica que se tomar el valor contenido en BX y ser colocado en AX.

    MOV AX, BX

    4. Directo El valor es tomado de un identificador definido por el usuario. El valor que contenga DDDW es asignado a AX.

    MOV AX, DDDW

    5. De Registro Indirecto

    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.

    MOV BX, OFFSET DDDX

    MOV AX, [BX

    6. Relativo a la Base

    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.

    MOV AX, [BX+2

    7. Indexado Directo

    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.

    MOV SI, 2

    MOV AX, DDDZ [SI

    8. Indexado de Base

    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.

    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 Inmediato DS MOV al, 0

    Direccionamiento Indirecto con Base (BX) BX+XX DS MOV cx, [bx+2]

    Direccionamiento Indirecto con base (BP) BP+XX SS MOV ax, [bp+4]

    Direccionamiento Indirecto con Indice (SI) SI+XX DS MOV dx, [si+2]

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    19

    Direccionamiento Indirecto con Indice (DI) DI+XX DS MOV [di], es

    Direccionamiento Indirecto con Base (BX) e Indice (SI) BX+SI+XX DS MOV [bx+si-2], cx

    Direccionamiento Indirecto con Base (BX) e Indice (DI) BX+DI+XX DS MOV dx, [bx+di]

    Direccionamiento Indirecto con Base (BP) e Indice (SI) BP+SI+XX SS MOV ds, [bp+si]

    Direccionamiento Indirecto con Base (BP) e Indice (DI) BP+DI+XX SS 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) ; Vector de 100 posicines, cada posicin sera de 1 palabra con valor inicial 0. Segmento de cdigo... MOV ax, tabla[si] ; Donde SI acta como ndice del vector. MOV bx, 0 ; Esto sera equivalente MOV ax, tabla[5] ; todas las sentencias pasaran al registro AX MOV ax, tabla+5 ; el valor de la posicin 5 de la tabla pasa AX.

    MOV ax, tabla[bx]+5

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    20

    MOV ax, tabla[bx][di] ; Todas estas instrucciones tambin son equivalentes MOV ax, tabla[di][bx] ; todas las sentencias mueven la posicin MOV ax, tabla[bx+di] ; indicada por BX+DI dentro de la tabla a AX. MOV ax, [tabla+bx+di]

    MOV ax, [bx][di]+tabla

    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.

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    21

    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

    Accin Cdigo

    INT 21h.

    Funcin 01h 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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    22

    INT 21h.

    Funcin 02h 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.

    MOV dl, carcter

    MOV ah, 02h

    INT 21h

    INT 21h.

    Funcin 08h 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.

    MOV ah, 08h

    INT 21h ; El carcter tecleado queda en AL

    INT 21h.

    Funcin 09h 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).

    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

    INT 21h.

    Funcin 4Ch

    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 ah, 4ch

    INT 21h

    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 1011 0000 0110 0001 Hexadecimal 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 ).

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    23

    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 Tamao en bits

    Valor Numrico Mximo No. De Bytes por cada caracter

    DB 8 255 1 byte

    DW 16 65,535 2 bytes

    DD 32 4,294,967,296 4 bytes

    DT 64 18,446,744,073,709,551,616 8 bytes

    El segmento se define de la siguiente manera: .data

    Iden1 db 23d ; es db, por lo tanto su valor mximo podra ser 255 Iden2 dw 420 ; se define dw porque 420 sobrepasa el valor de 255 para un db Cadena db mensaje$ ; cada carcter de la cadena se almacenar en 1 byte 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) 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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    24

    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 )

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    25

    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.

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    26

    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.

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    27

    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:

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    28

    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. 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:

    EJECUCIN

    .OBJ .EXE

    INTERPRETE

    COMPILACION O

    ENSAMBLE

    Programa Fuente

    Programa Objeto

    Programa Ejecutable

    .PAS

    .BAS

    .CBL

    .PRG

    .ASM

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    29

    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 Corresponde al programa fuente. Por defecto se toma la extensin .ASM. objeto Es el nombre para el archivo objeto. listado. Nombre del archivo de listado de ensamblado. cross. Es un archivo de referencias cruzadas. opciones. 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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    30

    /MU convierte nombres a maysculas /N suprime tablas en listados /P checa por cdigo impuro /R crea cdigo para instrucciones de punto flotante /E crea cdigo para emular instrucciones de punto flotante /T suprime mensajes de ensamble exitoso /V despliega estadsticas adicionales en pantalla /X incluir condicionales falsos en pantalla /Z 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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    31

    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

  • INSTITUTO TECNOLGICO SUPERIOR DE SAN ANDRES TUXTLA

    INGENIERIA EN SISTEMAS COMPUTACIONALES

    Lenguaje de Interfaz Unidad 1: Fundamentos MTI. Ana Francisca Lule Rangel

    32

    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>