Vous êtes sur la page 1sur 20

Instituto Tecnolgico de Orizaba Ensamblador 1 Arquitectura el Procesador

1.1 Lenguaje Ensamblador

Lenguaje

El ensamblador es una variante del lenguaje de maquina que usan las computadoras para ejecutar programas. El ensamblador resulta indispensable cuando se desea escribir programas que controlen la entrada / salida de la PC, agregar nuevas interfaces de entrada / salida, escribir rutinas optimizadas de un procedimiento en especial, en general realizar cualquier tarea que no puedan llevar a cabo los dems lenguajes de programacin. 1.2 Importancia del Lenguaje Ensamblador El lenguaje ensamblador es la forma ms bsica de programar un microprocesador para que ste sea capaz de realizar las tareas o los clculos que se le requieran. El lenguaje ensamblador es conocido como un lenguaje de bajo nivel, esto significa que nos permite controlar el 100 % de las funciones de un microprocesador, as como los perifricos asociados a ste. A diferencia de los lenguajes de alto nivel, por ejemplo "Pascal", el lenguaje ensamblador no requiere de un compilador, esto es debido a que las instrucciones en lenguaje ensamblador son traducidas directamente a cdigo binario y despus son colocadas en memoria para que el microprocesador las tome directamente. Aprender a programar en lenguaje ensamblador no es fcil, se requiere un cierto nivel de conocimiento de la arquitectura y organizacin de las computadoras, adems del conocimiento de programacin en algn otro lenguaje Ventajas del lenguaje ensamblador:

Velocidad de ejecucin de los programas Mayor control sobre el hardware de la computadora

Desventajas del lenguaje ensamblador:


Repeticin constante de grupos de instrucciones No existe una sintaxis estandarizada Dificultad para encontrar errores en los programas (bugs)

Alma Cecilia Romn Melo


1

Instituto Tecnolgico de Orizaba Ensamblador


1.3 Historia de los Procesadores

Lenguaje

Con la aparicin de los circuitos integrados, la posibilidad de reducir el tamao de algunos dispositivos electrnicos se vio enormemente favorecida. Los fabricantes de controladores integrados, calculadoras y algunos otros dispositivos comenzaron a solicitar sistemas integrados en una sola pastilla, esto dio origen a la aparicin de los microprocesadores. Microprocesadores de 4 bits: En 1971, una compaa que se dedicaba a la fabricacin de memorias electrnicas lanz al mercado el primer microprocesador del mundo. Este microprocesador fue el resultado de un trabajo encargado por una empresa que se dedicaba a la fabricacin de calculadoras electrnicas. El 4004 era un microprocesador de 4 bits capaz de direccionar 4096 localidades de memoria de 4 bits de ancho. Este microprocesador contaba con un conjunto de 45 instrucciones y fue ampliamente utilizado en los primeros videojuegos y sistemas de control. Microprocesadores de 8 bits: Con la aparicin de aplicaciones ms complejas para el microprocesador y el gran xito comercial del 4004, Intel decidi lanzar al mercado un nuevo microprocesador, el 8008, ste fue el primer microprocesador de 8 bits. Las caractersticas de este microprocesador fueron: Capacidad de direccionamiento de 16 Kb Memoria de 8 bits Conjunto de 48 instrucciones Este microprocesador tuvo tanto xito, que en cosa de dos aos su capacidad de proceso fue insuficiente para los ingenieros y desarrolladores, por lo cual en 1973 se liber el 8080. Este microprocesador fue una versin mejorada de su predecesor y las mejoras consistieron en un conjunto ms grande de instrucciones, mayor capacidad de direccionamiento y una mayor velocidad de procesamiento. Microprocesadores de 16 bits En 1978, Intel lanz al mercado el 8086 y un poco ms tarde el 8088. Estos dos microprocesadores contaban con registros internos de 16 bits, tenan un bus de datos externo de 16 y 8 bits respectivamente y ambos eran capaces de direccionar 1Mb de memoria por medio de un bus de direcciones de 20 lneas. Otra caracterstica importante fue que estos dos microprocesadores eran capaces de realizar la multiplicacin y la divisin por hardware, cosa que los anteriores no podan. Microprocesadores de 32 bits:El 80386 marco el inicio de la aparicin de los microprocesadores de 32 bits. Estos microprocesadores tenan grandes ventajas sobre sus predecesores, entre las cuales se pueden destacar: direccionamiento de hasta 4Gb de

Alma Cecilia Romn Melo


2

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

memoria, velocidades de operacin ms altas, conjuntos de instrucciones ms grandes y adems contaban con memoria interna (cach) de 8Kb en las versiones ms bsicas. 1.4 Terminales del Microprocesador En esta seccin se realizar una breve descripcin del conjunto de terminales del microprocesador ms representativo de la familia 80x86. El microprocesador 8086: puede trabajar en dos modos diferentes: el modo mnimo y el modo mximo. En el modo mximo el microprocesador puede trabajar en forma conjunta con un microprocesador de datos numrico 8087 y algunos otros circuitos perifricos. En el modo mnimo el microprocesador trabaja de forma ms autnoma al no depender de circuitos auxiliares, pero esto a su vez le resta flexibilidad. En cualquiera de los dos modos, las terminales del microprocesador se pueden agrupar de la siguiente forma: Alimentacin Reloj Control y estado Direcciones Datos

El 8086 cuenta con tres terminales de alimentacin: tierra (GND) en las terminales 1 y 20 y Vcc=5V en la terminal 40. En la terminal 19 se conecta la seal de reloj, la cual debe provenir de un generador de reloj externo al microprocesador. El 8086 cuenta con 20 lneas de direcciones (al igual que el 8088). Estas lneas son llamadas A0 a A19 y proporcionan un rango de direccionamiento de 1MB. Para los datos, el 8086 comparte las 16 lneas ms bajas de sus lneas de direcciones, las cuales son llamadas AD0 a AD15. Esto se logra gracias a un canal de datos y direcciones multiplexado. En cuanto a las seales de control y estado tenemos las siguientes: La terminal MX/MN controla el cambio de modo del microprocesador. Las seales S0 a S7 son seales de estado, stas indican diferentes situaciones acerca del estado del microprocesador. La seal RD en la terminal 32 indica una operacin de lectura. En la terminal 22 se encuentra la seal READY. Esta seal es utilizada por los diferentes dispositivos de E/S para indicarle al microprocesador si se encuentran listos para una transferencia. La seal RESET en la terminal 21 es utilizada para reinicializar el microprocesador. La seal NMI en la terminal 17 es una seal de interrupcin no enmascarable, lo cual significa que no puede ser manipulada por medio de software. La seal INTR en la terminal 18 es tambin una seal de interrupcin, la diferencia radica en que esta seal si puede ser controlada por software. Las interrupciones se estudian ms adelante. La terminal TEST se utiliza para sincronizar al 8086 con otros microprocesadores en una configuracin en paralelo. Las terminales RQ/GT y LOCK se utilizan para controlar el trabajo en paralelo de dos o mas microprocesadores. La seal WR es utilizada por el microprocesador cuando ste requiere realizar alguna operacin de escritura con la memoria o los dispositivos de E/S. Las seales HOLD y HLDA son utilizadas para controlar el acceso al bus del sistema.

Alma Cecilia Romn Melo


3

Instituto Tecnolgico de Orizaba Ensamblador


1.5 Diagramas de componente

Lenguaje

a) Registros Generales: Son cuatro registros y son duales, es decir, pueden manipularse como si fueran de 8 o de 16 bits. En la modalidad de 16 bits son conocidos como AX, BX, CX, DX. El registro AX, tambin llamado acumulador es indispensable para toda operacin de entrada / salida y para algunas operaciones de cadenas. El registro BX, tambin conocido como registro base se usa para calcular direcciones que accesan la memoria. El registro CX, tambin llamado contador es utilizado para llevar la cuenta de operaciones repetitivas, o como contador en operaciones de cadenas. El registro DX, tambin llamado registro de datos sirve como deposito para las direcciones de los puertos, en combinacin con el registro AX sirve para designar cantidades de 32 bits. b) Registros Apuntadores: Son registros que apuntan a una localidad de memoria en general. El BP (base pointer) o apuntador base es muy usado para manipular la informacin que se encuentra en la pila. El SP (stack pointer) o apuntador de la pila en conjunto con el con el registro de segmento SS (stack segment) o segmento de pila se usa para crear en memoria una estructura llamada pila (stack). c) Registros ndices: Generalmente se utilizan en operaciones con cadena. Un uso muy comn de ellos es a travs de la instruccin MOVSB (move string byte) la cual copia bytes consecutivos a partir de la direccin especificada por SI (source index) o ndice fuente en la direccin especificada por DI (destination index) o ndice destino. SI (ndice Fuente): Proporciona la direccin inicial para que una cadena sea manipulada. DI (ndice Destino): Proporciona la direccin de destino donde por lo general una cadena ser almacenada despus de alguna operacin de transferencia. d) Registros de Segmento: El procesador tiene 4 registros de segmento. El CS (code segment) o registro del segmento de cdigo se encuentra asociado al cdigo del programa, es decir, controla el cdigo de los programas y tiene como socio el registro IP y su combinacin da como resultado la siguiente instruccin a ser ejecutada. El DS (data segment) o registro de segmento de datos es donde se guardan los datos del programa. El ES (extra segment) o registro de segmento extra generalmente tiene la funcin de servir como colchn para ampliar el segmento de datos. El SS (stack segment) o registro de segmento de la pila tiene la funcin de controlar el rea donde se creara la pila.

Alma Cecilia Romn Melo


4

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

e) Registro Apuntador de Instrucciones: El IP (instruccin pointer) o apuntador de instrucciones se usa en combinacin con el registro CS para especificar el rea de memoria donde se encuentra la siguiente instruccin para ejecutar. Este registro cambia de contenido conforme al flujo de ejecucin del programa. SP (Apuntador de pila): Se encarga de controlar el acceso de los datos a la pila de los programas. Todos los programas en lenguaje ensamblador utilizan una pila para almacenar datos en forma temporal. BP (Apuntador Base): Su funcin es la de proporcionar direcciones para la transferencia e intercambio de datos. f) Registro de Estado: Conocido tambin como registro de banderas (Flags), tiene como funcin principal almacenar el estado individual de las diferentes condiciones que son manejadas por el microprocesador. Estas condiciones por lo general cambian de estado despus de cualquier operacin aritmtica o lgica: CF (Acarreo): Esta bandera indica el acarreo o prstamo despus de una suma o resta. OF (Sobre flujo): Esta bandera indica cuando el resultado de una suma o resta de nmeros con signo sobrepasa la capacidad de almacenamiento de los registros. SF (Signo): Esta bandera indica si el resultado de una operacin es positivo o negativo. DF (Direccin): Indica el sentido en el que los datos sern transferidos en operaciones de manipulacin de cadenas. ZF (Cero): Indica si el resultado de una operacin aritmtica o lgica fue cero o diferente de cero. IF (interrupcin): Activa y desactiva la terminal INTR del microprocesador. PF (paridad): Indica la paridad de un nmero. AF (Acarreo auxiliar). Indica si despus de una operacin de suma o resta ha ocurrido un acarreo de los bits 3 al 4. TF (Trampa): Esta bandera controla la ejecucin paso por paso de un programa con fines de depuracin.

Alma Cecilia Romn Melo


5

Instituto Tecnolgico de Orizaba Ensamblador


1.6 Memoria de Manejo

Lenguaje

a) Segmentacin: La arquitectura del 8086 obliga a usar en combinacin un registro de segmento (CS, DS, ES y SS) y un desplazamiento para obtener as la localidad absoluta de algn byte de informacin dentro de la memoria. Dichos segmentos sirven como los separadores de una carpeta, en cada separacin se permite introducir caracteres con un limite de 64 kb por cada segmento. b) Las Direcciones: El 8086 tiene un bus de direcciones de 20 bits, un solo registro no tiene la capacidad de representar 20 bits, debido a que los registros son de 16 bits. Cada direccin se divide en dos partes: el segmento y desplazamiento dentro del segmento. c) Direccin fsica: Para que el microprocesador pueda acceder a cualquier localidad de memoria dentro del rango de 1MB, debe colocar la direccin de dicha localidad en el formato de 20 bits. Para lograr esto, el microprocesador realiza una operacin conocida como clculo de direccin real o fsica. Esta operacin toma el contenido de dos registros de 16 bits y obtiene una direccin de 20 bits. 1.7 Direccionamiento de Datos a) Inmediato: En esta modalidad, el operando se incluye como parte de la instruccin Por ejemplo MOV AX, 5. aqu el numero 5 forma parte de la instruccin en su totalidad. Es decir, el numero se especifica como una constante numrica en la misma instruccin y no hay necesidad de acceder la memoria. b) Directo: Un valor de 16 bits forma parte de la instruccin y es interpretado como un acceso a la memoria. Por ejemplo MOV AX, VALOR, donde valor es una localidad de memoria donde se encuentra alguna informacin que ser movida al registro AX. c) Registros: En esta modalidad solamente se realiza una copia del registro fuente al registro destino, dejando intacto el primero. Por ejemplo MOV AX, BX, donde el registro BX ser copiado al registro AX. d) Indirecto: Esta modalidad emplea el contenido de los registros SI y DI como un desplazamiento para calcular la direccin de memoria. Por ejemplo MOV AX, [SI], donde SI tiene el valor de la localidad de memoria . esta instruccin toma el contenido del registro SI como una localidad de memoria. e) Direccionamiento de Base mas ndice: El modo de base mas desplazamiento, el segundo operando es un numero, el cual contiene la direccin de desplazamientos correspondientes a los datos para la instruccin. Por ejemplo: DL, [BX+1]. f) direccionamiento de Base mas ndice mas Desplazamiento: El modo de base mas ndice mas desplazamiento, tiene dos operando uno es la base el segundo un registro ndice y el tercero el numero de desplazamientos, los cuales contienen la direccin de desplazamientos correspondientes a los datos para la instruccin. Por ejemplo DL, [BX+SI+1]

Alma Cecilia Romn Melo


6

Instituto Tecnolgico de Orizaba Ensamblador 2 Programacin Bsica

Lenguaje

2.1 Formato de Instrucciones: Para comenzar con la programacin en lenguaje ensamblador, es necesario contar con un conjunto de herramientas de programacin. Este conjunto de herramientas consta de un editor de texto capaz de producir archivos en cdigo ASCII, un ensamblador y un enlazador. En el lenguaje ensamblador existen tres tipos de instrucciones: instrucciones con dos operandos, instrucciones con un operando e instrucciones con operandos implcitos. 2.2 Formato de Programa ; comentarios stack segment para stack stack db 64 dup (0) stack ends data segment word public data ; declaracin de variables data ends code segment word public code assume CS: code, DS: data, S: stack, ES: data Inicio proc far Mov ax, data Mov ds, ax ;instrucciones Mov ah, 4ch int 21h inicio endp code ends end inicio

2.3 Proceso de Ensamble y Enlace de un Programa: Este proceso es muy sencillo y se describe a continuacin: Si est trabajando en MS-DOS siga estos pasos: 1. Escriba el programa, tal y como aparece en el listado anterior, usando su editor de texto preferido. 2. Gurdelo con algn nombre y la extensin .ASM. 3. En el smbolo del MS-DOS escriba lo siguiente C:\PASS32\BIN\>PASS32 Nombre.ASM t <Enter> 4. Ejecute el programa .COM que se genera. 2.4 Directivas de Ensamble (Seudo Instrucciones) El ensamblador cuenta con algunas palabras reservadas que cumplen tareas especiales para facilitar la programacin en ensamblador, estas palabras son llamadas seudo instrucciones o directivas de ensamble.

Alma Cecilia Romn Melo


7

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

La siguiente es una lista de las directivas de ensamble ms utilizadas en ensamblador DB Reserva un byte en memoria DW Reserva una palabra (Word) en memoria o 2 bytes DD Reserva una palabra doble (Double Word) .EQU Se utiliza para reemplazar smbolos por valores PROC-ENDP Se utilizan para declarar procedimientos en los programas .MACRO-ENDM Se utilizan para declarar macros DUP Sirve para inicializar cadenas de caracteres o arreglos numricos .INCLUDE Se utiliza para obtener datos o subrutinas de otros programas .EXTERN Declara un smbolo como externo, trabaja en conjunto con .INCLUDE .PUBLIC Declara un smbolo como pblico Los programas incluidos como ejemplos muestran la forma de utilizar estas directivas. 2.5 Instrucciones de Transferencia de Datos Existe instrucciones 0, 1 y 2 operandos estos algunos ejemplos: Mov ax, 20 Mov ax, 20h Mov cl, 00010001b Mov ver, 5 Mov al, A Mov al, [bx]

Instrucciones de 2 operandos

Push y pop Instrucciones de 1 operando Push ax pop cx [inserta a la pila Push cx pop ax y recupera de la pila] Xchg instrucciones de 2 operandos Mov al, 3 [el valor de AL pasa a BL Mov bl, 2 y viceversa] Xchg, al, bl

Alma Cecilia Romn Melo


8

Instituto Tecnolgico de Orizaba Ensamblador


Mov dx, offset msg Lea* dx, msg *carga de direccin efectiva SI, DI, BX SI direccin de variables 2.6 Instrucciones Aritmticas

Lenguaje

a) Sumas: Existen tres instrucciones que pueden usar las sumas dos de ellas funcionan con 2 operandos y una solo con uno. Dichas instrucciones son: add o suma, adc o suma con acarreo, e inc o incrementa. La instruccin add suma el operando fuente al destino y deja el resultado en el destino. Por ejemplo Mov dx, 5 Mov cx, 6 Add dx, cx b) Restas: La instruccin que realiza la resta es sub la cual resta al operando del destino el operando fuente y deja el resultado en el destino. Por ejemplo Mov ax, 10 Mov cx, 5 Sub ax, cx

c) Multiplicacin: Existen dos instrucciones para la multiplicacin, estas son: MUL e IMUL. MUL permite realizar operaciones de multiplicacin entre operandos sin signo e IMUL permite realizar operaciones entre operandos con signo. La multiplicacin se puede efectuar entre bytes (8 bits), palabras (16 bits) o dobles palabras (32 bits). Solamente los microprocesadores 386 y posteriores pueden realizar multiplicaciones entre operandos de 32 bits. Por ejemplo Mov bl, 5 Mov al, 10 Mul bl d) Divisin: Las instrucciones para divisin permiten realizar divisiones de 8, 16 o 32 bits (esta ltima slo est disponible en los microprocesadores 386 y posteriores). Los operandos pueden ser nmeros con signo (IDIV) o nmeros sin signo (DIV). El dividendo siempre tiene el doble de ancho que el operando divisor. Esto significa que en una divisin de 8 bits se divide un nmero de 16 bits entre uno de 8; en una de 16 bits se divide un nmero de 32 bits entre uno de 16, etc. En la divisin de 8 bits, el dividendo es almacenado en el registro AX y el divisor puede ser cualquier registro de 8 bits o cualquier variable declarada de tipo byte. Despus de la divisin, el cociente es cargado en el registro AL y el residuo en el registro AH. Mov ax, 10 Mov bl, 5 Div bl

Alma Cecilia Romn Melo


9

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

2.7 Instrucciones para la Manipulacin de Banderas: El registro de banderas tiene diferentes funciones en cada uno de sus bits, algunos de estos bits (banderas) pueden ser controlados por instrucciones directas de bajo nivel; sin embargo, se debe tener en cuenta que estas banderas estn ntimamente ligadas con funciones internas del microprocesador, por ejemplo la lnea INTR (interrupcin por hardware), acarreos, etc., y que al manipularlas incorrectamente podemos llegar al extremo de bloquear la computadora. Es por esto que se recomienda que slo programadores experimentados modifiquen dichas banderas.

2.8 Instrucciones de Comparacin y Prueba: Existen dos instrucciones especiales en el microprocesador 8086: CMP y TEST. CMP (Comparar) compara si dos valores son iguales o diferentes. Su funcionamiento es similar al de la instruccin SUB (restar), slo que no modifica el operando de destino, solamente modifica las banderas de signo (SF), de cero (ZF) y de acarreo (CF). Por ejemplo CMP AX,1235 Esta instruccin compara si el valor almacenado en el registro AX es igual que el valor 1235 en decimal. Por otro lado, la instruccin TEST realiza la operacin AND de los operandos especificados sin que el resultado se almacene en algn registro, modificando nicamente ciertas banderas. Su aplicacin ms comn es la de probar si algn bit es cero. Por ejemplo: Test AL,1 Esta instruccin prueba si el bit menos significativo de AL es 1 y Test AL,128 prueba si el bit ms significativo de AL es 1. 2.9 Instrucciones de Saltos: El lenguaje ensamblador proporciona un conjunto de instrucciones conocidas como instrucciones de salto. Estas instrucciones son utilizadas en conjunto con instrucciones de comparacin y prueba para determinar el flujo del programa. Existen dos tipos de instrucciones de salto: las instrucciones de salto condicional y las de salto incondicional. Las instrucciones de salto condicional, revisan si ha ocurrido alguna situacin para poder transferir el control del programa a otra seccin, por ejemplo: otro CMP AX,0 .... Je otro end ....

Alma Cecilia Romn Melo


10

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

2.10 Instrucciones de Ciclos: El lenguaje ensamblador cuenta con una instruccin muy poderosa que permite la programacin de ciclos finitos, la instruccin LOOP. Esta instruccin trabaja en forma conjunta con el registro contador CX. El formato general de esta instruccin es: Mov CX, No_Veces Etiqueta ....... Loop Etiqueta La instruccin LOOP ejecuta las instrucciones que se encuentran entre la Etiqueta: y Loop Etiqueta el numero de veces que indique el campo No_Veces. 2.11 Instrucciones Lgicas: El ensamblador tiene la capacidad para ejecutar cuatro tipos diferentes de instrucciones lgicas: and, not, or y xor, las cuales efectan sus operaciones bit por bit sobre sus operandos. La instruccin not difiere de las dems instrucciones lgicas en que complementa todos los bit de su operando; es decir, cambia los unos a ceros y los ceros a unos. Las otras instrucciones operan con los dos operandos destino y fuente, dejando el resultado, de sus operaciones en el destino. La operacin con and produce uno solo si ambos bits (tanto el destino como el fuente) son uno.

2.12 Instrucciones de Rotacin y Desplazamiento: El microprocesador cuenta con un conjunto de instrucciones que permiten la manipulacin de las posiciones individuales de los bits dentro de un registro o localidad de memoria, estas instrucciones se encuentran divididas en dos grupos: instrucciones de rotacin e instrucciones de desplazamiento. Las instrucciones para rotacin son cuatro y nos permiten mover de forma cclica los bits que forman parte de un registro o localidad de memoria, estas instrucciones son ROL, ROR, RCL , RCR. ROL y ROR funcionan de forma muy semejante; al ejecutar una instruccin ROL, el bit ms significativo del dato es desplazado hacia la bandera de acarreo y tambin hacia la posicin del bit memos significativo, por lo cual todos los bits restantes son rotados o movidos hacia la izquierda. La instruccin ROR funciona igual, slo que sta trabaja hacia la derecha. Las instrucciones RCL y RCR permiten la rotacin de los bits de una localidad de memoria o registro, considerando tambin el contenido de la bandera de acarreo. En el caso de RCL, el bit ms significativo pasa hacia la bandera de acarreo, el bit que se encontraba en la bandera de acarreo pasa al bit menos significativo y finalmente los bits

Alma Cecilia Romn Melo


11

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

restantes son rotados hacia la izquierda. La instruccin RCR funciona igual, pero aplica su rotacin hacia la derecha. En el caso de las instrucciones de desplazamiento, tambin existen cuatro: SHL, SHR, SAL, SAR. SHL y SHR se utilizan para desplazar los bits de un registro o localidad de memoria, sin considerar el signo de su contenido. SAL y SAR se utilizan para desplazar los bits de un registro o localidad de memoria, considerando su contenido como una cantidad con signo. Las instrucciones SHL y SHR funcionan de forma idntica, slo que en sentidos opuestos. La instruccin SHL inserta un 0 en la posicin del bit menos significativo y desplaza todos los dems bits una posicin hacia la izquierda, colocando el bit ms significativo en la bandera de acarreo. La instruccin SHR inserta un 0 en la posicin ms significativa, desplaza todos los bit una posicin hacia la derecha y finalmente coloca el bit menos significativo en la bandera de acarreo. 2.13 Instrucciones para la Pila: La pila es un grupo de localidades de memoria que se reservan con la finalidad de proporcionar un espacio para el almacenamiento temporal de informacin. La pila de los programas es del tipo LIFO (Last In First Out, Ultimo en entrar, Primero en salir). Para controlar la pila el microprocesador cuenta con dos instrucciones bsicas: Push (Meter) y Pop (sacar). El formato de estas instrucciones es el siguiente: Push operando; Pop operando Cuando se ejecuta la instruccin Push, el contenido del operando se almacena en la ultima posicin de la pila. Por otro lado la instruccin Pop saca el ltimo dato almacenado en la pila y lo coloca en el operando.

Alma Cecilia Romn Melo


12

Instituto Tecnolgico de Orizaba Ensamblador 3 Manipulacin de Cadenas

Lenguaje

3.1 Definicin de Cadenas: En el lenguaje ensamblador el tipo de dato cadena (string) no est definido, pero para fines de programacin, una cadena es definida como un conjunto de localidades de memoria consecutivas que se reservan bajo el nombre de una variable.

3.2 Instrucciones para Manipulacin: El lenguaje ensamblador cuenta con cinco instrucciones para el manejo de cadenas: MOVS: Mueve un byte o palabra desde una localidad de memoria a otra. LODS : Carga desde la memoria un byte en AL o una palabra en AX. STOS : Almacena el contenido del registro AL o AX en la memoria. CMPS : Compara localidades de memoria de un byte o palabra. SCAS : Compara el contenido de AL o AX con el contenido de alguna localidad de memoria. Las instrucciones para cadenas trabajan en conjunto con la instruccin CLD, la cual permite establecer que el sentido en el que las cadenas sern procesadas ser de izquierda a derecha. Otra instruccin importante es el prefijo de repeticin REP, el cual permite que una instruccin para manejo de cadenas pueda ser repetida un nmero determinado de veces. Los registros ndice juegan un papel importante en el procesamiento de cadenas de datos, el par de registros CS:SI indican la direccin de la cadena original que ser procesada, y el par ES:DI contienen la direccin donde las cadenas pueden ser almacenadas. Para comprender realmente como funcionan las instrucciones para cadenas analizaremos varios programas que fueron escritos para este fin. Recuerde que las cadenas en ensamblador no se refieren nicamente a cadenas de caracteres ASCII, sino a cualquier tipo de dato.

Alma Cecilia Romn Melo


13

Instituto Tecnolgico de Orizaba Ensamblador 4 Programacin de Entrada / Salida

Lenguaje

4.1 Definicin de Interrupciones: Una interrupcin es un estado en el cual el microprocesador detiene la ejecucin de un programa para atender una peticin especial solicitada por el propio programa o por un dispositivo fsico conectado al microprocesador externamente. Las interrupciones fueron creadas para facilitar al programador el acceso a los diferentes dispositivos de la computadora (puertos de comunicaciones, terminales, impresoras, etc.).

4.2 Ejecucin de una Interrupcin: Cuando durante la ejecucin de un programa se produce una interrupcin, el microprocesador realiza los siguientes pasos: 1. Detiene la ejecucin del programa 2. Almacena los registros CS, IP y Banderas en la pila 3. Modifica el CS y el IP para que apunten a la direccin donde se encuentra la rutina de interrupcin. 4. Ejecuta las instrucciones de la rutina de interrupcin. 5. Restablece usando la instruccin RETI los valores originales de los registros CS, IP y Banderas. 6. Continua con la ejecucin del programa en el punto donde fue interrumpido. Las rutinas se almacenan en la memoria de la computadora cada vez que sta es inicializada, a esto se le conoce como vector de interrupciones. 4.3 Tipos de Interrupciones: El microprocesador puede atender dos tipos de interrupciones: interrupciones por software e interrupciones por hardware. Las interrupciones por software son llamadas desde los programas y son proporcionadas por el sistema operativo (MS-DOS). Existen dos tipos de estas: las interrupciones del DOS y las interrupciones del BIOS (Basic Input Output System o Sistema Bsico de Entrada/Salida). Estas interrupciones son invocadas con la instruccin INT del ensamblador. Por otro lado, las interrupciones por Hardware son proporcionadas por el propio microprocesador y tambin existen dos tipos: interrupciones por hardware internas y las interrupciones por hardware externas. Las interrupciones internas son invocadas por el microprocesador cuando se produce alguna operacin incorrecta. Las computadoras basadas en el microprocesador 8086/8088 cuentan solamente con un PIC, con lo cual pueden proporcionar hasta 8 lneas de interrupcin (IRQ), las cuales son llamadas IRQ0 a IRQ7, por otro lado, las computadoras basadas en el microprocesador 80286 y posteriores cuentan con dos chips controladores, con los

Alma Cecilia Romn Melo


14

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

cuales pueden proporcionar hasta un mximo de 16 lneas IRQ, las cuales son llamadas IRQ0 a IRQ15. La siguiente es una lista de las interrupciones por software disponibles por el sistema operativo.

Interrupciones del BIOS


Manejo de dispositivos perifricos INT 10H Manejo de la pantalla. INT 13H Manejo de unidades de disco. INT 14H Manejo de los puertos de comunicaciones(RS232). INT 15H Manejo de cinta magntica. INT 16H Manejo del teclado. INT 17H Manejo de la impresora.

Manejo del estado del equipo INT 11H Servicios de la lista de elementos de la computadora. INT 12H Servicios para el clculo del tamao de la memoria. Servicios de fecha y hora INT 1AH Manejo del reloj. Impresin de pantalla INT 5H Impresin de la informacin contenida en la pantalla. Servicios especiales INT 18H Activacin del lenguaje Interprete Basic de la ROM. INT 19H Activacin de la rutina de arranque de la computadora. Interrupciones del DOS INT 20H Termina la ejecucin de un programa. INT 22H Direccin de terminacin. Guarda la direccin donde se transfiere el control cuando termina la ejecucin del programa. INT 23H Direccin de la interrupcin que se ejecuta cuando se presiona Ctrl-Break. INT 24H Manejo de errores crticos. INT 25H Lectura directa de sectores del disco. INT 26H Escritura directa de sectores del disco.

Alma Cecilia Romn Melo


15

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

INT 27H Terminar un programa y devolver el control al DOS sin borrar el programa de la memoria. INT 21H Esta interrupcin proporciona una gran cantidad de funciones, las cuales deben ser invocadas en conjunto con el registro AH. 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14) Terminacin de un programa. Entrada de carcter con eco. Salida a pantalla. Entrada por el puerto serie. Salida por el puerto serie. Salida a la impresora. E/S directa por pantalla. Entrada directa de carcter sin eco. Entrada de carcter sin eco. Visualizar cadenas de caracteres. Entrada desde el teclado. Comprobacin del estado de entrada. Borrar registro de entrada. Inicializar unidad de disco.

Macros
4.4 Definicin: La mayora de los programas ejecutan conjuntos de instrucciones repetitivas. Si un programa realiza muchas funciones de Entrada/Salida, puede resultarle tedioso tener que codificar las instrucciones cada vez que desea desplegar o leer algo. Las macros ofrecen la facilidad de codificar una sola vez el conjunto de instrucciones y reutilizar el cdigo cuantas veces se desee dentro del programa. Su formato es el siguiente: Nombrem proc near ...... ;instrucciones .. endm

4.5 Parmetro y Etiquetas: Dentro de las propiedades ms importantes de las macros se deben destacar la posibilidad de utilizar parmetros y etiquetas. Los parmetros permiten que una misma macro pueda ser usada bajo diferentes condiciones, por ejemplo, se puede crear una macro para posicionar el cursor en diferentes coordenadas de la pantalla e indicar sus coordenadas por medio de parmetros.

Alma Cecilia Romn Melo


16

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

4.6 Ventajas y Desventajas: Si bien es cierto que las macros proporcionan mayor flexibilidad a la hora de programar, tambin es cierto que tienen algunas desventajas.

La siguiente es una lista de la principales ventajas y desventajas del uso de las macros. Ventajas: Menor posibilidad de cometer errores por repeticin. Mayor flexibilidad en la programacin al permitir el uso de parmetros. Cdigo fuente ms compacto. Al ser ms pequeo el cdigo fuente, tambin es ms fcil de leer por otros.

Desventajas: El cdigo ejecutable se vuelve ms grande con cada llamada a la macro. Las macros deben ser bien planeadas para evitar la redundancia de cdigo.

Programacin Modular
4.7 Definicin de procedimientos: Un procedimiento es un conjunto de instrucciones que tienen la finalidad de ejecutar una tarea especifica dentro de un programa. Los procedimientos son muy similares a las macros. Un procedimiento se declara una sola vez en el cdigo fuente y cuando el programa se ensambla y ejecuta, el procedimiento se coloca en memoria para que pueda ser utilizado por el programa. Las principales ventajas en el uso de procedimientos son: permiten una codificacin ms limpia y compacta, es decir el cdigo fuente es ms pequeo; tambin permiten el ahorro de memoria, esto es porque un mismo procedimiento puede ser llamado varias veces en el mismo programa y slo requiere memoria una vez. Los procedimientos tienen la desventaja de que reducen la velocidad de ejecucin de los programas, esto se debe a la forma en que los procedimientos se ejecutan. A continuacin se presentan los pasos necesarios para ejecutar un procedimiento: 1. Se encuentra la llamada Call 2. El microprocesador almacena en la Pila el contenido del IP 3. Se coloca en el IP el valor del desplazamiento correspondiente al Procedimiento 4. El microprocesador ejecuta las instrucciones del procedimiento 5. El procedimiento termina cuando se encuentra la instruccin Ret

Alma Cecilia Romn Melo


17

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

6. Se saca de la pila el valor original del IP y se continua el flujo del programa

Un procedimiento se declara de la siguiente forma: PROC nombre ..... ; instrucciones Ret Endp nombre

4.8 Paso de Parmetro: Los procedimientos en lenguaje ensamblador no cuentan con un mecanismo para el paso de parmetros; por lo cual, la nica forma de lograr esto es colocando los parmetros que nos interesan en los registros de propsito general antes de que el procedimiento sea ejecutado.

4.9 Instrucciones para Llamadas: Los procedimientos son llamados por los programas por medio de la instruccin CALL, seguida del nombre del procedimiento.

4.10 Procedimientos Internos: Los procedimientos internos son aquellos que se declaran y se llaman dentro del mismo programa, tambin son llamados procedimientos locales.

4.11 Procedimientos Externos: Los procedimientos externos, a diferencia de los internos, se declaran en mdulos o programas separados al programa donde el procedimiento es llamado, en otras palabras, la llamada al procedimiento se encuentra en un programa y el procedimiento en otro. Para poder utilizar procedimientos externos, es necesario que sean declarados como pblicos en el programa donde se encuentran y que sean llamados como externos en el programa donde sern usados. Para lograr esto, Pass32 cuenta con tres directivas de ensamble: .PUBLIC para declarar los procedimientos como pblicos, .EXTERN para indicar que el procedimiento que se va a usar est fuera del programa y .INCLUDE para enlazar el programa que contiene los procedimientos con el programa que los llama.

Alma Cecilia Romn Melo


18

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

Programacin Hbrida
4.12 Pascal y Ensamblador: Como ya se mencion, la programacin en lenguaje ensamblador proporciona un mayor control sobre el hardware de la computadora, pero tambin dificulta la buena estructuracin de los programas. La programacin hbrida proporciona un mecanismo por medio del cual podemos aprovechar las ventajas del lenguaje ensamblador y los lenguajes de alto nivel, todo esto con el fin escribir programas ms rpidos y eficientes. En esta seccin se mostrar la forma para crear programas hbridos utilizando el lenguaje ensamblador y Turbo Pascal. Turbo Pascal permite escribir procedimientos y funciones en cdigo ensamblador e incluirlas como parte de los programas en lenguaje Pascal; para esto, turbo Pascal cuenta con dos palabras reservadas: Assembler y Asm. Assembler permite indicarle a Turbo Pascal que la rutina o procedimiento que se est escribiendo est totalmente escrita en cdigo ensamblador.

Alma Cecilia Romn Melo


19

Instituto Tecnolgico de Orizaba Ensamblador

Lenguaje

Alma Cecilia Romn Melo


20

Vous aimerez peut-être aussi