Manual de Practicas de Ensamblador1

download Manual de Practicas de Ensamblador1

of 74

Transcript of Manual de Practicas de Ensamblador1

  • TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    1

    MANUAL DE PRCTICAS DE LENGUAJE ENSAMBLADOR

    OOBBJJEETTIIVVOO GGEENNEERRAALL:: Que el alumno, al trmino de todas las actividades sea capaz de utilizar el Manual de prcticas para la

    Materia de Lenguaje de Interfaz que permita fortalecer los conocimientos sobre este lenguaje de programacin, los cuales sern presentados de menor a mayor grado de dificultad, con la finalidad de crearle un mayor inters y permita aprender el correcto uso de cada una de las instrucciones de que est compuesto, corroborar la sintaxis y utilidad al ejecutar las prcticas propuestas. Esperando que el alumno sea capaz de experimentar con nuevas rutinas que le permitir solucionar de una forma ms fcil los retos que se le presenten en el control de lel ordenador y los perifricos estandarizados o no.

    SSIIGGNNIIFFIICCAADDOOSS::

    Lenguaje Ensamblador: Es un lenguaje simblico que permite programacin a bajo nivel, lo cual proporciona control total del

    hardware y software de un sistema de cmputo atreves de un conjunto de mnemnicos.

    Un ensamblador es una aplicacin de sistema que se encarga de traducir un archivo fuente escrito con mnemnicos, a un archivo objeto que contiene cdigo mquina, ejecutable directamente por la mquina para la que se ha generado.

    Tipos de ensambladores:

    Ensambladores bsicos. Son de muy bajo nivel y su tarea consiste bsicamente en ofrecer nombres simblicos a las distintas instrucciones (mnemnicos) de la mquina apropiada, adems de ofrecer un formato de escritura cmodo para expresar los 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 macro instruccines (o simplemente, macros). Cuando invocamos a una macro, sta se expande al cuerpo que haigamos definido.

    Ensambladores modulares 32-bits. Pueden ser de alto y bajo nivel, pero solo emulado en 32-

    bits. Microsoft an esta reproduciendo el Microsoft Macro Assembler, es reproducido por un paquete preparado. El ml 6.14 emula poderosos compilados en 32-bits, su sintaxis es mezcla de: C API, ensamblador, y macros. HLA High-Level Assembler, es un lenguaje poderoso que soporta de bajo y alto- nivel pero solo en 32-bits. High-Level Assembler traducido a "Ensamblador de Nivel-Alto. Tiene un libro popular llamado "AOA" Art of Assembly Language traducido a "Arte del Lenguaje Ensamblador". Tambien tiene fama de usar macros como los de masm.

    PRCTICA No. 1 NOMBRE: Introduccin OBJETIVO:

    - Que el alumno ubique los elementos y dispositivos que se encuentran dentro de un gabinete.

    INTRODUCCIN: Los elementos que podemos encontrar dentro de un gabinete son los siguientes:

    Fuente de poder AT, ATX; con voltajes de 6, 12 y 3.3.

    Unidades de disco e interfaces

    En el mundo del PC hay dos grandes estndares, IDE y SCSI, aunque el primero est mucho ms extendido que el segundo, la tecnologa SCSI est presente en otras muchas plataformas, como los Mac , sistemas Unix, AS/400, etc... Disco fijo, disco removible. Con conectores ATA,ULTRA ATA, SCSI.

  • TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Ing. J. D. Aurelio Rico Daz Pgina 2

    Tarjeta madre

    Modulos de puertos Los ordenadores personales actuales conservan prcticamente todos los puertos heredados desde que se dise el primer PC de IBM. Por razones de compatibilidad an se mantienen este tipo de puertos, pero poco a poco irn apareciendo nuevas mquinas en las que no tengan los tpicos conectores serie (DB9), paralelo(DB25), teclado(DIN), Video, etc... y en su lugar slo encontraremos puertos USB, RJ45, RJ11 e Infrarrojo.

    Memoria MemoriaCach Todas las tarjetas madre Pentium deben tener en ellas un cach de Nivel 2, de 256 a 512 Kb. Memoria RAM Todas las tarjetas madre Pentium y Pentium Pro deben emplear ya sea SIMMs (Modulo sencillo de memoria en lnea) de 72 pins o bien DIMMs(Mdulo Dual de Memoria en lneas) de 168 pins. Debido al diseo de 64 bits de estas tarjetas, los SIMMs de 72 pins deben instalarse por pares, mientras que los DIMMs se instalan uno a la ves uno por banco de 64 bits. Considere con cuidado la cantidad total de memoria que puede manejar la tarjeta. Mientras que se considera que 16 Mb son apenas el mnimo para las aplicaciones consumidoras de memorias de hoy en da, en realidad podra requerir mucho ms. Las tarjetas madre Pentium deben de manejar un mnimo de 128 Mb, y muchas tarjetas Pentium II actuales manejan mas de 1 Gb. Una tarjeta madre debe contener por lo menos cuatro conectores de memoria (de 72 o 168 pins, o una combinacin) y entre ms, mejor. Para un mximo desempeo, busque sistemas que manejen SIMMs/DIMMs de tipo SDRAM (DRAM Sincrona) o EDO (salida de Datos Ampliada). Los SIMMs debern tener una velocidad de 70 ns o ms. Lo ideal en los sistemas de misin crtica es que usen SIMMs de paridad y asegurarse de que la tarjeta madre maneje por completo la verificacin de paridad o incluso tambin el ECC Cdigo de correccin de errores.

    DDR (Double Data Rate) significa doble tasa de transferencia de datos en espaol. Son mdulos de memoria RAM compuestos por memorias sncronas (SDRAM), disponibles en encapsulado DIMM, que permite la transferencia de datos por dos canales distintos simultneamente en un mismo ciclo de reloj. Los mdulos DDR soportan una capacidad mxima de 1 GiB.

    DDR3 es un tipo de memoria RAM. Forma parte de la familia SDRAM de tecnologas de memoria de acceso aleatorio, que es una de las muchas implementaciones de la DRAM.

    El principal beneficio de instalar DDR3 es la habilidad de hacer transferencias de datos ocho veces mas rpido, entonces permitiendo velocidades pico de transferencia y velocidades de bus ms altas que las versiones DDR anteriores. Sin embargo, no hay una reduccin en la latencia, la cual es proporcionalmente ms alta. Adems la DDR3 permite usar integrados de 512 megabits a 8 gigabytes, siendo posible fabricar mdulos de hasta 16 Gb.

  • Pgina 3

    de 74

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Pila

    Bios Su funcin es la de proporcionar la energia para mantener los datos de configuracin del equipo.

    AMI,Award, Phoenix, Equipo original. Ranuras de expansin

    EISA, MCA, ISA, PCI, AGP.

    Procesadores: Intel Atom Processor Z5xx Series Intel Core 2 Duo Processors for Embedded Computing Intel Core Duo Processors Quad-Core Intel Xeon processor 5400 series Quad-Core Intel Xeon Processor 5300 Series Dual-Core Intel Xeon Processor 5200 Series Dual-Core Intel Xeon Processor 5100 Series Dual-Core Intel Xeon Processors LV and ULV Intel Xeon Processors Intel Pentium Dual-Core Processor Intel Celeron Processor 440 Intel Pentium M Processors Intel Pentium 4 Processors Intel Pentium III Processors Intel Celeron M Processors Intel Celeron Processors Intel Pentium Processors with MMXTechnology

    La arquitectura de Intel IA-32 ofrece ocho registros de fines generales, cada uno de ellos es un registro de 32 bits. La

    arquitectura de Intel EM64T ampla cada uno de esos registros a 64-bit, que entonces se refieren como RAX, RBX,

    RCX, RDX, RSP, RBP, RSI, y RDI. Tambin agrega ocho nuevos registros, nombrados R9 con R15. Cada uno de los

    registros es direccionable como un registro 64-bit, un registro de 32 bits, un registro de 16 bits y registro de 8 bits. Por

    ejemplo, R11 es la versin 64-bit, R11d es el de 32 bits ms bajo del mismo registro, R11w es los 16 pedacitos ms

    bajos del registro y R11l es el octeto ms bajo. Los registros ESPECIALMENTE, el EBP, ESI y el IED, que no son

    direccionables de 8 bits en IA-32, son direccionables de 8 bits en EM64T. Por ejemplo, el SL es los 8 pedacitos ms

    bajos de ESI. Los registros de 8 bits AH, BH, el CH y el ADO estn disponibles en EM64T. No pueden ser utilizados

    en las mismas instrucciones con los nuevos registros de 8 bits.

    AMD Athlon AMD Opteron AMD Turion

    AMD Phenomn

    SPARC64 VII CON 8 hilos de ejecucin

    UltraSPARC T1 32 hilos de ejecucin

    SPARC (del ingls Scalable Processor ARChitecture) es una arquitectura RISC big-endian. Es decir, una arquitectura con un conjunto reducido de instrucciones.

    Una de las ideas innovadoras de esta arquitectura es la ventana de registros que permite hacer fcilmente compiladores de alto rendimiento y una significativa reduccin de memoria en las instrucciones load/store en relacin con otras arquitecturas RISC. Las ventajas se aprecian sobre todo en programas grandes.

    Procesador INTELPentium, SUN Sparc, APPLE POwerPC, IBM Power, ZILOG Z80, MOTOROLA M68000, MPC7455, AMD Advanced Micro Devices Duron. Tamao de registro 8, 16, 32 y 64 biits

  • Pgina 4

    de 74

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.1 Introduccin

    PRCTICA No. 2 NOMBRE: Importancia del lenguaje OBJETIVO: - Que el alumno valorare la importancia de conocer este lenguaje, al conocer sus aplicaciones y el uso en

    diferentes plataformas de hardware y software.

    INTRODUCCIN: Este lenguaje da la facilidad y las herramientas necesarias para tomar el control de todo lo que la PC puede

    realizar fsicamente. Como resultado de operaciones muy bsicas suministradas por el ensamblador que realiza tareas simples de transferencia de datos y operaciones lgicas, una pgina de cdigos en lenguaje ensamblador palidece en comparacin con una pgina de cdigo en lenguaje de alto nivel.

    Ventajas:

    Velocidad, control de hardware y sofware, todos los procesadores aceptan una variante de ensamblador como su forma de programacin.

    Desventajas: Dependiente de la plataforma en donde se desarroll, mayor costo en su ciclo de vida, peligro de afectar recursos inesperadamente.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS

    1.2 Importancia del Lenguaje Ensamblador

    PRCTICA No. 3 NOMBRE: Historia de los procesadores OBJETIVO:

    - Que el alumno identifique mediante imgenes y fsicamente las marcas y modelos de procesadores.

  • Pgina 5

    de 74

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    INTRODUCCIN: Un microprocesador es un circuito integrado construido en un pedazo diminuto de silicio . Contiene miles, o

    incluso millones, de transistores que se interconectan va los rastros extrafinos de aluminio. La funcin de los transistores es guardar y manipular datos juntos para que el microporcesador pueda realizar una gran variedad de funciones.

    Calsificacin deacuerdo a su marca: Intel 8008,8088,80286,80386,Pentium. AMD K5, K6, Duron, Athlon. Cyrix MI, MII. Motorola M68000, MPC7455.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.3 Historia de los procesadores

    PRCTICA No. 5 NOMBRE: Diagrama de componentes internos OBJETIVO:

    - Que el alumno evalue los componentes internos de que constan los procesadores con diferente arquitectura.

    INTRODUCCIN:

    Componentes del microprocesador

    Reloj

    Unidad Aritmtica Lgica

    Unidad de

    Control

    Bus de Direcciones

    R O M R A M Puertos

    Registros

    Bus de Datos

    Unidad de ejecucin Bus de Control

    UNIDAD DE EJECUCIN Una vez que la unidad de decodificacin sabe cul es el significado de la instruccin leda de memoria, se lo comunica a la unidad de ejecucin. Esta unidad ser la encargada de consumar la ejecucin y para ello activar las seales necesarias y en un orden determinado. Es decir, es la encargada de dar las rdenes necesarias a las diversas partes del microprocesador para poder ejecutar cada una de las instruccines. UNIDAD ARITMETICO LOGICA (ALU) La ALU Aritmethic Logic Unit es el bloque funcional del microprocesador encargado de realizar todas aquellas operaciones matemticas (suma, resta, multiplicacin y division). Las operaciones que realiza son las siguientes: suma, resta, multiplicacin, divisin y aquellas que trabajan con dgitos binarios (10 que se conoce como operaciones lgicas: AND, NOR, NOT, NAND, OR, X-OR, etc). En suma, saber cmo funciona un microprocesador, implica conocer cmo se van ejecutando cada una de las instruccines del programa que se almacena en memoria. Los pasos globales que se siguen a la hora de consumar una instruccin son: UNIDAD DE DECODIFICACION Se encarga de decodificar la instruccin que se va a ejecutar. Es decir, saber qu instruccin es. Cuando el microprocesador lee de memoria una instruccin, el cdigo de esa instruccin le llega a esta unidad. Esta unidad se encarga de interpretar ese cdigo para averiguar el tipo de instruccin a realizar. Por ejemplo, instruccines de suma, multiplicacin, almacenamiento de datos en memoria,etc.

    Bsqueda

    de la intruccin Decodificacin de la intruccin

    Bsqueda

    de operandos Almacenamiento del resultado

    Ejecucin

    de la intruccin

    UNIDAD DE CONTROL

  • Pgina 6

    de 74

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    SECUENCIADOR

    REGISTRO DE INTRUCCIONES

    e

    Es el centro nervioso del ordenador, ya que desde ella se controlan y gobiernan todas las operaciones. Cmo funciones bsicas tiene: tomar las instruccines de memoria decodificar o interpretar las instruccines ejecutar las instruccines ( tratar las situaciones de tipo interno (inherentes a la propia CPU) y de tipo externo (inherentes a los perifricos). Para realizar su funcin, la unidad de control consta de los siguientes elementos:

    RELOJ PROGRAMA FUENTE

    DECODIFICADOR

    MICROORDENES

    BUS INTERNO

    Registro contador de programa Contiene permanentemente la direccin de memoria de la siguiente instruccin a ejecutar. Al iniciar la ejecucin de un programa toma la direccin de su primera instruccin. Incrementa su valor en uno, de forma automtica, cada vez que se concluye una instruccin, salvo si la instruccin que se est ejecutando es de salto o de ruptura de secuencia, en cuyo caso el contador de programa tomar la direccin de la instruccin que se tenga que ejecutar a continuacin; esta direccin est en la propia instruccin en curso. Registro de instruccin Contiene la instruccin que se est ejecutando en cada momento. Esta instruccin llevar consigo el cdigo de operacin (un cdigo que indica qu tipo de operacin se va a realizar, por ejemplo una suma) y en su caso los operandos (datos sobre los que acta la instruccin, por ejemplo los nmeros a sumar) o las direccines de memoria de estos operandos. Decodificador Se encarga de extraer el cdigo de operacin de la instruccin en curso (que est en el registro de instruccin), lo analiza y emite las seales necesarias al resto de elementos para su ejecucin a travs del secuenciador . Reloj Proporciona una sucesin de impulsos elctricos o ciclos a intervalos constantes (frecuencia constante), que marcan los instantes en que han de comenzar los pasos de que consta cada instruccin. Secuenciador En este dispositivo se generan rdenes

    ACUMULADOR

    muy elementales (micrordenes) que, sincronizadas por los impulsos de reloj, hacen que se vaya ejecutando poco

    BANDERAS CIRCUITO OPERACIONAL

    a poco la instruccin que est cargada en el registro d MICROINSTRUCCIONES

    instruccin.

    UNIDAD ARITMTICO-LGICA (ALU) Esta unidad se encarga de realizar las operaciones elementales de tipo aritmtico (sumas, restas, productos, divisiones) y de tipo lgico (comparaciones). A travs de un bus interno se comunica con la unidad de control la cual le envia los datos y le indica la operacin a realizar . La ALU est formada a su vez por los siguientes elementos:

    REGISTROS DE ENTRADA

    Circuito operacional Contiene los circuitos necesarios para la realizacin de las operaciones con los datos procedentes de los registros de entrada (REN). Este circuito tiene unas entradas de rdenes para seleccionar la clase de operacin que debe realizar en cada momento (suma, resta, etc). Registros de entrada (REN) En ellos se almacenan los datos u operandos que intervienen en una instruccin antes de la realizacin de la operacin por parte del circuito operacional. Tambin se emplean para el almacenamiento de resultados intermedios o finales de las operaciones respectivas. Registro acumulador Almacena los resultados de las operaciones llevadas a cabo por el circuito operacional. Est conectado con los registros de entrada para realimentacin en el caso de operaciones encadenadas. Asimismo tiene una conexin directa al bus de datos para el envo de los resultados a la memoria central o a la unidad de control.

  • Pgina 7

    de 74

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Instruccin 1

    Instruccin 2

    Instruccin 3

    Instruccin n

    ME

    MO

    RIA

    Registro de estado (flags) Se trata de unos registros de memoria en los que se deja constancia algunas condiciones que se dieron en la ltima operacin realizada y que habrn de ser tenidas en cuenta en operaciones posteriores. Por ejemplo, en el caso de hacer una resta, tiene que quedar constancia si el resultado fue cero, positivo o negativo. Se conoce como set de instruccines al conjunto de instruccines que es capaz de entender y ejecutar un microprocesador. En funcin del tipo de microprocesador, concretamente si es ms avanzado o no, podr entender y ejecutar ms o menos instruccines. Las instruccines se clasifican segn su funcin en:

    a).- Transferencia de datos. b).- Clculo. c).- Transferencia del control del programa. d).- Control.

    a).- Instruccines de transferencia de datos Estas instruccines mueven datos (que se consideran elementos de entrada/salida) desde la memoria hacia los registros internos del microprocesador, y viceversa. Tambin se usan para pasar datos de un registro a otro del microprocesador. Existen algunas instruccines que permiten mover no slo un dato, sino un conjunto de hasta 64 KBytes con una sola instruccin. b).- Instruccines de clculo Son instruccines destinadas a ejecutar ciertas operaciones aritmticas, como por ejemplo sumar, restar, multiplicar o dividir, o ciertas operaciones lgicas, como por ejemplo ANO, OR, as como desplazamiento y rotacin de bits. c)._ Instruccines de transferencia del control del programa Permiten romper la secuencia lneal del programa y saltar a otro punto del mismo. Pueden equivaler a la instruccin GOTO que traen muchos lenguajes de programacin. d).- Instruccines de control Son instruccines especiales o de control que actan sobre el propio microprocesador. Permiten acceder a diversas funciones, como por ejemplo activar o desactivar las interrupciones, pasar rdenes al coprocesador matemtico, detener la actividad del microprocesador hasta que se produzca una interrupcin, etc. Prcticamente todas las instruccines estn formadas por dos elementos:

    cdigo de operacin que indica el tipo de operacin se va a realizar operandos, que son los datos sobre los que acta.

    Por ejemplo, una instruccin que sume dos nmeros est formado por: cdigo de operacin que indique "sumar"; primer nmero a sumar y segundo nmero a sumar.

    Existen instruccines que slo tienen un operando o incluso que no tienen ninguno, estando formadas solamente por el cdigo de operacin. EJECUCIN DE LAS INSTRUCCINES Para que un programa pueda ser ejecutado por un ordenador, ha de estar almacenado en la memoria central (memoria RAM). El microprocesador tomar una a una las instruccines que lo componen e ir realizando las tareas correspondientes.

    Se denomina ciclo de instruccin al conjunto de acciones que se llevan a cabo en la realizacin de una instruccin. Se compone de dos fases: Fase de bsqueda y Fase de ejecucin . Fase de bsqueda En esta fase se transfiere la instruccin que se va a ejecutar desde la memoria central a la unidad de control.

    Fase de ejecucin Consiste en la realizacin de todas las acciones que conlleva la propia instruccin. Una forma de clasificar los microprocesadores es en funcin de las instruccines que son capaces de ejecutar. Podemos encontrar dos tipos: microprocesadores: Con tecnologa CISC y RISC.

    C P U

    B U S E S

    CISC: Complex Instructions Set Computer, Ordenador con un conjunto de instruccines complejo. RISC: Reduced Instructions Set Computer, Ordenador con un conjunto de instruccines reducido. Anteriormente hemos definido el set de instruccines como el conjunto de instruccines que es capaz de entender y ejecutar un microprocesador. Si ese microprocesador entiende y ejecuta muchas instruccines (cientos de ellas), se trata entonces de un microprocesador CISC. En cambio, si el microprocesador entiende y ejecuta muy pocas instruccines (decenas de ellas), se trata entonces de un microprocesador RISC.

  • Pgina 8

    de 74

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    En principio, parece que la tecnologa CISC es mucho ms ventajosa que la RISC. Pero no es as: un micro CISC tarda mucho tiempo en ejecutar cada una de esas instruccines. En cambio un micro RISC, como solo entiende unas cuantas, su diseo interno le permite ejecutarlas en muy poco tiempo, a una gran velocidad, mucho ms rpido que un microprocesador CISC. Cuando se desee que un microprocesador RISC ejecute cierta instruccin que no entiende, sta se descompondr en varias instruccines de las sencillas que s entiende. An as, descomponiendo una instruccin compleja en varias sencillas, es capaz de operar mucho ms rpido que el microprocesador CISC, el cual no tiene que descomponer esa instruccin porque la entiende directamente. Prcticamente, todos los microprocesadores que se utilizan en la fabricacin de ordenadores personales (microprocesadores fabricados por Intel) son de tecnologa CISC. Intel, poco a poco, va abandonando la tecnologa CISC y la sustituye por tecnologa RISC. As por ejemplo, un Pentium, sin dejar de pertenecer a la categoria CISC incorpora algunas caracteristicas de los micros RISC. Es de esperar que en un futuro, los micros fabricados sean de tecnologa RISC; entonces los ordenadores sern muchsimo ms rpidos de lo que hoy los conocemos. Intel no fabrica microprocesadores completamente RISC para no perder la compatibilidad con los microprocesadores anteriores.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.5 Diagramas de componentes internos

    PRCTICA No. 6 NOMBRE: Descripcin de componentes OBJETIVO:

    - Que el alumno ejecute un programa observando los contenidos de los registros.

    INTRODUCCIN: Los registros internos del microprocesador

    Registros de datos: AX = Acumulador. Es el registro principal utilizado en las instrucciones aritmticas. BX = Utilizado como base. Lo utilizaremos para indicar el desplazamiento u offset. CX = Se utiliza como contador en los bucles y operaciones repetitivas. DX = Utilizado tambin para operaciones aritmticas.

    Estos registros son de 2 bytes y podemos referirnos a su parte baja y alta: AX -> AH y AL BX -> BH y BL CX -> CH y CL DX -> DH y DL

    Registros de segmentos:

    CS = Registro de segmento de cdigo. Contiene la direccin del segmento de cdigo, lo que son las instruccines del programa.

    DS = Registro de segmento de datos. Contiene la direccin del segmento de datos, es decir, el rea de memoria donde se encuentran los

    datos del programa. SS = Registro de segmento de pila. Contiene la direccin del segmento de pila. ES = Registro de segmento extra. El segmento extra es un segmento adicional que se utiliza para superar la

    limitacin de los 64 Kb del segmento de datos y para hacr la transferencia de datos entre segmentos.

    Registros punteros de pila:

    SP = Puntero de pila. Contiene la direccin relativa del segmento de pila. BP = Puntero base. Utilizado para fijar el puntero de la pila y poder acceder a los elementos de esta.

    Registros ndices:

    SI = ndice fuente (Source Index) DI = ndice destino (Destination Index)

    Registro puntero de instruccines:

    IP = Puntero de instruccin (Instruction Pointer)

  • Pgina 9

    de 74

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    * Todos los registros anteriormente mencionados son de una longitud de 16Bits. Los de 32Bits se les antepone la letra E de extendidos (EAX, EBX,EIP,...); para los procesadores 80386 y posteriores , hasta antes de los de 64 bits, que manejan registros RAX,RBX,.. R0,R1,...

    Registro de banderas:

    Se usa para registrar la informacin de estado y de control de las operaciones del microprocesador. Hay 9 banderas:

    * Banderas de estado: Registran el estado del procesador, normalmente asociado a una comparacin o una instruccin aritmtica. CF = Bandera de acarreo. Indica acarreo en las instruccines aritmticas (Carry Flag) OF = Bandera de desbordamiento aritmtico (Overflow Flag) ZF = Bandera de resultado cero o comparacin igual (Zero Flag) SF = Bandera de resultado o comparacin negativa (Sign Flag) PF = Bandera de paridad (Parity Flag) AF = Bandera auxiliar. Indica si hay necesidad de ajuste en las operaciones aritmticas con

    nmeros BCD (Auxiliar Flag) * Banderas de control: Registran el funcionamiento del procesador:

    DF = Bandera de direccin. Controla la direccin (hacia adelante o hacia atrs) en las operaciones con cadenas de caracteres incrementando o decrementando automticamente los registros ndices (SI y DI) (Direction Flag)

    IF = Bandera de interrupciones. Indica si estn permitidas o no las interrupciones de los dispositivos externos (Interrupt Flag)

    TF = Bandera de traza. Controla la operacin modo paso a paso (Trap Flag)

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS

    1.5.1 Descripcin de componentes

    PRCTICA No. 7 NOMBRE: Funcionamiento interno OBJETIVO:

    - Que el alumno observe los contenidos de los registros e introduzca un programa directamente en la memoria y lo ejecute.

    INTRODUCCIN:

    Cualquier versin del sistema operativo DOS o Windows, tiene disponible un comando externo llamado DEBUG.EXE, localizado en WINDOWS\SYSTEM32 y podra ser usado dando doble clic sobre el o dentro de una ventana del Smbolo del Sistema, el cual es otro archivo del sistema llamado CMD.EXE.

    Aunque Debug es una herramienta antigua es una buena forma de comenzar a familiarizarnos con el ensamblador. Debug viene con el sistema operativo, es muy til y fcil de usar aunque tambin muy limitada, pero muy prctica y no es sensible al context (No hace diferencia entre MAYSCULAS y minsculas) y todos los nmeros usados se consideran hexadecimales.

    Una vez ejecutado el comando DEBUG, podras utilizar las siguientes opciones: r Visualizar el contenido de los registros r(Registro) Visualiza y permite modificarlo q Salir g Ejecutar lo anteriormente escrito a Agregar cdigo o Ensamblar a(Direccin) Agregar a partir de Direccin

    Ejecutar el DEBUG dentro de una ventana del Smbolo del Sistema para alterar el contenido del Registro AX

  • Pgina de 74 10

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Para alterar el modo de video teclear lo siguiente, sin los comentarios que describen su funcionamiento. D:\Tasm>debug

    -A100 Ensamblar a partir de la posicin 100 de memoria MOV AH,0 Funcin 0 Iniciar modo de video MOV AL,0F Seleccionamos el modo de video 640 X 350 grficos o 0D INT 10 Ejecutar interrupcin 10 hex INT 20 Termina programa y retornar

    -G Ejecutar

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS

    1.5.2 Funcionamiento interno

    PRCTICA No. 8 NOMBRE: Manejo de memoria OBJETIVO:

    - Que el alumno haga uso de diferentes tamaos de memoria en un programa.

    INTRODUCCIN: La memoria es una coleccin

    de posiciones o celdas contiguas de una longitud de un byte cada una de ellas, totalmente direccinables.

    Considerando la forma en que es accesada, se puede clasificar como RAM (Random Acces Memory Memoria de Acceso Aleatorio ) y SAM (Secuencial Acces Memory Memoria de Acceso Secuencial ) y tomando encuenta los permisos de lectura y

    CPU

    Memoria CACHE

    Memoria PRINCIPAL

    escritura en ROM (Read Only Memory Memoria de Solo Lectura) y RWM (Read Write Memory Memoria de Lectura/Escritura). Los EEPROM (Electric Erased Programmer Read Only Memory Memoria de Solo Lectura Programable Borrable Elctricamente ). Algunos de estos trminos son usados tanto en medios electrnicos (Circuitos Integrados), como en medios magnticos o magntico-pticos (Disco o Cinta).

    La memoria virtual es una combinacin de memoria primaria y secundaria; administrada por un sistema operativo, los cuales pueden trabajar en modo Real o Protegido. Este ltimo es posible usarlo en Ordenador personales, desde que apareci el procesador 286. En modo real es posible leer y escribir en cualquier parte de la memoria principal y en modo protegido cada programa; entre ellos el sistema operativo usan reas de memoria independientes para trabajar; con la finalidad de no interferirse entre ellos al momento de leer o escribir en memoria.

    PPrrooggrraammaacciinn ccoonn sseeggmmeennttooss::

  • Pgina de 74 11

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    AAll ccrreeaarr uunn pprrooggrraammaa ccoonn sseeggmmeennttooss,, ccaaddaa uunnoo ddee eellllooss ppuuddee sseerr ddee hhaassttaa 6644 KKbb ,, hhaacciieennddoo uussoo ddee

    rreeggiissttrrooss ddee 1166 bbiittss ((IIPP,,SSSS......)) yy eenn llooss ddee pprrooppssiittoo ggeenneerraall ((AAXX......)),, ppuuddiieennddoo uussaarr llaass mmiittaaddeess ((AAHH......)).. EEssttee ttiippoo ddee

    pprrooggrraammaacciinn eess aacceeppttaaddaa ddeessddee llooss pprroocceessaaddoorreess 88000088,, hhaassttaa llooss aaccttuuaalleess ppeennttiiuumm..

    PPiillaa SSEEGGMMEENNTT PPAARRAA SSTTAACCKK SSTTAACCKK DDaattooss SSEEGGMMEENNTT PPAARRAA ddaattooss CCooddiiggoo SSEEGGMMEENNTT PPAARRAA ccooddggoo

    PPrrooggrraammaacciinn ccoonn sseecccciioonneess::

    AAll ccrreeaarr uunn pprrooggrraammaa ccoonn sseecccciioonneess llggiiccaass eess ppoossiibbllee rreeffeerreenncciiaarr ppoorr pprrooggrraammaa hhaassttaa 44GGbb,, hhaacciieennddoo

    uussoo ddee rreeggiissttrrooss ddee 3322 bbiittss ((EEIIPP......)) yy llooss ddee pprrooppssiittoo ggeenneerraall ((EEAAXX......)).. eell iinniicciioo ddee ccaaddaa sseecccciinn ddeetteerrmmiinnaa eell ffiinn ddee llaa

    aanntteerriioorr.. EExxiisstteenn ddooss sseecccciinneess pprriinncciippaalleess,, llaa ..CCOODDEE yy ..DDAATTAA;; eessttaa llttiimmaa ppuueeddee sseerr ddiivviiddiiddaa eenn ddooss ccaatteeggoorraass..

    ..338866 ;; PPrroocceessaaddoorr 8800338866 ccoonn rreeggiissttrrooss ddee 3322 bbiittss..

    ..228866 ;; PPrroocceessaaddoorr 8800228866 ccoonn rreeggiissttrrooss ddee 1166 bbiittss..

    .MODELL SMALL ; Modos para la compilacin TINY,SMALL,MEDIUM,COMPACT o LARGE

    ..DDAATTAA ;; Esta seccin contiene la informacin inicializada.

    ..DDAATTAA?? ;; Esta seccin contiene la informacin no inicializada.

    ..CCOONNSSTT ;; Esta seccin contiene declaraciones de constantes.

    ..CCOODDEE ;; Esta seccin contiene las instrucciones del programa.

    ..SSTTAACCKK 6644 ;; Esta seccin contiene el espacio para la pila; por defautl es 64.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS

    1.6 Manejo de memoria

    PRCTICA No. 9 NOMBRE: Direccinamiento de datos implcito OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento implcito. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar, ligar y

    ejecutar los programas que se presentan en el manual.

    INTRODUCCIN: Son todas las intrucciones que no llevan parmetros, que no accesan memoria, o bien que tienen una forma

    especfica de accesarla. Ejemplos: CLI, PUSHF, POPF, NOP En este modo se especifican los operandos en forma implcita en la definicin de la instruccin. Por ejemplo, la instruccin "complementar acumulador" es la instruccin de modo implcito porque el operando en el registro de acumulador esta implcito en la definicin de la instruccin. De hecho todas las instruccines de referencia a registro que utilizan un acumulador son instruccines de modo implcito.

    Las instruccines de direccin cero en un ordenador organizado con pila son instruccines de modo implcito porque esta implcito que los operandos estan en la parte superior de la pila.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.7 Direccinamiento de los datos 1.7.1 Implcito

    ;PR1_7_1.ASM ;Direccinamiento implcito ;El operando sin operadores Pila SEGMENT PARA STACK STACK

    DB 64 DUP(0) Pila ENDS

  • Pgina de 74 12

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Codigo SEGMENT PARA Codigo Implcito PROC FAR

    ASSUME CS:Codigo,SS:Pila PUSHF POPF CLI NOP RET

    Implcito ENDP Codigo ENDS

    END Implcito

    PRCTICA No. 10 NOMBRE: Direccionamiento de datos inmediato OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento inmediato. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: Tiene dos operandos: un registro y una constante que se usa por su valor. El valor constante no se tiene que

    buscar en memoria, pues ya se obtuvo al hacer el "fetch" de la instruccin. Por tanto, es rpido aunque no tanto como el modo registro; requiere ir al BIU por el dato. En este modo se especifica el operando en la instruccin misma. En otras palabras, una instruccin de modo inmediato tiene un campo de operando, en lugar de un campo de direccin. Un campo de operando contiene el operando real que se va a usar junto con la operacion especificada en la instruccin. Las instruccines de modo inmediato son utiles para Iniciar registros en un valor constante.

    El campo de direccin de una instruccin puede especificar una palabra de memoria o un registro de procesador. Cuando el campo de direccin especifica un registro de procesador se dice que la instruccin esta en modo de registro.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.7 Direccinamiento de los datos 1.7.2 Inmediato

    ;PR1_7_2.ASM ;Direccinamiento inmediato ;El operando fuente es el dato a mover al destino Pila SEGMENT PARA STACK STACK

    DB 64 DUP(0) Pila ENDS Codigo SEGMENT PARA Codigo

    Inmediato PROC FAR ASSUME CS:Codigo,SS:Pila MOV AH,00 MOV AL,04 MOV AX,0FFFFH MOV AX,365 MOV AL, -30 MOV BL,35 MOV BH,-37 RET

  • Pgina de 74 13

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Inmediato ENDP Codigo ENDS

    .286 .model small .stack 64

    .code

    END Inmediato

    Inmediato:

    END Inmediato

    MOV AH,00 MOV AL,04 MOV AX,0FFFFH MOV AX,365 MOV AL, -30 MOV BL,35 MOV BH,-37 MOV AX,4C00H INT 21H

    PRCTICA No. 11 NOMBRE: Direccionamiento directo OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento directo. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: Uno de los operandos involucra una localidad especfica de memoria. El valor constante se tiene que buscar

    en memoria, en la localidad especificada. Es ms lento que los anteriores, pero es el ms rpido para ir a memoria, pues ya "sabe" la localidad, la toma de la instruccin y no la tiene que calcular.

    En este modo la direccin efectiva es igual a la parte de direccin de la instruccin. El operando reside en memoria y su direccin la proporciona en forma directa el campo de direccin de la instruccin. En una instruccin de tipo brinco el campo de direccin especifica la direccin de transferencia de control del programa real.

    Se presenta una prctica sencilla buscando que el alumno d un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten estructurar la lgica que el programador desea implementar.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.7 Direccinamiento de los datos 1.7.3 Directo

    ;PR1_7_3.ASM ;Direccinamiento directo

    ;El operando fuente es una Variable que posee el dato a mover Pila SEGMENT PARA STACK STACK

    DB 64 DUP(0) Pila ENDS

    Datos SEGMENT PARA Datos Variable1 DB 25 Variable2 DB 0AFH Variable3 DW 0A1FCH

  • Pgina de 74 14

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Datos ENDS

    Codigo SEGMENT PARA Codigo Directo PROC FAR

    ASSUME CS:Codigo,DS:Datos,SS:Pila ; SE PREPARA EL REGRESO A DOS

    PUSH DS ; Almacena Direccin de Psp MOV AX,00 PUSH AX ; Almacena Desplazamiento MOV AX,Datos ; Se Inicializan Apuntadores de Segmentos MOV DS,AX ; Establece Direccinamiento Normal al rea De Datos MOV AL,Variable1 MOV BH,Variable2 MOV CX,Variable3

    RET

    Directo ENDP

    Codigo ENDS END Directo

    NOMBRE: Direccinamiento entre registros OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento entre registros. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

    - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: Usa solamente registros como operandos. Es el ms rpido, pues minimiza los recursos necesarios (toda la informacin fluye dentro del EU del CPU).

    En este modo, los operandos estan en registros que residen dentro de la CPU. Se selecciona el registro particular de un campo de registro en la instruccin. Un campo K bits puede especificar cualquiera de 2k registros.

    Se presenta una prctica sencilla buscando que el alumno de un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten estructurar la lgica que el programador desea implementar.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.7 Direccinamiento de los datos 1.7.4 Registro

    ;PR1_7_4.ASM ;Direccinamiento entre registros ;El operando fuente y destino a mover son registro o mitades respectivamente. Pila SEGMENT PARA STACK STACK

    DB 64 DUP(0) Pila ENDS Codigo SEGMENT PARA Codigo

    Registro PROC FAR ASSUME CS:Codigo,SS:Pila MOV AX,DS MOV AL,CL MOV AX,BX MOV DS,AX MOV ES,DS

  • Pgina de 74 15

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    MOV BL,AL RET

    Registro ENDP Codigo ENDS

    END Registro

    PRCTICA No. 13 NOMBRE: Direccinamiento registro indirecto OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento indirecto de registros. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

    - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: En este modo la instruccin especifica un registro en la CPU cuyo contenido proporciona la direccin del

    operando en la memoria. En otras palabras, el registro seleccionado contiene la direccin del operando en lugar del operando mismo. Antes de utilizar una instruccin de modo indirecto por registro, el programador debe asegurarse de que la direccin de memoria del operando esta colocada en el registro del procesador con una instruccin previa. Entonces una referencia al registro es equivalente a especificar una direccin de memoria. La ventaja de una instruccin de modo de registro indirecto es que el campo de direccin de la instruccin utiliza menos bits para seleccionar un registro de los que necesitaria para especificar una direccin de memoria en forma directa.

    Se presenta una prctica sencilla buscando que el alumno de un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten estructurar la lgica que el programador desea implementar. En este modo, el campo de direccin de la instruccin proporciona la direccin en que se almacena la direccin efectiva en la memoria. El control recupera la instruccin de la memoria y utiliza su parte de direccin para accesar la memoria una vez mas con el fin de leer la direccin efectiva.

    Unos cuantos modos de direccinamiento requieren que el campo de direccin de la instruccin se sume al contenido de un registro especifico en la CPU. En estos modos la direccin efectiva se obtiene el calculo siguiente:

    Direccin efectiva = Parte de direccin de la instruccin + el contenido de registro de CPU

    El registro de CPU utilizado en el calculo puede ser el contador de programa, un registro de ndice o un registro base. En cualquier caso tenemos un modo de direccinamiento diferente que se utiliza para una aplicacion distinta.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.7 Direccinamiento de los datos 1.7.5 Registro indirecto

    ;PR1_7_5.ASM ; Direccinamiento indirecto de registros

    ; El operando fuente SI, DI, DX o BP poseen la direccin para referenciar el dato y debe estar entre corchetes. Pila SEGMENT PARA STACK STACK

    DB 64 DUP(0) Pila ENDS

    Datos SEGMENT PARA Datos Variable3 DW 0A1FCH

    Datos ENDS

    Codigo SEGMENT PARA Codigo RegistroIndirecto PROC FAR

    ASSUME CS:Codigo,DS:Datos,SS:Pila

  • Pgina de 74 16

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    PUSH DS MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX

    LEA BX, Variable3 MOV AX,[BX] MOV SI, OFFSET Variable3 MOV AX,[SI] LEA DI,Variable3 MOV AX,[DI] MOV BP, OFFEST Variable3 MOV AX,[BP] RET

    RegistroIndirecto ENDP Codigo ENDS

    END RegistroIndirecto

    PRCTICA No. 14 NOMBRE: Direccinamiento registro relativo OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento registro relativo. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

    - Se familiarice con el ambiente de desarrollo en el que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: En este modo el contenido del contador de programa se suma a la parte de direccin de la instruccin para

    obtener la direccin efectiva. La parte de direccin de la instruccin por lo general es un nmero con signo (en representacion de complemento a dos) el cual puede ser positivo o negativo. Cuando se suma este nmero al contenido del contador de programa, el resultado produce una direccin efectiva cuya posicin en la memoria es relativa a la direccin de la siguiente instruccin. Para hacer mas claro con un ejemplo, consideremos que el contador de programa contiene el nmero 200 y que la parte de direccin de la instruccin contiene el nmero 11. La instruccin en la posicin 200 se lee de la memoria durante la fase de recuperacion y el contador de programa se incrementa en uno a 201. El calculo de direccin efectiva para el modo de direccin relativa es 201 + 11 = 212. Esto es 11 posiciones de memoria adelante de la direccin de la siguiente instruccin. Con frecuencia se utiliza el direccinamiento relativo con instruccines de tipo brinco, cuando la direccin del brinco est en el rea que rodea la palabra de la instruccin misma. Esto da como resultado un campo de direccin ms pequeo en el formato de la instruccin porque la direccin relativa puede especificarse con una cantidad de bits que se necesitan para representar la direccin de memoria completa.

    Se presenta una prctica sencilla buscando que el alumno d un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten estructurar la lgica que el programador desea implementar.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.7 Direccinamiento de los datos 1.7.6 Registro relativo

    ;PR1_7_6.ASM ;Direccinamiento registro relativo Pila SEGMENT PARA STACK STACK

    DB 64 DUP(0)

  • Pgina de 74 17

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Pila Datos

    ENDS

    SEGMENT

    PARA Datos

    Datos

    Variable1 DB ENDS

    HOLA ALUMNOS. ( ENSAMBLADOR)

    Codigo

    SEGMENT RegistroRelativo

    PARA Codigo PROC FAR

    ASSUME CS:Codigo, DS:Datos, SS:Pila

    PUSH MOV PUSH MOV MOV

    DS AX,00 AX AX,Datos DS,AX

    LEA MOV MOV MOV

    BX, Variable1 AL, [BX + 3] AL, 2[BX] AL, [BX] + 1

    ; ; ; ;

    0000000000000000 AL = A AL = L AL = O

    Codigo

    RET RegistroRelativo

    ENDS END

    ENDP

    RegistroRelativo

    STRUC - ENDS: permite definir registros al estilo de los lenguajes de alto nivel, para acceder de una manera ms elegante a los campos de una informacin con cierta estructura. Estos campos pueden componerse de cualquiera de los tipos de datos simples (DB 8 Bits, DW 16 Bits = 2 Bytes = 1 Palabra, DD 4 Bytes, DQ 4 Palabras) y pueden ser modificables o no en funcin de si son simples o mltiples, respectivamente:

    Sintaxis: alumno

    STRUC

    cont DB '0123456789' ; modificable edadaltura DB 75,200 ; no modificable peso DB 0 ; modificable otros DB 10 DUP(0) ; no modificable telefono DD ? ; modificable

    alumno ENDE

    ejemplo alumno

    MOV AX,OFFSET ejemplo.telefono LEA BX,ejemplo MOV CL,[BX].peso ; equivale a [BX+12]

    RECORD: similar a STRUC pero operando con campos de bits. Permite definir una estructura determinada de byte o palabra para operar con comodidad.

    Sintaxis: nombre RECORD nombre_de_campo:tamao[=valor],...

    Donde nombre permitir referenciar la estructura en el futuro, nombre_de_campo identifica los distintos campos, a los que se asigna un tamao (en bits) y opcionalmente un valor por defecto.

    registro RECORD a:2=3, b:4=5, c:1

    La estructura registro totaliza 7 bits, por lo que ocupa un byte. Est dividida en tres campos que ocupan los 7 bits menos significativos del byte: el campo A ocupa los bits 6 y 5, el B los bits del byte: el campo A ocupa los bi1 al 4 y el C el bit 0:

    6 5 4 3 2 1 0

  • Pgina de 74 18

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    1 1 0 1 0 1 ?

    La reserva de memoria se realiza, por ejemplo, de la siguiente manera:

    reg1 registro

    Quedando reg1 con el valor binario 1001011 (el campo B permanece inalterado y el A y C toman los valores indicados). Ejemplos de operaciones soportadas:

    MOV AL, B ; AL = 5 (desplazamiento del bit menos significativo de A) MOV AL, MASK A ; AL = 01100000b (mscara de A) MOV AL, WIDTH A ; AL = 2 (anchura de A)

    PRCTICA No. 15 NOMBRE: Direccinamiento registro base indexado OBJETIVO: Que el alumno: - Sea capaz de efectuar y entender el funcionamiento del direccinamiento base indexado. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

    - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: En este modo el contenido de un registro ndice se suma a la parte de direccin de la instruccin para obtener

    la direccin efectiva. El registro ndice es un registro de CPU especial que contiene un valor ndice. Un campo de direccin de la instruccin define la direccin inicial del arreglo de datos en la memoria. Cada operando del arreglo se almacena en la memoria en relacion con la direccin inicial. La distancia entre la direccin inicial y la direccin del operando es el valor del ndice almacenado en el registro de ndice. Cualquier operando en el arreglo puede accesarse con la misma instruccin siempre y cuando el registro ndice contenga el valor de ndice correcto. El registro ndice puede incrementarse para facilitar el acceso a operandos consecutivos. Algunos ordenadores dedican un registro de CPU para que funcione exclusivamente como un registro ndice. De manera implcita este registro participa cuando se utiliza una instruccin de modo ndice. En los ordenadores con muchos registros de procesador, cualquiera de los registros de la CPU pueden contener el nmero de ndice. En tal caso, el registro debe estar especificado en forma explicita en un campo de registro dentro del formato de instruccin.

    En este modo, el contenido de un registro base se suma a la parte de direccin de la instruccin para obtener la direccin efectiva. Esto es similar al modo de direccinamiento indexado, excepto en que el registro se denomina ahora registro base, en lugar de registro de ndice. La diferencia entre los dos modos esta en la manera que se usan mas que en la manera en que se calculan. Se considera que un registro ndice contiene un nmero de ndice que se relaciona con la parte de direccin de la instruccin. Se considera que un registro base contiene una direccin base y que el campo de direccin de la instruccin proporciona un desplazamiento en relacion con esta direccin base. El modo de direccinamiento de registro base se utiliza en los ordenadores para facilitar la localizacion de los programas en memoria. Cuando se mueven datos y programas de un segmento de memoria a otro, como se requiere en los sistemas de multiprogramacin, los valores de direccin de las instruccines deben reflejar este cambio de posicin. Con un registro base los valores de desplazamiento de las instruccines no tienen que cambiar. Solo el valor del registro base requiere una actualizacion para reflejar el comienzo de un nuevo segmento de memoria.

    Se presenta una prctica sencilla buscando que el alumno de un primer paso hacia el conocimiento del lenguaje ENSAMBLADOR. Las instruccines en ENSAMBLADOR se basan en nemotcnicos, los cuales permiten estructurar la lgica que el programador desea implementar.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 1.7 Direccinamiento de los datos 1.7.7 Registro base indexado

    ;PR1_7_7.ASM ;Direccinamiento registro base indexado Pila SEGMENT PARA STACK 'STACK'

  • Pgina de 74 19

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Pila ENDS

    DB 64 DUP(0)

    Datos SEGMENT PARA 'Datos'

    Variable1 DB 5,4,3,2,1 DUP (5,6,7,8,9 DUP (5,4,3,2,1)) Lista DW 10,20,30,40,50,60,70,80,90,100

    Datos ENDS

    Codigo SEGMENT PARA 'Codigo' RegistroBaseIndexado PROC FAR

    ASSUME CS:Codigo, DS:Datos, SS:Pila PUSH DS MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX

    MOV AX,00 MOV BX,8 MOV DI,2 MOV AL,Variable1[BX][DI] ; AL = 3

    MOV BX,2 MOV SI,14 MOV AX,Lista[BX][SI] ; AX = 90 AX = 05A

    RET

    RegistroBaseIndexado ENDP

    Codigo ENDS END RegistroBaseIndexado

    PRCTICA No. 16 NOMBRE: Formato de un programa OBJETIVO: Que el alumno: - Conozca y cree un programa; el cual cuente con todos los segmentos y puntos principales de los que puede estar

    formado un programa. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: Las estructuras de programa presentadas posteriormente , tanto para segmentos como para secciones,

    pueden ser compilados y ligados con Macroassembler y Turbo para 16 bist, respetando la sintaxis para cada caso; ejemplo:

    Un programa en lenguaje ensamblador es una serie de sentencias ejecutables que le dicen al ensamblador

    que operaciones tienen que realizar. Cada sentencia esta compuesta por cuatro campos Nombre Operacin Operando(s) Comentario

    1.- Campo Nombre Todas las letras de la A a la Z . Dgitos del 0 al 9 . Smbolos Especiales . Variables, rtulos, Constantes, Nombre segmento, Nombre de procedimientos, Nombre de macros.

    Variables Representa una posicin de memoria que es accesible por un programa y el contenido de esta posicin puede cambiar durante la ejecucin del programa.

  • Pgina de 74 20

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Rtulo Son los nombres aplicados a instruccines ejecutables en los programas de aplicacin los cuales son referenciados como cdigo relativo un nombre o rotulo pudiendo tener 3 atributos. Direccin de Segmento Desplazamiento de segmento Descriptor de accesibilidad NEAR o FAR cuando no se especifica, se considera NEAR.

    Datos

    Constantes

    Binaria

    Pila Ciclo: Countador label near Final label far

    Consta de ceros 1/0 una seguida por la letra b. Ocho equ 00001000b

    Decimal Consta de series de dgitos del 0 al 9 y opcionalmente seguida por la letra D.

    Cuarenta equ 40D Treinta equ 30

    Hexadecimal Consta de series de dgitos del 0 al 9 y A a la F; terminada por la letra H. Si el valor hexadecimal comienza con una letra entonces se antepone un cero.

    Nueve equ 9h

    Diez EQU 0AH

    2.- Campo Operacin

    Octal Serie de digitos del 0 al 7 terminados por la letra O o Q.

    Tres EQU 3O Siete EQU 7Q

    Carcter Puede tener cualquier smbolo del cdigo ASCII encerrado entre comillas simples o dobles si contiene ms de dos caracteres la pseudo operacin DB (Define byte) debe ser utilizada si la cadena carcter contiene solo uno de dos caracteres, entonces solo pueden ser utilizadas las pseudo operaciones DD, DQ, DT, DW .

    LetraB DD B Nombre DB Persona Flotante

    Representa valores en notacin cientfica . Flotante DD 3.1415E-1 Real Hexadecimal

    Digitos del 0 al 9 y de la A a la F y terminados por la letra R siguiendo las reglas de los datos hexadecimales.

    RelHexa DD 0FAB 12345R Nombre de Segmento

    Se da en el campo del nombre de la sentencia del segmento. Codigo SEGMENT PARA codigo

    Este campo contiene un nemotcnico para ejecutar una instruccin del microprocesador. Mov AX, 0AF2Ah

    3.- Campo Operando Este campo contiene la posicin o posiciones donde estan los datos que van a ser manipulados por la instruccin de la operacin .

    Mov AX, 8 4.- Campo Comentario

    Es el ultimo de los 4 campos y es utilizado para documentar el programa internamente e inicia con un punto y coma.

    Mov AH, 43 ; Asigna un cuarenta y tres a la parte alta del registo AX

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 2.2 Formato de un programa

  • Pgina de 74 21

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    ;PR2_2a.ASM ;Programa que ejemplifica el uso de segmentos con registros de 16 bist. ;El programa realmente no hace nada y es terminado con la instruccin RET. ;Nombre Operacin Operando(s) Comentario Tres EQU 3Q ;Constante octal Ocho equ 00001000b ;Constante binaria Pila SEGMENT PARA STACK 'STACK' ; Pila es nombre del segmento

    DB 64 DUP(0) Pila ENDS Datos SEGMENT PARA 'Datos' ; Datos es nombre de segmento

    Variable1 DB 5 Datos ENDS Codigo SEGMENT PARA 'Codigo'

    FormatoPrograma PROC FAR ;Procedimiento principal, punto de entrada del programa ASSUME CS:Codigo, DS:Datos, ES,Datos, SS:Pila PUSH DS ; Guardar el contenido del registro de Segmento de Datos en la pila MOV AX,00 PUSH AX MOV AX,Datos MOV DS,AX ;Operacin MOV con los operandos destino DS y fuente AX MOV ES,AX ;El segmento extra es requerido por algunas interrupciones

    ;Agrega la lgica necesaria por tu programa RET ;Retorno del procedimiento y fin del programa

    FormatoPrograma ENDP Codigo ENDS

    END FormatoPrograma

    ;PR2_2b.ASM ;Programa que ejemplifica el uso de secciones en procesadores con registros de 16 bist (80286). ;El programa realmente no hace nada, unicamente coloca el valor 4C00H en el registro AX, para que ; la interrupcin 21H termine el programa. .286 .MODEL SMALL .CODE Programa:

    ;Agrega la lgica necesaria para tu programa MOV AX,4C00H ;Funcin para terminar programa INT 21H ;Interrupcin para terminarlo

    .STACK 64 END Programa

    PRCTICA No. 17 NOMBRE: Proceso de compilado, ligado y ejecucin de un programa OBJETIVO: Que el alumno: - Practicar las diferentes formas de compilar, ligar y ejecutar un programa. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

  • Pgina de 74 22

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    INTRODUCCIN: El cdigo fuente es un texto escrito generalmente por una persona que se utiliza como base para generar otro

    cdigo con un compilador o intrprete para ser ejecutado por una ordenador. Normalmente se refiere a la programacin de software. Un nico programador o un equipo de ellos escriben el

    cdigo fuente en el lenguaje de programacin elegido. Posteriormente en un proceso de compilacin el cdigo fuente se traduce en cdigo objeto. A diferencia del cdigo objeto, el cdigo fuente es texto simple, capaz de ser ledo por cualquier editor de textos y lo que es ms importante, entendible por cualquier programador. En l estn escritas las instruccines que deber realizar la ordenador, segn la sintaxis de un lenguaje de programacin. Tener el cdigo fuente es vital si se necesita modificar un programa.

    El trmino de cdigo fuente tambin se usa para el cdigo de otros lenguajes, como los de marcado de textos, como el HTML, que posteriormente son interpretados por un programa especializado, en este caso el navegador web, para su lectura.

    Fase 1 Fase 2 Fase 3

    Cdigo Fuente Cdigo Objeto No Ejecutable .OBJ

    Cdigo Objeto

    Ejecutable .EXE

    A P L I C A C I O N E S

    Edicin Traduccin Ligado Bibliotecas

    Editor Compilador L. Editor

    Sistema Opertivo WIndows:

    A:\MASM>Masm Programa; A:\MASM>Link Programa A:\MASM>Programa

    A:\TASM>Tasm Programa A:\TASM>Tlink Programa A:\TASM>Programa A:\TASM>TD Programa

    Para compilar generando un .OBJ Para ligar generando un .EXE Para ejecutar Para depurar o debuger, siempre y cuando

    para compilar se haya utilizado Tasm /zi Programa y al ligar Tlink /v programa

    C:\masm32\bin\ml /c /coff /nologo Programa.asm /c Ensamblar si ligar /coff Archivo de cdigo objeto no

    ejecutable /nologo Suprimir el mensaje de derechos de copia

    C:\\masm32\bin\Link /SUBSYSTEM:WINDOWS /MERGE:.rdata=.text Programa.obj > nul /SUBSYSTEM Entorno de ejecucin WINDOWS o CONSOLE

    /MERGE con quien se unir el programa Sistema Operativo Linix: #nasm f elf programa.asm Compilar #ld -s -c programa programa.o Ligar #./programa Ejecutar

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 2.2 Formato de un programa

    ;PR2_2.ASM ;Definicin de un programa general para Macro Assembler

  • Pgina de 74 23

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    ;Nombre Operacin Operando(s) Comentario

    PRCTICA No. 18 NOMBRE: Directivas de ensamble OBJETIVO: Que el alumno: - Pondr en prctica las directivas de precompilacin. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

    - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: Es posible usar las directivas para programar en cualquier procesador y con cualquier versin de compilador.

    Solo basta con consultar la disponibilidad de las mismas para cada uno de ellos.

    .386 Tipo de procesador a usar, .MODEL Modelo de memoria a usar, .DATA Seccin para la definicin de datos,

    .CODE Seccin para la incorporacin del cdigo, .STACK Seccion para la definicin de la pila, .IF .ELSE .ENDIF

    .ELSEIF Estatuto de decisin, .WHILE .ENDW Estatuto de repeticin Mientras, .BREAK Suspende la ejecucin de un bloque de cdigo y se va hasta el final del mismo,

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 2.2 Formato de un programa

    PRCTICA No. 19 NOMBRE: Transferencia de datos OBJETIVO: Que el alumno: - Probar el funcionamiento de las instruccines que le permitan mover, referenciar e intercambiar datos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: LDS y LES Cargan el puntero de 4 bytes, localizados en la posicin de memoria indicada por el segundo

    operando, en un registro de segmento y uno de palabra. La primera palabra del sealizador (desplazamiento) se carga en el registro del primer operando; la ltima palabra del puntero se carga en el registro DS (para LDS) o ES (para LES).

    XCHG Cambia el operando fuente byte o palabra con su operando destino al mismo tipo.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS

    2.5 Instruccines para transferencia de datos

    ;PR2_5.ASM ;Transferencia de datos Pila SEGMENT PARA STACK 'STACK'

    DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos'

    Variable1 DB 5 Variable2 DD ? Variable3 DD 10,20,30,40,50

  • Pgina de 74 24

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Datos ENDS Codigo SEGMENT PARA 'Codigo'

    TransferenciaDatos PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX

    MOV BL, Variable1 ;Copia el contenido del operando fuente en el destino LEA DX, Variable3 ;Tomar la direccin efectiva del Variable LDS SI, Variable3 ;Carga puntero de doble palabra en registro LES BX, Variable2 ;Carga puntero de doble palabra en registro XCHG BX, DX XCHG CL, Variable1 XCHG AL, CL

    RET TransferenciaDatos ENDP

    Codigo ENDS END TransferenciaDatos

    PRCTICA No. 20 NOMBRE: Aritmtica binaria OBJETIVO: Que el alumno: - Experimentar con las diferentes instruccines que le permitirn efectuar operaciones en aritmtica binaria. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

    - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: Operaciones aritmticas sin signo. ADD Suma dos operandos, almacenando el resultado en el destino; Sealizadores afectados

    AF,CF,OF,PF,SF,ZF. SUB Resta el contenido del operando fuente al destino, dejando el resultado en el destino; sealizadores

    afectados OF,SF,ZF,PF,AF,CF. MUL Multiplica el contenido del operando fuente por el contenido de AL o AX, segn sea el caso, si el

    operando fuente es de un byte, lo multiplica por el contenido de AL, dejando el resultado en AX; pero si el operando fuente es de una palabra, lo multiplica por el contenido de AX, dejando el resultado en DX:AX , dejando en DX el resultado mas significativo del resultado. OF y Cf se ponen a cero si DX es cero, en caso contrario se ponen a uno.

    DIV Divide el contenido del operando de tipo byte, entre el contenido del registro AX, almacenando el cociente en AL y el residuo en AH; cuando el divisor es una palabra, divide el contenido de DX:AX, dejando el cociente en AX y el residuo en DX.

    INC Incrementa en una unidad el contenido del operando especificado, pudiendo ser un registro, mitad o una variable. Sealizadores afectados SF,OF,ZF,AF,PF.

    DEC Decrementa en una unidad el contenido del operando especificado, pudiendo ser un registro, mitad o una variable. Sealizadores afectados SF,OF,ZF,AF,PF.

    ADC, SBB, NEG,CBW,CWD, IMUL, IDIV

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 2.6 Instruccines aritmticas 2.6.1 Aritmtica binaria

  • Pgina de 74 25

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    ;PR2_6_1.ASM ; Instruccines aritmticas binarias Pila SEGMENT PARA STACK 'STACK'

    DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos'

    Variable1 DB 4 Variable2 DB 3 Variable3 Dw 10

    Datos ENDS Codigo SEGMENT PARA 'Codigo'

    AritmeticaBinaria PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX

    MOV AL,Variable1 MOV BL,Variable2 INC AL ; Incrementa en una unidad el contenido de AL DEC BL ; Decrementa en una unidad el contenido de BL ADD AL,Variable2 ; Suma el contenido de Variable2 al de AL, dejando el resultado en AL SUB AL,Variable2 MOV AX, Variable3 MUL Variable2 ; Multiplica el contenido de AX por el contenido de Variable2, dejando el

    resultado en AX RET AritmeticaBinaria ENDP

    Codigo ENDS END AritmeticaBinaria

    PRCTICA No. 21 NOMBRE: Aritmtica empacada OBJETIVO: Que el alumno: - Podr apreciar y experimentar con las instruccines que se pueden efectuar antes o despus de las operaciones

    aritmticas. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: Ajuste a ASCII el contenido de AL despus de:

    AAA La suma, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero entre el 0 y el 9.

    AAS La sustraccin, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero entre el 0 y el 9.

    AAM La multiplicacin, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero entre el 0 y el 9.

    AAD La divisin, convirtiendo el contenido de AL en un dgito decimal sin empacar, es decir un nmero entre el 0 y el 9.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 2.6 Instruccines aritmticas 2.6.2 Aritmtica empacada

  • Pgina de 74 26

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    ;PR2_6_2.ASM ;Transferencia de datos Pila SEGMENT PARA STACK 'STACK'

    DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos'

    Variable1 DW 5 Datos ENDS Codigo SEGMENT PARA 'Codigo'

    AritmeticaEmpacada PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos MOV DS, AX MOV BX,8 MOV AX,Variable1 ADD AX,BX AAA ;Ajuste ASCII despues de la suma RET AritmeticaEmpacada ENDP

    Codigo ENDS END AritmeticaEmpacada

    PRCTICA No. 22 NOMBRE: Manipulacin de banderas OBJETIVO: Que el alumno: - Apagar y encender las banderas. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN:

    CLC borra el sealizador de arrastre.

    La operacin CLC pone el sealizador de arrastre a 0 . No estn afectados ningn registro ni sealizador.

    Sintaxis: CLC (no operando) Sealizadores afectados: CF = 0

    Sealizadores no definidos: Ninguno

    CLD borra el sealizador de direccin.

    CLD borra el sealizador de direccin, incrementa SI y DI. Ningn otro registro ni sealizador estn afectados. Despus de que se ejecuta CLD, las operaciones de cadena incrementa automticamente los registro ndice (SI y/o DI).

    Sintaxis: CLD ( no operando) Sealizadores afectados: DF Sealizadores no definidos: Ninguna

    CLI borra sealizador de interrupcin (inhabilita interrupciones).

    La instruccin CLI borra el sealizador de habilitacin de interrupcin. No es afectado ningn otro sealizador.

  • Pgina de 74 27

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Sintaxis: CLI ( no operando) Sealizadores afectados: IF = 0 Sealizadores no defenidos: Ninguno

    CMC complementa sealizador de arrastre. Esta instruccin cambia el valor del sealizador de arrastre. Si el sealizador de arrastre esta a 1, se convierte en 0. Si esta a 0 se convierte en 1.

    Sintaxis: CMC Sealizador afectados: CF Sealizador no definidos: Ninguno.

    LAHF carga en AH los sealidadores. Esta instruccin carga SF, ZF, AF, PF, CF, ciertos bits del registro AH.

    AH

    SF ZF AF PF CF

    Las posiciones de los bits1, 3 y 5 del registro AH estn indefinidas.

    SAHF almacena el contenido del registro AH en los sealizadores SF, ZF, xx, AF, xx, PF, xx, CF. Los valores del registro AH se utilizan para cargar los sealizadores aqu listados desde los bits 7, 6, 4, 2 y 0, respectivamente.

    Sintaxis: SAHF (no operando) Sealizadores afectados: Ninguno Sealizadores no definido: Ninguno

    STC pone a 1 sealizador de arrastre.

    Sintaxis: STC (no operandos) Sealizadores afectados: CF = 1 Sealizadores no definidos: Ninguno

    STD pone a 1 sealizador de direccin. La instruccin STD pone a 1 el sealizador DF. Esto hace que las instruccines de cadena posteriores decremente los registros SI y/o DI.

    Sintaxis: STD (no operando) Sealizadores afectados: Ninguno Sealizadores no definidos: Ninguno

    STI pone a 1 sealizador de habilitacin de Interrupcin. Esto permite que sean facilitadas las interrupciones externas enmascarables despus de la ejecucin de la instruccin siguiente.

    Sintaxis: STI (no operando) Sealizadores afectados: CF = 1 Sealizadores no definidos: Ninguno.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 2.7 Instruccines de manipulacin de banderas

    ;PR2_7.ASM ; Instruccines de manipulacin de banderas Pila SEGMENT PARA STACK 'STACK'

    DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Codigo SEGMENT PARA 'Codigo'

    ManipulacinDeBanderas PROC FAR ASSUME CS:Codigo, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX STC ; Encender la bandera de acarreo CLC ; Apagar la bandera de acarreo

  • Pgina de 74 28

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    LAHF ;Cargar las banderas en la parte alta del registro AX RET ManipulacinDeBanderas ENDP

    Codigo ENDS END ManipulacinDeBanderas

    PRCTICA No. 23 NOMBRE: Comparacin y prueba OBJETIVO: Que el alumno: - Har uso de las instruccines que le permita comparar contenidos y verificarlos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

    - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: CMP Comparacin entre dos operandos, restndolos, lo cual afecta los sealizadores, pero no su

    contenido. Afectando los sealizadores OF,SF,ZF,AF,PF,CF. TEST Permite efectuar una comparacin lgica, haciendo uso de la intruccin AND lgica de bit a bit en los

    dos operandos. Afectando los siguientes sealizadores: OF =0, CF=0, SF, ZF, PF. Despus del uso de cualquiera de las anteriores intrucciones, generalmente se usa un salto, condicional o no.

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE: TEMA SUBTEMAS

    2.8 Instruccines de comparacin y prueba

    ;PR2_8.ASM ; Instruccines de comparacin y prueba Pila SEGMENT PARA STACK 'STACK'

    DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Datos SEGMENT PARA 'Datos'

    Variable1 DB 5 Variable2 DD ? Variable3 DD 10,20,30,40,50

    Datos ENDS Codigo SEGMENT PARA 'Codigo'

    ComparacinYPrueba PROC FAR ASSUME CS:Codigo, DS:Datos, ES:Datos, SS:Pila PUSH DS ;Introduce la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX MOV AX, Datos

    MOV DS, AX

    CMP Variable1,Variable2 ; Comparacin entre dos operandos, restndolos JE Fin

    TEST AX,BX ; Comparacin lgica, haciendo uso de AND bit a bit en los dos operandos JNE Fin

    Fin: RET

    ComparacinYPrueba ENDP Codigo ENDS

    END ComparacinYPrueba

  • Pgina de 74 29

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    PRCTICA No. 24 NOMBRE: Saltos condicionales OBJETIVO: Que el alumno: - Har uso de las instruccines que le permitirn efectuar saltos dentro del mismo programa. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas.

    - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: Una introduccin de salto se reduce a cambiar el contenido de IP y, eventualmente el de CS. Principalmente, existen dos tipos de instruccines de salto: aquellas que especifican la direccin de salto

    inmediato despus del cdigo de operacin, es decir, especifican la etiqueta a la que hay que saltar (denominados saltos directos), y aquellas que especifican una direccin de memoria de la que hay que recoger la direccin a la que saltar (denominadas saltos indirectos).

    Los bytes que componen una instruccin de salto directo incluyen en el cd. la operacin algunos bytes que especifican la direccin a la que se debe producir el salto. Saltos incondicionales:

    Pero existen varios formatos posibles para la instruccines de salto directo. El primero se denomina SHORT JUMP (salto corto), y el nico dato que incluye la instruccin despus del cd. de ope racin es un byte, que representa en complemento a dos el valor a aadir a IP para seguir la ejecucin. Este byte se suma a IP, para lo que primero es necesario extenderlo en signo (que el signo del primer byte ocupe el segundo byte) a 16 bits. As, el byte representa un desplazamiento entre -128 y +127 bytes (256 bytes), que es el rango que se puede especificar con un bytes en complemento a dos.

    Si observamos el orden en el que el microprocesador lleva a cabo la ejecucin de una instruccin, veremos que el desplazamiento se suma a IP despus de haber incrementado ste. Por tanto, el desplazamiento se toma desde la direccin de comienzo de la siguiente instruccin al salto, y no desde la propia instruccin de salto.

    El siguiente formato de salto directo es el NEAR JUMP o salto cercano. Este formato, la instruccin incluye dos

    bytes que forman la palabra a sumar a IP, tambin en complemento a dos. As, el rango de salto est entre -32768 y +32768 bytes (65535 bytes), que efectivamente permiten un salto a cualquier punto del segmento donde reside la instruccin de salto (en este formato CS tampoco es alterado por el salto). El ensamblador comprueba si el salto est en el rango (-128, +127) para realizar un salto corto y si no lo est genera un salto cercano.

    El ltimo tipo de salto se denomina FAR JUMP o salto lejano. Esta denominacin se debe a que ste formato de

    salto, cambia tanto CS como IP, pudiendo saltar a cualquier punto del megabyte direccinable (2 elevado a 20). En ste formato de salto, la instruccin lleva dos palabras con el desplazamiento y el segmento de la direccin a la que hay que saltar (se utiliza para realizar un salto a otro segmento). Este tipo de salto copia directamente en IP y CS los valores dados por la instruccin, sin tener en cuenta el contenido previo de ambos.

    Existen dos formatos de instruccines de indirecto: el primero, denominado NEAR JUMP o salto cercano, lee una palabra de la direccin de memoria especificada y carga el registro IP con sta. As, se puede saltar a cualquier punto del segmento donde resida la instruccin de salto. El otro tipo se denomina FAR JUMP o salto lejano, y toma de la direccin especificada dos palabras, la primera de la cuales se introduce en IP, y la segunda en CS (Ya que el ordenamiento INTEL siempre se almacenan primero los elementos de menor peso). De sta forma se puede saltar a cualquier punto de la memoria direccinable con un salto indirecto.

    JMP: El formato de la instruccin es JMP direccin. Provoca un salto incondicional, por lo que se utiliza para seguir la

    ejecucin del programa en otro punto, que puede ser especificando una etiqueta (salto directo) o especificando una direccin (salto indirecto). Cuando incluimos instruccines de salto en el programa, indicamos la direccin del destino, y en caso de que el salto necesite especificar un valor a sumar a IP, el ensamblador se encarga de calcular el desplazamiento desde el punto donde se ejecuta el sal to. En una instruccin JMP; el propio ensamblador decide si debe generar un salto corto o lejano: en el caso de que el destino est en el rango de un byte con signo, se genera un salto corto, en caso contrario, se genera un salto cercano.

    Saltos condicionales:

  • Pgina de 74 30

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Para los siguiente saltos, vamos a tener en cuenta signi ficados de palabras inglesas que nos van a ayudar a defi - nir el tipo de salto a realizar:

    (Equal=igual, Not=no, Greater=mayor, Less=menor, Above=superior, Below=inferior, Carry=acarreo, - Zero=cero, Overflow=desbordamiento, Sign=signo, Parity=paridad)

    JA: (Salto si superior). Es equivalente a JNBE (Salto si no in ferior ni igual). El formato es: JA etiqueta si tanto el flag de

    acarreo CF como el flag de cero ZF est a cero (CF= 0, ZF=0). Si CF=1 o ZF=1 no se transfiere el control. No se considera el signo.

    Ejemplo: CMP ax, bx ; Comparar AX con BX.

    JA etiqueta ; Saltar (Bifurcar) a ETIQUETA si AX>BX ; (sin considerar signo).

    ETIQUETA:

    JAE: (Salto si superior o igual). Es equivalente a JNB (Salto si no inferior). El formato es: JAE etiqueta. Salta a la etiqueta si el flag de acarreo es cero (CF=0). No se considera el signo.

    Ejemplo: CMP ax, bx ; Comparamos AX con BX. JAE etiqueta ; Bifurca a ETIQUETA si AX> o =BX ; (sin considerar el signo). ETIQUETA:

    JB: (Salto si inferior). Es equivalente a JNAE (Salto si no su perior ni igual) y a JC (Salto sin acarreo). El formato es: JB

    etiqueta. Salta a la etiqueta si el flag de acarreo es uno (CF=1). No se considera el signo. Ejemplo:

    CMP ax, bx JB etiqueta ; Bifurca a ETIQUETA si AX < BX ; (sin considerar el signo). ETIQUETA:

    JBE: (Salto si inferior o igual). Es equivalente a JNA (Salto si no superior). El formato es: JBE etiqueta. Salta a la etiqueta si el flag de acarreo es igual a 1 o el flag de cero es igual a uno (CF=1 y ZF=1). Si CF=0 y ZF=0 no hay salto. No se considera el signo.

    Ejemplo: CMP ax, bx JBE etiqueta ; Bifurca a ETIQUETA si AX es = o < que BX ; (sin considerar el signo). ETIQUETA:

    JE: (Salto si igual). Es equivalente a JZ (Salto si cero). El formato es: JE etiqueta. Salta a la etiqueta si el flag de cero es igual a uno (ZF=1). Se considera nmero con signo y sin signo.

    Ejemplo: JZ etiqueta ; Bifurca a ETIQUETA si AX es cero. ETIQUETA:

    JG: (Salto si mayor). Es equivalente a JNLE (Salto si no menor ni igual). El formato es: JG etiqueta. Salta a la etiqueta si el flag de cero es igual a cero y el flag de desbordamiento contiene el mismo valor que el flag de signo (ZF=0 y SF=OF). Si ZF=1 o SFOF, no hay salto. Se considera el signo.

    Ejemplo: CMP ax, bx JG etiqueta ; Bifurca a ETIQUETA si AX > BX ; (considerando el signo). ETIQUETA:

    JGE: (Salto si mayor o igual). Es equivalente a JNL (Salto si no menor). El formato es: JGE etiqueta. Salta a la etique - ta si el flag de desbordamiento contiene el mismo valor que el flag de signo (SF=OF). Se considera el signo.

    Ejemplo: CMP ax, bx JGE etiqueta ; Bifurca a ETIQUETA si AX es > o = BX ; (considerando el signo). ETIQUETA:

    JLE: (Salto si menor o igual). Es equivalente a JNG (Salto si no mayor). El formato es: JLE etiqueta. Salta a la etique - ta si el flag de cero est a uno o el flag de desborda miento y el de signo contiene valores distintos (ZF=1 o SF distinto de OF). Si ZF=0 y SF=OF no se produce el salto. Se considera el signo.

  • Pgina de 74 31

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    Ejemplo: CMP ax, bx JLE etiqueta ; Bifurca a ETIQUETA si AX es < o = BX ; (considerando el signo). ETIQUETA:

    JNA, JNAE, JNB, JNBE, JNE, JNG, JNGE, JNL, JNLE: Estas instruccines comprueban exactamente las condiciones opuestas a sus anlogas sin la letra N. En realidad no sera necesaria, porque son sinnimas de JBE, JB, JAE, JNZ, JLE, JL, JGE Y JE, respectivamente. Pero el lenguaje ensamblador estndar las incluye para facilitar el trabajo del programa - dor.

    JO: (Salto si desbordamiento). Formato es: JO etiqueta. Salta a la etiqueta si el flag de desbordamiento est a uno

    (OF=1). Ejemplo:

    ADD ax, bx ; AX=AX+BX JO etiqueta ; Bifurca a ETIQUETA si hay desbordamiento ; (Overflow). ETIQUETA:

    JNO: (Salto si no desbordamiento). El formato es: JNO etiqueta. Salta a la etiqueta si el flag de desbordamiento est a cero (OF=0).

    Ejemplo: ADD al, bl ; AL=AL+BL JNO etiqueta ; Bifurca a ETIQUETA si no hay desbordamiento ; (No overflow). ETIQUETA:

    JS: (Salto si signo). El formato es: JS etiqueta. Salta a la etiqueta si el flag de signo est a uno (SF=1). Ejemplo:

    SUB ax, bx ; AX=AX-BX JS etiqueta ; Bifurca a ETIQUETA si signo, es decir, AX < 0 ; (en este caso, si AX es menor que BX). ETIQUETA:

    JNS: (Salto si no signo / si el signo es positivo). El formato es: JNS etiqueta. Salta a la etiqueta si el flag de signo est

    a cero (SF=0). Ejemplo:

    SUB ax, bx ; AX=AX-BX JNS etiqueta ; Bifurca a ETIQUETA si no signo, es decir, AX > o = que BX ; (en este caso, si AX es mayor o igual que BX).

    ETIQUETA:

    JP: (Salto si paridad). Es equivalente a JPE (salto sin paridad par). El formato es: JP etiqueta. Salta a la etiqueta si el flag de paridad est a uno (PF=1).

    Ejemplo: AND ax, bx ; AX=AX AND BX JP etiqueta ; Bifurca a ETIQUETA si paridad par, es decir ; si el nmero de "unos (1)" que hay en AX es par.

    ETIQUETA:

    JNP: (Salto si no paridad). Es equivalente a JPO (salto sin paridad impar). El formato es: JNP etiqueta. Salta a la etiqueta si el flag de paridad est a cero PF=0).

    Ejemplo: AND ax, bx ; AX=AX AND BX JNP etiqueta ; Bifurca a ETIQUETA si paridad impar, es decir ; si el nmero de "unos (1)" que hay en AX es impar. ETIQUETA:

    CORRELACION CON LOS TEMAS Y SUBTEMAS DEL PROGRAMA DE ESTUDIO VIGENTE:

    TEMA SUBTEMAS 2.9 Instruccines de salto 2.9.1 Condicionales

  • Pgina de 74 32

    TECNOLOGICO DE ESTUDIOS SUPERIORES DE HUIXQUILUCAN Academia de Ingeniera en Sistemas Computacionales Ing. J. D. Aurelio Rico Daz

    ;PR2_9_1.ASM ; Instruccines de salto Pila SEGMENT PARA STACK 'STACK'

    DB 64 DUP(0) ;Reserva 64 bytes en el rea de la pila y los inicia con ceros Pila ENDS Codigo SEGMENT PARA 'Codigo'

    Saltos PROC FAR ASSUME CS:Codigo,SS:Pila PUSH DS;Guarda la direccin del segmento de datos del programa que llama a ste en la pila MOV AX,00 PUSH AX

    MOV AX,00 MOV BX,10

    INICIO: INC AX ; Incrementa en una unidad el contenido de AX DEC BX ; Decrementa en una unidad el contenido de BX CMP AX,BX ; Compara el contenido de AX con el de BX JE FIN ; Si los contenidos comparados son iguales salta al FIN SALTO

    CONDICIONADO JMP INICIO ; Siempre que llegue a este punto salta al INICIO SALTO

    INCONDICIONAL FIN: RET

    Saltos ENDP Codigo ENDS

    END Saltos

    PRCTICA No. 25 NOMBRE: Ciclos OBJETIVO: Que el alumno:

    - Pondr en prctica las instruccines que le permitirn hacer uso de cuatro tipos de ciclos. - Aprenda la sintaxis bsica de un programa en ENSAMBLADOR y las palabras reservadas. - Se familiarice con el ambiente de desarrollo en la que codificar, grabar, editar, compilar y ejecutar los

    programas que se presentan en el manual.

    INTRODUCCIN: LOOP: Esta instruccin permite realizar "bucles" utilizando el registro CX como contador (CX en un contador

    que va decrementndose). Un bucle es un conjunto de instruccines que se ejecutan una serie de veces. Esta instruccin equivale al par: DEC CX // JNZ etiqueta. El formato es: LOOP etiqueta.

    LOOPE: