Antologia Lenguaje Ensamblador

download Antologia Lenguaje Ensamblador

of 72

Transcript of Antologia Lenguaje Ensamblador

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    1

    PRESENTACIN

    El lenguaje ensamblador aun en estos das presenta ventajas sobre los

    lenguajes de alto nivel, lo anterior por su interaccin directa sobre el Hardware.

    La presente Antologa fue elaborada para la asignatura de Lenguaje

    Ensamblador incluida en la Reforma Educativa 2004, para la Carrera de Ingeniera en

    Sistemas Computacionales para el Instituto Tecnolgico Superior de Huauchinango.

    Fue realizada con la finalidad de mostrar al lector las principales

    instrucciones y aspectos bsicos del lenguaje Ensamblador.

    Es utilizado el compilador MASM para el desarrollo de los programas,

    mostrndose los pasos para la realizacin, compilacin y ligado de un progre

    Esperando que la presente antologa sea de utilidad

    Ing. Claudia Yadira Luna Carrasco

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    2

    NDICE

    Pg.

    Presentacin 1

    Unidad I Fundamentos

    1.1 Introduccin. 4

    1.1.1 Uso y aplicaciones del lenguaje ensamblador. 5

    1.1.2 Escalabilidad de los microprocesadores. 6

    1.1.3 Tipos de lenguajes ensambladores. 9

    1.1.4 Clasificacin de Memorias. 10

    1.1.5 Unidades de entrada / salida. 12

    1.2 El microprocesador. 13

    1.2.1 Buses. 14

    1.2.2 Registros. 15

    1.2.3 Modos de direccionamiento. 18

    1.3 Interrupciones. 19

    1.3.1 Hardware. 23

    1.3.2 Software. 24

    1.4 Estructura de un programa en ensamblador. 25

    1.4.1 Data segment. 26

    1.4.2 Snack segment. 28

    1.4.3 Code segment 28

    1.4.4 Instrucciones del programa. 29

    1.5 Procedimiento de ensamble, enlace y ejecucin. 31

    1.6 Entorno de programacin. 34

    Unidad II Elementos del Lenguaje

    2.1 Instrucciones lineales 35

    2.1.1 Movimiento. 35

    2.1.2 Pila. 35

    2.1.3 Matemticos. 36

    2.1.4 Ajustes. 37

    2.1.5 Comparacin. 37

    2.2 Saltos. 37

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    3

    2.2.1 Incondicional. 37

    2.2.2 Condicional. 38

    2.3 Tipos de ciclos. 39

    2.4 Operadores Lgicos. 39

    2.5 Desplazamiento. 39

    2.5.1 Lineal. 39

    2.5.2 Circular. 40

    2.6 Procesos de control 41

    2.6.1 Banderas 41

    2.6.2 Cadenas 41

    2.6.3 Carga 42

    Unidad III Modularizacin

    3.1 Macros 43

    3.2 Procedimientos 45

    3.2.1 Internos 45

    3.2.2 Externos 47

    Unidad IV Programacin Hbrida

    Interrupciones 53

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    4

    UNIDAD I

    FUNDAMENTOS

    1.1 Introduccin

    Cuando las primeras computadoras hicieron su aparicin, estas eran solo

    programables por sus diseadores, puesto que ellos eran los que conocan su

    diseo y la forma en que deban ser programadas.

    Con el avance del tiempo, las computadoras fueron siendo diseadas bajo

    arquitecturas similares, lo que facilit su programacin, aunque el grupo de

    personas que poda realizar esta labor era pequeo, puesto que se deba tener un

    amplio conocimiento sobre esta labor.

    La informacin que hace que el hardware de la computadora realice una

    determinada actividad de llama instruccin. Por consiguiente una instruccin es

    un conjunto de unos y ceros.

    Las instrucciones formadas con unos y ceros equivalen a acciones

    elementales de la mquina, por lo que al conjunto de dichas instrucciones que

    son interpretadas directamente por la mquina se denomina lenguaje mquina.

    El lenguaje mquina fue el primero que empleo el hombre para la

    programacin de las primeras computadoras, por esta razn el grupo de

    programadores era limitado.

    El Lenguaje Ensamblador es la primera abstraccin del Lenguaje Mquina, y

    consiste en asociar palabras clave a estas instrucciones, para que faciliten su uso

    por parte del programador.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    5

    La aparicin del Lenguaje Ensamblador inicio la construccin de otros

    lenguajes de programacin, hasta llegar a los lenguajes de Alto Nivel que hoy

    conocemos.

    1.1.1 Uso y aplicaciones del Lenguaje Ensamblador.

    El uso del lenguaje ensamblador le permite al programador indicarle a la

    computadora exactamente cmo llevar a cabo una tarea especfica usando la

    menor cantidad de instrucciones. La optimizacin resulta en una mejora

    sustancial en trminos de rendimiento y consumo de memoria as como otros

    recursos.

    El lenguaje ensamblador es usualmente utilizado en las siguientes circunstancias:

    Para mejorar la eficiencia de una rutina o programa especfico que se puede o se ha transformado en un cuello de botella.

    Para obtener acceso a funciones de bajo nivel del procesador para realizar tareas que no son soportadas por los lenguajes de alto nivel.

    Para escribir manejadores de dispositivos para comunicarse directamente con hardware especial.

    Trabajar en ambientes con recursos limitados puede requerir el uso del lenguaje ensamblador pues el cdigo ejecutable puede ser menor que el

    generado por un Lenguaje de alto nivel.

    El lenguaje ensamblador tiene como ventajas:

    Velocidad: el proceso de traduccin que realizan los intrpretes, implica un proceso de cmputo adicional al que el programador quiere realizar. Por ello el

    lenguaje ensamblador es ms rpido que un intrprete, por que no necesita

    traduccin.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    6

    Tamao: un intrprete genera cdigo de ms al necesario y por ello un ejecutable se crece, y comparado con ello, el ejecutable generado con

    Lenguaje Ensamblador es relativamente pequeo.

    Flexibilidad: los lenguajes de alto nivel no permiten el uso directo del hardware de la computadora, Lenguaje Ensamblador si lo hace.

    Las herramientas para programar en Lenguaje Ensamblador son:

    1. Un editor de textos.

    2. Un Ensamblador, que convierta el cdigo fuente al cdigo objeto.

    3. Un Montador o de Ligado, que permita el mdulo objeto en ejecutable.

    1.1.2 Escalabilidad de los microprocesadores.

    En una computadora est contenido un chip o circuito llamado

    microprocesador. Todas las computadoras tienen por lo menos dos partes

    bsicas, la unidad de control y la unidad aritmtico-lgica.

    Todos los recursos de la computadora son administrados desde la unidad

    de control, cuya funcin es coordinar todas las actividades de la computadora.

    La unidad de control contiene las instrucciones del procesador para llevar a cabo

    comandos.

    El conjunto de instrucciones, que est incluido dentro de los circuitos de

    la unidad de control, es una lista de todas las operaciones que realiza el

    procesador. Cada instruccin en el conjunto de instrucciones es acompaado por

    un microcdigo, que son instrucciones muy bsicas que le dicen al procesador

    cmo ejecutar las instrucciones.

    Cuando la computadora corre un programa, busca los comandos del

    programa dentro del conjunto de instrucciones del procesador y las ejecuta en

    orden.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    7

    La unidad aritmtico-lgico (ALU) se encarga de ejecutar las instrucciones

    que involucran aritmtica o lgica. La ALU incluye un grupo de registros, es decir,

    memoria construida directamente en el procesador que se usa para guardar datos

    que estn siendo procesados por la instruccin actual.

    Los procesadores modernos contienen ms de 20 millones de transistores y

    pequeos de tamao, mientras que en sus inicios contenan solo 2000

    transistores y el tamao era considerable.

    El microprocesador es la parte de la computadora diseada para ejecutar

    programas, con tecnologa semiconductora. Se eslabona desde los 50s pero la

    tecnologa se fusiona en los 70s.

    Anteriormente se usaban tubos al vaco (bulbos) como componentes

    electrnicos activos. En 1948 en los laboratorios de Bell crearon el Transistor

    (material de silicio de bajo costo) para reemplazar al tubo al vaco. De esta forma

    comienzan a surgir los circuitos digitales que llevan a la reduccin de la tecnologa

    a un circuito integrado llamado microprocesador.

    Actualmente la capacidad de integracin y el abaratamiento de las

    tecnologas permite que casi cualquier empresa pueda contar con una capacidad

    de cmputo antes inimaginable para las tareas que necesita.

    Se prev que la capacidad de integracin llegue a un techo tecnolgico, en

    el cual se necesite un nuevo paradigma para poder seguir incrementando la

    capacidad de procesamiento de las mquinas.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    8

    En la siguiente tabla se muestran algunos de los procesadores del mercado,

    la fecha en la que fueron presentados al mercado, la velocidad promedio que

    alcanzaban, el ancho de bus que contenan, un aproximado de transistores y la

    memoria interna de cada uno de ellos.

    Procesador Fecha de presentacin

    Velocidad de Reloj

    Ancho de bus

    Transistores Memoria

    4004 15/11/71 108 Khz 4 bits 2300 640 byte

    8008 01/04/72 108 khz 8 bits 3500 16 kb

    8080 01/04/74 2 Mhz 8 bits 6000 64 kb

    8086 08/06/78 5-10 Mhz 16 bits 2900 100 Mb

    8088 01/06/79 5-10 Mhz 8 bits 2900 300 Mb

    80286 01/02/82 8-12 Mhz 16 bits 13400 1 Mb

    80386 17/10/85 16-33 Mhz

    32 bits

    27500 20 Mb

    80486 22/04/91 16-33 Mhz 32 bits 1185000

    Pentium 22/03/93 60-200 Mhz 32 bits 3.1 millones

    Pentium Pro 27/03/95 150-200 Mhz

    64 bits 5.5 millones

    AMD k5 1996 90-200 Mhz 64 bits 3.3 4.3 millones

    Pentium II 07/05/97 233-300 Mhz

    64 bits 7.5 millones

    Intel Celaron 1998 266 Mhz 64 bits 7.5 millones

    AMD Duron 2000 600-1000 Mhz

    64 bits 25 millones

    Pentium 4 2000 2000 Mhz 64 bits 42 millones 1 Gb

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    9

    1.1.3 Tipos de Lenguajes Ensambladores

    Los lenguajes ensambladores, dependen de la arquitectura de la computadora,

    existen:

    Los ensambladores de la familia Intel Los ensambladores de la familia Motorota Los ensambladores del procesador Power de las IBM

    Aunque todos los ensambladores realizan bsicamente las mismas tareas,

    podemos clasificarlos de acuerdo a caractersticas.

    Ensambladores Cruzados (Cross-Assembler). Se denominan as los ensambladores que se utilizan en una computadora que posee un procesador

    diferente al que tendrn las computadoras donde va a ejecutarse el programa

    objeto producido.

    Ensambladores Residentes. Son aquellos que permanecen en la memoria principal de la computadora y cargan, para su ejecucin, al programa objeto

    producido.

    Macroensambladores. Son ensambladores que permiten el uso de macroinstrucciones debido a su potencia, normalmente son programas

    robustos que no permanecen en memoria una vez generado el programa

    objeto.

    Microensambladores. Generalmente, los procesadores utilizados en las computadoras tienen un repertorio fijo de instrucciones, este conjunto de

    instrucciones sirven para un determinado cdigo de operacin y a estas se les

    conoce como microensambladores.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    10

    1.1.4 Clasificacin de Memorias.

    La memoria de un ordenador se puede definir como los circuitos que permiten

    almacenar y recuperar la informacin.

    Las memorias se clasifican, por la tecnologa empleada y, adems segn la

    forma en que se puede modificar su contenido, A este respecto, las memorias se

    clasifican en dos grandes grupos:

    1) Memorias RAM: Son memorias en las que se puede leer y escribir, si bien su

    nombre (Random Access Memory) no representa correctamente este hecho.

    2) Memorias ROM (Read 0nly Memory): Son memorias en las que slo se puede

    leer. Pueden ser:

    a) ROM programadas por mscara, cuya informacin se graba en fbrica y no se

    puede modificar.

    b) PROM, o ROM programable una sola vez.

    c) EPROM (erasable PROM) o RPROM (reprogramable ROM), cuyo contenido

    puede borrarse mediante rayos ultravioletas para regrabarlas.

    d) EAROM (electrically alterable ROM) o EEROM (electrically erasable ROM), que

    son memorias que est en la frontera entre las RAM y las ROM ya que su

    contenido puede regrabarse por medios elctricos, estas se diferencian de las

    RAM en que no son voltiles. En ocasiones a este tipo de memorias tambin se

    las denomina NYRAM (no voltil RAM).

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    11

    La memoria principal esta formada por un conjunto de unidades llamadas

    palabras en forma de una organizacin lineal. Dentro de cada una de estas

    palabras se guarda la informacin que constituye una instruccin o parte de ella

    (puede darse el caso de que una sola instruccin necesite varia palabras), o un

    dato o parte de un dato (tambin un dato puede ocupar varias palabras).

    A la cantidad de palabras que forman la Memoria Principal se le denomina

    capacidad de memoria. De este modo, cuanto mayor sea el nmero de palabras

    mayor ser el nmero de instrucciones y datos que podr almacenar la

    computadora. El nmero de bits que forman una palabra se llama longitud de

    palabra.

    La accin de guardar una informacin en una palabra de la memoria se

    llama acceso de escritura, y la accin de recuperarla, acceso de lectura. Los

    accesos son coordinados por la UC. La secuencia de rdenes que debe generar la

    Unidad de Control se indica en las siguientes tablas.

    Secuencia de acceso a la memoria.

    Acceso de Escritura Acceso de Lectura

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    12

    1.1.5 Unidades de Entrada / Salida.

    La computadora tiene comunicacin de manera interna y externa, de manera

    externa la comunicacin se consigue a travs de diversos dispositivos, como son:

    teclados, ratones, impresoras, monitores, escner, etc.

    Tomemos en cuenta que todos los perifricos (dispositivos que pueden

    conectarse a la computadora) son diferentes, por tanto, el manejo que cada uno

    de ellos da a la informacin tambin es diferente, en otras palabras la

    computadora habla espaol y cada perifrico habla un idioma diferente, entonces,

    para que la comunicacin entre la computadora y el perifrico sea la apropiada,

    se hace necesario un intrprete o intermediario que permita la traduccin ante

    los diversos idiomas que cada uno maneja.

    La unidad que funciona como intermediario se llama Unidad de

    Entrada/Salida, cuya funcin principal es llevar a cabo las operaciones de

    Entrada/Salida.

    Definiremos una operacin de E/S como el conjunto de acciones necesarias

    para la transferencia de un conjunto de datos (es decir, una transferencia

    completa de datos). Para la realizacin de una operacin de E/S se deben

    efectuar las siguientes funciones:

    Recuento de las unidades de informacin transferidas (normalmente bytes) para reconocer el fin de operacin.

    Sincronizacin de velocidad entre la CPU y el perifrico. Deteccin de errores (e incluso correccin) mediante la utilizacin de los

    cdigos necesarios (bits de paridad, cdigos de redundancia cclica, etc.)

    Almacenamiento temporal de la informacin. Es ms eficiente utilizar un buffer temporal especfico para las operaciones de E/S que utilizan el rea

    de datos del programa.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    13

    Conversin de cdigos, conversin serie/paralelo, etc.

    1.2 El Microprocesador.

    La Unidad central de proceso o CPU, se puede definir como un circuito (chip) que

    interpreta y ejecuta instrucciones.

    El microprocesador se ocupa del control y el proceso de datos en los

    ordenadores. Habitualmente, la CPU es un microprocesador fabricado en un chip,

    un nico trozo de silicio que contiene millones de componentes electrnicos. El

    microprocesador de la CPU est formado por una unidad aritmtico lgica que

    realiza clculos y comparaciones, y toma decisiones lgicas (determina si una

    afirmacin es cierta o falsa mediante las reglas del lgebra de Boole); por una

    serie de registros donde se almacena informacin temporalmente, y por una

    unidad de control que interpreta y ejecuta las instrucciones. Para aceptar rdenes

    del usuario, acceder a los datos y presentar los resultados, la CPU se comunica a

    travs de un conjunto de circuitos o conexiones llamado bus. El bus conecta la

    CPU a los dispositivos de almacenamiento (por ejemplo, un disco duro), los

    dispositivos de entrada (por ejemplo, un teclado o un ratn) y los dispositivos de

    salida (por ejemplo, un monitor o una impresora).

    Elementos que la componen:

    Unidad de control: controla el funcionamiento de la CPU y por tanto de el computador.

    Unidad aritmtico-lgica (ALU): encargada de llevar a cabo las funciones de procesamiento de datos del computador.

    Registros: proporcionan almacenamiento interno a la CPU. Interconexiones CPU: Son mecanismos que proporcionan comunicacin

    entre la unidad de control, la ALU y los registros.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    14

    1.2.1 Buses.

    El bus es bsicamente una serie de cables mediante los cuales pueden

    transportarse los datos de una unidad a otra.

    Los buses han ido evolucionando conforme lo hicieron los procesadores,

    entre ms ancho es el bus, mas rpida es la transportacin de datos, y por lo

    tanto del procesador.

    Un bus es en esencia una ruta compartida que conecta diferentes partes del

    sistema, como el microprocesador, la controladora de unidad de disco, la

    memoria y los puertos de entrada/salida (E/S), para permitir la transmisin de

    informacin.

    Existen:

    Bus de Datos. Su funcin principal es la de transportar datos entre los dispositivos.

    Bus de Direcciones. En donde son transportadas las direcciones de memoria principal.

    Bus de Control. Transporta seales de estado de las operaciones efectuadas por el CPU con las dems unidades.

    Bus de Sincronizacin. Transporta las seales de reloj que permiten la temporizacin.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    15

    1.2.2 Registros.

    El procesador para realizar y agilizar sus funciones contiene dentro de s, una

    serie de registros que a continuacin se describen:

    REGISTROS DE PROPSITO GENERAL

    Pueden ser utilizados como un solo registro de 16 bits o bien como dos registros

    independientes de 8 bits.

    Registro Descripcin

    AX Registro

    Acumulador

    Se utiliza generalmente para el almacenamiento de datos en

    general, comnmente operandos o resultados parciales de

    las operaciones realizadas por la ALU.

    BX Registro

    Base

    Se usa para conservar la direccin base de los datos

    almacenados en el segmento de datos de la memoria

    CX Registro

    Contador

    Guarda el valor del ndice de conteo durante la ejecucin de

    un ciclo.

    DX Registro De

    Datos

    Se usa para almacenar la parte alta del resultado de un

    producto de mas de 16 bits.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    16

    REGISTROS APUNTADORES E NDICES

    Registro Descripcin

    IP

    Apuntador

    de

    Instrucciones

    Contiene la direccin de la siguiente instruccin a ejecutar

    por el procesador.

    SP Apuntador

    de Pila

    Se utiliza para mantener la direccin del borde de la pila de

    la memoria.

    BP Apuntador

    Base

    Su uso principal es el de proveer un mecanismo paa poder

    pasar parmetros a rutinas. Tambin se usa para conservar

    la direccin base de los datos almacenados en el segmento

    de pila de la memoria.

    SI ndice

    Fuente

    DI ndice

    Destino

    Su principal aplicacin es en instrucciones u operaciones que

    involucran cadenas.

    REGISTROS DE SEGMENTO

    Registro Descripcin

    CS Segmento

    de cdigo

    Contiene la direccin de la memoria donde inicia el

    segmento que contiene los programas y sus procedimientos.

    DS Segmento

    de datos

    Contiene la direccin de la memoria donde inicia el

    segmento o bloque de memoria que contiene la mayor parte

    de los datos o variables utilizados en un programa.

    SS Segmento

    de pila

    Contiene la direccin de la memoria utilizado por la pila de la

    memoria.

    ES

    Segmento

    extra de

    datos

    Contiene la direccin de la memoria que se utiliza para

    guardar datos cuando se ha excedido la capacidad del

    registro de segmento de datos (cadenas).

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    17

    REGISTROS DE BANDERAS

    F15 F14 F13 F12 F11 F10 F9 F8 F7 F6 F5 F4 F3 F2 F1 F0

    OF DF IF TF SF ZF AF PF CF

    Registro Descripcin

    CF

    Carry flag,

    bandera de

    acarreo

    Indica un acarreo alto al trmino de una suma o un

    prstamo al final de una resta. CF = 1 indica que existe un

    acarreo

    PF

    Parity flag,

    bandera de

    paridad

    Indica si el nmero de unos en el resultado de una

    operacin es par o impar. PF = 0 indica una paridad impar.

    AF

    Auxiliary carry

    flag, bandera de

    acarreo auxiliar

    Esta bandera se activa cuando existe acarreo de la parte

    baja a la parte alta en el registro AL.

    ZF Zero flan,

    bandera de cero

    Se activa cuando el resultado de una operacin aritmtica

    es cero.

    SF Sign flag,

    badera de signo

    Indica si el resultado de una operacin aritmtica es

    positivo o negativo. SF = 0 si el resultado es positivo.

    TF

    Trap flag,

    bandera de

    trampa

    Indica si un programa se ejecutar instruccin por

    instruccin, detenindose en cada una de ellas.

    IF

    Interrupt enable

    flag, bandera de

    interrupcin

    Indica si las interrupciones se encuentran habilitadas o

    deshabilitadas. IF = 1 cuando las interrupciones estn

    habilitadas.

    DF

    Direcction flag,

    bandera de

    direccin

    Indica el orden como sern manipulados los datos en

    instrucciones de cadenas. (de principio a fin o de fin a

    principio)

    OF

    Overflow flag,

    bandera de

    sobreflujo

    Se activa cuando al final de una operacin aritmtica existe

    la condicin de sobre flujo, es decir, el resultado es mayor

    a la capacidad de almacenamiento del destino.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    18

    Descripcin de las banderas

    Por medio de smbolos, el comando R nos indica el estado de cada bit en el

    registro de banderas.

    Banderas OF DF IF SF ZF AF PF CF

    Desactivadas:

    XF = 0 NV UP DI PL NZ NA PO NC

    Activadas

    XF = 1 OV DN EI NG ZR AC PE CY

    1.2.3 Modos de Direccionamiento

    Instruccin Mov, almacena el contenido de la fuente en el destino.

    Formato: MOV Destino, Fuente

    Tipo de Direccionamiento Formato Descripcin

    De Registro Mov Ax, BX Copia el contenido de un registro a otro.

    Inmediato Mov Ax, 25H Es cuando se guarda un dato de manera

    directa en el destino.

    Directo Mov Al, [24A7]

    Permite la transferencia de datos entre

    una localidad de memoria situada dentro

    del segmento de datos y los registros Al o

    AX.

    Indirecto por Registro Mov AH, [BX]

    Permite transferir los datos de una

    localidad de memoria por medio de los

    siguientes registros BP, BX, DI o SI, los

    cuales guardan el direccionamiento.

    Relativo por Registro Mov AX, [BX+100H]

    En este tipo de direccionamiento de

    agrega un desplazamiento a un registro

    base o ndice.

    Base ms ndice o

    Indexado Mov AX, [BP+DI]

    Este tipo de direccionamiento tambin

    interacta en forma indirecta con los

    datos en la memoria. El desplazamiento

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    19

    se forma por medio de un registro base

    (BX o BP) mas un registro ndice (SI o

    DI).

    Relativo Base ms

    ndice Mov AL, [BP+SI+125H]

    Opera similar al direccionamiento base

    ms ndice, donde se agrega un

    desplazamiento ms en forma de un dato

    inmediato.

    PUSH Fuente

    Empuja el contenido de la fuente a la pila

    (Guarda en memoria), en la direccin a la

    que apunta SP. De Pila (LIFO, ltimo en

    entrar, primero en salir)

    POP Destino

    Recupera un dato de la pila y lo coloca en

    el destino (extrae de memoria), de la

    direccin a la que apunta SP.

    1.3 Interrupciones

    Una interrupcin es una operacin que suspende la ejecucin de un programa de

    modo que el sistema pueda realizar una accin especial. La rutina de interrupcin

    ejecuta y por lo regular regresa el control al procedimiento que fue interrumpido,

    el cual entonces reasume su ejecucin.

    Una interrupcin guarda en la pila el contenido del registro de banderas, el CS, y

    el IP.

    La direccin CS:IP entonces apunta al inicio de la rutina en el rea del BIOS, que

    ahora se ejecuta. La interrupcin regresa va una instruccin IRET (regreso de

    interrupcin), que saca de la pila el IP, CS y las banderas y regresa el control a la

    instruccin que sigue al INT.

    Las interrupciones se dividen en dos tipos las cuales son: Externas y Internas.

    Una interrupcin externa es provocada por un dispositivo externo al procesador.

    Una interrupcin interna ocurre como resultado de la ejecucin de una instruccin

    INT o una operacin de divisin que cause desbordamiento, ejecucin en modo de

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    20

    un paso o una peticin para una interrupcin externa, tal como E/S de disco. Los

    programas por lo comn utilizan interrupciones internas, que no son

    enmascarables, para accesar los procedimientos del BIOS y del DOS.

    El BIOS contiene un extenso conjunto de rutinas de entrada/salida y tablas que

    indican el estado de los dispositivos del sistema. El dos y los programas usuarios

    pueden solicitar rutinas del BIOS para la comunicacin con los dispositivos

    conectados al sistema. El mtodo para realizar la interfaz con el BIOS es el de las

    interrupciones de software.

    A continuacin se listan algunas interrupciones del BIOS.

    INT 00H: Divisin entre cero. Llamada por un intento de dividir entre cero.

    Muestra un mensaje y por lo regular se cae el sistema.

    INT 01H: Un solo paso. Usado por DEBUG y otros depuradores para permitir

    avanzar por paso a travs de la ejecucin de un programa.

    INT 02H: Interrupcin no enmascarare. Usada para condiciones graves de

    hardware, tal como errores de paridad, que siempre estn habilitados. Por lo

    tanto un programa que emite una instruccin CLI (limpiar interrupciones) no

    afecta estas condiciones.

    INT 03H: Punto de ruptura. Usado por depuracin de programas para detener la

    ejecucin.

    INT 04H: Desbordamiento. Puede ser causado por una operacin aritmtica,

    aunque por lo regular no realiza accin alguna.

    INT 05H: Imprime pantalla. Hace que el contenido de la pantalla se imprima.

    Emita la INT 05H para activar la interrupcin internamente, y presione las teclas

    Cltr + PrtSC para activarla externamente. La operacin permite interrupciones y

    guarda la posicin del cursor.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    21

    INT 08H: Sistema del cronometro. Una interrupcin de hardware que actualiza la

    hora del sistema y (si es necesario) la fecha. Un chip temporizador programable

    genera una interrupcin cada 54.9254 milisegundos, casi 18.2 veces por

    segundo.

    INT 09H: Interrupcin del teclado. Provocada por presionar o soltar una tecla en

    el teclado.

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

    COM2, respectivamente.

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

    LPT2, respectivamente.

    INT 0EH: Control de disco flexible. Seala actividad de disco flexible, como la

    terminacin de una operacin de E/S.

    INT 10H: Despliegue en vdeo. Acepta el numero de funciones en el AH para el

    modo de pantalla, colocacin del cursor, recorrido y despliegue.

    INT 11H: Determinacin del equipo. Determina los dispositivos opcionales en el

    sistema y regresa el valor en la localidad 40:10H del BIOS al AX. (A la hora de

    encender el equipo, el sistema ejecuta esta operacin y almacena el AX en la

    localidad 40:10H).

    INT 12H: Determinacin del tamao de la memoria. En el AX, regresa el tamao

    de la memoria de la tarjeta del sistema, en trminos de kilobytes contiguos.

    INT 13H: Entrada/salida de disco. Acepta varias funciones en el AH para el

    estado del disco, sectores ledos, sectores escritos, verificacin, formato y

    obtener diagnostico.

    Los dos mdulos del DOS, IO.SYS y MSDOS.SYS, facilitan el uso del BIOS. Ya que

    proporcionan muchas de las pruebas adicionales necesarias, las operaciones del

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    22

    DOS por lo general son mas fciles de usar que sus contrapartes del BIOS y por

    lo comn son independientes de la maquina.

    Las interrupciones desde la 20H hasta la 3FH estn reservadas para operaciones

    del DOS.

    INT 20H: Termina programa. Finaliza la ejecucin de un programa .COM,

    restaura las direcciones para Cltr + Break y errores crticos, limpia los bufer de

    registros y regresa el control al DOS. Esta funcin por lo regular seria colocada en

    el procedimiento principal y al salir de el, CS contendra la direccin del PSP. La

    terminacin preferida es por medio de la funcin 4CH de la INT 21H.

    INT 21H: Peticin de funcin al DOS. La principal operacin del DOS necesita

    una funcin en el AH.

    INT 22H: Direccin de terminacin. Copia la direccin de esta interrupcin en el

    PSP del programa (en el desplazamiento 0AH) cuando el DOS carga un programa

    para ejecucin. A la terminacin del programa, el DOS transfiere el control a la

    direccin de la interrupcin. Sus programas no deben de emitir esta interrupcin.

    INT 23H: Direccin de Cltr + Break. Diseada para transferir el control a una

    rutina del DOS (por medio del PSP desplazamiento 0EH) cuando usted presiona

    Ctlt + Break o Ctlr + c. La rutina finaliza la ejecucin de un programa o de un

    archivo de procesamiento por lotes. Sus programas no deben de emitir esta

    interrupcin.

    INT 24H: Manejador de error critico. Usada por el dos para transferir el control

    (por medio del PSP desplazamiento 12H) cuando reconoce un error critico (a

    veces una operacin de disco o de la impresora).Sus programas no deben de

    emitir esta interrupcin.

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

    disco.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    23

    INT 26H: Escritura absoluta de disco. Escribe informacin desde la memoria a

    uno o mas sectores de disco.

    INT 27H: Termina pero permanece residente (reside en memoria). Hace que un

    programa .COM al salir permanezca residente en memoria.

    INT 2FH: Interrupcin de multiplexion. Implica la comunicacin entre programas,

    como la comunicacin del estado de un spooler de la impresora, la presencia de

    un controlador de dispositivo o un comando del DOS tal como ASSIGN o APPEND.

    INT 33H: Manejador del ratn. Proporciona servicios para el manejo del ratn.

    1.3.1 Hardware

    Se les conoce con este nombre a las interrupciones causadas o generadas por

    dispositivos de hardware, como dispositivos de Entrada, dispositivos de salida,

    etc.

    Se dividen en:

    a) 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

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    24

    un programa que lea el valor actual del contador y lo traduzca a un formato

    entendible para el usuario.

    b) 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 CPU, sino que

    se mandan a un circuito integrado cuya funcin es exclusivamente manejar este

    tipo de interrupciones.

    1.3.2 Software

    Se les conoce con este nombre a las interrupciones causadas o generadas por

    software, como son programas en ejecucin, interrupciones del Bios,

    interrupciones del Sistema Operativo, etc.

    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

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    25

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

    1.4 Estructura de un programa en ensamblador

    Un programa en ensamblador contiene cuatro partes fundamentales llamados

    segmentos:

    - Segmento de Memoria

    - Segmento de Datos

    - Segmento de Pila

    - Segmento de Cdigo

    Cada segmento debe estar incluido en un programa de ensamblador

    (preferentemente), y estos segmentos generalmente (segn sea el caso) deben

    inicializarse o configurarse.

    Todos los programas debern tener mnimamente la siguiente estructura:

    .Model SMALL

    .STACK

    .DATA

    ; Seccin para definir variables y constantes

    .CODE

    Inicio:

    MOV AX,@DATA

    MOV DS,AX

    MOV AH, ACH

    INT 21H

    END Inicio

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    26

    .MODEL modelo de memoria

    El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT o LARGE. Los

    requisitos para cada modelo son:

    Puede utilizar cualquiera de estos modelos para un programa autnomo (esto es,

    un programa que no este enlazado con algn otro). El modelo TINY esta

    destinado para uso exclusivo de programas .COM, los cuales tienen sus datos,

    cdigo y pila en un segmento. El modelo SMALL exige que el cdigo quepa en un

    segmento de 64K y los datos en otro segmento de 64K.

    Los formatos generales (incluyendo el punto inicial) para las directivas que define

    los segmentos de la pila, de datos y de cdigo son:

    .STACK [tamao]

    .DATA

    .CODE [nombre]

    1.4.1 Data Segment

    Este segmento es utilizado para los datos, aunque en ensamblador a

    diferencia de un lenguaje de alto nivel, el uso de variables es transparente,

    puesto que en Lenguaje Ensamblador el uso de la memoria es directo, por tanto,

    los nombres de las variables solo corresponden al nombre asignado para un

    espacio de memoria reservado de acuerdo a las especificaciones requeridas.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    27

    Dicho espacio de memoria es manipulado directamente, lo cual facilita el uso y a

    la vez lo complica.

    CONSTANTES

    El valor de una constante se asigna en la parte correspondiente al segmento de

    datos por medio de la directiva EQU. Sintaxis:

    NOMBRE EQU VALOR

    Ejemplo:

    Constante EQU 11001B

    RESUL EQU 573H

    VARIABLES

    Como se mencion anteriormente, es el nombre simblico de una posicin de

    memoria correspondiente a segmento de datos la cual es accesible por programa.

    Para declarar variables se usa cualquiera de las siguientes directivas:

    NOMBRE DIRECTIVA VALOR

    DB realiza el almacenamiento por bytes (1 localidad de memoria)

    DW realiza el almacenamiento por palabras (2 localidades)

    DD realiza el almacenamiento por palabras dobles (4 localidades)

    DQ realiza el almacenamiento por palabras cudruples (8 localidades)

    DT realiza el almacenamiento por paquetes de diez bytes.

    Las variables que son de tipo cadena deber colocarse su valor entre comillas y

    terminar con el signo $.

    El tipo de directiva es importante, por que de ella depender el manejo de la

    variable creada.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    28

    1.4.2 Stack Segment

    Es el segmento que permite definir el tamao del Segmento de pila.

    La pila, es un segmento de la memoria principal que se reserva para un uso

    especfico.

    La pila funciona LIFO (Last Input, First Output), y utiliza dos funciones:

    PUSH

    Esta funcin sirve para almacenar informacin o colocar valores dentro de la pila,

    su sintaxis es:

    Push valor

    POP

    Esta funcin sirve para sustraer informacin o sacar valores almacenados en la

    pila, su sintaxis es:

    Pop variable

    1.4.3 Code Segment

    Segmento en el que se colocan las instrucciones o cdigo del programa,

    generalmente se inicia con las siguientes dos lneas de cdigo y una etiqueta para

    indicar el programa principal.

    Inicio:

    MOV AX,@DATA

    MOV DS,AX

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    29

    Estas dos instrucciones permiten a ensamblador iniciar el segmento de

    datos, es decir, tomar la memoria principal para iniciar la ejecucin de un

    programa en ensamblador.

    1.4.4 Instrucciones de un programa en ensamblador

    Una herramienta que permite visualizar el funcionamiento de las instrucciones

    utilizadas en lenguaje ensamblador es el DEBUG, debug se encuentra contenido

    dentro del sistema operativo MS-DOS.

    DEBUG

    El programa debug proporciona las rdenes que permiten controlar y examinar

    cada paso de un programa en lenguaje ensamblador, debug se suele usar cuando

    se est desarrollando un nuevo programa y se desea comprobar su

    funcionamiento al nivel de lenguaje mquina. Para llamar a debug:

    C:\> DEBUG

    El programa responde con el smbolo - , que es el indicador del depurador. A

    partir de ese momento estamos en posibilidad de invocar cualquiera de las

    siguientes instrucciones:

    COMANDO DESCRIPCIN FORMATO

    R Register,

    Registro

    Permite desplegar y modificar el contenido de

    todos los registros internos del

    microprocesador

    - R

    - R AX

    :

    D Dump, Vaciar

    Despliega el contenido de un bloque de

    memoria correspondiente al segmento de

    datos. Muestra el contenido de cada localidad

    en sistema hexadecimal e indicando a la vez

    su correspondiente carcter ASCII. Solo sirve

    - D [Rango]

    -D 0100 0108

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    30

    para el segmento de datos.

    Donde el rango se especifica como una

    direccin inicial hasta una direccin final, o

    bien como una direccin inicial hasta L

    direcciones consecutivas. Si no se especifica

    un rango, se despliega el contenido de las

    128 localidades siguientes a la ltima

    localidad mostrada.

    -D 0105 L12

    A Assemble,

    Ensamblar

    Nos permite introducir cdigo en forma

    nemotcnica.

    En donde direccin es el valor del

    desplazamiento en el segmento de cdigo a

    partir de donde ser almacenado el cdigo

    introducido. Si este parmetro no es

    especificado, el cdigo se guardar a partir de

    la localidad siguiente donde fue almacenada

    la ltima instruccin.

    -A [Direccin]

    -A 0100

    1591:0100 MOV AX, [BX]

    1591:0102 MOV AL, [BP+DI]

    1591:0104

    -

    U Unassemble,

    Desensamblar

    Muestra el contenido de un bloque de

    memoria correspondiente al segmento de

    cdigo. El contenido de la memoria lo

    visualiza en forma de instrucciones del

    ensamblador, tanto en forma desensamblada

    como ensamblada.

    Donde rango se define de manea similar al

    comando vaciar (D)

    -U [rango]

    -U 0100 0105

    T Trace, Trazo

    Nos permite ejecutar una instruccin de

    programa, visualizando los resultados por

    medio de una salida semejante a la del

    comando R

    -T

    G Go, Ejecutar

    Nos permite ejecutar un fragmento de un

    programa.

    Donde direccin_final es la direccin de

    memoria hasta donde ser ejecutado el

    programa

    -G [direccion_final]

    -G 0109

    H Aritmtica

    hexadecimal

    Suma y resta dos cantidades hexadecimales

    visualizando ambos resultados.

    Donde op1 y op2 son los datos en

    hexadecimal. En el clculo de la diferencia

    op1 es el minuendo y op2 es el sustraendo.

    -H op1 op2

    -H 0105 0100

    N Name, Nombre Se utiliza para dar nombre a un programa.

    Donde el parmetro nombre indica un nombre

    de programa con extensin .COM .EXE

    -N nombre

    Q Quit, Salir Termina la ejecucin de debug y regresa el

    control a la lnea de rdenes del DOS.

    -Q

    W Write, Grabar Se utiliza ara grabar programas en forma

    permanente. Para hacerlo debemos:

    -W

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    31

    1. Definir la longitud del programa en

    bytes.

    2. Crear un nombre para el programa.

    3. Colocar la longitud del programa en

    el registro CX.

    4. Colocar o apuntar el registro IP al

    inicio del programa.

    5. Dar la orden de escritura.

    -N ejemplo.com

    -R CX

    CX 0000

    :5

    -R IP

    IP 0100

    :

    -W

    L Load, Cargar

    Nos permite cargar un programa al entorno

    de debed.

    Donde direccin es la posicin de memoria en

    el segmento de cdigo a partir de la cual ser

    cargado el programa. Para ello se debe tomar

    en cuenta:

    1. Proporcionar el nombre del

    programa que va a ser cargado.

    2. Cargar.

    3. Desensamblar para verificar si

    realmente fue cargado el archivo.

    -L [direccion]

    -N ejemplo.COM

    -L 0100

    -U 0100 L5

    E Enter, Introducir

    Permite modificar el contenido de la memoria

    en el segmento de datos.

    Donde direccin es la localidad de memoria a

    partir de la cual se van a guardar datos.

    -E direccin [dato]

    -E 0200

    1.5 Procedimiento de ensamble, enlace y ejecucin.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    32

    Los archivos fuente de cdigo ensamblador deben estar en formato ASCII standard. Para esto

    puede usarse cualquier editor que permita crear archivos sin formato y guardarlos con extensin

    .asm.

    Los comentarios se declaran con ; y terminan al final de la lnea.

    El ensamblado se lleva a cabo invocando al MASM. Este puede ser invocado, usando una lnea de

    comando, de la siguiente manera:

    MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]

    Donde:

    archivo.- Corresponde al programa fuente. Por defecto se toma la extensin .ASM.

    objeto.- Es el nombre para el archivo objeto.

    listado.- Nombre del archivo de listado de ensamblado.

    cross.- Es un archivo de referencias cruzadas.

    opciones.- Pueden ser:

    /A escribe los segmentos en orden alfabtico

    /S escribe los segmentos en orden del fuente

    /Bnum fija buffer de tamao num

    /C especifica un archivo de referencias cruzadas

    /L especifica un listado de ensamble

    /D crea listado del paso 1

    /Dsym define un smbolo que puede usarse en el ensamble

    /Ipath fija path para buscar archivos a incluir

    /ML mantiene sensitividad de letras (mays./mins) en nombres

    /MX mantiene sensitividad en nombre pblicos y externos

    /MU convierte nombres a maysculas

    /N suprime tablas en listados

    /P checa por cdigo impuro

    /R crea cdigo para instrucciones de punto flotante

    /E crea cdigo para emular instrucciones de punto flotante

    /T suprime mensajes de ensamble exitoso

    /V despliega estadsticas adicionales en pantalla

    /X incluir condicionales falsos en pantalla

    /Z despliega lneas de error en pantalla

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    33

    La otra forma de invocar al ensamblador es slo tecleando MASM y respondiendo a la

    informacin que se solicita. Para omitir algn valor slo basta teclear ENTER si dar ningn valor.

    De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser

    invocado de la misma forma que el MASM. Los parmetros que este requiere son:

    LINK objeto [,[ejecutable][,[mapa][,[librera]]]]][opciones][;]

    Donde:

    objeto.- Es el nombre para el archivo .OBJ

    ejecutable.- Nombre del archivo .EXE

    mapa.- Nombre del archivo mapa

    librera.- Nombre del archivo biblioteca de rutinas

    opciones.- Pueden ser:

    /HELP muestra lista de opciones

    /PAUSE pausa en el proceso

    /EXEPACK empaca archivo ejecutable

    /MAP crea mapa se smbolos pblicos

    /LINENUMBERS copia nmero de lneas al mapa

    /NOIGNORECASE mantiene sensitividad en nombres

    /NODEFAULTLIBRARYSEARCH no usa bibliotecas por defecto

    /STACK:size fija el tamao del stack a usar

    /CPARMAXALLOC:nmero fija alojacin mxima de espacio

    /HIGH fija la direccin de carga ms alta

    /DSALLOCATE aloja grupo de datos

    /NOGROUPASSOCIATION ignora asociaciones para direcciones

    /OVERLAYINTERRUPT:nmero asigna nuevo nmero a la INT 03Fh

    /SEGMENTS:nmero procesa un nmero de segmentos

    /DOSSEG sigue la convencin de orden de DOS

    Para la ejecucin del programa simplemente basta teclear su nombre en el prompt de MS-DOS y

    teclear ENTER. Con esto el programa ser cargado en memoria y el sistema proceder a

    ejecutarlo.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    34

    1.6 Entorno de programacin

    El entorno de programacin del Lenguaje Ensamblador, es el entorno de

    consola, por tanto, antes de programar en ensamblador se necesita aprender los

    comandos bsicos del DOS.

    Como ya se mencion la edicin de un programa en ensamblador, tiene que ser

    mediante un editor de texto (Ejemplo el bloc de notas) y tiene que almacenarse

    con extensin .asm y despus salir al smbolo del sistema (en el caso de

    Windows) y ah ensamblar, enlazar y ejecutar el programa construido.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    35

    UNIDAD II

    ELEMENTOS DEL LENGUAJE

    2.1 Instrucciones Lineales

    Las instrucciones bsicas en Lenguaje ensamblador son las siguientes:

    2.1.1 Movimiento

    La instruccin para mover informacin de un lugar a otro es la instrucci{on

    MOV, que funciona como si fuera el operador =

    Instruccin Mov, almacena el contenido de la fuente en el destino.

    Formato: MOV Destino, Fuente

    Y se puede utilizar como ya se mencion en los Modos de Desplazamiento.

    2.1.2 Pila

    Las instrucciones para la manipulacin de la Pila son Push y Pop.

    PUSH

    Esta funcin sirve para almacenar informacin o colocar valores dentro de la pila,

    su sintaxis es:

    Push valor

    Donde valor puede ser una constante o una variable

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    36

    POP

    Esta funcin sirve para sustraer informacin o sacar valores almacenados en la

    pila, su sintaxis es:

    Pop variable

    Recordando siempre que la pila funciona LIFO.

    2.1.3 Matemticos

    Instruccin Descripcin Formato

    ADD Suma sin acarreo Suma la fuente al destino y guarda el resultado en el desino

    ADD destino, fuente

    ADC Suma con acarreo

    Suma la fuente con el destino, guardando el resultado en el destino e incrementndolo en 1 si la bandera de acarreo (CF) est activada. Se utiliza para sumar datos de 32 bits, donde el resultado se guarda en el registro par DX:AX

    ADC destino, fuente

    SUB Resta Resta la fuente del destino almacenando el resultado en el destino. SUB destino, fuente

    SBB Resta con prstamo

    Resta la fuente del destino, almacenando el resultado en el destino y decrementndolo en 1, si la bandera CF se encuentra activada.

    SBB destino, fuente

    MUL Multiplicaci

    n

    Realiza la multiplicacin de dos datos sin signo. Dependiendo de la longitud de los operandos se puede se puede tener: Fuente * AL = AX Fuente * AX = DX:AX

    MUL fuente

    IMUL Multiplicacin con signo

    Es similar a la instruccin MUL, con la nica diferencia de que opera con datos representados en notacin de complemento a 2 con signo.

    IMUL fuente

    DIV Divisin

    Realiza una divisin sin signo. Existen dos casos: AL AX Fuente AX Fuente DX:AX AH DX

    DIV fuente

    IDIV Divisin con

    signo

    Opera de manera similar que DIV a excepcin de que los nmeros son representados en notacin de complemento a 2 con signo.

    IDIV fuente

    INC Incrementar Incrementa en 1 al destino INC destino DEC Decrementar Decrementa en 1 al destino DEC destino

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    37

    2.1.4 Ajustes

    Instruccin Descripcin Formato

    NOT Negacin bit a bit Realiza la negacin bit a bit del operando destino NOT Destino

    NEG Negativo Genera el complemento a 2 del operando destino NEG Destino

    2.1.5 Comparacin

    Instruccin Descripcin Formato

    CMP Comparar Resta operando fuente del destino sin guardar el resultado, afectando nicamente el registro de banderas.

    CMP Destino, Fuente

    TEST Probar Realiza la conjuncin bit a bit entre el operando fuente y el destino, sin guardar el resultado. Afectando nicamente al registro de banderas.

    TEST Destino, Fuente

    2.2 Saltos

    Al ser el lenguaje ensamblador un lenguaje estructurado, existen

    instrucciones para Saltar la ejecucin normal de un programa, es decir, se enva

    el flujo de la ejecucin a otro lado del programa, estos saltos pueden ser

    condicionales o incondicionales.

    2.2.1 Incondicional

    Un salto incondicional, como su nombre lo dice, no necesita condiciones

    para saltar, es decir, simplemente se coloca la funcin y el salto se realiza sean

    cual sean las condiciones del programa.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    38

    El salto incondicional puede realizarse mediante la funcin:

    Instruccin Descripcin Formato

    JMP Salto incondicional Enva el flujo de control del programa a la direccin de memoria situada en

    el segmento

    JMP etiqueta

    2.2.2 Condicional

    Los saltos condicionales, solo envan el flujo del control del programa si la

    condicin que especifican se ha cumplido.

    Los saltos condicionales son:

    SALTO AL COMPARAR NMEROS SIN SIGNO

    Instruccin Descripcin Formato JA Salta si est por encima CF = 0 ZF = 0

    JNBE Salta si no est por debajo o igual CF = 0 ZF = 0

    JAE Salta si est por encima o igual CF = 0

    JNB Salta si no est por por debajo CF = 0

    JB Salta si est por debajo CF = 1

    JNAE Salta si no esta por encima o igual CF = 1

    JBE Salta si est por debajo o igual CF = 1 ZF = 1

    JNA Salta si no est por encima

    Enva el flujo de control del programa a la direccin de memoria situada en

    el segmento

    CF = 1 ZF = 1

    SALTO AL COMPARAR NMEROS CON SIGNO Instruccin Descripcin Formato

    JG Salta si es mayor que ZF = 0 Y SF = OF

    JNLE Salta si no es menor o igual que ZF = 0 Y SF = OF

    JGE Salta si es mayor o igual SF = OF JNL Salta si no es menor SF = OF JL Salta si es menor SF = OF

    JNGE Salta si no es mayor o igual SF = OF

    JLE Salta si es igual o menor ZF = 1 O SF = OF JNG Salta si no es mayor ZF = 1 O SF = OF JE Salta si es igual ZF = 1

    JNE Salta si no es igual

    Enva el flujo de control del programa a la direccin de memoria situada en

    el segmento

    ZF = 0

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    39

    2.3 Tipos de Ciclos

    Instruccin Descripcin Formato

    LOOP Ciclo Decrementa CX en 1 y despus transfiere el flujo de control a una etiqueta corta si CX es diferente de 0.

    LOOP etiqueta

    2.4 Operadores Lgicos

    Instruccin Descripcin Formato AND Conjuncin Realiza la operacin lgica Y AND Destino, Fuente OR Disyuncin Realiza la operacin lgica O OR Destino, Fuente

    XOR Disyuncin exclusiva Realiza las operaciones lgicas correspondientes XOR Destino, Fuente

    2.5 Desplazamiento

    Los desplazamientos dentro del Lenguaje Ensamblador, se trabajan a nivel de bits

    de los valores de las variables (como todas las operaciones en ensamblador),

    para entender los desplazamientos, se necesita tener el valor de una variable en

    su equivalente binario y los desplazamientos o corrimientos se realizan de

    acuerdo a la instruccin indicada, y pueden ser lineales o circulares.

    2.5.1 Lineal

    Los desplazamientos o corrimientos lineales, mueven los bits hacia la

    derecha o izquierda segn sea el caso, y pierden bits del lado del corrimiento.

    El nmero de bits que se pierde en este tipo de corrimientos depende del conteo

    especificado, los bits perdidos son sustituidos por ceros.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    40

    Instruccin Descripcin Formato

    SHL Corrimiento a la izquierda

    Realiza corrimientos de bits a la izquierda en el dato almacenado en el destino. Conteo indica el nmero de desplazamientos a realizar.

    SHL Destino, Conteo

    SHR Corrimiento a la derecha

    Realiza corrimientos de bits a la derecha en el dato almacenado en el destino. Conteo indica el nmero de desplazamientos a realizar.

    SHR Destino, Conteo

    SHL SHR Destino 0 Destino 0

    2.5.2 Circular

    Los desplazamientos o corrimientos circulares, mueven los bits hacia la

    derecha o izquierda segn sea el caso de forma circular, es decir, no se pierde

    ningn bit por que estos dan vuelta en circulo.

    Instruccin Descripcin Formato

    ROL Rotacin a la izquierda ROL Destino, Conteo

    ROR Rotacin a la derecha ROR Destino, Conteo

    RCL Rotacin a la izquierda con

    acarreo

    RCL Destino, Conteo

    RCR Rotacin a la derecha con

    acarreo

    Desplaza un nmero determinado de bits en el destino, colocando los bits que salen del registro al principio o al final. Conteo indica el nmero de desplazamientos a realizar.

    RCR Destino, Conteo

    ROL ROR

    Destino

    RCL

    Destino CF

    Destino

    RCR

    Destino CF

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    41

    2.6 Procesos de Control

    Los procesos de control se refiere a instrucciones para el control de algunas

    caractersticas especiales, entre ellas:

    2.6.1 Banderas

    Banderas OF DF IF SF ZF AF PF CF

    Desactivadas:

    XF = 0 NV UP DI PL NZ NA PO NC

    Activadas

    XF = 1 OV DN EI NG ZR AC PE CY

    SALTO SEGN EL ESTADO DEL REGISTRO DE BANDERAS

    Instruccin Descripcin Formato JC Salta si existe acarreo CF = 1 Acarreo

    JNC Salta si no existe acarreo CF = 0 JZ Salta si es cero ZF = 1 Cero

    JNZ Salta si no es cero ZF = 0 JO Salta si hay sobreflujo OF = 1 Sobreflujo

    JNO Salta si no hay sobreflujo OF = 0 JS Salta si es negadito SF = 1 Signo

    JNS Salta si no es negativo o es positivo SF = 0 JP Salta si el nmero de 1 es par PF = 1 Paridad

    JNP Salta si el nmero de 1 es impar o no es par PF = 0

    2.6.2 Cadenas

    Instruccin Descripcin Formato CMPS Compara cadenas, es decir, compara

    dos secciones de datos de memoria

    de bytes, palabras o palabras dobles.

    Utiliza para la comparacin los

    registros DS y SI como apuntadores

    para las cadenas a comparar.

    CMPS

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    42

    2.6.3 Carga

    Instruccin Descripcin Formato LEA

    Carga la direccin efectiva de Fuente

    en Destino, es decir, Destino se

    convierte en un puntero a Fuente

    Lea Destino, Fuente

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    43

    UNIDAD III

    MODULARIZACIN

    3.1 Macros

    Una macro es un grupo de instrucciones que efectua una tarea con un

    formato muy parecido al de un procedimiento. La diferencia que existe con

    respecto a una rutina es que el MACRO se inserta o expande en el programa

    principal como nuevo cdigo que contiene una secuencia de instrucciones. Las

    macros se asemejan a las funciones en los lenguajes de alto nivel.

    Las macrosecuencias se ejecutan con mayor rapidez que los procedimientos

    por que no hay que ejecutar instrucciones de llamado ni retorno. En este caso las

    instrucciones de macro se colocan en el programa en el punto donde se les

    invoca.

    Para delinear una macrosecuencia se hace uso de las directivas:

    MACRO y ENDM

    NOMBRE MARCO PARAM1, PARAM2, , PARAMN

    ENDM

    El primer enunciado de un macro contiene su nombre y una lista de

    parmetros relacionados con el mismo. El siguiente ejemplo define a la macro

    MOVER donde se manejan 2 parmetros.

    MOVER MACRO A,B

    PUSH AX

    MOV AX,B

    MOV B,AX

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    44

    POP AX

    ENDM

    3.1.1 Internas

    Una Macro interna, como su nombre lo dice se encuentra dentro del programa

    principal.

    Ejemplo:

    ;PROGRAMA QUE ACEPTA DOS DATOS DESDE TECLADO, LOS SUMA Y DESPLIEGA EL RESULTADO

    .MODEL SMALL

    SUMA MACRO R,S1,S2

    PUSH AX

    MOV AX,S1

    ADD AX,S2

    MOV R,AX

    POP AX

    ENDM

    .STACK

    .DATA

    VAR1 DW ?

    VAR2 DW ?

    RESUL DW ?

    M1 DB "INTRODUCE EL PRIMER VALOR:$"

    M2 DB 10,13,"INTRODUCE EL SEGUNDO NMERO:$"

    M3 DB 10,13,"SUMA:$"

    .CODE

    EXTRN RECIBE_DATO:FAR

    EXTRN IMP_CADENA:FAR

    EXTRN IMP_AX:FAR

    INICIO:

    MOV AX,@DATA

    MOV DS,AX

    LEA DX,M1

    CALL IMP_CADENA

    CALL RECIBE_DATO

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    45

    MOV VAR1,SI

    LEA DX,M2

    CALL IMP_CADENA

    CALL RECIBE_DATO

    MOV VAR2,SI

    LEA DX,M3

    CALL IMP_CADENA

    SUMA RESUL,VAR1,VAR2

    MOV AX,RESUL

    CALL IMP_AX

    MOV AH,4CH

    INT 21H

    END INICIO

    3.2 Procedimientos

    Los procedimientos son subprogramas que se encuentran dentro o fuera del

    programa principal. Estos pueden ser:

    1. Internos

    2. Externos

    3.2.1 Internos

    Esta clase de rutinas o subprogramas se encuentra dentro del archivo del

    programa principal. En programa pueden incluirse cuantos procedimientos sean

    necesarios.

    .MODEL SMALL

    .STACK

    .DATA

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    46

    .CODE

    INICIO:

    CALL NOMBRE_PROCEDIMIENTO

    Se usa la palabra Call para llamar o usar el procedimiento

    MOV AH,4CH

    INT 21H

    NOMBRE_PROCEDIMIENTO PROC NEAR

    Para procedimientos Internos

    PUSH REGISTROS

    CODIGO DEL PROCEDIMIENTO

    Deben guardarse los valores de todos los registros para que no se pierdan

    POP REGISTROS

    RET

    Regresa el control al programa principal

    NOMBRE_PROCEDIMIENTO ENDP Se regresan los valores a los registros

    END INICIO

    Ejemplo:

    Programa que incluye un procedimiento interno que imprime una cadena

    .MODEL SMALL

    .STACK

    .DATA

    CADENA DB Procedimientos..$

    .CODE

    INICIO:

    MOV AX,@DATA

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    47

    MOV DS,AX

    LEA DX, CADENA

    CALL IMPCADENA

    MOV AH,4CH

    INT 21H

    IMPCADENA PROC NEAR

    PUSH AX

    MOV AH,9

    INT 21H

    POP AX

    RET

    IMPCADENA ENDP

    END INICIO

    3.2.2 Externos

    Es aquella que se encuentra en un segmento de cdigo diferente al que

    almacena el programa principal, es decir, se encuentra en un archivo diferente.

    Su formato es semejante al de un procedimiento interno donde la nica diferencia

    estriba en que ser de tipo lejano (FAR) en lugar de cercano (NEAR).

    Para incluir una rutina externa dentro de un programa usar:

    Extrn Nombre_Procedimiento:far

    El archivo principal puede llamar a todas las rutinas externas necesarias, y el

    archivo que contiene la rutina externa puede contener mas de una rutina.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    48

    Ejemplo:

    ; ESTE ARCHIVO CONTIENE EL PROGRAMA PRINCIPAL, LLAMADO PRINCIPAL.ASM

    .MODEL SMALL

    .STACK

    .DATA

    CADENA DB Procedimientos..$

    .CODE

    EXTRN IMPCADENA:FAR

    Incluye el procedimiento externo

    INICIO:

    MOV AX,@DATA

    MOV DS,AX

    LEA DX, CADENA

    CALL IMPCADENA

    MOV AH,4CH

    INT 21H

    END INICIO

    ;ESTE ARCHIVO CONTIENE LA RUTINA EXTERNA LLAMADA IMPCAD.ASM

    .MODEL SMALL

    .CODE

    PUBLIC IMPCADENA

    Alcance del procedimiento

    INICIO:

    IMPCADENA PROC FAR

    PUSH AX

    MOV AH,9

    INT 21H

    POP AX

    RET

    IMPCADENA ENDP

    END INICIO

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    49

    Para crear el archivo ejecutable:

    1. Compilar por separado cada archivo fuente

    MASM PRINCIPAL;

    MASM IMPCAD;

    se obtendr:

    Principal.obj

    Impcad.obj

    2. Enlazar de la siguiente manera:

    LINK PRINCIPAL + IMPCAD;

    Al final se genera el ejecutable PRINCIPAL.EXE y es el que se ejecuta.

    La ventaja principal de las rutinas externas, es que puede generarse un archivo

    que contenga a todas ellas, y usarlas para cualquier archivo, puede generarse

    una rutina para:

    - Aceptar a AX desde teclado

    - Imprimir el valor de AX

    A continuacin se presenta el archivo MODULO.ASM, que contiene estas tres

    principales rutinas.

    .MODEL SMALL

    .DATA

    NUM DB 5 DUP (?)

    E DB " $"

    .CODE

    PUBLIC IMP_CADENA

    PUBLIC RECIBE_DATO

    PUBLIC IMP_AX

    INICIO:

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    50

    IMP_CADENA PROC FAR ;imprime una cadena apuntada por DX

    PUSH AX

    MOV AH,9

    INT 21H

    POP AX

    RET

    IMP_CADENA ENDP

    RECIBE_DATO PROC FAR ;recibe un dato desde teclado y lo almacena en SI

    PUSH AX

    PUSH BX

    PUSH CX

    PUSH DX

    PUSH DI

    MOV AX,@DATA

    MOV DS,AX

    LEA DI,NUM

    MOV CL,4

    S1:

    MOV AH,1H

    INT 21H

    CMP AL,0DH

    JE S2

    MOV [DI],AL

    DEC CL

    INC DI

    CMP CL,0

    JE S2

    JMP S1

    S2:

    MOV CL,24H

    MOV [DI],CL

    MOV BX,0

    MOV CX,0

    MOV SI,DI

    LEA DI,NUM

    MOV CX,1

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    51

    E3:

    DEC SI

    MOV AH,0

    MOV AL,[SI]

    SUB AL,30H

    MOV DX,0

    MUL CX

    ADD BX,AX

    MOV DX,0

    MOV AX,CX

    MOV CX,10

    MUL CX

    MOV CX,AX

    CMP DI,SI

    JNE E3

    MOV SI,BX

    POP DI

    POP DX

    POP CX

    POP BX

    POP AX

    RET

    RECIBE_DATO ENDP

    IMP_AX PROC FAR; imprime en pantalla el contenido de AX

    PUSH BX

    PUSH CX

    PUSH DX

    PUSH SI

    PUSH AX

    MOV AX,@DATA

    MOV DS,AX

    POP AX

    MOV BX,10

    LEA SI,E

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    52

    ADD SI,3

    CICLO:

    MOV DX,0

    DIV BX

    ADD DL,30H

    MOV [SI],DL

    DEC SI

    CMP AX,0

    JNE CICLO

    LEA DX,E

    MOV AH,9H

    INT 21H

    POP SI

    POP DX

    POP CX

    POP BX

    RET

    IMP_AX ENDP

    END INICIO

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    53

    UNIDAD IV

    PROGRAMACIN HBRIDA

    Interrupciones

    INTERRUPCIONES DEL DOS

    Realiza FIJAR POSICIN DEL CURSOR

    Llamada AH 02H

    BH Nmero de pgina (0 para modos grficos)

    DH Rengln

    DL Columna

    Devuelve Nada Int 10/02

    Descripcin Se usa para colocar el cursor en una posicin especfica. Las

    posiciones se definen en relacin con la esquina superior izquierda

    (0,0) cuando la pantalla est en modo de texto. La esquina inferior

    izquierda es (79,24) en el modo de texto 80x25 y (39,24) en el

    modo 40x25.

    Realiza ESCRIBIR CARCTER Y ATRIBUTO

    Llamada AH 90H

    AL Carcter ASCII

    BH Pgina de presentacin visual

    BL Byte de atributo del carcter en AL

    CX Nmero de caracteres por escribir

    Devuelve Nada Int 10/09

    Descripcin Escribe los bytes del carcter ASCII y atributo en la posicin

    del cursor en una pgina especfica de presentacin. Esta

    funcin no cambia la posicin del cursor. Escribe hasta

    65536 caracteres en modo de texto.

    Conforme la funcin escribe caracteres, cambia de rengln

    al terminar cada uno.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    54

    En el modo de graficacin, la funcin solo va al final del

    rengln en curso y el byte de atributo de video asignado a

    BL determina el color del carcter escrito. Si el bit 7 vale 1,

    se le aplica XOR al valor en BL, con el color del fondo

    cuando se muestra el carcter.

    Realiza FIJAR PALETA DE COLOR

    Llamada AH 0BH

    BH Identificacin de la paleta de color que se est fijando

    0, BL tienen el color de fondo y borde

    1, BL tiene color de paleta

    BL Valor del color que se usar

    Devuelve Nada

    Int 10/0B

    Descripcin Esta funcin selecciona o fija el contenido de la paleta de

    color y solo trabaja en pantallas de grficos de definicin

    media. La funcin no tiene efecto directo sobre la memoria;

    afecta la forma en que el controlador de TRC 6845

    interpreta la memoria de video. En modo de texto, esta

    funcin establece el color del borde. Las paletas de color

    vlidas para esta funcin son:

    Paleta Pxel Color

    0 0 Igual que el fondo

    1 Verde

    2 Rojo

    3 Caf

    1 0 Igual que el fondo

    1 Cianato

    2 Magenta

    3 Blanco

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    55

    Realiza ESCRIBE UN SOLO PXEL EN LA PANTALLA EN UNA

    COORDENADA ESPECIFICADA

    Llamada AH 0CH

    AL Valor del color

    BH Nmero de pgina

    CX Nmero de columna del pxel

    DX Nmero de rengln del pxel

    Devuelve Nada

    Int 10/0C

    Descripcin En modos de definicin media, el efecto de esta funcin

    depende de la paleta en uso. Si el bit de Al es 1, al nuevo

    color se le aplica XOR con el pxel actual.

    Realiza ESCRIBIR CADENA

    Llamada AH 13H

    AL Modo de escritura

    BH Pgina de video

    BL Atributo (modos de escritura 0 y 1)

    CX Longitud de la cadena

    DH Rengln en el cual se escribir la cadena

    DL Columna en la cual se escribir la cadena

    ES:BP Apuntador a cadena

    Devuelve Nada Int 10/13

    Descripcin Escribe una cadena de caracteres en la pantalla actual. La

    cadena designada puede tener atributos de caracteres

    incorporados o globales. El modo (AL) se especifica de la

    siguiente manera:

    MODO COMENTARIOS

    0 Atributo en BL. La cadena es solo de caracteres. No

    se actualiza el cursor.

    1 Atributo en BL. La cadena es solo de caracteres. Se

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    56

    actualiza el cursor.

    2 La cadena alterna caracteres y atributos. No se

    actualiza el cursos.

    3 La cadena alterna caracteres y atributos. Se actualiza

    el cursor.

    Realiza LEER DISQUETE

    Llamada AH 02H

    AL Nmero de sectores por transferir (1 a 9)

    ES:BX Apuntador al buffer de disco del usuario

    CH Nmero de pista (0 a 39)

    CL Nmero de sector(1 a 39)

    DH Nmero de cabeza (0 o 1)

    DL Nmero de unidad (0 a 3)

    Devuelve Bandera de acarreo en cero si hubo xito

    AL nmero de sectorses transferidos

    Bandera de acarreo en uno si hubo error

    AH byte de estado

    Int 13/02

    Descripcin Transfiere uno o ms sectores de un disquete a la memoria.

    Todos los parmetros de entrada deben verificarse

    cuidadosamente antes de expedir una llamada para

    servicio; pasar un valor invlido puede producir resultados

    impredecibles.

    Realiza ESCRIBE SECTORES DE DISCO Int 13/03 Llamada AH 03H

    AL Nmero de sectores por transferir(1 9)

    ES:BX Apuntador al buffer de disco del usuario

    CH Nmero de pista (0 a 39)

    CL Nmero de pista(0 a 39)

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    57

    CL Nmero de sector(1 a 9)

    DH Nmero de cabeza(0 o 1)

    DL Nmero de unidad(0 a 3)

    Devuelve Bandera de acarreo en cero si hubo xito

    AH 0

    AL Nmero de sectores transferidos

    Bandera de acarreo en uno si hubo error

    AH Byte de estado

    Descripcin Escribe uno o mas sectores de la memoria al disquete.

    Excepto por el nmero de unidad de disco, no se verifica la

    validez de los valores. Pasar un valor invalido puede

    producir resultados impredecibles.

    Realiza DAR FORMATO A PISTA DEL DISCO

    Llamada AH 05H

    ES:BX Apuntador a lista de campos de direcciones de pistas

    CH Nmero de pista

    DH Nmero de cabeza

    DL Nmero de unidad

    Devuelve AH Cdigo de retorno

    Int 13/05 Descripcin Da formato a una pista de disco iniciando los campos de

    direccin de disco y los sectores de dastos. La operacin de

    dar formato a disco es controlada por la lista de campos de

    direcciones de pistas (ES:BX).l atabla est dispuesta como

    una serie de entradas de 4 bytes (una para cada sector de la

    pista), con cada entrada de la manera siguiente:

    DESPLAZAMIENTO SIGNIFICADO

    00H Nmero de pista

    01H Nmero de cabeza

    02H Nmero de sector

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    58

    03H Cdigo de tamao

    Realiza PREPARA PUERTO DE COMUNICACIONES

    Llamada AH 00H

    AL Parmetro de iniciacin

    DX Nmero de puerto (0=COM1, 1=COM2, 2=COM3,

    3=COM4)

    Devuelve AH Estado de puerto

    AL Estado de MODEM

    Int 14/00

    Descripcin Se usa para preparar un puerto serial (DX). Especifique

    como debe prepararse el puerto (AL) usando lo siguiente:

    Bit 2 Bits 1,0

    Bits 7,6,5

    Velocidad de

    bauds

    Bits 4,3

    paridad

    Bits de

    alto

    Longitud

    de

    palabra

    000=110

    001=150

    010=300

    011=600

    100=1200

    101=2400

    110=4800

    111=9600

    00=ninguna

    01= impar

    10=ninguna

    11=par

    0=1

    1=2

    10=7 bits

    11=8 bits

    Realiza ESCRIBE UN CARCTER EN PUERTO DE COMUNICACIONES

    Llamada AH 01H

    AL Carcter por escribir

    DX Nmero de puerto (0=COM1, 1=COM2, 2=COM3,

    3=COM4)

    Int 14/01

    Devuelve AH bit 7=0 no hubo error

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    59

    AH bit 7=1 error; los bits 0 a 6 muestran la causa de la

    falla

    Descripcin Escribe un carcter en el puerto serial especificado y

    devuelve el estado de este. Antes de llamar a esta funcin,

    asegrese de usar Int 14/00 para preparar el puerto.

    Realiza LEE CARCTER DEL PUERTO DE COMUNICACIONES

    Llamada AH 02H

    DX Nmero de puerto (0=COM1, 1=COM2, 2=COM3,

    3=COM4)

    Devuelve AH bit 7=0 no hubo error

    AL Carcter

    AH bit 7 = 1 error

    Int 14/02

    Descripcin Lee un carcter del puerto serial especificado y devuelve el

    estado del puerto. Antes de llamar a esta funcin se debe

    preparar el puerto.

    Realiza SOLICITAR EL ESTADO DEL PUERTO DE COMUNICACIONES

    Llamada AH 03H

    DX Nmero de puerto (0=COM1, 1=COM2, 2=COM3,

    3=COM4)

    Devuelve AH Estado del puerto

    AL Estado del modem

    Int 14/03

    Descripcin Esta funcin, que devuelve el estado del puerto de

    comunicaciones especificado, solicita el estado sin hacer

    E/S adicionales ni afectar el puerto de alguna otra manera.

    Realiza INTERCEPCIN DEL TECLADO Int 15/4F Llamada AH 4FH

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    60

    Bandera de acarreo en 1

    AL Cdigo de examinacin del teclado

    Devuelve Bandera de acarreo en uno

    AL Nuevo cdigo de examinacin

    Bandera de acarreo en cero

    AL Cdigo de examinacin original

    Descripcin Devuelve el cdigo de examinacin en el registro AL con la

    bandera de acarreo en uno.

    Realiza ABRIR DISPOSITIVO

    Llamada AH 80H

    BX Identificacin del dispositivo

    CX Identificacin del proceso

    Devuelve Bandera de acarreo en uno si hubo error

    AH 86H

    Int 15/80

    Descripcin Fue diseada para usarse en operaciones rudimentarias de

    mltiples tareas.

    Realiza TECLA DE SOLICITUD DE SISTEMA PRESIONADA

    Llamada AH 85H

    Devuelve AL 00H tecla presionada

    01H yecla liberada Int 15/85

    Descripcin BIOS llama a esta funcin siempre que la tecla de solicitud

    del sistema se presionada o liberada.

    Realiza ESPERA Int 15/86 Llamada AH 86H

    CX,DX Tiempo antes del regreso en microsegundos (exacto

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    61

    hasta en 976 microsegundos)

    Devuelve Bandera de acarreo en uno (espera en progreso)

    Bandera de acarreo en cero (espera exitosa)

    Descripcin Fue diseada para usarse dentro del software de sistema

    operativo para establecer esperas del sistema.

    Realiza LEER CARCTER DE TECLADO

    Llamada AH 00H

    Devuelve AH Cdigo de examinacin de teclado

    AL Cdigo de carcter ASCII Int 16/00

    Descripcin Espera y lee un solo carcter del buffer del teclado y lo

    devuelve junto con su cdigo de examinacin. El buffer del

    teclado por lo general se localiza en 0040;001

    Realiza LEER ESTADO DEL TECLADO

    Llamada AH 01H

    Devuelve Bandera de cero en cero si se oprimi un atecla

    AH Cdigo de examinacin

    AL carcter ASCII

    Bandera de cero en uno si no se oprimi tecla alguna Int 16/01

    Descripcin Si se oprimi alguna tecla, esta funcin pone cero en la

    bandera de cero y devuelve el cdigo ASCII de la digitacin

    y el cdigo de examinacin del teclado. Si no hay

    digitaciones por procesar, la funcin pone 1 en la bandera

    de cero y regresa.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    62

    Realiza DEVOLVER BANDERAS DE TECLADO

    Llamada AH 02H

    Devuelve AL Byte de banderas de teclado de BIOS ROM

    Int 16/02

    Descripcin Devuelve el esdtaso de los conmutaciones biestables y las

    teclas shift del registro de estado de BIOS mantenido en la

    localidad de memoria 0000:0417H. la siguiente tabla

    muestra el significado de los bits del registro AL al volver

    de la funcin.

    7 6 5 4 3 2 1 0 Significado

    . . . . . . . 1 Tecla shift derecha oprimida

    . . . . . . 1 . Tecla shift izquierda oprimida

    . . . . . 1 . . Tecla ctrl. oprimida

    . . . . 1 . . . Tecla Alt oprimida

    . . . 1 . . . . Scroll Lock habilitado

    . . 1 . . . . . Num Lock habilitado

    . 1 . . . . . . Caps Lock habilitado

    1 . . . . . . . Tecla Insert activada

    Realiza OBTENER DIGITACIN

    Llamada AH 10H

    Devuelve AH Cdigo de examinacin

    AL caracter

    Int 16/10

    Descripcin Permite el reconocimiento de teclas similares

    Realiza ESCRIBIR CARCTER EN IMPRESORA

    Llamada AH 00H

    AL Carcter

    DX Nmero de impresora (0 a 2)

    Int 17/00

    Devuelve AH Estado de impresora

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    63

    Descripcin Escribe el carcter especificado en el puerto de impresora y

    devuelve el estado actual de la impresora.

    Realiza PREPARAR PUERTO DE IMPRESIN

    Llamada AH 001H

    DX Nmero de impresora (0 a 2)

    Devuelve AH Estado de la impresora Int 17/01

    Descripcin Prepara el puerto paralelo de la impresora y devuelve el

    estado de este.

    Realiza LEER RELOJ DE TIEMPO REAL

    Llamada AH 02H

    Devuelve Bandera de acarreo en cero si hubo xito

    CH Horas (BCD)

    CL Minutos (BCD)

    DH Segundos (BCD)

    DL Bandera de tiempo de aprovechamiento de la luz de da

    Bandera de acarreo en uno si hubo error

    Int 1A/02

    Descripcin Devuelve los valores del reloj en BCD (decimal codificado en

    binario)

    Realiza FIJAR RELOJ DE TIEMPO REAL

    Llamada AH 03H

    CH Horas (BCD)

    CL Minutos (BCD)

    DH segundos (BCD)

    DL Tiempo de ahorrro de luz de da

    Int 1A/03

    Devuelve Nada

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    64

    Descripcin Los valores deben establecerse en BCD. DL se codifica para

    indicar si el reloj mantiene un tiempo estndar (DL=0) o

    tiempo de aprovechamiento de la luz del da(DL=1)

    Realiza LEER FECHA DEL RELOJ DE TIEMPO REAL

    Llamada AH 04H

    Devuelve Bandera de acarreo en cero si hubo xito

    CH Siglo (BCD)

    CL Ao

    DH Mes

    DL Da

    Bandera de acarreo en uno si hubo error

    Int 1A/04

    Descripcin Devuelve los valores de reloj en BCD.

    Realiza FIJAR FECHA DEL RELOJ DE TIEMPO REAL

    Llamada AH 5H

    CH Siglo

    CL Ao

    DH Mes

    DL Da

    Devuelve Nada

    Int 1A/05

    Descripcin Los valores del reloj deben establecerse en BCD

    Int 1A/06 Realiza FIJAR ALARMA DEL SISTEMA, FIJA EL CRONMETRO DE

    ALARMA DEL SISTEMA PARA GENERAR UNA INTERRUPCIN

    EN UN MOMENTO FUTURO

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    65

    Llamada AH 06H

    CH Horas

    CL Minutos

    DH Segundos

    Devuelve Bandera de acarreo en cero si hubo xito

    Bandera de acarreo en uno si hubo error

    Descripcin Los valores para fijar la alarma deben estar en BCD. Fijar la

    alarma representa un desplazamiento del tiempo presente.

    Cuando el tiempo se acaba, el sistema emitir una Int 04

    (desborde aritmtico) . antes de reestablecer la alarma,

    debe inhabilitarla con un Int 1A/07 y definir un manejador

    de interrupcin para manejarla.

    Realiza INHABILITA ALARMA DEL RELOJ DE TIEMPO REAL

    Llamada AH 07H

    Devuelve Nada Int 1A/07 Descripcin Esta funcin inhabilita la alarma del reloj de tiempo real. Si

    ya se fij la alarma, se debe usar esta funcin para poder

    fijarla de nuevo.

    Realiza MOSTRAR SALIDA

    Llamada AH 02H

    DL Datos con caracteres de 8 bits

    Devuelve Nada Int 21/01 Descripcin Dirige la salida a la pantalla de video (STDOUT). La funcin

    manejar el carcter de retroceso (backspace)

    adecuadamente como un retroceso no destructivo en

    pantalla. Ctrl-C y Ctrl-Break se manejan a travs de Int 23.

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    66

    Realiza SALIDA AUXILIAR

    Llamada AH 04H

    DL Datos de 8 bits como salida para STDAUX

    Devuelve Nada

    Int 21/04

    Descripcin Se usa para enviar un carcter por el puerto serial.

    Realiza MOSTRAR CADENA

    Llamada AH 09H

    DS:DX Apuntador a cadena terminada con $

    Devuelve Nada Int 21/09 Descripcin Enva a la salida series contiguas de caracteres del mismo

    modo que Int 02 muestra caracteres individuales. Todos los

    caracteres que comienzan en una direccin especificada se

    envan a la salida hasta que se encuentra un signo de $

    Realiza OBTENER FECHA DEL SISTEMA

    Llamada AH 2AH

    Devuelve CX Ao (1980 a 2099)

    DH Mes (1 al 12)

    DL Da(1 a 31)

    AL Da de la semana (0=domingo, 1=lunes, etc)

    Int 21/2A

    Descripcin Devuelve la fecha del sistema basndose en el reloj interno

    de DOS.

    Realiza ESTABLECER FECHA DEL SISTEMA Int 21/2B Llamada AH 2BH

    CX Ao (1980 a 2099)

  • Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

    67

    DH Mes

    DL Dia

    Devuelve AL 00H, fecha establecida exitosamente

    FFH fecha invalida, no establecida

    Descripcin Normalmente solo se establece la porcin de fecha del reloj

    interno del DOS, pero si la computadora tiene un reloj

    CMOS con esta funcin tambin se establece la fecha de

    este.

    Realiza OBTENER HORA DEL SISTEMA

    Llamada AH 2CH

    Devuelve CH Hora (0 a 23)

    CL Minutos (0 a 59)

    DH Segundos (0 a 59)

    DL centsimas de segundo (0 a 99)

    Int 21/2C

    Descripcin Obtiene la hora del reloj interno del DOS, la cual solo es

    exacta s