lenjuage ensamblador unidad 1 del 1 al 1.3

85
LENJUAGE ENSAMBLADOR INGENIERIA EN SISTEMAS COMPUTACIONALES 1 LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

Upload: joshephook8042

Post on 24-Jun-2015

653 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENJUAGE ENSAMBLADOR

INGENIERIA EN SISTEMAS COMPUTACIONALES

1LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

Page 2: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

UNIDAD I: FUNDAMENTOS2

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

1.3 Interrupciones.1.3.1 Hardware.1.3.2 Software.

1.4 Estructura de un programa en ensamblador.

1.4.1 Data segment.1.4.2 Snack segment.1.4.3 Code segment.1.4.4 Instrucciones del programa.1.4.5 Directivas.

1.5 Procedimiento de ensamble, enlace y ejecución.1.6 Entorno de programación.

1. Introducción.1.1.1 Uso y aplicaciones del

lenguaje ensamblador.1.1.2 Escalabilidad de los

microprocesadores.1.1.3 Tipos de lenguajes

ensambladores.1.1.4 Clasificación de Memorias.1.1.5 Unidades de entrada / salida.

1.2 El microprocesador.1.2.1 Buses.1.2.2 Registros.1.2.3 Modos de direccionamiento.

Page 3: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1. Introducción

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

3

Se denomina lenguaje máquina a la serie de datos que la parte física de lacomputadora o hardware, es capaz de interpretar.

Una computadora digital o, mejor dicho, su parte física, sólo distinguedatos de tipo binario, es decir, constituidos por dos únicos valores a losque se denomina valor 0 y valor 1 y que, físicamente, se materializan contensiones comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios,respectivamente. Para representar datos que contengan una informaciónse utilizan una serie de unos y ceros cuyo conjunto indica dichainformación.

La información que hace que el hardware de la computadora realice unadeterminada actividad se llama instrucción. Por consiguiente unainstrucción es un conjunto de unos y ceros. Las instrucciones así formadasequivalen a acciones elementales de la máquina, por lo que al conjuntode dichas instrucciones que son interpretadas directamente por lamáquina se denomina lenguaje máquina.

Page 4: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

4

Esta secuencia es fácilmente ejecutada por la computadora, pero es dedifícil interpretación, siendo aun mas difícil la interpretación de unprograma (conjunto de instrucciones) escrito de esta forma. Estadificultad hace que los errores sean frecuentes y la corrección de losmismos costosa, al igual que la verificación y modificación de losprogramas. La anterior secuencia de dígitos binarios (bits) puede indicara la computadora que: <<Traslade el contenido de la posición de memoriaX a la posición de memoria Y.>>

Si lo vemos escrito de esta forma, lo entenderemos fácilmente, ya queestá en nuestro lenguaje natural, pero la máquina elemental será incapazde entender nada. Vemos, pues, que la forma de indicar a la máquina loque debe hacer es totalmente diferente de la indicar a un ser humano lomismo, por lo que deben emplearse sistemas de traducción de una formaa otra.

Page 5: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

5

Con la práctica en el manejo de la máquina se cayó en la cuenta de que sepodría utilizar la propia máquina para ayudar en la traducción de estosprogramas. Es decir, que si a una máquina elemental se le dotaba de unprograma, también elemental, que tradujera un número determinado decaracteres alfabéticos en una secuencia de unos y ceros, se podría escribirun programa constituido por una secuencia de grupos de caracteresalfabéticos, en la que cada uno de los grupos indicaría una acción arealizar por el ordenador y, una vez escrito el programa, sería la propiamáquina la que pasaría los grupos de caracteres a bits.

Por ejemplo, se podría escribir: TRASLADAR 11010110, 00011101.

Esto indicaría que el contenido de la posición 11010110 había que pasarloa la posición 00011101 si se sabe que al grupo alfabético TRASLADAR lecorresponde la secuencia de bits 11110101.

La máquina traduciría la anterior instrucción como: 11110101 1101011000011101

Page 6: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

6

Al grupo alfabético se le denomina mnemotécnico, y existirá unmnemotécnico por cada instrucción. Se le da este nombre porque sirvepara recordar con mayor facilidad el conjunto de instrucciones de unadeterminada máquina. De esta forma aparecieron los lenguajesensambladores (Assembler, en inglés). Poco a poco, con el avance de laprogramación (Software), estas primeras y sencillas ayudas se fueronhaciendo más complejas, permitiendo que, además de losmnemotécnicos correspondientes a la operación a realizar, se pudieranemplear otros para indicar, por ejemplo, los operandos. La anteriorinstrucción se podría escribir de la siguiente forma: TRASLADAR POS-APOS-B. Que nos resulta de más fácil comprensión.

A los programas que permiten pasar del programa escrito de esta manera(programa fuente, en ensamblador) al lenguaje máquina también se lesdenomina normalmente ensambladores. se dice que el lenguajeensamblador es un lenguaje de bajo nivel, es decir, ligado con el <<hard>>concreto de una determinada máquina.

Page 7: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.1.1 Uso y aplicaciones del lenguaje

ensamblador

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

7

El uso del lenguaje ensamblador no es para la gente común y corriente, sinopara profesionistas en el área de computación que están obligados a conocereste lenguaje, ya que proporciona una serie de características que no sepueden encontrar en los lenguajes de alto nivel. Algunas de estascaracterísticas son:

1. Se puede acceder a cualquier localidad de la memoria RAM sin ningunarestricción.

2. Se pueden programar virus, debido a que se tiene un acceso total a casi todoel hardware de la computadora vía interrupciones de software.

3. Se pueden programar drivers de cualquier dispositivo.

4. Se puede acceder directamente a los registros internos del CPU y a losdispositivos de entrada y/o salida.

5. Los programas objeto generados a través del ensamblador son más velocesque los generados en cualquier otro lenguaje, debido a que una instrucciónen ensamblador corresponde a una instrucción en lenguaje máquina.

Page 8: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

8

La unidad de procesamiento central (CPU) es donde se manipulan losdatos y contiene la inteligencia de la máquina. En una microcomputadora,el CPU completo está contenido en un chip muy pequeño llamadomicroprocesador. Todas las CPU tienen por lo menos dos partes básicas, launidad de control y la unidad aritmético-lógica. Todos los recursos de lacomputadora son administrados desde la unidad de control, cuya funciónes coordinar todas las actividades de la computadora. La unidad decontrol contiene las instrucciones de la CPU para llevar acabo comandos.Cuando la unidad de control encuentra una instrucción que involucraaritmética o lógica, le pasa el control al segundo componente de la CPU.La ALU incluye un grupo de registros, es decir, memoria construidadirectamente en la CPU que se usa para guardar datos que están siendoprocesados por la instrucción actual.

1.1.2 Escalabilidad de los

Microprocesadores

Page 9: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Avance Tecnológico de los

Microprocesadores

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

9

En 1975 Intel decidió ponerse manos a la obra para construir su primermicro de 16 bits que salió al mercado en 1978. Se trataba del 8086, quedefinió el inicio de su gama de productos más famosa, la familia demicroprocesadores x86. La longitud de los registros del 8086 era de 16bits (de ahí su denominación de 16 bits), había versiones que funcionabana 4.77 y 8 MHz, tenía un bus de datos de 16 bits y un bus de direccionesde 20 bits, lo que le permitía acceder a un máximo de memoria de 1 Mbsegún el cálculo 2 elevado a 20. Seguidamente, en 1979, Intel sacó el8088, que en contra de lo que podamos pensar no es mejor que el 8086.La diferencia era sustancial; el bus de datos era de 8 bits (la mitad). Estepaso hacia atrás estuvo provocado por el estado de la industria de laépoca. Utilizar un bus de datos de 16 bits suponía forzar al mercado adesarrollar para 16 bits lo que implicaba un incremento en los costes dedesarrollo de controladores de periféricos y memorias. El síntoma fue queIntel se había adelantado a su época.

Page 10: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

10

En 1984 aparece el 80286 como base para una nueva generación deordenadores de IBM, el IBM AT (Advanced Technology). Supone un nuevosalto tecnológico. Además de incrementar el bus de direcciones de 20 bitsa 24, lo que permitía acceder hasta los 16 Mb de RAM, se incrementaba lavelocidad, llegando a ser hasta un 25 por ciento más rápidos que los 8086y 8088 originales.

La novedad más importante que se introdujo fue la gestión de memoriavirtual. La memoria virtual es una extensión de memoria en disco (odispositivo de almacenamiento secundario) añadida a la memoria físicainstalada. Así, el 80286 es capaz de tratar hasta un total de 1 Gb,desglosado en 16 Mb de memoria física más 1008 Mb de memoria virtual.La memoria virtual solamente la utilizan los programas que estánpreparados para ello.

Page 11: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

11

En 1985, el 80386 DX supera un nuevo escalón en el avance tecnológicoen microprocesadores. Se incorpora una nueva ampliación y surge elnúmero mágico, el 32. Los buses de datos y de direcciones se amplíanhasta 32 líneas de datos, ocurriendo lo mismo con el tamaño de losregistros. Esta ampliación supone un incremento en la memoria RAMfísica instalada. Puede direccionar 4 Gb de memoria física (DX significaDouble word eXternal) y 64 Tb de memoria virtual. Arranca en modo real,al igual que el 80286, e incorpora un nuevo modo de operación: el modoreal virtual del 8086, que permite tener varias sesiones 8086 trabajandosimultáneamente simulando una especie de pseudomultitarea. Otra delas innovaciones es la inclusión de una memoria caché interna en el chipdestinada a almacenar instrucciones provenientes de memoria sinnecesidad de que la unidad de ejecución intervenga.

Page 12: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

12

El 80486DX salió al mercado en 1989. La estructura interna hablando entérminos numéricos es igual a la de un 80386. El tamaño de los registros yde los buses son de 32 bits. Mantiene los tres modos de operación: real,protegido y real virtual. Las diferencias reales con los 80386DX son quetiene un flag más, un estado de excepción más, 2 bits más en la tabla deentrada de páginas, 6 instrucciones y los registros de control tienen unalongitud de 9 bits.

La quinta generación de microprocesadores Intel tomó el nombre dePentium. Aparecido en marzo de 1993 en frecuencias de trabajo de 60 y66 MHz llega a ser cinco veces más potente que un 80486 a 33 MHz.Fabricados con un proceso BiCMOS de geometría de 8 micras y con unaarquitectura superescalar, los microprocesadores Pentium se encuadranen un concepto RISC.

Page 13: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.1.3 Tipos de Lenguajes

Ensambladores

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

13

Aunque todos los ensambladores realizan básicamente las mismas tareas,podemos clasificarlos de acuerdo a características. Así podemosclasificarlos en:

Ensambladores Cruzados (Cross-Assembler).

Se denominan así los ensambladores que se utilizan en una computadoraque posee un procesador diferente al que tendrán las computadorasdonde va a ejecutarse el programa objeto producido.

El empleo de este tipo de traductores permite aprovechar el soporte demedios físicos (discos, impresoras, pantallas, etc.), y de programación queofrecen las máquinas potentes para desarrollar programas que luego losvan a ejecutar sistemas muy especializados en determinados tipos detareas.

Page 14: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

14

Ensambladores Residentes.

Son aquellos que permanecen en la memoria principal de la computadoray cargan, para su ejecución, al programa objeto producido. Este tipo deensamblador tiene la ventaja de que se puede comprobarinmediatamente el programa sin necesidad de transportarlo de un lugar aotro, como se hacía en cross-assembler, y sin necesidad de programassimuladores.

Sin embargo, puede presentar problemas de espacio de memoria, ya queel traductor ocupa espacio que no puede ser utilizado por el programador.Asimismo, también ocupará memoria el programa fuente y el programaobjeto. Esto obliga a tener un espacio de memoria relativamente amplio.Es el indicado para desarrollos de pequeños sistemas de control ysencillos automatismo empleando microprocesadores.

Page 15: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

15

La ventaja de estos ensambladores es que permiten ejecutarinmediatamente el programa; la desventaja es que deben mantenerse enla memoria principal tanto el ensamblador como el programa fuente y elprograma objeto.

Macroensambladores.

Son ensambladores que permiten el uso de macroinstrucciones (macros).Debido a su potencia, normalmente son programas robustos que nopermanecen en memoria una vez generado el programa objeto. Puedevariar la complejidad de los mismos, dependiendo de las posibilidades dedefinición y manipulación de las macroinstrucciones, pero normalmenteson programas bastantes complejos, por lo que suelen ser ensambladoresresidentes.

Page 16: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

16

Microensambladores.

Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, es decir, que el intérprete de las mismas interpretaba de igual forma un determinado código de operación.

El programa que indica al intérprete de instrucciones de la UCP cómodebe actuar se denomina microprograma. El programa que ayuda arealizar este microprograma se llama microensamblador. Existenprocesadores que permiten la modificación de sus microprogramas, paralo cual se utilizan microensambladores.

Ensambladores de una fase.

Estos ensambladores leen una línea del programa fuente y la traducendirectamente para producir una instrucción en lenguaje máquina o laejecuta si se trata de una pseudoinstrucción. También va construyendo latabla de símbolos a medida que van apareciendo las definiciones devariables, etiquetas, etc.

Page 17: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

17

Debido a su forma de traducción, estos ensambladores obligan a definirlos símbolos antes de ser empleados para que, cuando aparezca unareferencia a un determinado símbolo en una instrucción, se conozca ladirección de dicho símbolo y se pueda traducir de forma correcta. Estosensambladores son sencillos, baratos y ocupan poco espacio, pero tieneel inconveniente indicado.

Ensambladores de dos fases.

Los ensambladores de dos fases se denominan así debido a que realizanla traducción en dos etapas. En la primera fase, leen el programa fuente yconstruyen una tabla de símbolos; de esta manera, en la segunda fase,vuelven a leer el programa fuente y pueden ir traduciendo totalmente,puesto que conocen la totalidad de los símbolos utilizados y las posicionesque se les ha asignado. Estos ensambladores son los más utilizados en laactualidad.

Page 18: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.1.4 Clasificación de Memorias

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

18

ROM (Read Only Memory):

Se usan principalmente en microprogramación de sistemas. Losfabricantes las suelen emplear cuando producen componentes de formamasiva.

Es una memoria solamente de lectura es totalmente inalterable sin estamemoria la maquina no arrancaría. La memoria principal es laconvencional que va de 0 a 640 kb. Cuando la máquina arranca comienzaa trabajar el disco y realiza un testeo, para lo cual necesita memoria, estamemoria es la convencional (ROM) y está dentro del mother (en el bios).

PROM (Programmable Read Only Memory):

El proceso de escritura es eléctrico. Se puede grabar posteriormente a lafabricación del chip, a diferencia de las anteriores que se graba durante lafabricación. Permite una única grabación y es más cara que la ROM.

Page 19: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

19

EPROM (Erasable Programmable Read-Only Memory).

Es un tipo de chip de memoria ROM inventado por el ingeniero DovFrohman que retiene los datos cuando la fuente de energía se apaga. Enotras palabras, es no volátil. Se programan mediante un dispositivoelectrónico que proporciona voltajes superiores a los normalmenteutilizados en los circuitos electrónicos. Una vez programada, una EPROMse puede borrar solamente mediante exposición a una fuerte luzultravioleta.

EEPROM (Electrically-Erasable Programmable Read-Only Memory).

Es un tipo de memoria ROM que puede ser programado, borrado yreprogramado eléctricamente, a diferencia de la EPROM que ha deborrarse mediante rayos ultravioletas.

Page 20: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

20

MEMORIA RAM (Random Access Memory ).

Esta memoria es como un escritorio. La importancia de esta memoria estan grande que si esta ausente la PC NO ARRANCA, Actúa como siestuviera muerta no hay sonido ni cursor en la pantalla ni luces que seenciendan o apaguen. Para qué sirve: Almacena las instrucciones quedebe ejecutar el micro en cada momento. Este es el lugar físico dondedebe trabajar el procesador cuando abrimos un programa susinstrucciones se copian automáticamente en la memoria, y cuandocerremos el programa todo se borrara (volatizará ). La primera parte de laRAM esta reservada para guardar las instrucciones de los dispositivoselectrónicos. En este lugar no se puede guardar nada ya que lo utiliza elsistema para saber como manejar los dispositivos.

DRAM (Dynamic Random Access Memory).

Los datos se almacenan como en la carga de un condensador. Tiende adescargarse y, por lo tanto, es necesario un proceso de refresco periódico.Son más simples y baratas que las SRAM.

Page 21: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

21

SRAM (Static Random Access Memory).

Los datos se almacenan formando biestables, por lo que no requirerefresco. Igual que DRAM es volátil. Son más rápidas que las DRAM y máscaras.

Memoria Caché o SRAM:

Si ejecutamos un programa en principio, lo cerramos y luego los volvemosa ejecutar, la memoria caché nos guarda la ubicación (dirección) en eldisco, cuando lo ejecuté, y lo que hicimos con el programa. Es mucho másrápida cuando ya usamos un programa . Existen 3 tipos de memoriacaché:

Cache L1: El cache L1 se encuentra dentro del interior del procesador yfunciona a la misma velocidad que el microprocesador.

Cache L2 interno y externo: Las L2 interno están en el procesador, pero nodentro del chip por lo que es más lento que el caché L1, mientras que lasexternas las encontramos en la motherboard.

Cache L3: Algunos microprocesadores soportan un nivel de caché mas elL3 que está localizado en la motherboard.

Page 22: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Unidad de Memoria Principal

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

22

La memoria principal esta formada por un conjunto de unidades llamadaspalabras. Dentro de cada una de estas palabras se guarda la informaciónque constituye una instrucción o parte de ella (puede darse el caso deque una sola instrucción necesite varia palabras), o un dato o parte de undato (también un dato puede ocupar varias palabras).

A la cantidad de palabras que forman la MP se le denomina capacidad dememoria. De este modo, cuanto mayor sea el número de palabras mayorserá el numero de instrucciones y datos que podrá almacenar lacomputadora.

Una palabra esta formada a su vez de unidades mas elementales llamadasbits, del mismo modo que en el lenguaje natural una palabra estaformada por letras. Cada bit solo puede guardar dos valores, el valor 0 oel valor 1; por eso se dice que son elementos binarios. El número de bitsque forman una palabra se llama longitud de palabra.

Page 23: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

23

Las palabras forman una matriz de 10 filas y 10 columnas. La primerapalabra corresponderá con la dirección 00, la segunda con la 01, y laultima, con la 99. La capacidad de la memoria será de 10 * 10 = 100palabras. También se muestra la longitud de la palabra 38, que es de 8bits, al igual que las demás, y la información que contiene, que es el valorbinario 10011010.

Page 24: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

24

Las palabras se distinguen entre si por la posición que ocupan en la MP, yse puede guardar una información y luego recuperarla indicando elnumero de dicha posición. A los números que señalan las posiciones dememoria se les da el nombre de direcciones de memoria.

La acción de guardar una información en una palabra de la memoria sellama acceso de escritura, y la acción de recuperarla, acceso de lectura.Los accesos son coordinados por la UC.

Page 25: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.1.5 Unidades de Entrada/Salida

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

25

Dispositivos de entrada .

Son todos los elementos que permiten la unión del usuario con la unidadde procesamiento central y la memoria.: Entre estos tenemos: Teclado,Mouse o Ratón y Joysticks, Escáner o digitalizador de imágenes,Dispositivos ópticos, Micrófonos.

Dispositivos de Salida.

Estos dispositivos permiten al usuario ver los resultados de los cálculos ode las manipulaciones de datos de la computadora. El dispositivo desalida más común es el monitor, la impresora, el módem.

Dispositivos de Almacenamiento.

Estos dispositivos incluyen los disco duros, discos ópticos, cintasmagnéticas, memorias usb, etc.

La coordinación de la comunicación entre los periféricos y la CPU la realizala Unidad de E/S.

Page 26: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

26

La Unidad de E/S recibe de la Unidad de Control información sobre eltipo de transferencia de datos que debe realizar (si es de entrada o desalida) y periférico que debe de utilizar.

Page 27: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

27

Entonces, la Unidad de E/S seleccionará el periférico y ejecutara laoperación teniendo en cuenta las características propias de cadaperiférico. Una vez ejecutada la orden avisará a la UC de la terminación dela transferencia. Cada periférico o parte de un periférico tendrá asignadoun número o dirección que servirá para identificarlo. Cuando la UC quieraseleccionarlo enviara dicho número a la Unidad de E/S.

Lo mas sencillo es que la CPU, cuando desee hacer una transferencia deinformación con un periférico, pregunte a la Unidad de E/S si dichoperiférico se encuentra disponible. Si no lo esta, debe repetir la preguntauna y otra vez hasta obtener una respuesta afirmativa, en cuyo caso seinicia la transferencia de información. Si se desea obtener mayorrendimiento del ordenador, se puede emplear un método que sedenomina sincronización mediante interrupción. Lo que hace es indicar ala Unidad de E/S que desea hacer una transferencia con el periférico, yseguidamente, si no esta el periférico preparado, empieza otra tarea,cuando este preparado, la Unidad de E/S indicara a la CPU que puederealizarse la transferencia; entonces, la CPU interrumpirá la tarea que estarealizando y atenderá al periférico.

Page 28: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.2 El Microprocesador

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

28

La Unidad Central de Procesamiento (CPU) es el cerebro de unacomputadora. Su función es ejecutar programas almacenados en lamemoria central tomando sus instrucciones, examinándolas y luegoejecutándolas una tras otra. La CPU se compone de varias partes:

1. La Unidad de control.

2. La ALU.

3. Registros.

Page 29: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Unidad de Control

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

29

Para realizar su tarea la UC necesita conocer, por un lado, la instrucción y,por otro, una serie de informaciones adicionales que deberá tener encuenta para coordinar, de forma correcta, la ejecución de la instrucción. Elresultado de la interpretación de dichas informaciones son una serie deórdenes a los diferentes elementos de la computadora.

La UC no emite todas las órdenes a la vez, sino siguiendo unadeterminada secuencia. Para ello utiliza un elemento que le va indicandoel instante en que debe ejecutar una determinada fase de la instrucción.A este elemento se le denomina Reloj, y se dice que sincroniza lasacciones de la UC.

Page 30: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

30

La unidad de control esta formada, básicamente por un elemento queinterpreta las instrucciones y varios elementos de memoria denominadosregistros. Uno de estos registros almacena la instrucción mientras elintérprete está traduciendo su significado, por lo que se denominaRegistro de Instrucción (RI). El resto de las instrucciones permanecen enla memoria, esperando que les toque su turno de ejecución.

La UC por otra parte deberá conocer cuál es la dirección de la próximainstrucción, para poder ir a buscarla una vez que finaliza la ejecución de lainstrucción en curso; dirección que guarda el registro llamado Contadorde Programa (CP).

Los indicadores de estado están agrupados en un registro denominadoRegistro de Estado (RE). Los indicadores de estado son una serie de bitsque se modifican según resultados de las operaciones anterioresguardando una memoria histórica de los acontecimientos precedentespara que, en función de dichos acontecimientos, pueda la UC tomardecisiones.

Elementos Básicos de la UC

Page 31: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Unidad Aritmético-Lógica

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

31

La unidad Aritmético - Lógica (UAL) es la encargada de realizar loscálculos. Los datos sobre los que se realizan las operaciones sedenominan operandos. Al elemento encargado de ejecutar lasoperaciones se le denomina operador, y esta formado por una serie decircuitos electrónicos que son capaces hacer las operaciones lógicaselementales: disyunción, conjunción y negación; incluso algunosoperadores son también capaces de multiplicar, dividir y realizar otrasoperaciones más complejas. Para que el operador realice la operación, losoperandos se llevan a la UAL y se guardan en unos registros denominadosregistros de trabajo. El resultado de la operación se guarda también en unregistro antes de ser llevado a la memoria o a la Unidad de Entradas ySalidas. Frecuentemente se utiliza un mismo registro para guardar uno delos operandos y, también, el resultado, denominado registro Acumulador.

El operador, además de calcular el valor de la operación, modifica elregistro de estado según el resultado de la operación.

Page 32: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

32

Así, si el resultado es un valor negativo, se modifica un bit de dichoregistro, llamado bit negativo o bit N, poniéndose a 1; por el contrario, elbit N permanecerá en estado 0 mientras el contenido del acumulador nosea negativo. De igual forma indicara la UAL a la UC si el resultado ha sidocero, o si ha producido algún acarreo, etc.

Page 33: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.2.1 Buses

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

33

Cuando la CPU quiere leer o escribir en una determinada posición dememoria, enviara la dirección, en paralelo, a la memoria por un conjuntode conductores eléctricos al que se denomina bus de direcciones, ya quese utiliza exclusivamente para enviar direcciones. Así mismo, los datosleídos o los que se quieren escribir se trasladan mediante un conjunto deconductores eléctricos denominado bus de datos. Las ordenes de la CPU ala MP y las respuestas de la MP a la CPU son enviadas por un tercerconjunto de conductores llamado bus de control.

Page 34: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

34

Existen varias formas de interconectar las unidades funcionales de lacomputadora entre si. Una de ellas emplea un único conjunto de buses, alque se conectan todas las unidades. Esto obliga a que, en un determinadoinstante, solo dos unidades puedan estar haciendo uso del mismo; si hayque enviar algo a la tercera unidad, se deberá esperar a que quede libre.

La principal ventaja de este sistema de interconexión es su bajo costo, y laprincipal desventaja, su mayor lentitud.

Page 35: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

35

Otra forma de interconectar las unidades de la computadora consiste enemplear conjuntos de buses diferentes para la Unidad de E/S y la MP. Deesta forma, aunque se encarece el sistema, se gana en velocidad y sepueden emplear direcciones iguales para nombrar periféricos y aposiciones de memoria. La CPU, si quiere seleccionar un periférico, utilizael bus de la Unidad de E/S, y si quiere seleccionar una posición dememoria, utiliza el bus de memoria. En este caso se dice que losperiféricos no están mapeados en memoria.

Page 36: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Segmentos.

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

36

Un segmento es un área especial en un programa que inicia en un limitede un párrafo, esto es, en una localidad de regularmente divisible entre16, o 10 hexadecimal. Aunque un segmento puede estar ubicado casi encualquier lugar de la memoria y, en modo real, puede ser hasta de 64K,solo necesita tanto espacio como el programa requiera para su ejecución.

Un segmento en modo real puede ser de hasta 64K. Se puede tenercualquier numero de segmentos; para direccionar un segmento enparticular basta cambiar la dirección en el registro del segmentoapropiado. Los tres segmentos principales son los segmentos de código,de datos y de la pila.

Segmento de código.

El segmento de código (CS) contiene las instrucciones de maquina queson ejecutadas por lo común la primera instrucción ejecutable esta en elinicio del segmento, y el sistema operativo enlaza a esa localidad parainiciar la ejecución del programa.

Page 37: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

37

Como su nombre indica, el registro del CS direcciona el segmento decódigo. Si su área de código requiere mas de 64K, su programa puedenecesitar definir mas de un segmento de código.

Segmento de datos.

El segmento de datos (DS) contiene datos, constantes y áreas de trabajodefinidos por el programa. El registro DS direcciona el segmento de datos.Si su área de datos requiere mas de 64K, su programa puede necesitardefinir mas de un segmento de datos.

Segmento de pila.

En términos sencillos, la pila contiene los datos y direcciones que ustednecesita guardar temporalmente o para uso de sus "llamadas" subrutinas.El registro de segmento de la pila (SS) direcciona el segmento de la pila.

Page 38: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

38

Los registros de segmentos contienen la dirección inicial de cadasegmento. La figura presenta un esquema de los registros CS, DS y SS; losregistros y segmentos no necesariamente están en el orden mostrado.Otros registros de segmentos son el ES (segmento extra) y, en losprocesadores 80386 y posteriores, los registros FS y GS, que contienenusos especializados.

LÍMITES DE LOS SEGMENTOS

Page 39: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

39

Coma ya dijimos, un segmento inicia en un limite de párrafo, que es unadirección por lo común divisible entre el 16 decimal o 10 hexadecimal.Suponga que un segmento de datos inicia en la localidad de memoria045F0H.

Ya que en este y todos los demás casos el ultimo dígito hexadecimal de laderecha es cero, los diseñadores de computadora decidieron que seriainnecesario almacenar el dígito cero en el registro del segmento. Así,045F0H se almacena como 045F, con el cero de la extrema derechasobrentendido. En donde sea apropiado, el texto indica al cero de laderecha con corchetes, como 045F[0].

Page 40: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Desplazamiento

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

40

En un programa, todas la localidades de memoria están referidas a unadirección inicial de segmento. La distancia en bytes desde la dirección delsegmento se define como el desplazamiento (offset).

Un desplazamiento de dos bytes (16 bits) puede estar en el rango de0000H hasta FFFFH, o bien, desde cero hasta 65, 535. Así el primer bytedel segmento de código tiene un desplazamiento 00, el segundo bytetiene un desplazamiento 01, etc. hasta el desplazamiento 65, 535. Parareferir cualquier dirección de memoria en un segmento, el procesadorcombina la dirección del segmento en un registro de segmento con unvalor de desplazamiento.

En el ejemplo siguiente, el registro DS contiene la dirección de segmentodel segmento de datos en 045F[0]H y una instrucción hace referencia auna localidad con un desplazamiento de 0032H bytes dentro delsegmento de datos.

Page 41: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

41

Por lo tanto, la localidad real de memoria del byte referido por lainstrucción es 04622H;

Dirección del segmento DS: 045F0H Desplazamiento: +0032HDirección real: 04622H

Note que un programa tiene uno o mas segmentos, los cuales pueden iniciar casi en cualquier lugar de memoria, variar en tamaño y estar en cualquier orden.

Page 42: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.2.2 Registros.

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

42

Los registros del procesador se emplean para controlar instrucciones enejecución, manejar direccionamiento de memoria y proporcionarcapacidad aritmética. Los registros son direccionables por medio de unnombre. Los bits por convención, se numeran de derecha a izquierda,como en: ... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Registros de segmento

Un registro de segmento tiene 16 bits de longitud y facilita un área dememoria para direccionamiento conocida como el segmento actual.

Registro CS. El DOS almacena la dirección inicial del segmento de códigode un programa en el registro CS. Esta dirección de segmento, mas unvalor de desplazamiento en el registro apuntador de instrucción (IP),indica la dirección de una instrucción que es buscada para su ejecución.

Page 43: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

43

Registro DS. La dirección inicial de un segmento de datos de programa esalmacenada en el registro DS. En términos sencillos, esta dirección, masun valor de desplazamiento en una instrucción, genera una referencia a lalocalidad de un byte especifico en el segmento de datos.

Registro SS. El registro SS permite la colocación en memoria de una pila,para almacenamiento temporal de direcciones y datos. El DOS almacenala dirección de inicio del segmento de pila de un programa en le registroSS. Esta dirección de segmento, mas un valor de desplazamiento en elregistro del apuntador de pila (SP), indica la palabra actual en la pila queesta siendo direccionada.

Registros ES. Alguna operaciones con cadenas de caracteres (datos decaracteres) utilizan el registro extra de segmento para manejar eldireccionamiento de memoria. En este contexto, el registro ES estaasociado con el registro DI (índice). Un programa que requiere el uso delregistro ES puede inicializarlo con una dirección de segmento apropiada.

Registros FS y GS. Son registros extra de segmento en los procesadores80386 y posteriores.

Page 44: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

44

El registro apuntador de instrucciones (IP) de 16 bits contiene eldesplazamiento de dirección de la siguiente instrucción que se ejecuta. ElIP esta asociado con el registro CS en el sentido de que el IP indica lainstrucción actual dentro del segmento de código que se esta ejecutandoactualmente. Los procesadores 80386 y posteriores tienen un IP ampliadode 32 bits, llamado EIP.

En el ejemplo siguiente, el registro CS contiene 25A4[0]H y el IP contiene412H. Para encontrar la siguiente instrucción que será ejecutada, elprocesador combina las direcciones en el CS y el IP:

Segmento de dirección en el registro CS: 25A40H Desplazamiento de dirección en el registro IP: + 412H Dirección de la siguiente instrucción: 25E52H

Registro de Apuntador de Instrucciones.

Page 45: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

45

Los registros SP (apuntador de la pila) Y BP (apuntador de base) estánasociados con el registro SS y permiten al sistema accesar datos en elsegmento de la pila.

Registro SP. El apuntador de la pila de 16 bits esta asociado con el registroSS y proporciona un valor de desplazamiento que se refiere a la palabraactual que esta siendo procesada en la pila. Los procesadores 80386 yposteriores tienen un apuntador de pila de 32 bits, el registro ESP. Elsistema maneja de forma automática estos registros.

En el ejemplo siguiente, el registro SS contiene la dirección de segmento27B30H y el SP el desplazamiento 312H. Para encontrar la palabra actualque esta siendo procesada en la pila, la computadora combina lasdirecciones en el SS y el SP:

Registros Apuntadores.

Page 46: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

46

Registro BP. El BP de 16 bits facilita la referencia de parámetros, loscuales son datos y direcciones transmitidos vía pila. Los procesadores80386 y posteriores tienen un BP ampliado de 32 bits llamado el registroEBP.

Registros Indice.

Los registros SI y DI están disponibles para direccionamiento indexado ypara sumas y restas.

Registro SI. El registro índice fuente de 16 bits es requerido por algunasoperaciones con cadenas (de caracteres). En este contexto, el SI estaasociado con el registro DS. Los procesadores 80386 y posteriorespermiten el uso de un registro ampliado de 32 bits, el ESI.

Registro DI. El registro índice destino también es requerido por algunasoperaciones con cadenas de caracteres. En este contexto, el DI estaasociado con el registro ES. Los procesadores 80386 y posteriorespermiten el uso de un registro ampliado de 32 bits, el EDI.

Page 47: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

47

Los registros de propósito general AX, BX, CX y DX son los caballos debatalla del sistema. Son únicos en el sentido de que se puededireccionarlos como una palabra o como una parte de un byte. El ultimobyte de la izquierda es la parte "alta", y el ultimo byte de la derecha es laparte "baja". Por ejemplo, el registro CX consta de una parte CH (alta) yuna parte CL (baja), y usted puede referirse a cualquier parte por sunombre.

Registro AX. El registro AX, el acumulador principal, es utilizado paraoperaciones que implican entrada/salida y la mayor parte de laaritmética. Por ejemplo, las instrucciones para multiplicar , dividir ytraducir suponen el uso del AX. También, algunas operaciones generancódigo mas eficiente si se refieren al AX en lugar de a los otros registros.

Registros de Propósito General

Page 48: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

48

Registro BX. El BX es conocido como el registro base ya que es el únicoregistro de propósito general que puede ser índice para direccionamientoindexado. También es común emplear el BX para cálculos.

Registro CX. El CX es conocido como el registro Contador. Puede contenerun valor para controlar el número de veces que un ciclo se repite o unvalor para corrimiento de bits, hacia la derecha o hacia la izquierda. El CXtambién es utilizado para muchos cálculos.

Page 49: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

49

Registro DX. El DX es conocido como el registro de datos. Algunasoperaciones de entrada/salida requieren uso, y las operaciones demultiplicación y división con cifras grandes suponen al DX y al AXtrabajando juntos.

Registro de Banderas.

De los 16 bits del registro de banderas, nueve son comunes a toda la familiade procesadores 8086, y sirven para indicar el estado actual de la maquina yel resultado del procesamiento. Muchas instrucciones que pidencomparaciones y aritmética cambian el estado de las banderas, algunascuyas instrucciones pueden realizar pruebas para determinar la acciónsubsecuente. En resumen, los bits de las banderas comunes son como sigue:

Page 50: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

50

OF (Overflow, desbordamiento). Indica desbordamiento de un bit deorden alto (mas a la izquierda) después de una operación aritmética.

DF (dirección). Designa la dirección hacia la izquierda o hacia la derechapara mover o comparar cadenas de caracteres.

IF (interrupción). Indica que una interrupción externa, como la entradadesde el teclado, sea procesada o ignorada.

TF (trampa). Permite la operación del procesador en modo de un paso.Los programas depuradores, como el DEBUG, activan esta bandera demanera que usted pueda avanzar en la ejecución de una sola instrucción aun tiempo, para examinar el efecto de esa instrucción sobre los registrosde memoria.

SF (signo). Contiene el signo resultante de una operación aritmética (0 =positivo y 1 = negativo).

ZF (cero). Indica el resultado de una operación aritmética o decomparación (0 = resultado diferente de cero y 1 = resultado igual a cero).

Page 51: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

51

AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de8 bits para aritmética especializada.

PF (paridad). Indica paridad par o impar de una operación en datos de 8bits de bajo orden (mas a la derecha).

CF (acarreo). Contiene el acarreo de orden mas alto (mas a la izquierda)después de una operación aritmética; también lleva el contenido delultimo bit en una operación de corrimiento o de rotación.Las banderas están en el registro de banderas en las siguientesposiciones:

Las banderas mas importantes para la programación en ensamblador sonO, S, Z y C, para operaciones de comparación y aritméticas, y D paraoperaciones de cadenas de caracteres.

Page 52: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.2.3 Modos de Direccionamiento

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

52

Un modo de direccionamiento permite determinar un operando , o laubicación de un operando en una instrucción. Estos operandos puedenresidir en diversas partes:

1.-La propia instrucción

2.-Memoria principal

3.-Registros internos de la CPU

Los programas utilizan varios MD motivados por:

1.- Ahorro de espacio

2.- Código reubicable : Se puede almacenar el programa en diversas zonas dememoria sin que afecte a la ejecución del código

3.-Estructuras de datos.

Page 53: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

53

1) DIRECCIONAMIENTO INMEDIATO

a) El operando está presente en la propia instrucción, por lo tanto, esta opera con unvalor constante.

b) El direccionamiento es de una sola palabra por lo que es más rápido. El operando seencuentra ya en IR al fin de la fase de búsqueda.

c) Formato de 2 palabras: Lectura de memoria adicional.

-VENTAJA: No referencia a memoria.

-DESVENTAJA: Operandos limitados por la instrucción.

2) DIRECCIONAMIENTO DIRECTO

a) La instrucción contiene la dirección real del operando.

b) Rango de posiciones limitado por el campo de operando.

b) Hay de dos tipos:

Page 54: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

54

2.1) Direccionamiento absoluto: a) La instrucción contiene la dirección de memoria donde se encuentra el

objeto, que se halla en una posición de memoria principal.

b) Formato de 2 palabras por lo tanto mayor capacidad de direccionamiento ylectura adicional.

2.2) Direccionamiento mediante registro a) Operando almacenado en un registro de la CPU. La instrucción indica de

que registro se trata.

b) Características: 1.- Lectura más rápida que en memoria >> ninguna lectura adicional.

2.- Solo necesita un campo de dirección pequeño. 3.- Rango operando = Rango registro por lo tanto se limita el espacio de

direcciones.

-VENTAJA: Sólo una referencia a memoria sin cálculos previos.

-DESVENTAJA: Espacio de direcciones reducido.

Page 55: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

55

3) DIRECCIONAMIENTO RELATIVO A REGISTRO

a) La instrucción no contiene la dirección del operando por lo que debeser calculada.

-La instrucción contiene un DESPLAZAMIENTO que hay que añadir a ladirección marcada por un puntero para obtener la dirección final deloperando es así que hay un retraso adicional.

-El puntero suele estar en un registro.

b) Permite acceder a un conjunto de direcciones de memoria a partir deuna referencia. En el campo de dirección emplea un número de bitspequeño.

c) Hay de varios tipos.

-VENTAJA : flexibilidad.

-DESVENTAJA: complejidad.

Page 56: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

56

3.1) Direccionamiento relativo al registro contador del programa (PC)

a) El puntero es el PC que es quien almacena la dirección de la siguiente instrucción

b) Para direccionar instrucciones cercanas a la instrucción en curso. Se usa para bucles...

3.2) Direccionamiento relativo al registro base

a) El puntero es el REGISTRO BASE.

b) La instrucción contiene la identificación del registro y el desplazamiento

c) Conveniente para zonas de datos (como listas).

3.3) Direccionamiento relativo a pila (LIFO)

a) El puntero es el SP (stack pointer); quien apunta a la dirección de memoria donde se encuentra la cima de la pila.

b) DESPLAZAMIENTO + valor SP = DIRECCIÓN DEL OBJETO

c) Si no existe desplazamiento solo se trabaja con la cima de la pila.

d) Permite instrucciones muy compactas.

Page 57: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

57

4) DIRECCIONAMIENTO INDEXADO

a) Un registro índice contiene la dirección de referencia y actúa depuntero.

b) Similar al relativo a registro base; pero el valor del registro índice semodifica con frecuencia en la ejecución del programa.

c) Para:

-Operaciones iterativas

- Recorrer estructuras de datos (tablas, vectores, etc).

d) Permite realizar incrementos y decrementos de una cierta magnitud>> AUTO-INDEXADO

Page 58: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

58

*PREAUTOINCREMENTO y PREAUTODECREMENTO:

1.-El registro índice se incrementa (o decrementa)

2.- Se obtiene la dirección = REGISTRO INDICE + DESPLAZAMIENTO

*POSTAUTOINCREMENTO :

1.- Dirección = REGISTRO INDICE + DESPLAZAMIENTO

2.- El registro índice se incrementa

-VENTAJA : flexibilidad.

-DESVENTAJA: complejidad.

Page 59: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

59

5) DIRECCIONAMIENTO INDIRECTO

a) El Campo de Dirección referencia la dirección de una palabra, que a su vezcontiene la dirección completa del operando.

b) Para aplicaciones q utilizan datos situados en posiciones distantes enmemoria

-VENTAJAS:

1) Espacio de dirección grande; para N bits tenemos 2N espacios dedirecciones.

2) Se puede combinar con los direccionamientos relativos

-DESVENTAJA: Referencia extra a memoria.

c) Variante : Direccionamiento indirecto con registro

-En el Campo de Dirección, hace referencia a un registro que contiene ladirección completa del operando.

-Emplea una referencia a memoria menos

Page 60: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.3 Interrupciones

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

60

Una interrupción es una operación que suspende la ejecución de unprograma de modo que el sistema pueda realizar una acción especial. Larutina de interrupción ejecuta y por lo regular regresa el control alprocedimiento que fue interrumpido, el cual entonces reasume suejecución.

Tabla de servicio de Interrupción.

Cuando la computadora se enciende, el BIOS y el DOS establecen unatabla de servicios de interrupción en las localidades de memoria 000H-3FFH. La tabla permite el uso de 256 (100H) interrupciones, cada una conun desplazamiento: segmento relativo de cuatro bytes en la forma IP:CS.

El operando de una instrucción de interrupción como INT 05H identifica eltipo de solicitud. Como existen 256 entradas, cada una de cuatro bytes, latabla ocupa los primeros 1, 024 bytes de memoria, desde 000H hasta3FFH.

Page 61: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

61

Cada dirección en la tabla relaciona a una ruina de BIOS o del DOS para untipo especifico de interrupción. Por lo tanto los bytes 0-3 contienen ladirección para la interrupción 0, los bytes 4-7 para la interrupción 1, y asísucesivamente:

Page 62: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

62

Eventos de una Interrupción

Una interrupción guarda en la pila el contenido del registro de banderas,el CS, y el IP. por ejemplo, la dirección en la tabla de INT 05H (queimprime la que se encuentra en la pantalla cuando el usuario presionaCtrl + PrtSC) es 0014H (05H x 4 = 14H). La operación extrae la dirección decuatro bytes de la posición 0014H y almacena dos bytes en el IP y dos enel CS.

La dirección CS:IP entonces apunta al inicio de la rutina en el área delBIOS, que ahora se ejecuta. La interrupción regresa vía una instrucciónIRET (regreso de interrupción), que saca de la pila el IP, CS y las banderas yregresa el control a la instrucción que sigue al INT.

Page 63: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Tipos de Interrupciones

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

63

Las interrupciones se dividen en dos tipos las cuales son:Externas e Internas. Una interrupción externa es provocada por undispositivo externo al procesador. Las dos líneas que pueden señalarinterrupciones externas son la línea de interrupción no enmascarable(NMI) y la línea de petición de interrupción (INTR).

La línea NMI reporta la memoria y errores de paridad de E/S. Elprocesador siempre actúa sobre esta interrupción, aun si emite un CLIpara limpiar la bandera de interrupción en un intento por deshabilitar lasinterrupciones externas. La línea INTR reporta las peticiones desde losdispositivos externos, en realidad, las interrupciones 05H a la 0FH, paracronometro, el teclado, los puertos seriales, el disco duro, las unidades dedisco flexibles y los puertos paralelos.

Una interrupción interna ocurre como resultado de la ejecución de unainstrucción INT o una operación de división que cause desbordamiento,ejecución en modo de un paso o una petición para una interrupciónexterna, tal como E/S de disco. Los programas por lo común utilizaninterrupciones internas, que no son enmascarables, para accesar losprocedimientos del BIOS y del DOS.

Page 64: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Interrupciones del BIOS

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

64

El BIOS contiene un extenso conjunto de rutinas de entrada/salida y tablas que indican elestado de los dispositivos del sistema. El dos y los programas usuarios pueden solicitarrutinas del BIOS para la comunicación con los dispositivos conectados al sistema. El métodopara realizar la interfaz con el BIOS es el de las interrupciones de software. A continuación selistan algunas interrupciones del BIOS.

INT 00H: División entre cero. Llamada por un intento de dividir entre cero. Muestra unmensaje y por lo regular se cae el sistema.

INT 01H: Un solo paso. Usado por DEBUG y otros depuradores para permitir avanzar porpaso a través de la ejecución de un programa.

INT 02H: Interrupción no enmascarare. Usada para condiciones graves de hardware, talcomo errores de paridad, que siempre están habilitados. Por lo tanto un programa queemite una instrucción CLI (limpiar interrupciones) no afecta estas condiciones.

INT 03H: Punto de ruptura. Usado por depuración de programas para detener la ejecución.

INT 04H: Desbordamiento. Puede ser causado por una operación aritmética, aunque por loregular no realiza acción alguna.

INT 05H: Imprime pantalla. Hace que el contenido de la pantalla se imprima. Emita la INT05H para activar la interrupción internamente, y presione las teclas Cltr + PrtSC paraactivarla externamente. La operación permite interrupciones y guarda la posición del cursor.

Page 65: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

65

INT 08H: Sistema del cronometro. Una interrupción de hardware que actualiza la hora delsistema y (si es necesario) la fecha. Un chip temporizador programable genera unainterrupción cada 54.9254 milisegundos, casi 18.2 veces por segundo.

INT 09H: Interrupción del teclado. Provocada por presionar o soltar una tecla en el teclado.

INT OBH, INT OCH: Control de dispositivo serial. Controla los puertos COM1 y COM2,respectivamente.

INT 0DH, INT OFH: Control de dispositivo paralelo. Controla los puertos LPT1 y LPT2,respectivamente.

INT 0EH: Control de disco flexible. Señala actividad de disco flexible, como la terminación deuna operación de E/S.

INT 10H: Despliegue en vídeo. Acepta el numero de funciones en el AH para el modo depantalla, colocación del cursor, recorrido y despliegue.

INT 11H: Determinación del equipo. Determina los dispositivos opcionales en el sistema yregresa el valor en la localidad 40:10H del BIOS al AX. (A la hora de encender el equipo, elsistema ejecuta esta operación y almacena el AX en la localidad 40:10H).

INT 12H: Determinación del tamaño de la memoria. En el AX, regresa el tamaño de lamemoria de la tarjeta del sistema, en términos de kilobytes contiguos.

INT 13H: Entrada/salida de disco. Acepta varias funciones en el AH para el estado del disco,sectores leídos, sectores escritos, verificación, formato y obtener diagnostico.

Page 66: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

Interrupciones del DOS.

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

66

Los dos módulos del DOS, IO.SYS y MSDOS.SYS, facilitan el uso del BIOS. Yaque proporcionan muchas de las pruebas adicionales necesarias, lasoperaciones del DOS por lo general son mas fáciles de usar que suscontrapartes del BIOS y por lo común son independientes de la maquina.

IO.SYS es una interfaz de nivel bajo con el BIOS que facilita la lectura de datosdesde la memoria hacia dispositivos externos.

MSDOS.SYS contiene un administrador de archivos y proporciona variosservicios. Por ejemplo, cuando un programa usuario solicita la INT 21H, laoperación envía información al MSDOS.SYS por medio del contenido de losregistros. Para completar la petición, MSDOS.SYS puede traducir lainformación a una o mas llamadas a IO.SYS, el cual a su vez llama al BIOS. Lassiguientes son las relaciones implícitas:

Page 67: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

67

Las interrupciones desde la 20H hasta la 3FH están reservadas para operacionesdel DOS. A continuación se mencionan algunas de ellas.

INT 20H: Termina programa. Finaliza la ejecución de un programa .COM, restauralas direcciones para Cltr + Break y errores críticos, limpia los bufer de registros yregresa el control al DOS. Esta función por lo regular seria colocada en elprocedimiento principal y al salir de el, CS contendría la dirección del PSP. Laterminación preferida es por medio de la función 4CH de la INT 21H.

INT 21H: Petición de función al DOS. La principal operación del DOS necesita unafunción en el AH.

INT 22H: Dirección de terminación. Copia la dirección de esta interrupción en elPSP del programa (en el desplazamiento 0AH) cuando el DOS carga un programapara ejecución. A la terminación del programa, el DOS transfiere el control a ladirección de la interrupción. Sus programas no deben de emitir esta interrupción.

INT 23H: Dirección de Cltr + Break. Diseñada para transferir el control a una rutinadel DOS (por medio del PSP desplazamiento 0EH) cuando usted presiona Ctlt +Break o Ctlr + c. La rutina finaliza la ejecución de un programa o de un archivo deprocesamiento por lotes. Sus programas no deben de emitir esta interrupción.

Page 68: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

68

INT 24H: Manejador de error critico. Usada por el dos para transferir el control(por medio del PSP desplazamiento 12H) cuando reconoce un error critico (aveces una operación de disco o de la impresora).Sus programas no deben deemitir esta interrupción.

INT 25H: Lectura absoluta de disco. Lee el contenido de uno o mas sectores dedisco.

INT 26H: Escritura absoluta de disco. Escribe información desde la memoria a unoo mas sectores de disco.

INT 27H: Termina pero permanece residente (reside en memoria). Hace que unprograma .COM al salir permanezca residente en memoria.

INT 2FH: Interrupción de multiplexion. Implica la comunicación entre programas,como la comunicación del estado de un spooler de la impresora, la presencia deun controlador de dispositivo o un comando del DOS tal como ASSIGN o APPEND.

INT 33H: Manejador del ratón. Proporciona servicios para el manejo del ratón.

Page 69: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

1.4 Estructura de un programa en

Ensamblador

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

69

COMENTARIOS EN LENGUAJE ENSAMBLADOR.

El uso de comentarios a lo largo de un programa puede mejorar su claridad, enespecial en lenguaje ensamblador, donde el propósito de un conjunto deinstrucciones con frecuencia no es claro. Un comentario empieza con punto ycoma (;) y, en donde quiera que lo codifique, el ensamblador supone que todoslos caracteres a la derecha de esa línea son comentarios. Un comentario puedecontener cualquier carácter imprimible, incluyendo el espacio en blanco. Uncomentario puede aparecer solo en una línea o a continuación de una instrucciónen la misma línea, como lo muestran los dos ejemplos siguientes:

1. ;Toda esta línea es un comentario.

2. ADD AX, BX ; Comentario en la misma línea que la instrucción.

Ya que un comentario aparece solo en un listado de un programa fuente enensamblador y no genera código de maquina, puede incluir cualquier cantidad decomentarios sin afectar el tamaño o la ejecución del programa ensamblado.Otra manera de proporcionar comentarios es por medio de la directivaCOMMENT.

Page 70: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

70

PALABRAS RESERVADAS.

Ciertas palabras en lenguaje ensamblador están reservadas para suspropósitos propios, y son usadas solo bajo condiciones especiales. Porcategorías, las palabras reservadas incluyen:

Instrucciones, como MOV y ADD, que son operaciones que lacomputadora puede ejecutar.

Directivas como END o SEGMENT, que se emplean para proporcionarcomandos al ensamblador.

Operadores, como FAR y SIZE, que se utilizan en expresiones.

Símbolos predefinidos, como @Data y @Model, que regresaninformación a su programa.

El uso de una palabra reservada para un propósito equivocado provocaque el ensamblador genere un mensaje de error.

Page 71: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

71

IDENTIFICADORES.

Un identificador es un nombre que se aplica a elementos en el programa.Los dos tipos de identificadores son: nombre, que se refiere a la direcciónde un elemento de dato. y etiqueta, que se refiere a la dirección de unainstrucción. Las mismas reglas se aplican tanto para los nombres comopara las etiquetas. Un identificador puede usar los siguientes caracteres.

1.- Letras del alfabeto: Desde la A hasta la Z.

2.- Dígitos: Desde el 0 al 9 (no puede ser el primer carácter)

3.-Caracteres especiales

Signo de interrogación ( ? )

Subrayado ( _ )

Signo de pesos ( $ )

Arroba ( @ )

Punto ( . ) (no puede ser el primer carácter)

Page 72: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

72

El primer carácter de un identificador debe ser una letra o un carácterespecial, excepto el punto. Ya que el ensamblador utiliza algunos símbolosespeciales en palabras que inician con el símbolo @, debe evitar usarlo ensus definiciones.

El ensamblador trata las letras mayúsculas y minúsculas como iguales. Lalongitud máxima de un identificador es de 31 caracteres (247 desde elMASM 6.0). Ejemplos de nombres validos son COUNT, PAGE25 y $E10. Serecomienda que los nombres sean descriptivos y con significado. Losnombres de registros, como AX, DI y AL, están reservados para hacerreferencia a esos mismos registros. En consecuencia, en una instruccióntal como:

ADD AX, BX

el ensamblador sabe de forma automática que AX y BX se refieren a losregistros. Sin embargo, en una instrucción como:

MOV REGSAVE, AX

El ensamblador puede reconocer el nombre REGSAVE solo si se define enalgún lugar del programa.

Page 73: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

73

INSTRUCCIONES.

Un programa en lenguaje ensamblador consiste en un conjunto deenunciados. Los dos tipos de enunciados son:

1. Instrucciones, tal como MOV y ADD, que el ensamblador traduce acódigo objeto.

2. Directivas, que indican al ensamblador que realiza una acciónespecifica, como definir un elemento de dato.

A continuación esta el formato general de un enunciado, en donde loscorchetes indican una entrada opcional:

[identificador] operación [operando(s)] [;comentarios]

Un identificador (si existe), una operación y un operando (si existe) estánseparados por al menos un espacio en blanco o un carácter tabulador.Existe un máximo de 132 caracteres en una línea (512 desde el MASM6.0), aunque la mayoría de los programadores prefiere permanecer en los80 caracteres ya que es el numero máximo que cabe en la pantalla. Acontinuación se presentan dos ejemplos de enunciados:

Page 74: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

74

IDENTIFICADOR OPERACION OPERANDO COMENTARIODirectiva: COUNT DB 1 ;Nom, Op, OperandoInstrucción: MOV AX, 0 ;Operación, 2 Operandos

Identificador, operación y operando pueden empezar en cualquier columna.Sin embargo, si de manera consistente se inicia en la misma columna paraestas tres entradas se hace un programa mas legible.

OPERACIÓN: La operación, que debe ser codificada, es con mayor frecuencia usada para la definición de áreas de datos y codificación de instrucciones. Para un elemento de datos, una operación como DB o DW define un campo, área de trabajo o constante.

OPERANDO: El operando (si existe) proporciona información para la operación que actúa sobre el. Para un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en la definición siguiente de un elemento de datos llamado COUNTER, la operación DB significa "definir byte", y el operando inicializa su contenido con un valor cero:

Page 75: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

75

Para una instrucción, un operando indica en donde realizar la acción. Unoperando de una instrucción puede tener una, dos o tal vez ningunaentrada. Aquí están tres ejemplos:

Page 76: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

76

La directiva PAGE y TITLE ayudan a controlar el formato de un listado deun programa en ensamblador. Este es su único fin, y no tienen efectosobre la ejecución subsecuente del programa.

PAGE. Al inicio de un programa, la directiva PAGE designa el numeromáximo de líneas para listar en una pagina y el numero máximo decaracteres en una línea. Su formato general es:

PAGE [longitud][, ancho]

El ejemplo siguiente proporciona 60 líneas por pagina y 132 caracterespor línea:

PAGE 60, 132

El numero de líneas por pagina puede variar desde 10 hasta 255, mientrasque el numero de caracteres por línea desde 60 hasta 132. La omisión dePAGE causa que el ensamblador tome PAGE 50, 80.

DIRECTIVAS PARA LISTAR: PAGE Y TITLE

Page 77: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

77

TITLE. Se puede emplear la directiva TITLE para hacer que un titulo paraun programa se imprima en la línea 2 de cada pagina en el listado delprograma. Puede codificar TITLE de una vez, al inicio del programa. Suformato general es:

TITLE Texto.

Para el operando texto, una técnica recomendada es utilizar el nombredel programa como se registra en el disco. Por ejemplo:

TITLE Prog1 Mi primer programa en ensamblador

Page 78: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

78

Un programa ensamblado en formato .EXE consiste en uno o massegmentos. Un segmento de pila define el almacén de la pila, unsegmento de datos define los elementos de datos y un segmento decódigo proporciona un código ejecutable. Las directivas para definir unsegmento, SEGMENT y ENDS tienen el formato siguiente:

El enunciado SEGMENT define el inicio de un segmento. El nombre delsegmento debe estar presente, ser único y cumplir las convenciones paranombres del lenguaje. EL enunciado ENDS indica el final del segmento ycontiene el mismo nombre del enunciado SEGMENT. El tamaño máximode un segmento es de 64K.

DIRECTIVA SEGMENT

Page 79: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

79

El operando de un enunciado SEGMENT puede tener tres tipos deopciones: alineación, combinar y clase, codificadas en este formato:

nombre SEGMENT alineación combinar ' clase '

TIPO ALINEACION. La entrada alineación indica el limite en el que inicia elsegmento. Para el requerimiento típico, PARA, alinea el segmento con ellimite de un párrafo, de manera que la dirección inicial es divisible entre16, o 10H. En ausencia de un operando hace que el ensamblador poromisión tome PARA.

TIPO COMBINAR. La entrada combinar indica si se combina el segmentocon otros segmentos cuando son enlazados después de ensamblar. Lostipos de combinar son STACK, COMMON, PUBLIC y la expresión AT. Porejemplo, el segmento de la pila por lo común es definido como

nombre SEGMENT PARA STACK

Page 80: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

80

Puede utilizar PUBLIC y COMMON en donde tenga el propósito decombinar de forma separada programas ensamblados cuando los enlaza.En otros casos, donde un programa no es combinado con otros, puedeomitir la opción o codificar NONE.

TIPO CLASE. La entrada clase, encerrada entre apóstrofos, es utilizadapara agrupar segmentos cuando se enlazan. Se utiliza la clase 'code' parael segmento de códigos, 'data' por segmento de datos y 'stack' para elsegmento de la pila. El ejemplo siguiente define un segmento de pila contipos alineación, combinar y clase:

nombre SEGMENT PARA STACK 'Stack'

Page 81: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

81

Un programa utiliza el registro SS para direccionar la pila, al registro DSpara direccionar el segmento de datos y el registro CS para direccionar elsegmento de código. Para este fin, usted tiene que indicar al ensambladorel propósito de cada segmento en el programa. La directiva para estepropósito es ASSEME, codificada en el segmento de código como sigue:

OPERACION OPERANDO

ASSUME SS:nompila, DS:nomsegdatos, CS: nomsegcodigo,. . .

Los operandos pueden aparecer en cualquier orden. Al igual que otrasdirectivas, ASSUME es solo un mensaje que ayuda al ensamblador aconvertir código simbólico a código maquina; aun puede tener quecodificar instrucciones que físicamente cargan direcciones en registros desegmentos en el momento de la ejecución.

DIRECTIVA ASSUME

Page 82: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

82

USANDO LAS DIRECTIVAS:

Page 83: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

83

Los ensambladores de MicroSoft y de Borland proporcionan algunasformas abreviadas para definir segmentos. Para usar estas abreviaturas,inicialice el modelo de memoria antes de definir algún segmento. Elformato general (incluyendo el punto inicial) es:

.MODEL modelo de memoria

El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT oLARGE. Los requisitos para cada modelo son:

DIRECTIVAS SIMPLIFICADAS DE SEGMENTOS

Page 84: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

84

Puede utilizar cualquiera de estos modelos para un programa autónomo(esto es, un programa que no este enlazado con algún otro). El modeloTINY esta destinado para uso exclusivo de programas .COM, los cualestienen sus datos, código y pila en un segmento. El modelo SMALL exigeque el código quepa en un segmento de 64K y los datos en otro segmentode 64K. La directiva .MODELL genera automáticamente el enunciadoASSUME necesario.

Los formatos generales (incluyendo el punto inicial) para las directivasque define los segmentos de la pila, de datos y de código son:

.STACK [tamaño].DATA.CODE [nombre]

Cada una de estas directivas hace que el ensamblador genere elenunciado SEGMENT necesario y su correspondiente ENDS. Los nombrespor omisión de los segmentos (que usted no tiene que definir) son STACK,DATA y TEXT (para el segmento de código).

Page 85: Lenjuage Ensamblador Unidad 1 Del 1 Al 1.3

LENGUAJE ENSAMBLADOR .-ISC JEHIELY BELEM HERNÁNDEZ CASTILLO

85

USANDO LAS DIRECTIVAS SIMPLIFICADAS DE SEGMENTOS: