Está en la página 1de 44

Instituto Tecnolgico Superior de Informtica Ibarra

TEMA: ENSAMBLADOR
INTEGRANTES: JENNIFER PREZ MERCEDES ENRQUEZ NIVEL: FECHA: LIC: 3 SISTEMAS DIURNO 14/03/2011 JORGE VIVERO

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 1

Instituto Tecnolgico Superior de Informtica Ibarra

INTRODUCCIN AL ENSAMBLADOR: El lenguaje ensamblador es el sistema alfanumrico para escribir cdigo mquina mediante expresiones abreviadas (mnemotcnicos). La compilacin es ms complicada porque incluye la conversin de operaciones matemticas complejas, comandos de lenguaje natural o tipos de comandos complejos. Cada ordenador tiene su propio lenguaje ensamblador, exclusivo de su CPU; un lenguaje de alto nivel (LAN) puede ser compilado en distintas mquinas. Es usado principalmente porque hay aplicaciones o programas que deben tratar directamente con los registros de la mquina, la memoria, dispositivos de E/S, etc. PROCESOS PARA LA CREACIN DE UN PROGRAMA: Para la creacin de un programa es necesario seguir cinco pasos: Diseo del algoritmo, codificacin del mismo, su traduccin a lenguaje mquina, la prueba del programa y la depuracin. En la etapa de diseo se plantea el problema a resolver y se propone la mejor solucin, creando diagramas esquemticos utilizados para el mejor planteamiento de la solucin. La codificacin del programa consiste en escribir el programa en algn lenguaje de programacin (en este caso en ensamblador 8086), tomando como base la solucin propuesta en el paso anterior. La traduccin al lenguaje mquina es la creacin del programa objeto, esto es, el programa escrito como una secuencia de ceros y unos que pueda ser interpretado por el procesador. La prueba del programa consiste en verificar que el programa funcione sin errores, o sea, que haga lo que
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 2

Instituto Tecnolgico Superior de Informtica Ibarra


tiene que hacer. La ltima etapa es la eliminacin de las fallas detectadas en el programa durante la fase de prueba. La correccin de una falla normalmente requiere la repeticin de los pasos comenzando desde el primero o el segundo. Para crear un programa en ensamblador utilizararemos el debugger, que se encuentra en cualquier PC con el sistema operativo MS-DOS, lo cual lo pone al alcance de cualquier usuario que tenga acceso a una mquina con estas caractersticas. Debug solo puede crear archivos con extensin .EXE, y por las caractersticas de este tipo de programas no pueden ser mayores de 64 kb, adems deben comenzar en el desplazamiento, offset, o direccin de memoria 0100Hh dentro del segmento especfico. DEFINICIN BASICA El trmino ensamblador (del ingls assembler) se refiere a un tipo de programa informtico que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene cdigo mquina, ejecutable directamente por la mquina para la que se ha generado. El propsito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en cdigo binario, que es el nico cdigo entendible por la computadora, es en la prctica imposible. La evolucin de los lenguajes de programacin a partir del lenguaje ensamblador origin tambin la evolucin de este programa ensamblador hacia lo que se conoce como programa compilador. FUNCIONAMIENTO El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los cdigos nemotcnicos que aparecen por su cdigo de operacin correspondiente en sistema binario para la plataforma que se eligi como destino en las opciones especficas del ensamblador.cc

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 3

Instituto Tecnolgico Superior de Informtica Ibarra


TIPOS DE ENSAMBLADORES Podemos distinguir entre tres tipos de ensambladores:

Ensambladores bsicos. Son de muy bajo nivel, y su tarea consiste bsicamente en ofrecer nombres simblicos a las distintas instrucciones, parmetros y cosas tales como los modos de direccionamiento. Adems, reconoce una serie de directivas (o meta instrucciones) que indican ciertos parmetros de funcionamiento del ensamblador. Ensambladores modulares, o macro ensambladores. Descendientes de los ensambladores bsicos, fueron muy populares en las dcadas de los 50 y los 60, antes de la generalizacin de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador, y adems proporcionan una serie de directivas para definir e invocar macroinstrucciones (o simplemente, macros). Vase X86. Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrs pudiendo trabajar con programas con estructuras de 16 bits. Adems de realizar la misma tarea que los anteriores, permitiendo tambin el uso de macros, permiten utilizar estructuras de programacin ms complejas propias de los lenguajes de alto nivel.

CARACTERSTICAS

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta. Al
Pgina 4

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Instituto Tecnolgico Superior de Informtica Ibarra


cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos, por un programador experto, en lenguaje ensamblador, son generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM y ROM.) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan ms rpidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel. Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin.

Tpicamente, un programa ensamblador (assembler en ingls) moderno crea cdigo objeto traduciendo instrucciones mnemnicas de lenguaje ensamblador en opcodes, y resolviendo los nombres simblicos para las localizaciones de memoria y otras entidades.1 El uso de referencias simblicas es una caracterstica clave del lenguaje ensamblador, evitando tediosos clculos y actualizaciones manuales de las direcciones despus de cada modificacin del programa. La mayora de los ensambladores tambin incluyen facilidades de macros para realizar sustitucin textual ej. Generar cortas secuencias de instrucciones como expansin en lnea en vez de llamar a subrutinas. Los ensambladores son generalmente ms simples de escribir que los compiladores para los lenguajes de alto nivel, y han estado disponibles desde los aos 1950. Los ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, as como tambin para el x86 (-64), optimizan la planificacin de instrucciones para explotar la segmentacin del CPU eficientemente.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 5

Instituto Tecnolgico Superior de Informtica Ibarra


En los compiladores para lenguajes de alto nivel, son el ltimo paso antes de generar el cdigo ejecutable. ENSAMBLADO La transformacin del lenguaje ensamblador en cdigo mquina la realiza un programa ensamblador, y la traduccin inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aqu hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de mquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un cdigo de mquina ms extenso a fin de proveer la funcionalidad necesaria y simplificar la programacin. Por ejemplo, para un cdigo mquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudoinstruccin al grupo "haga si menor que", y "si = 0" sobre el resultado de la condicin anterior. Los Ensambladores ms completos tambin proveen un rico lenguaje de macros que se utiliza para generar cdigo ms complejo y secuencias de datos. Para el mismo procesador y el mismo conjunto de instrucciones de CPU, diferentes programas ensambladores pueden tener, cada uno de ellos, variaciones y diferencias en el conjunto de mnemnicos o en la sintaxis de su lenguaje ensamblador. Por ejemplo, en un lenguaje ensamblador para la arquitectura x86, se puede expresar la instruccin para mover 5 al registro AL de la siguiente manera: MOV AL, 5, mientras que para otro ensamblador para la misma arquitectura se expresara al revs: MOV 5, AL. Ambos lenguajes ensambladores haran exactamente lo mismo, solo que est expresado de manera diferente. El primero usa la sintaxis de Intel, mientras que el segundo usa la sintaxis de AT&T El uso del ensamblador no resuelve definitivamente el problema de cmo programar un sistema basado en microprocesador de modo sencillo ya que para hacer un uso eficiente del mismo, hay que conocer a fondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas ms referentes a su estructura bsica de funcionamiento.
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 6

Instituto Tecnolgico Superior de Informtica Ibarra

PROCESAMIENTO DE ENSAMBLADO Este ensamblador es de dos pasadas. Durante la primera pasada, el programa origen se lee para desarrollar la tabla de smbolos. Durante la segunda pasada el archivo objeto se crea (ensamblado) con referencia a la tabla desarrollada en la primera pasada. Durante la segunda pasada se crea el listado del programa origen. Cada enunciado origen se procesa completamente antes de que el enunciado siguiente se lea. A medida que el enunciado se procesa el ensamblador examina los campos de etiqueta, de cdigo de operacin y de operando. La tabla de cdigos de operacin se revisa para encontrar un cdigo operacional similar.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 7

Instituto Tecnolgico Superior de Informtica Ibarra


Durante el procesamiento de un mnemnico correspondiente a un cdigo de operacin normal, el cdigo mquina normal se inserta en el archivo objetivo. La accin buscada por una directriz del ensamblador ocurre durante el procesamiento de dicha directriz. Cualquier error que detecta el ensamblador se muestra justamente antes de la lnea que contiene dicho error. An y cuando no se desee producir un listado origen, los errores se despliegan para indicar que el procesamiento de ensamblado no se llev a cabo de manera normal. VENTAJAS Y DESVENTAJAS DE UN ENSAMBLADOR VENTAJAS 1. .- Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el ms cercano a la mquina la computadora lo procesa ms rpido. 2. Eficiencia de tamao .- Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan libreras y dems como son los lenguajes de alto nivel. 3. Flexibilidad .- Es flexible porque todo lo que puede hacerse con una mquina, puede hacerse en el lenguaje ensamblador de esta mquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al mximo los recursos de la mquina. O sea que en lenguaje ensamblador se pueden hacer tareas especficas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 8

Instituto Tecnolgico Superior de Informtica Ibarra


DESVENTAJAS Tiempo de programacin .- Como es un lenguaje de bajo nivel requiere ms instrucciones para realizar el mismo proceso, en comparacin con un lenguaje de alto nivel. Por otro lado, requiere de ms cuidado por parte del programador, pues es propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin. Programas fuente grandes .- Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos ms instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores. Peligro de afectar recursos inesperadamente .- Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la mquina, programar en este lenguaje lo ms comn que pueda pasar es que la mquina se bloquee o se reinicialice. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones invlidas, que normalmente no aparecen al usar un lenguaje de alto nivel. Falta de portabilidad.- Porque para cada mquina existe un lenguaje ensamblador; por ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos codificar en una mquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. REGISTROS INTERNOS DE LA UNIDAD CENTRAL DE PROCESO (UCP): La UCP o CPU tiene 14 registros internos, cada uno de ellos de 16 bits (una palabra). Los bits estn enumerados de derecha a izquierda, de tal modo que el bit menos significativo es el bit 0. Los registros se pueden clasificar de la siguiente forma: Registros de datos: AX: Registro acumulador. Es el principal empleado en las operaciones aritmticas. BX: Registro base. Se usa para indicar un desplazamiento.
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 9

Instituto Tecnolgico Superior de Informtica Ibarra


CX: Registro contador. Se usa como contador en los bucles. DX: Registro de datos. Tambin se usa en las operaciones aritmticas. Estos registros son de uso general y tambin pueden ser utilizados como registros de 8 bits, para utilizarlos como tales es necesario referirse a ellos como por ejemplo: AH y AL, que son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura es aplicable tambin a los registros BX, CX y DX.

Registros de segmentos: CS: Registro de segmento de cdigo. Contiene la direccin de las instrucciones del programa. DS: Registro segmento de datos. Contiene la direccin del rea de memoria donde se encuentran los datos del programa. SS: Registro segmento de pila. Contiene la direccin del segmento de pila. La pila es un espacio de memoria temporal que se usa para almacenar valores de 16 bits (palabras). ES: Registro segmento extra. Contiene la direccin del segmento extra. Se trata de un segmento de datos adicional que se utiliza para superar la limitacin de los 64Kb del segmento de datos y para hacer transferencias de datos entre segmentos.

Registros punteros de pila: SP: Puntero de la pila. Contiene la direccin relativa al segmento de la pila. BP: Puntero base. Se utiliza para fijar el puntero de pila y as poder acceder a los elementos de la pila.
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 10

Instituto Tecnolgico Superior de Informtica Ibarra


Registros ndices: SI: ndice fuente. DI: ndice destino. Puntero de instrucciones: IP: Registro puntero de instruccin o contador de programa (PC). Contiene el desplazamiento de la siguiente instruccin a ejecutar respecto al segmento de cdigo en ejecucin. Por lo tanto, la direccin completa de la siguiente instruccin sera CS:IP. La nica forma de influir en este registro es de forma indirecta mediante instrucciones de bifurcacin. Registro de banderas (flags): Cada bandera es un bit y se usa para registrar la informacin de estado y de control de las operaciones del microprocesador. Hay nueve banderas (los 7 bits restantes no se utilizan): Banderas de estado: Registran el estado del procesador, normalmente asociado a una comparacin o a una instruccin aritmtica. CF: Bandera de acareo. OF: Bandera de desbordamiento (aritmtico). ZF: Bandera de resultado 0 o comparacin igual. SF: Bandera de resultado o comparacin negativa. PF: Bandera de paridad (nmero par de bits). AF: Bandera auxiliar. Indica si hay necesidad de ajuste en las operaciones aritmticas con nmeros BCD.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 11

Instituto Tecnolgico Superior de Informtica Ibarra


Banderas de control: DF: Bandera de direccin. Controla la direccin de las operaciones con cadenas de caracteres incrementando o excrementando automticamente los registros ndices (SI y DI) IF: Bandera de interrupciones. Indica si estn permitidas o no las interrupciones de los dispositivos externos. TF: Bandera de atrape. Controla la operacin de modo paso a paso (usada por el programa DEBUG). SEGMENTOS Y REGISTROS ASOCIADOS: La arquitectura de los procesadores x86 obliga al uso de segmentos de memoria para manejar la informacin, el tamao de estos segmentos es de 64kb. La razn de ser de estos segmentos es que, considerando que el tamao mximo de un nmero que puede manejar el procesador est dado por una palabra de 16 bits o registro, no sera posible accesar a ms de 65536 localidades de memoria utilizando uno solo de estos registros, ahora, si se divide la memoria de la pc en grupos o segmentos, cada uno de 65536 localidades, y utilizamos una direccin en un registro exclusivo para localizar cada segmento, y entonces cada direccin de una casilla especfica la formamos con dos registros, nos es posible acceder a una cantidad de 4294967296 bytes de memoria, lo cual es, en la actualidad, ms memoria de la que veremos instalada en una PC. Para que el ensamblador pueda manejar los datos es necesario que cada dato o instruccin se encuentren localizados en el rea que corresponde a sus respectivos segmentos. El ensamblador accede a esta informacin tomando en cuenta la localizacin del segmento, dada por los registros DS, ES, SS y CS, y dentro de dicho registro la direccin del dato especfico. Es por ello que cuando creamos un programa empleando el Debug en cada lnea que vamos ensamblando aparece algo parecido a lo siguiente:
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 12

Instituto Tecnolgico Superior de Informtica Ibarra


1CB0:0102 MOV AX, BX En donde el primer nmero, 1CB0, corresponde al segmento de memoria que se est utilizando, el segundo se refiere la direccin dentro de dicho segmento, y a continuacin aparecen las instrucciones que se almacenaran a partir de esa direccin. La forma de indicarle al ensamblador con cuales de los segmentos se va a trabajar es por medio de las directivas .CODE, .DATA y .STACK. El ensamblador se encarga de ajustar el tamao de los segmentos tomando como base el nmero de bytes que necesita cada instruccin que va ensamblando, ya que sera un desperdicio de memoria utilizar los segmentos completos. Por ejemplo, si un programa nicamente necesita 10kb para almacenar los datos, el segmento de datos nicamente ser de 10kb y no de los 64kb que puede manejar. Un programa consta de 4 tipos de segmentos. Cada segmento se direcciona mediante un determinado tipo de registro de segmento: Segmento cdigo: Cada instruccin se direcciona mediante el registro segmento de cdigo y el registro de desplazamiento IP, CS: IP. Segmento de datos: Los datos de direccionan mediante el registro de segmento de dato y un registro de desplazamiento (BX, SI o DI), por ejemplo DS: BX. Segmento de pila: Los datos se direccionan mediante el registro segmento de pila y un registro de desplazamiento (SP o BP), por ejemplo SS: SP. Segmento extra: Igual que el de datos, sustituyendo el registro de segmento, por ejemplo ES: BX.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 13

Instituto Tecnolgico Superior de Informtica Ibarra


SOFTWARE NECESARIO: Para poder crear un programa se requieren varias herramientas: Primero un editor para crear el programa fuente. Segundo un compilador (Turbo Assembler) que no es ms que un programa que "traduce" el programa fuente a un programa objeto. Y tercero un enlazador (Turbo Linker), que genere el programa ejecutable a partir del programa objeto. El editor puede ser cualquier editor de textos que se tenga a la mano, como compilador utilizaremos el programa Turbo Assembler (TASM), y como enlazador utilizaremos el Turbo Link (TLINK). La extensin usada para que el TASM reconozca los programas fuente en ensamblador es .ASM, una vez traducido el programa fuente, el TASM crea un archivo con la extensin .OBJ, este archivo contiene un "formato intermedio" del programa, llamado as porque an no es ejecutable pero tampoco es ya un programa en lenguaje fuente. El enlazador genera, a partir de un archivo .OBJ o la combinacin de varios de estos archivos, un programa ejecutable, cuya extensin es .EXE.

LA ESTRUCTURA DEL ENSAMBLADOR: En el lenguaje ensamblador las lneas de cdigo constan de dos partes, la primera es el nombre de la instruccin que se va a ejecutar y la segunda son los parmetros del comando u operando. Por ejemplo: ADD ah bh Aqu "ADD" es el comando a ejecutar (en este caso una adicin o suma) y tanto "ah" como "bh" son los parmetros. El nombre de las instrucciones en este lenguaje puede estar formado de 2 a 6 letras, a estas instrucciones tambin se les llama nombres
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 14

Instituto Tecnolgico Superior de Informtica Ibarra


mnemnicos o cdigos de operacin, ya que representan alguna funcin que habr de realizar el procesador. Existen algunos comandos que no requieren parmetros para su operacin, as como otros que requieren solo un parmetro. Algunas veces se utilizarn las instrucciones como sigue: ADD al,[170] Los corchetes en el segundo parmetro nos indican que vamos a trabajar con el contenido de la casilla de memoria nmero 170 y no con el valor 170, a esto se le conoce como direccionamiento directo (en la instruccin viene la direccin del objeto). ESTRUCTURA Estas sentencias dirigen el proceso de compilacin o construccin del programa ejecutable. No generan cdigo ejecutable. Normalmente se utilizan para aumentar la legibilidad del cdigo fuente. El fichero creado con todas las sentencias que constituyen un programa se denomina fichero fuente. Este tipo de fichero tiene formato ASCII. Se recomienda que el fichero de cdigo fuente tenga por extensin .ens. El fichero fuente se compila utilizando el programa ensamblador. El programa ensamblador generar un nuevo fichero, denominado fichero ejecutable, de igual nombre y de extensin .eje. Este fichero tiene formato ASCII y contiene el cdigo mquina de las instrucciones que componen el programa, as como cierta informacin adicional para realizar la carga del programa en el simulador del computador elemental. Estructura de un fichero en lenguaje ensamblador Los ficheros de cdigo fuente escritos en lenguaje ensamblador se organizan en lneas. Cada una de las lneas del fichero puede contener
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 15

Instituto Tecnolgico Superior de Informtica Ibarra


una directiva, una instruccin o ambas cosas a la vez en los casos en que sea posible. El carcter separador de lneas es el retorno de carro, por lo que una instruccin no podr ocupar ms de una lnea en el fichero fuente. Todos los ficheros fuente tienen que adecuarse a una estructura fija dividida en secciones. La estructura a seguir se muestra a continuacin: Escala EQU 1000 ; Definicin de constantes simblicas ORIGEN 7F40h ; Definicin del origen de carga del programa INICIO int ; Definicin de la etiqueta que marca la ; Primera instruccin a ejecutar del programa .PILA 100h ; Definicin de la pila .DATOS ; Definicin de los datos del programa Dato1 VALOR 12h .CODIGO ; Definicin del cdigo del programa INI: MOV R5, R4 FIN ESTRUCTURA

TITLE p04asm1 (EXE) operaciones de mover y sumar ;----------------------------------------------------STACKSG SEGMENT PARA STACK Stack DW 32 DUP(0) STACKSG ENDS ;----------------------------------------------------DATASG SEGMENT PARA Data FLDA DW 250 FLDB DW 125 FLDC DW ? DATASG ENDS
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 16

Instituto Tecnolgico Superior de Informtica Ibarra


;----------------------------------------------------CODESG SEGMENT PARA Code BEGIN PROC FAR ASSUME SS:STACKSG,DS:DATASG, CS:CODESG MOV AX,DATASG ; SE ASIGNA DIRECCION DE DATASG MOV DS,AX ; EN REGISTRO DS MOV AX,FLDA ; MOVER 0250 A AX ADD AX,FLDB ; SUMAR 0125 A AX MOV FLDC,AX ; ALMACENAR SUMA EN FLDC MOV AX,4C00H ; SALIDA A DOS INT 21H BEGIN ENDP ; FIN DE PROCEDIMIENTO CODESG ENDS ; FIN DE SEGMENTO END BEGIN ; FIN DE PROGRAMA De todas las secciones posibles que pueden formar parte de una programa en lenguaje ensamblador, slo ser obligatoria la seccin de definicin del cdigo del programa. Todas las dems secciones sern opcionales pudiendo estar presentes o no. Si aparece alguna de las secciones del esquema, tendr que estar colocada en el orden indicado.

TCNICAS DE CODIFICACIN EN ENSAMBLADOR: En ensamblador los bucle, condicionales, subrutinas y dems elementos se codifica de forma distinta de cmo se hace en otros lenguajes de alto nivel. A continuacin describiremos algunas tcnicas tiles para codificar las estructuras ms usuales.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 17

Instituto Tecnolgico Superior de Informtica Ibarra


BUCLES: Inicializacin de un registro(a modo de contador) al n de vueltas del bucle Etiqueta: Primera instruccin del bucle <Resto de instrucciones dentro del bucle> decrementar el contador saltar a la etiqueta si el contador es mayor que cero <Instrucciones fuera del bucle> SALTOS CONDICIONALES: Instruccin de comparacin Evaluar condicin y si se cumple saltar a la etiqueta prefijada <Instrucciones para el caso de no cumplirse la condicin> saltar fuera del condicional MACROS: Declaracin: <nombre de la macro> MACRO <instrucciones de la macro> ENDM

Llamada: <nombre de la macro> SUBRUTINAS:

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 18

Instituto Tecnolgico Superior de Informtica Ibarra


Declaracin: <nombre la de subrutina> PROC <instrucciones de la subrutina> RET <nombre de la subrutina> ENDP Llamada: CALL <nombre de la subrutina> INTERRUPCIONES: Definicin de interrupcin: Una interrupcin es una instruccin que detiene la ejecucin de un programa para permitir el uso de la UCP a un proceso prioritario. Una vez concluido este ltimo proceso se devuelve el control a la aplicacin anterior. Por ejemplo, cuando estamos trabajando con un procesador de palabras y en ese momento llega un aviso de uno de los puertos de comunicaciones, se detiene temporalmente la aplicacin que estbamos utilizando para permitir el uso del procesador al manejo de la informacin que est legando en ese momento. Una vez terminada la transferencia de informacin se reanudan las funciones normales del procesador de palabras. Las interrupciones ocurren muy seguido, sencillamente la interrupcin que actualiza la hora del da ocurre aproximadamente 18 veces por segundo. Para lograr administrar todas estas interrupciones, la computadora cuenta con un espacio de memoria, llamado memoria baja, donde se almacenan las direcciones de cierta localidad de memoria donde se encuentran un juego de instrucciones que la UCP ejecutar para despus regresar a la aplicacin en proceso.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 19

Instituto Tecnolgico Superior de Informtica Ibarra


La sentencia para usar una interrupcin en ensamblador es INT nmero. En el programa anterior hicimos uso de la interrupcin nmero 21h para llamar a DOS. A continuacin describiremos los 3 tipos de interrupciones: INTERRUPCIONES INTERNAS DE HARDWARE: Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecucin de un programa. Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas. Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupcin varias veces durante un segundo para mantener la hora actualizada. Aunque no podemos manejar directamente esta interrupcin (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un "reloj virtual" actualizado continuamente gracias al contador del reloj interno. nicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario. INTERRUPCIONES EXTERNAS DE HARDWARE: Las interrupciones externas las generan los dispositivos perifricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. Tambin son generadas por los coprocesadores. No es posible desactivar a las interrupciones externas. Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya funcin es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vas de comunicacin llamadas puertos.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 20

Instituto Tecnolgico Superior de Informtica Ibarra


INTERRUPCIONES DE SOFTWARE: Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al nmero de interrupcin deseada con la instruccin INT. El uso de las interrupciones nos ayuda en la creacin de programas, utilizndolas nuestros programas son ms cortos, es ms fcil entenderlos y usualmente tienen un mejor desempeo debido en gran parte a su menor tamao. Este tipo de interrupciones podemos separarlas en dos categoras: las interrupciones del sistema operativo DOS y las interrupciones del BIOS. La diferencia entre ambas es que las interrupciones del sistema operativo son ms fciles de usar pero tambin son ms lentas ya que estas interrupciones hacen uso del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho ms rpidas pero tienen la desventaja que, como son parte del hardware son muy especficas y pueden variar dependiendo incluso de la marca del fabricante del circuito. La eleccin del tipo de interrupcin a utilizar depender nicamente de las caractersticas que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS). INTERRUPCIN 21H Propsito: Llamar a diversas funciones del DOS. Sintaxis: Int 21H Nota: Cuando trabajamos en TASM es necesario especificar que el valor que estamos utilizando es hexadecimal. Esta interrupcin tiene varias funciones, para acceder a cada una de ellas es necesario que el registro AH se encuentre el nmero de funcin que se requiera al momento de llamar a la interrupcin.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 21

Instituto Tecnolgico Superior de Informtica Ibarra


SALTOS, CICLOS Y PROCEDIEMIENTOS: Los saltos incondicionales en un programa escrito en lenguaje ensamblador estn dados por la instruccin JMP, un salto es alterar el flujo de la ejecucin de un programa enviando el control a la direccin indicada. Un ciclo, conocido tambin como iteracin o bucle, es la repeticin de un proceso un cierto nmero de veces hasta que alguna condicin se cumpla. En estos ciclos se utilizan los bifurcaciones "condicionales" basados en el estado de las banderas. Por ejemplo la instruccin JNZ que salta solamente si el resultado de una operacin es diferente de cero y la instruccin JZ que salta si el resultado de la operacin es cero. Por ltimo tenemos los procedimientos o rutinas, que son una serie de pasos que se usarn repetidamente en el programa y en lugar de escribir todo el conjunto de pasos nicamente se les llama por medio de la instruccin CALL. Un procedimiento en ensamblador es aquel que inicie con la palabra PROC y termine con la palabra RET (ya explicado anteriormente). Realmente lo que sucede con el uso de la instruccin call es que se guarda en la pila el registro IP y se carga la direccin del procedimiento en el mismo registro, conociendo que IP contiene la localizacin de la siguiente instruccin que ejecutara la UCP, entonces podemos darnos cuenta que se desva el flujo del programa hacia la direccin especificada en este registro. Al momento en que se llega a la palabra ret se saca de la pila el valor de IP con lo que se devuelve el control al punto del programa donde se invoc al procedimiento. Es posible llamar a un procedimiento que se encuentre ubicado en otro segmento, para esto el contenido de CS (que nos indica que segmento se est utilizando) es empujado tambin en la pila.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 22

Instituto Tecnolgico Superior de Informtica Ibarra


MOVIENTO DE LOS DATOS: En todo programa es necesario mover datos en la memoria y en los registros de la UCP; existen diversas formas de hacer esto: puede copiar datos de la memoria a algn registro, de registro a registro, de un registro a una pila, de la pila a un registro, transmitir datos hacia dispositivos externos as como recibir datos de dichos dispositivos. Este movimiento de datos est sujeto a reglas y restricciones. Algunas de ellas son las que se citan a continuacin. No es posible mover datos de una localidad de memoria a otra directamente, es necesario primero mover los datos de la localidad origen hacia un registro y luego del registro a la localidad destino. No se puede mover una constante directamente a un registro de segmentos, primero se debe mover a un registro de la UCP. Es posible mover bloques de datos por medio de las instrucciones movs, que copia una cadena de bytes o palabras; movsb que copia n bytes de una localidad a otra; y movsw copia n palabras de una localidad a otra. Las dos ltimas instrucciones toman los valores de las direcciones definidas por DS: SI como grupo de datos a mover y ES: DI como nueva localizacin de los datos. Para mover los datos tambin existen las estructuras llamadas pilas, en este tipo de estructuras los datos se introducen con la instruccin PUSH y se extraen con la instruccin POP. En una pila el primer dato introducido es el ltimo que podemos sacar, esto es, si en nuestro programa utilizamos las instrucciones: PUSH AX PUSH BX PUSH CX Para devolver los valores correctos a cada registro al momento de sacarlos de la pila es necesario hacerlo en el siguiente orden: POP CX
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 23

Instituto Tecnolgico Superior de Informtica Ibarra


POP BX POP AX Para la comunicacin con dispositivos externos se utilizan el comando out para mandar informacin a un puerto y el comando in para leer informacin recibida desde algn puerto. LA SINTAXIS DEL COMANDO OUT ES: OUT DX, AX Donde DX contiene el valor del puerto que se utilizar para la comunicacin y AX contiene la informacin que se mandar. La sintaxis del comando in es: IN AX, DX Donde AX es el registro donde se guardar la informacin que llegue y DX contiene la direccin del puerto por donde llegar la informacin. A continuacin nos centraremos con la instruccin MOV, ya que es la ms empleada para hacer transferencias de datos. INSTRUCCIN MOV: Propsito: Transferencia de datos entre celdas de memoria, registros y acumulador. Sintaxis: MOV Destino, Fuente Donde Destino es el lugar a donde se movern los datos y fuente es el lugar donde se encuentran dichos datos. Los diferentes movimientos de datos permitidos para esta instruccin son: Destino: memoria. Fuente: acumulador Destino: acumulador. Fuente: memoria
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 24

Instituto Tecnolgico Superior de Informtica Ibarra


Destino: registro de segmento. Fuente: memoria/registro Destino: memoria/registro. Fuente: registro de segmento Destino: registro. Fuente: registro Destino: registro. Fuente: memoria Destino: memoria. Fuente: registro Destino: registro. Fuente: dato inmediato Destino: memoria. Fuente: dato inmediato Ejemplo: MOV AX,0006h MOV BX,AX MOV AH,4Ch INT 21H Este pequeo programa mueve el valor 0006H al registro AX, luego mueve el contenido de AX (0006h) al registro BX, por ltimo mueve el valor 4Ch al semiregistro AH (parte alta del registro de datos AX) para terminar la ejecucin con la opcin 4C de la interrupcin 21h. OPERACIONES LGICAS Y ARITMTICAS: Las instrucciones de las operaciones lgicas son: AND, NOT, OR y XOR, stas trabajan sobre los bits de sus operando. Para verificar el resultado de operaciones recurrimos a la instruccin CMP. Las instrucciones utilizadas para las operaciones algebraicas son: para sumar ADD, para restar SUB, para multiplicar MUL y para dividir DIV. Casi todas las instrucciones de comparacin estn basadas en la informacin contenida en el registro de banderas. Normalmente las
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 25

Instituto Tecnolgico Superior de Informtica Ibarra


banderas de este registro que pueden ser directamente manipuladas por el programador son la bandera de direccin de datos DF, usada para definir las operaciones sobre cadenas. Otra que tambin puede ser manipulada es la bandera IF por medio de las instrucciones STI y CLI, para activar y desactivar respectivamente las interrupciones. A continuacin explicaremos brevemente las instrucciones aritmticas y lgicas por separado: OPERACIONES ARITMTICAS: Las operaciones en aritmtica binaria a entera permiten a la CPU realizar clculos con nmeros enteros positivos y negativos con una representacin en complemento a 2. NEG operando: cambia el signo del operando. Equivaldra al NOT del nmero y le sumara 1. ADD destino, fuente: destino = destino + fuente. ADC destino, fuente: destino = destino + fuente + carry (acarreo). SUB destino, fuente: destino = destino - fuente. SBB destino, fuente: destino = destino - (fuente + acarreo). MUL operando: multiplica sin considerar el signo. Multipli ca el acumulador {AL} o {AX}por el operando fuente. Si el operando fuente es de tipo byte, el resultado se almacena en AX y si es de tipo palabra el resultado se almacena en AX la parte inferior y en DX la palabra superior. Si tipo fuente = byte: AX = AL * fuente (multiplicacin sin signo) Si tipo fuente = palabra:
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 26

Instituto Tecnolgico Superior de Informtica Ibarra


DX, AX = AX * fuente (multiplicacin sin signo) Si mitad superior (CF: acarreo) del resultado = 0 En CC CF = 1 IMUL operando: multiplica considerando el signo. DIV operando: divide sin considerar el signo, un nmero contenido en el acumulador entre el operando fuente. El cociente se almacena en el acumulador. El resto se almacena en la extensin del acumulador. Si la extensin de AX ser DX (que ocurrir cuando sea de tipo palabra), la operacin y la extensin de AL ser AH. AX AX AL DX IDIV operando: igual que el DIV pero considerando el signo. CBW: pasa de byte a palabra el contenido del acumulador. CWD: pasa de palabra a doble palabra el contenido del acumulador. INC destino: incrementa el destino. DEC destino: decrementa el destino.

OPERACIONES LGICAS: Se usan para realizar operaciones a nivel de bits. NOT operando: cambia los bits 1 por 0 y viceversa y de vuelve el resultado en el mismo operando. AL = F2h AL 1111 0010
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 27

Instituto Tecnolgico Superior de Informtica Ibarra


NOT AL; NOT AL 0000 1101 = Odh OR destino, fuente: operacin o lgico inclusivo. El resultado se almacena en destino. AX = FEDCh= 1111 1110 1101 1100 BX = 1234 h = 0001 0010 0011 0100 OR AX, BX 1111 1110 1111 1100 = FEFC h AND destino, fuente: la operacin Y lgica entre 2 operandos, el resultado se deja en destino. AX = FEDC h 1111 1110 1101 1100 BX = 1234 h 0001 0010 0011 0100 ADD AX, BX 0001 0010 0001 0100 = 1214 h XOR destino, fuente: la operacin o lgico exclusiva; el resultado se deja en destino. AX = FEDC h 1111 1110 1101 1100 BX = 1234 h 0001 0010 0011 0100 XOR AX, BX 1110 1100 1110 1000 = ECE8 h 11 APENDICE 1- INTERRUPCIONES. DIRECCION INTERRUPCION FUNCION (hex) (hex) 0-3 0 Division by zero 4-7 1 Single step trace

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 28

Instituto Tecnolgico Superior de Informtica Ibarra


8-B 2 Non maskable interrupt C-F 3 Break point instruction 10-13 4 Overflow 14-17 5 Print screen 18-1F 6,7 Reserved 20-23 8 Timer 24-27 9 Keyboard interrupt 28-37 A,B,C,D Reserved 38-3B E Diskette interrupt 3C-3F F Reserved 40-43 10 Video screen I/O 44-47 11 Equipment check 48-4B 12 Memory size check 4C-4F 13 Diskette I/O 50-53 14 Communication I/O 54-57 15 Cassette I/O 58-5B 16 Keyboard input 5C-5F 17 Printer Output 60-63 18 ROM Basic entry code 64-67 19 Bootstrap loader 68-6B 1A Time of day

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 29

Instituto Tecnolgico Superior de Informtica Ibarra


6C-6F 1B Get control on keyboard break 70-73 1C Get control on timer interrupt 74-77 1D Pointer to video initialization table 78-7B 1E Pointer to diskette parameter table 7C-7F 1F Pointer to table for graphics characters ASCII 128-255 80-83 20 DOS program terminate 84-87 21 DOS function call 88-8B 22 DOS terminate address 90-93 24 DOS fatal error vector 94-97 25 DOS absolute disk read 98-9B 26 DOS absolute disk write 9C-9F 27 DOS terminate, fix in storage A0-FF 28-3F Reserved for DOS 100-1FF 40-7F Not used 200-217 80-85 Reserved by BASIC 218-3C3 86-F0 Used by BASIC interpreter 3C4-3FF F1-FF Not Used

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 30

Instituto Tecnolgico Superior de Informtica Ibarra


JUEGO DE INSTRUCCIONES DEL 8086. En la siguiente lista de instrucciones, para la descripcin y su sintaxis se recurre a las siguientes abreviaturas: acum uno de los acumuladores: AX o AL. reg cualquiera de los registros segreg uno de los registros de segmento r/m uno de los operandos generales: registro, memoria, basado, indexado o basado-indexado inmed constante o smbolo de 8 o 16 bits mem un operando de memoria: smbolo, etiqueta, variable. etiqueta etiqueta de instrucciones. src fuente en operaciones de cadena dest destino en operaciones de cadena. 8086 AAA Ajuste ASCII para adicin. AAD Ajuste ASCII para divisin. AAM Ajuste ASCII para multiplicacin. AAS Ajuste ASCII para divisin. ADC acum, inmed Suma con acarreo. r/m,inmed r/m, reg
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 31

Instituto Tecnolgico Superior de Informtica Ibarra


reg, r/m ADD acum,inmed Suma. r/m,inmed r/m, reg reg, r/m AND acum,inmed Operacin AND a nivel bit. r/m,inmed r/m, reg reg, r/m CALL etiqueta Llamado. r/m CBW Convierte byte apalabra. CLC Limpia bandera de acarreo. CLD Limpia bandera de direccin. CLI Limpia bandera de interrupcin. CMC Complementa bandera de acarreo. CMP acum,inmed Comparacin r/m,inmed r/m, reg reg, r/m CMPS src,dest Comparacin de cadenas.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 32

Instituto Tecnolgico Superior de Informtica Ibarra


CMPSB Compara cadenas byte por byte. CMPSW Compara cadenas palabra por palabra. CWD Convierte palabra a palabra doble. 13 DAA Ajuste decimal para adicin. DAS Ajuste decimal para substraccin. DEC r/m Decremento. reg DIV r/m Divisin. ESC inmed, r/m Escape con 6 bits. HLT Alto. IDIV r/m Divisin entera. IMUL r/m Mutiplicacin entera. IN accum,inmed Entrada desde puerto. acum, DX INC r/m Incremento. reg INT3 Interrupcin3 codificada como un byte. INT inmed Interrupcin0-255. INTO Interrupcin en overflow. IRET Retorno de interrupcin.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 33

Instituto Tecnolgico Superior de Informtica Ibarra


JMP etiqueta Brinco incondicional. r/m J(condicin)etiqueta Brinca de acuerdo a las condiciones: A (arriba), AE (arriba o igual), B (siguiente), BE (siguiente o igual), C(acarreo), CXZ (CX en cero), E (igual), G (mayor), GE (mayor o igual), L (menor), LE (menor o igual), NA (no anterior), NAE (no anterior o igual), NB (no siguiente), NBE(no siguiente o igual), NC (no acarreo), NE (no igual), NG(no mayor), NGE (no mayor o igual), NL (no menor), NLE (no menor o igual), NO(no sobreflujo), NP (no paridad), NS (no signo), NZ (no cero), O(sobreflujo), P (paridad), PE(paridad par), PO (paridad impar), S (signo), Z (cero). LAHF Carga AH con las banderas. LDS r/m Carga DS. LEA r/m Carga la direccin. LES r/m Carga ES. LOCK Cierra bus. LODS src Carga cadena. LODSB Carga byte de cadena en AL. LODSW Carga palabra de la cadena en AX. LOOP etiqueta Ciclo.
Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ Pgina 34

Instituto Tecnolgico Superior de Informtica Ibarra


LOOPE etiqueta Ciclo mientras igual. LOOPNE etiqueta Ciclo mientras no igual. LOOPNZ etiqueta Ciclo mientras no cero. LOOPZ etiqueta Ciclo mientras cero. MOV acum,mem Mueve un valor del segundo al primer operando r/m,inmed mem, acum r/m, reg r/m,segreg reg, inmed reg,r/m segreg,r/m MOVS dest, src Mueve cadena. 14 MOVSB Mueve cadena byte por byte. MOVSW Mueve cadena palabra por palabra. MUL r/m Multiplicacin. NEG r/m Niega(complemento a 2). NOP Operacin ociosa. NOT r/m Invierte valores de bits (complemento a 1). OR acum, inmed Operacin OR a nivel de bit.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 35

Instituto Tecnolgico Superior de Informtica Ibarra


r/m,inmed r/m, reg reg,r/m OUTDX, accum Salida por el puerto dado por el primer operando. inmed, acum (inmediato de 8 bits) POP r/m Recupera valor de la pila. reg segreg POPF Recupera banderas. PUSH r/m Guarda valor en la pila. reg segreg PUSHF Guarda banderas. RCL r/m,1 Rotacin a la izquierda con acarreo. r/m,CL RCR r/m, 1 Rotacin a la derecha con acarreo. r/m, CL REP Repite. REPE Repite si igual. REPNE Repite si no igual. REPNZ Repite si no cero.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 36

Instituto Tecnolgico Superior de Informtica Ibarra


REPZ Repite si cero. RET [inmed] Regresa despus de recuperar bytes de la pila. ROL r/m,1 Rotacin a la izquierda. r/m, CL ROR r/m,1 Rotacin a la derecha. r/m, CL SAHF Carga banderas con el valor de AH. SAL r/m, 1 Desplazamiento aritmtico a la izquierda. r/m, CL SAR r/m, 1 Desplazamiento aritmtico a la derecha. r/m, CL SBB acum, inmed Substraccin con acarreo. r/m,inmed r/m, reg reg,r/m SCAS dest Explora cadena. SCASB Explora cadena para el byte en AL. SCASW Explora cadena por la palabra en AX. SHL r/m, 1 Desplazamiento a la izquierda. r/m, CL SHR r/m, 1 Desplazamiento a la derecha.

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 37

Instituto Tecnolgico Superior de Informtica Ibarra


15 r/m, CL STC Fija bandera de acarreo. STD Fija bandera de direccin. STI Fija bandera de interrupcin. STOS dest Guarda cadena. STOSB Guarda byte en AL en la cadena. STOSW Guarda palabra en AX en la cadena. SUB accum, inmed Substraccin. r/m,inmed r/m, reg reg,r/m TEST acum, inmed Comparacin. r/m,inmed r/m, reg reg,r/m WAIT Aguarda. XCHG acum, reg Intercambio. r/m,inmed r/m, reg reg,r/m

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 38

Instituto Tecnolgico Superior de Informtica Ibarra


XLAT Traduce. XOR acum, reg Operacin XOR a nivel bit. r/m,inmed r/m, reg reg,r/m

FUENTES DE CONSULTA
http://www.ganimides.ucm.cl/rcofre/manual2-8086.pdf http://www.google.com/ http://es.wikipedia.org/wiki/Ensamblador http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblador/68HC11.html http://www.monografias.com/trabajos/ensamblador/ensamblador.shtml http://usuarios.multimania.es/patricio/ensam/ensam1.htm http://foro.elhacker.net/asm/tutorial_asm_basico_ejemplos-t102701.0.html#ixzz1GbtWqKBS

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 39

Instituto Tecnolgico Superior de Informtica Ibarra


EJERCICIOS EJERCICIO PARA LA SUMA DE DOS NMEROS

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 40

Instituto Tecnolgico Superior de Informtica Ibarra

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 41

Instituto Tecnolgico Superior de Informtica Ibarra


EJERCICIO PARA RESTAR DOS NUMEROS

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 42

Instituto Tecnolgico Superior de Informtica Ibarra


EJERCICIO PARA MULTIPLICAR DOS NUMEROS

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 43

Instituto Tecnolgico Superior de Informtica Ibarra


EJERCICIO PARA DIVIDIR DOS NUMEROS

Realizado por: JENNIFER PREZ Y MERCEDES ENRQUEZ

Pgina 44

También podría gustarte