72
Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco 1 PRESENTACIÓN El lenguaje ensamblador aun en estos días presenta ventajas sobre los lenguajes de alto nivel, lo anterior por su interacción directa sobre el Hardware. La presente Antología fue elaborada para la asignatura de Lenguaje Ensamblador incluida en la Reforma Educativa 2004, para la Carrera de Ingeniería en Sistemas Computacionales para el Instituto Tecnológico Superior de Huauchinango. Fue realizada con la finalidad de mostrar al lector las principales instrucciones y aspectos básicos del lenguaje Ensamblador. Es utilizado el compilador MASM para el desarrollo de los programas, mostrándose los pasos para la realización, compilación y ligado de un progre Esperando que la presente antología sea de utilidad Ing. Claudia Yadira Luna Carrasco

REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

  • Upload
    dokhanh

  • View
    219

  • Download
    3

Embed Size (px)

Citation preview

Page 1: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

1

PRESENTACIÓN

El lenguaje ensamblador aun en estos días presenta ventajas sobre los

lenguajes de alto nivel, lo anterior por su interacción directa sobre el Hardware.

La presente Antología fue elaborada para la asignatura de Lenguaje

Ensamblador incluida en la Reforma Educativa 2004, para la Carrera de Ingeniería en

Sistemas Computacionales para el Instituto Tecnológico Superior de Huauchinango.

Fue realizada con la finalidad de mostrar al lector las principales

instrucciones y aspectos básicos del lenguaje Ensamblador.

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

mostrándose los pasos para la realización, compilación y ligado de un progre

Esperando que la presente antología sea de utilidad

Ing. Claudia Yadira Luna Carrasco

Page 2: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

2

ÍNDICE

Pág.

Presentación 1

Unidad I Fundamentos

1.1 Introducción. 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 Clasificación 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 ejecución. 31

1.6 Entorno de programación. 34

Unidad II Elementos del Lenguaje

2.1 Instrucciones lineales 35

2.1.1 Movimiento. 35

2.1.2 Pila. 35

2.1.3 Matemáticos. 36

2.1.4 Ajustes. 37

2.1.5 Comparación. 37

2.2 Saltos. 37

Page 3: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 Lógicos. 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 Modularización

3.1 Macros 43

3.2 Procedimientos 45

3.2.1 Internos 45

3.2.2 Externos 47

Unidad IV Programación Híbrida

Interrupciones 53

Page 4: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

4

UNIDAD I

FUNDAMENTOS

1.1 Introducción

Cuando las primeras computadoras hicieron su aparición, estas eran solo

programables por sus diseñadores, puesto que ellos eran los que conocían su

diseño y la forma en que debían ser programadas.

Con el avance del tiempo, las computadoras fueron siendo diseñadas bajo

arquitecturas similares, lo que facilitó su programación, aunque el grupo de

personas que podía realizar esta labor era pequeño, puesto que se debía tener un

amplio conocimiento sobre esta labor.

La información que hace que el hardware de la computadora realice una

determinada actividad de llama instrucción. Por consiguiente una instrucción es

un conjunto de unos y ceros.

Las instrucciones formadas con unos y ceros equivalen a acciones

elementales de la máquina, por lo que al conjunto de dichas instrucciones que

son interpretadas directamente por la máquina se denomina lenguaje máquina.

El lenguaje máquina fue el primero que empleo el hombre para la

programación de las primeras computadoras, por esta razón el grupo de

programadores era limitado.

El Lenguaje Ensamblador es la primera abstracción del Lenguaje Máquina, y

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

por parte del programador.

Page 5: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

5

La aparición del Lenguaje Ensamblador inicio la construcción de otros

lenguajes de programación, 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 cómo llevar a cabo una tarea específica usando la

menor cantidad de instrucciones. La optimización resulta en una mejora

sustancial en términos 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 específico 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 código ejecutable puede ser menor que el

generado por un Lenguaje de alto nivel.

El lenguaje ensamblador tiene como ventajas:

Velocidad: el proceso de traducción que realizan los intérpretes, implica un

proceso de cómputo adicional al que el programador quiere realizar. Por ello el

lenguaje ensamblador es más rápido que un intérprete, por que no necesita

traducción.

Page 6: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

6

Tamaño: un intérprete genera código de más al necesario y por ello un

ejecutable se crece, y comparado con ello, el ejecutable generado con

Lenguaje Ensamblador es relativamente pequeño.

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 código fuente al código objeto.

3. Un Montador o de Ligado, que permita el módulo 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

básicas, la unidad de control y la unidad aritmético-lógica.

Todos los recursos de la computadora son administrados desde la unidad

de control, cuya función 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 instrucción en el conjunto de instrucciones es acompañado por

un microcódigo, que son instrucciones muy básicas que le dicen al procesador

cómo 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.

Page 7: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

7

La unidad aritmético-lógico (ALU) se encarga de ejecutar las instrucciones

que involucran aritmética o lógica. La ALU incluye un grupo de registros, es decir,

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

que están siendo procesados por la instrucción actual.

Los procesadores modernos contienen más de 20 millones de transistores y

pequeños de tamaño, mientras que en sus inicios contenían solo 2000

transistores y el tamaño era considerable.

El microprocesador es la parte de la computadora diseñada para ejecutar

programas, con tecnología semiconductora. Se eslabona desde los 50´s pero la

tecnología se fusiona en los 70´s.

Anteriormente se usaban tubos al vacío (bulbos) como componentes

electrónicos activos. En 1948 en los laboratorios de Bell crearon el Transistor

(material de silicio de bajo costo) para reemplazar al tubo al vacío. De esta forma

comienzan a surgir los circuitos digitales que llevan a la reducción de la tecnología

a un circuito integrado llamado microprocesador.

Actualmente la capacidad de integración y el abaratamiento de las

tecnologías permite que casi cualquier empresa pueda contar con una capacidad

de cómputo antes inimaginable para las tareas que necesita.

Se prevé que la capacidad de integración llegue a un techo tecnológico, en

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

capacidad de procesamiento de las máquinas.

Page 8: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 contenían, un aproximado de transistores y la

memoria interna de cada uno de ellos.

Procesador Fecha de presentación

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

Page 9: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 básicamente las mismas tareas,

podemos clasificarlos de acuerdo a características.

Ensambladores Cruzados (Cross-Assembler). Se denominan así los

ensambladores que se utilizan en una computadora que posee un procesador

diferente al que tendrán 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 ejecución, 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 código de operación y a estas se les

conoce como microensambladores.

Page 10: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

10

1.1.4 Clasificación de Memorias.

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

almacenar y recuperar la información.

Las memorias se clasifican, por la tecnología empleada y, además según 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 sólo se puede

leer. Pueden ser:

a) ROM programadas por máscara, cuya información se graba en fábrica 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 eléctricos, estas se diferencian de las

RAM en que no son volátiles. En ocasiones a este tipo de memorias también se

las denomina NYRAM (no volátil RAM).

Page 11: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

11

La memoria principal esta formada por un conjunto de unidades llamadas

palabras en forma de una organización lineal. Dentro de cada una de estas

palabras se guarda la información que constituye una instrucción o parte de ella

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

dato o parte de un dato (también 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 número de palabras

mayor será el número de instrucciones y datos que podrá almacenar la

computadora. El número de bits que forman una palabra se llama longitud de

palabra.

La acción de guardar una información en una palabra de la memoria se

llama acceso de escritura, y la acción 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

Page 12: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

12

1.1.5 Unidades de Entrada / Salida.

La computadora tiene comunicación de manera interna y externa, de manera

externa la comunicación se consigue a través de diversos dispositivos, como son:

teclados, ratones, impresoras, monitores, escáner, etc.

Tomemos en cuenta que todos los periféricos (dispositivos que pueden

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

de ellos da a la información también es diferente, en otras palabras la

computadora habla español y cada periférico habla un idioma diferente, entonces,

para que la comunicación entre la computadora y el periférico sea la apropiada,

se hace necesario un intérprete o intermediario que permita la traducción ante

los diversos idiomas que cada uno maneja.

La unidad que funciona como intermediario se llama Unidad de

Entrada/Salida, cuya función principal es llevar a cabo las operaciones de

Entrada/Salida.

Definiremos una operación 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 realización de una operación de E/S se deben

efectuar las siguientes funciones:

→ Recuento de las unidades de información transferidas (normalmente bytes)

para reconocer el fin de operación.

→ Sincronización de velocidad entre la CPU y el periférico.

→ Detección de errores (e incluso corrección) mediante la utilización de los

códigos necesarios (bits de paridad, códigos de redundancia cíclica, etc.)

→ Almacenamiento temporal de la información. Es más eficiente utilizar un

buffer temporal específico para las operaciones de E/S que utilizan el área

de datos del programa.

Page 13: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

13

→ Conversión de códigos, conversión 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 electrónicos. El

microprocesador de la CPU está formado por una unidad aritmético lógica que

realiza cálculos y comparaciones, y toma decisiones lógicas (determina si una

afirmación es cierta o falsa mediante las reglas del álgebra de Boole); por una

serie de registros donde se almacena información 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

través 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 ratón) 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 aritmético-lógica (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 comunicación

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

Page 14: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

14

1.2.1 Buses.

El bus es básicamente 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 más ancho es el bus, mas rápida es la transportación 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 transmisión de

información.

Existen:

→ Bus de Datos. Su función 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 señales de estado de las operaciones efectuadas

por el CPU con las demás unidades.

→ Bus de Sincronización. Transporta las señales de reloj que permiten la

temporización.

Page 15: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 continuación se describen:

REGISTROS DE PROPÓSITO GENERAL

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

independientes de 8 bits.

Registro Descripción

AX Registro

Acumulador

Se utiliza generalmente para el almacenamiento de datos en

general, comúnmente operandos o resultados parciales de

las operaciones realizadas por la ALU.

BX Registro

Base

Se usa para conservar la dirección 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 ejecución de

un ciclo.

DX Registro De

Datos

Se usa para almacenar la parte alta del resultado de un

producto de mas de 16 bits.

Page 16: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

16

REGISTROS APUNTADORES E ÍNDICES

Registro Descripción

IP

Apuntador

de

Instrucciones

Contiene la dirección de la siguiente instrucción a ejecutar

por el procesador.

SP Apuntador

de Pila

Se utiliza para mantener la dirección del borde de la pila de

la memoria.

BP Apuntador

Base

Su uso principal es el de proveer un mecanismo paa poder

pasar parámetros a rutinas. También se usa para conservar

la dirección base de los datos almacenados en el segmento

de pila de la memoria.

SI Índice

Fuente

DI Índice

Destino

Su principal aplicación es en instrucciones u operaciones que

involucran cadenas.

REGISTROS DE SEGMENTO

Registro Descripción

CS Segmento

de código

Contiene la dirección de la memoria donde inicia el

segmento que contiene los programas y sus procedimientos.

DS Segmento

de datos

Contiene la dirección 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 dirección de la memoria utilizado por la pila de la

memoria.

ES

Segmento

extra de

datos

Contiene la dirección de la memoria que se utiliza para

guardar datos cuando se ha excedido la capacidad del

registro de segmento de datos (cadenas).

Page 17: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 Descripción

CF

Carry flag,

bandera de

acarreo

Indica un acarreo alto al término de una suma o un

préstamo al final de una resta. CF = 1 indica que existe un

acarreo

PF

Parity flag,

bandera de

paridad

Indica si el número de unos en el resultado de una

operación 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 operación aritmética

es cero.

SF Sign flag,

badera de signo

Indica si el resultado de una operación aritmética es

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

TF

Trap flag,

bandera de

trampa

Indica si un programa se ejecutará instrucción por

instrucción, deteniéndose en cada una de ellas.

IF

Interrupt enable

flag, bandera de

interrupción

Indica si las interrupciones se encuentran habilitadas o

deshabilitadas. IF = 1 cuando las interrupciones están

habilitadas.

DF

Direcction flag,

bandera de

dirección

Indica el orden como serán 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 operación aritmética existe

la condición de sobre flujo, es decir, el resultado es mayor

a la capacidad de almacenamiento del destino.

Page 18: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

18

Descripción de las banderas

Por medio de símbolos, 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

Instrucción Mov, almacena el contenido de la fuente en el destino.

Formato: MOV Destino, Fuente

Tipo de Direccionamiento Formato Descripción

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 más Índice o

Indexado Mov AX, [BP+DI]

Este tipo de direccionamiento también

interactúa en forma indirecta con los

datos en la memoria. El desplazamiento

Page 19: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 más

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

Opera similar al direccionamiento base

más índice, donde se agrega un

desplazamiento más en forma de un dato

inmediato.

PUSH Fuente

Empuja el contenido de la fuente a la pila

(Guarda en memoria), en la dirección 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

dirección a la que apunta SP.

1.3 Interrupciones

Una interrupción es una operación que suspende la ejecución de un programa de

modo que el sistema pueda realizar una acción especial. La rutina de interrupción

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

el cual entonces reasume su ejecución.

Una interrupción guarda en la pila el contenido del registro de banderas, el CS, y

el IP.

La dirección CS:IP entonces apunta al inicio de la rutina en el área del BIOS, que

ahora se ejecuta. La interrupción regresa vía una instrucción IRET (regreso de

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

instrucción que sigue al INT.

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

Una interrupción externa es provocada por un dispositivo externo al procesador.

Una interrupción interna ocurre como resultado de la ejecución de una instrucción

INT o una operación de división que cause desbordamiento, ejecución en modo de

Page 20: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

20

un paso o una petición para una interrupción externa, tal como E/S de disco. Los

programas por lo común 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 comunicación con los dispositivos

conectados al sistema. El método para realizar la interfaz con el BIOS es el de las

interrupciones de software.

A continuación se listan algunas interrupciones del BIOS.

INT 00H: División 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 través de la ejecución de un programa.

INT 02H: Interrupción no enmascarare. Usada para condiciones graves de

hardware, tal como errores de paridad, que siempre están habilitados. Por lo

tanto un programa que emite una instrucción CLI (limpiar interrupciones) no

afecta estas condiciones.

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

ejecución.

INT 04H: Desbordamiento. Puede ser causado por una operación aritmética,

aunque por lo regular no realiza acción alguna.

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

Emita la INT 05H para activar la interrupción internamente, y presione las teclas

Cltr + PrtSC para activarla externamente. La operación permite interrupciones y

guarda la posición del cursor.

Page 21: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

21

INT 08H: Sistema del cronometro. Una interrupción de hardware que actualiza la

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

genera una interrupción cada 54.9254 milisegundos, casi 18.2 veces por

segundo.

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

el teclado.

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

COM2, respectivamente.

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

LPT2, respectivamente.

INT 0EH: Control de disco flexible. Señala actividad de disco flexible, como la

terminación de una operación de E/S.

INT 10H: Despliegue en vídeo. Acepta el numero de funciones en el AH para el

modo de pantalla, colocación del cursor, recorrido y despliegue.

INT 11H: Determinación 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 operación y almacena el AX en la

localidad 40:10H).

INT 12H: Determinación del tamaño de la memoria. En el AX, regresa el tamaño

de la memoria de la tarjeta del sistema, en términos de kilobytes contiguos.

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

estado del disco, sectores leídos, sectores escritos, verificación, formato y

obtener diagnostico.

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

proporcionan muchas de las pruebas adicionales necesarias, las operaciones del

Page 22: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

22

DOS por lo general son mas fáciles de usar que sus contrapartes del BIOS y por

lo común son independientes de la maquina.

Las interrupciones desde la 20H hasta la 3FH están reservadas para operaciones

del DOS.

INT 20H: Termina programa. Finaliza la ejecución de un programa .COM,

restaura las direcciones para Cltr + Break y errores críticos, limpia los bufer de

registros y regresa el control al DOS. Esta función por lo regular seria colocada en

el procedimiento principal y al salir de el, CS contendría la dirección del PSP. La

terminación preferida es por medio de la función 4CH de la INT 21H.

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

una función en el AH.

INT 22H: Dirección de terminación. Copia la dirección de esta interrupción en el

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

para ejecución. A la terminación del programa, el DOS transfiere el control a la

dirección de la interrupción. Sus programas no deben de emitir esta interrupción.

INT 23H: Dirección de Cltr + Break. Diseñada para transferir el control a una

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

Ctlt + Break o Ctlr + c. La rutina finaliza la ejecución de un programa o de un

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

interrupción.

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 operación de disco o de la impresora).Sus programas no deben de

emitir esta interrupción.

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

disco.

Page 23: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

23

INT 26H: Escritura absoluta de disco. Escribe información 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: Interrupción de multiplexion. Implica la comunicación entre programas,

como la comunicación 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 ratón. Proporciona servicios para el manejo del ratón.

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 ejecución 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 interrupción varias veces

durante un segundo para mantener la hora actualizada. Aunque no podemos

manejar directamente esta interrupción (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

Page 24: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 periféricos, como

pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También 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 función 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 ejecución, interrupciones del Bios,

interrupciones del Sistema Operativo, etc.

Las interrupciones de software pueden ser activadas directamente por el

ensamblador invocando al número de interrupción deseada con la instrucción INT.

El uso de las interrupciones nos ayuda en la creación de programas, utilizándolas

nuestros programas son más cortos, es más fácil entenderlos y usualmente

tienen un mejor desempeño debido en gran parte a su menor tamaño. Este tipo

de interrupciones podemos separarlas en dos categorías: las interrupciones del

sistema operativo DOS y las interrupciones del BIOS. La diferencia entre ambas

es que las interrupciones del sistema operativo son más fáciles de usar pero

también son más lentas ya que estas interrupciones hacen uso del BIOS para

lograr su cometido, en cambio las interrupciones del BIOS son mucho más

rápidas pero tienen la desventaja que, como son parte del hardware son muy

específicas y pueden variar dependiendo incluso de la marca del fabricante del

Page 25: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

25

circuito. La elección del tipo de interrupción a utilizar dependerá únicamente de

las características 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 Código

Cada segmento debe estar incluido en un programa de ensamblador

(preferentemente), y estos segmentos generalmente (según sea el caso) deben

inicializarse o configurarse.

Todos los programas deberán tener mínimamente la siguiente estructura:

.Model SMALL

.STACK

.DATA

; Sección para definir variables y constantes

.CODE

Inicio:

MOV AX,@DATA

MOV DS,AX

MOV AH, ACH

INT 21H

END Inicio

Page 26: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 autónomo (esto es,

un programa que no este enlazado con algún otro). El modelo TINY esta

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

código y pila en un segmento. El modelo SMALL exige que el código 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 código son:

.STACK [tamaño]

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

Page 27: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 simbólico de una posición 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 cuádruples (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.

Page 28: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

28

1.4.2 Stack Segment

Es el segmento que permite definir el tamaño del Segmento de pila.

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

específico.

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

PUSH

Esta función sirve para almacenar información o colocar valores dentro de la pila,

su sintaxis es:

Push valor

POP

Esta función sirve para sustraer información 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 código del programa,

generalmente se inicia con las siguientes dos líneas de código y una etiqueta para

indicar el programa principal.

Inicio:

MOV AX,@DATA

MOV DS,AX

Page 29: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 ejecución 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 máquina. Para llamar a debug:

C:\> DEBUG ↵

El programa responde con el símbolo “ - ”, que es el indicador del depurador. A

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

siguientes instrucciones:

COMANDO DESCRIPCIÓN 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 carácter ASCII. Solo sirve

- D [Rango]

-D 0100 0108

Page 30: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

30

para el segmento de datos.

Donde el rango se especifica como una

dirección inicial hasta una dirección final, o

bien como una dirección 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 código en forma

nemotécnica.

En donde dirección es el valor del

desplazamiento en el segmento de código a

partir de donde será almacenado el código

introducido. Si este parámetro no es

especificado, el código se guardará a partir de

la localidad siguiente donde fue almacenada

la última instrucción.

-A [Dirección]

-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

código. 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 instrucción 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 dirección_final es la dirección de

memoria hasta donde será ejecutado el

programa

-G [direccion_final]

-G 0109

H Aritmética

hexadecimal

Suma y resta dos cantidades hexadecimales

visualizando ambos resultados.

Donde op1 y op2 son los datos en

hexadecimal. En el cálculo 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 parámetro nombre indica un nombre

de programa con extensión .COM .EXE

-N nombre

Q Quit, Salir Termina la ejecución de debug y regresa el

control a la línea de órdenes del DOS.

-Q

W Write, Grabar Se utiliza ara grabar programas en forma

permanente. Para hacerlo debemos:

-W

Page 31: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 dirección es la posición de memoria en

el segmento de código 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 dirección es la localidad de memoria a

partir de la cual se van a guardar datos.

-E dirección [dato]

-E 0200

1.5 Procedimiento de ensamble, enlace y ejecución.

Page 32: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

32

Los archivos fuente de código ensamblador deben estar en formato ASCII standard. Para esto

puede usarse cualquier editor que permita crear archivos sin formato y guardarlos con extensión

.asm.

Los comentarios se declaran con ; y terminan al final de la línea.

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

comando, de la siguiente manera:

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

Donde:

archivo.- Corresponde al programa fuente. Por defecto se toma la extensión .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 alfabético

/S escribe los segmentos en orden del fuente

/Bnum fija buffer de tamaño num

/C especifica un archivo de referencias cruzadas

/L especifica un listado de ensamble

/D crea listado del paso 1

/Dsym define un símbolo que puede usarse en el ensamble

/Ipath fija path para buscar archivos a incluir

/ML mantiene sensitividad de letras (mayús./minús) en nombres

/MX mantiene sensitividad en nombre públicos y externos

/MU convierte nombres a mayúsculas

/N suprime tablas en listados

/P checa por código impuro

/R crea código para instrucciones de punto flotante

/E crea código para emular instrucciones de punto flotante

/T suprime mensajes de ensamble exitoso

/V despliega estadísticas adicionales en pantalla

/X incluir condicionales falsos en pantalla

/Z despliega líneas de error en pantalla

Page 33: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

33

La otra forma de invocar al ensamblador es sólo tecleando MASM y respondiendo a la

información que se solicita. Para omitir algún valor sólo basta teclear ENTER si dar ningún 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 parámetros que este requiere son:

LINK objeto [,[ejecutable][,[mapa][,[librería]]]]][opciones][;]

Donde:

objeto.- Es el nombre para el archivo .OBJ

ejecutable.- Nombre del archivo .EXE

mapa.- Nombre del archivo mapa

librería.- 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 símbolos públicos

/LINENUMBERS copia número de líneas al mapa

/NOIGNORECASE mantiene sensitividad en nombres

/NODEFAULTLIBRARYSEARCH no usa bibliotecas por defecto

/STACK:size fija el tamaño del stack a usar

/CPARMAXALLOC:número fija alojación máxima de espacio

/HIGH fija la dirección de carga más alta

/DSALLOCATE aloja grupo de datos

/NOGROUPASSOCIATION ignora asociaciones para direcciones

/OVERLAYINTERRUPT:número asigna nuevo número a la INT 03Fh

/SEGMENTS:número procesa un número de segmentos

/DOSSEG sigue la convención de orden de DOS

Para la ejecución 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.

Page 34: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

34

1.6 Entorno de programación

El entorno de programación del Lenguaje Ensamblador, es el entorno de

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

comandos básicos del DOS.

Como ya se mencionó la edición de un programa en ensamblador, tiene que ser

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

con extensión .asm y después salir al símbolo del sistema (en el caso de

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

Page 35: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

35

UNIDAD II

ELEMENTOS DEL LENGUAJE

2.1 Instrucciones Lineales

Las instrucciones básicas en Lenguaje ensamblador son las siguientes:

2.1.1 Movimiento

La instrucción para mover información de un lugar a otro es la instrucci{on

MOV, que funciona como si fuera el operador =

Instrucción 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 manipulación de la Pila son Push y Pop.

PUSH

Esta función sirve para almacenar información o colocar valores dentro de la pila,

su sintaxis es:

Push valor

Donde valor puede ser una constante o una variable

Page 36: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

36

POP

Esta función sirve para sustraer información o sacar valores almacenados en la

pila, su sintaxis es:

Pop variable

Recordando siempre que la pila funciona LIFO.

2.1.3 Matemáticos

Instrucción Descripción 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 incrementándolo 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 préstamo

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

SBB destino, fuente

MUL Multiplicació

n

Realiza la multiplicación 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 Multiplicación con signo

Es similar a la instrucción MUL, con la única diferencia de que opera con datos representados en notación de complemento a 2 con signo.

IMUL fuente

DIV División

Realiza una división sin signo. Existen dos casos: AL AX Fuente AX Fuente DX:AX AH DX

DIV fuente

IDIV División con

signo

Opera de manera similar que DIV a excepción de que los números son representados en notación 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

Page 37: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

37

2.1.4 Ajustes

Instrucción Descripción Formato

NOT Negación bit a bit

Realiza la negación bit a bit del operando destino NOT Destino

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

2.1.5 Comparación

Instrucción Descripción 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 conjunción 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 ejecución normal de un programa, es decir, se envía

el flujo de la ejecución 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 función y el salto se realiza sean

cual sean las condiciones del programa.

Page 38: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

38

El salto incondicional puede realizarse mediante la función:

Instrucción Descripción Formato

JMP Salto incondicional Envía el flujo de control del programa a la dirección de memoria situada en

el segmento

JMP etiqueta

2.2.2 Condicional

Los saltos condicionales, solo envían el flujo del control del programa si la

condición que especifican se ha cumplido.

Los saltos condicionales son:

SALTO AL COMPARAR NÚMEROS SIN SIGNO

Instrucción Descripción 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

Envía el flujo de control del programa a la dirección de memoria situada en

el segmento

CF = 1 ZF = 1

SALTO AL COMPARAR NÚMEROS CON SIGNO Instrucción Descripción 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

Envía el flujo de control del programa a la dirección de memoria situada en

el segmento

ZF = 0

Page 39: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

39

2.3 Tipos de Ciclos

Instrucción Descripción Formato

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

LOOP etiqueta

2.4 Operadores Lógicos

Instrucción Descripción Formato AND Conjunción Realiza la operación lógica Y AND Destino, Fuente

OR Disyunción Realiza la operación lógica O OR Destino, Fuente

XOR Disyunción exclusiva

Realiza las operaciones lógicas 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 instrucción indicada, y pueden ser lineales o circulares.

2.5.1 Lineal

Los desplazamientos o corrimientos lineales, mueven los bits hacia la

derecha o izquierda según sea el caso, y pierden bits del lado del corrimiento.

El número de bits que se pierde en este tipo de corrimientos depende del conteo

especificado, los bits perdidos son sustituidos por ceros.

Page 40: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

40

Instrucción Descripción Formato

SHL Corrimiento a la izquierda

Realiza corrimientos de bits a la izquierda en el dato almacenado en el destino. Conteo indica el número 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 número de desplazamientos a realizar.

SHR Destino, Conteo

SHL SHR

Destino Destino

2.5.2 Circular

Los desplazam

derecha o izquierda

ningún bit por que es

Instrucción

ROL Rotación a la izquierda

ROR Rotación a la derecha

RCL Rotación a la izquierda con

acarreo

RCR Rotación a la derecha con

acarreo

ROL

Destino

RCL

Destino CF

0

ientos o co

según sea e

tos dan vue

Desplaza un númdestino, colocandal principio o al fdesplazamientos

0

rrimientos circulares

l caso de forma circ

lta en circulo.

Descripción

ero determinado de bits en o los bits que salen del registinal. Conteo indica el número a realizar.

ROR

Destino

RCR

Destino CF

, mueven los bits hacia la

ular, es decir, no se pierde

Formato ROL Destino, Conteo

ROR Destino, Conteo

RCL Destino, Conteo el ro de

RCR Destino, Conteo

Page 41: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

características 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 SEGÚN EL ESTADO DEL REGISTRO DE BANDERAS

Instrucción Descripción 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 número de 1 es par PF = 1 Paridad

JNP Salta si el número de 1 es impar o no es par PF = 0

2.6.2 Cadenas

Instrucción Descripción Formato CMPS Compara cadenas, es decir, compara

dos secciones de datos de memoria

de bytes, palabras o palabras dobles.

Utiliza para la comparación los

registros DS y SI como apuntadores

para las cadenas a comparar.

CMPS

Page 42: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

42

2.6.3 Carga

Instrucción Descripción Formato LEA

Carga la dirección efectiva de Fuente

en Destino, es decir, Destino se

convierte en un puntero a Fuente

Lea Destino, Fuente

Page 43: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

43

UNIDAD III

MODULARIZACIÓN

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 código 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

parámetros relacionados con el mismo. El siguiente ejemplo define a la macro

MOVER donde se manejan 2 parámetros.

MOVER MACRO A,B

PUSH AX

MOV AX,B

MOV B,AX

Page 44: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 NÚMERO:$"

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

Page 45: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Page 46: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Page 47: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 código 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.

Page 48: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Page 49: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 continuación 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:

Page 50: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Page 51: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Page 52: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Page 53: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

53

UNIDAD IV

PROGRAMACIÓN HÍBRIDA

Interrupciones

INTERRUPCIONES DEL DOS

Realiza FIJAR POSICIÓN DEL CURSOR

Llamada AH 02H

BH Número de página (0 para modos gráficos)

DH Renglón

DL Columna

Devuelve Nada Int 10/02

Descripción Se usa para colocar el cursor en una posición específica. Las

posiciones se definen en relación 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 CARÁCTER Y ATRIBUTO

Llamada AH 90H

AL Carácter ASCII

BH Página de presentación visual

BL Byte de atributo del carácter en AL

CX Número de caracteres por escribir

Devuelve Nada Int 10/09

Descripción Escribe los bytes del carácter ASCII y atributo en la posición

del cursor en una página específica de presentación. Esta

función no cambia la posición del cursor. Escribe hasta

65536 caracteres en modo de texto.

Conforme la función escribe caracteres, cambia de renglón

al terminar cada uno.

Page 54: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

54

En el modo de graficación, la función solo va al final del

renglón en curso y el byte de atributo de video asignado a

BL determina el color del carácter escrito. Si el bit 7 vale 1,

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

cuando se muestra el carácter.

Realiza FIJAR PALETA DE COLOR

Llamada AH 0BH

BH Identificación 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

Descripción Esta función selecciona o fija el contenido de la paleta de

color y solo trabaja en pantallas de gráficos de definición

media. La función 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

función establece el color del borde. Las paletas de color

válidas para esta función son:

Paleta Píxel 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

Page 55: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

55

Realiza ESCRIBE UN SOLO PÍXEL EN LA PANTALLA EN UNA

COORDENADA ESPECIFICADA

Llamada AH 0CH

AL Valor del color

BH Número de página

CX Número de columna del píxel

DX Número de renglón del píxel

Devuelve Nada

Int 10/0C

Descripción En modos de definición media, el efecto de esta función

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

color se le aplica XOR con el píxel actual.

Realiza ESCRIBIR CADENA

Llamada AH 13H

AL Modo de escritura

BH Página de video

BL Atributo (modos de escritura 0 y 1)

CX Longitud de la cadena

DH Renglón 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

Descripción 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

Page 56: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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 Número de sectores por transferir (1 a 9)

ES:BX Apuntador al buffer de disco del usuario

CH Número de pista (0 a 39)

CL Número de sector(1 a 39)

DH Número de cabeza (0 o 1)

DL Número de unidad (0 a 3)

Devuelve Bandera de acarreo en cero si hubo éxito

AL número de sectorses transferidos

Bandera de acarreo en uno si hubo error

AH byte de estado

Int 13/02

Descripción Transfiere uno o más sectores de un disquete a la memoria.

Todos los parámetros de entrada deben verificarse

cuidadosamente antes de expedir una llamada para

servicio; pasar un valor inválido puede producir resultados

impredecibles.

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

AL Número de sectores por transferir(1ª 9)

ES:BX Apuntador al buffer de disco del usuario

CH Número de pista (0 a 39)

CL Número de pista(0 a 39)

Page 57: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

57

CL Número de sector(1 a 9)

DH Número de cabeza(0 o 1)

DL Número de unidad(0 a 3)

Devuelve Bandera de acarreo en cero si hubo éxito

AH 0

AL Número de sectores transferidos

Bandera de acarreo en uno si hubo error

AH Byte de estado

Descripción Escribe uno o mas sectores de la memoria al disquete.

Excepto por el número 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 Número de pista

DH Número de cabeza

DL Número de unidad

Devuelve AH Código de retorno

Int 13/05 Descripción Da formato a una pista de disco iniciando los campos de

dirección de disco y los sectores de dastos. La operación 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 Número de pista

01H Número de cabeza

02H Número de sector

Page 58: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

58

03H Código de tamaño

Realiza PREPARA PUERTO DE COMUNICACIONES

Llamada AH 00H

AL Parámetro de iniciación

DX Número de puerto (0=COM1, 1=COM2, 2=COM3,

3=COM4)

Devuelve AH Estado de puerto

AL Estado de MODEM

Int 14/00

Descripción 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 CARÁCTER EN PUERTO DE COMUNICACIONES

Llamada AH 01H

AL Carácter por escribir

DX Número de puerto (0=COM1, 1=COM2, 2=COM3,

3=COM4)

Int 14/01

Devuelve AH bit 7=0 no hubo error

Page 59: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

59

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

falla

Descripción Escribe un carácter en el puerto serial especificado y

devuelve el estado de este. Antes de llamar a esta función,

asegúrese de usar Int 14/00 para preparar el puerto.

Realiza LEE CARÁCTER DEL PUERTO DE COMUNICACIONES

Llamada AH 02H

DX Número de puerto (0=COM1, 1=COM2, 2=COM3,

3=COM4)

Devuelve AH bit 7=0 no hubo error

AL Carácter

AH bit 7 = 1 error

Int 14/02

Descripción Lee un carácter del puerto serial especificado y devuelve el

estado del puerto. Antes de llamar a esta función se debe

preparar el puerto.

Realiza SOLICITAR EL ESTADO DEL PUERTO DE COMUNICACIONES

Llamada AH 03H

DX Número de puerto (0=COM1, 1=COM2, 2=COM3,

3=COM4)

Devuelve AH Estado del puerto

AL Estado del modem

Int 14/03

Descripción Esta función, 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 INTERCEPCIÓN DEL TECLADO Int 15/4F Llamada AH 4FH

Page 60: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

60

Bandera de acarreo en 1

AL Código de examinación del teclado

Devuelve Bandera de acarreo en uno

AL Nuevo código de examinación

Bandera de acarreo en cero

AL Código de examinación original

Descripción Devuelve el código de examinación en el registro AL con la

bandera de acarreo en uno.

Realiza ABRIR DISPOSITIVO

Llamada AH 80H

BX Identificación del dispositivo

CX Identificación del proceso

Devuelve Bandera de acarreo en uno si hubo error

AH 86H

Int 15/80

Descripción Fue diseñada para usarse en operaciones rudimentarias de

múltiples tareas.

Realiza TECLA DE SOLICITUD DE SISTEMA PRESIONADA

Llamada AH 85H

Devuelve AL 00H tecla presionada

01H yecla liberada Int 15/85

Descripción BIOS llama a esta función 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

Page 61: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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)

Descripción Fue diseñada para usarse dentro del software de sistema

operativo para establecer esperas del sistema.

Realiza LEER CARÁCTER DE TECLADO

Llamada AH 00H

Devuelve AH Código de examinación de teclado

AL Código de carácter ASCII Int 16/00

Descripción Espera y lee un solo carácter del buffer del teclado y lo

devuelve junto con su código de examinación. 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 Código de examinación

AL carácter ASCII

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

Descripción Si se oprimió alguna tecla, esta función pone cero en la

bandera de cero y devuelve el código ASCII de la digitación

y el código de examinación del teclado. Si no hay

digitaciones por procesar, la función pone 1 en la bandera

de cero y regresa.

Page 62: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Descripción 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 función.

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 DIGITACIÓN

Llamada AH 10H

Devuelve AH Código de examinación

AL caracter

Int 16/10

Descripción Permite el reconocimiento de teclas similares

Realiza ESCRIBIR CARÁCTER EN IMPRESORA

Llamada AH 00H

AL Carácter

DX Número de impresora (0 a 2)

Int 17/00

Devuelve AH Estado de impresora

Page 63: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

63

Descripción Escribe el carácter especificado en el puerto de impresora y

devuelve el estado actual de la impresora.

Realiza PREPARAR PUERTO DE IMPRESIÓN

Llamada AH 001H

DX Número de impresora (0 a 2)

Devuelve AH Estado de la impresora Int 17/01

Descripción 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 día

Bandera de acarreo en uno si hubo error

Int 1A/02

Descripción 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 día

Int 1A/03

Devuelve Nada

Page 64: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

64

Descripción Los valores deben establecerse en BCD. DL se codifica para

indicar si el reloj mantiene un tiempo estándar (DL=0) o

tiempo de aprovechamiento de la luz del día(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 Año

DH Mes

DL Día

Bandera de acarreo en uno si hubo error

Int 1A/04

Descripción Devuelve los valores de reloj en BCD.

Realiza FIJAR FECHA DEL RELOJ DE TIEMPO REAL

Llamada AH 5H

CH Siglo

CL Año

DH Mes

DL Día

Devuelve Nada

Int 1A/05

Descripción Los valores del reloj deben establecerse en BCD

Int 1A/06 Realiza FIJAR ALARMA DEL SISTEMA, FIJA EL CRONÓMETRO DE

ALARMA DEL SISTEMA PARA GENERAR UNA INTERRUPCIÓN

EN UN MOMENTO FUTURO

Page 65: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Descripción 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 aritmético) . antes de reestablecer la alarma,

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

de interrupción para manejarla.

Realiza INHABILITA ALARMA DEL RELOJ DE TIEMPO REAL

Llamada AH 07H

Devuelve Nada Int 1A/07 Descripción Esta función inhabilita la alarma del reloj de tiempo real. Si

ya se fijó la alarma, se debe usar esta función para poder

fijarla de nuevo.

Realiza MOSTRAR SALIDA

Llamada AH 02H

DL Datos con caracteres de 8 bits

Devuelve Nada Int 21/01 Descripción Dirige la salida a la pantalla de video (STDOUT). La función

manejará el carácter de retroceso (backspace)

adecuadamente como un retroceso no destructivo en

pantalla. Ctrl-C y Ctrl-Break se manejan a través de Int 23.

Page 66: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

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

Descripción Se usa para enviar un carácter por el puerto serial.

Realiza MOSTRAR CADENA

Llamada AH 09H

DS:DX Apuntador a cadena terminada con $

Devuelve Nada Int 21/09 Descripción Envía a la salida series contiguas de caracteres del mismo

modo que Int 02 muestra caracteres individuales. Todos los

caracteres que comienzan en una dirección especificada se

envían a la salida hasta que se encuentra un signo de $

Realiza OBTENER FECHA DEL SISTEMA

Llamada AH 2AH

Devuelve CX Año (1980 a 2099)

DH Mes (1 al 12)

DL Día(1 a 31)

AL Día de la semana (0=domingo, 1=lunes, etc)

Int 21/2A

Descripción Devuelve la fecha del sistema basándose en el reloj interno

de DOS.

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

CX Año (1980 a 2099)

Page 67: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

67

DH Mes

DL Dia

Devuelve AL 00H, fecha establecida exitosamente

FFH fecha invalida, no establecida

Descripción Normalmente solo se establece la porción de fecha del reloj

interno del DOS, pero si la computadora tiene un reloj

CMOS con esta función también 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 centésimas de segundo (0 a 99)

Int 21/2C

Descripción Obtiene la hora del reloj interno del DOS, la cual solo es

exacta si fue establecida correctamente.

Realiza ESTABLECER LA HORA DEL SISTEMA

Llamada AH 2DH

CH Hora

CL Minutos

DH Segundos

DL centésimas

Devuelve AL 00H hora fijada exitosamente

FFH hora inválida, no establecida

Int 21/2D

Descripción Normalmente, solo se establece la porción de hora del reloj

interno de DOS.

Page 68: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

68

Realiza TERMINAR Y PERMANECER RESIDENTE

Llamada AH 31H

AL Código de retorno

DX Tamaño de memoria por reservar(en párrafos)

Devuelve Nada Int 21/31 Descripción Termina la operación del programa pero no libera la

memoria asignada a este ni cierra los archivos abiertos.

Esta función permite mas de 64K de memoria y el control

del código de retorno, que está disponible para el

programa padre a través de Int 21/4D

Realiza OBTENER ESPACIO LIBRE DEL DISCO

Llamada AH 36H

DL Unidad de diso 0=omisión 1=A, 2=b, etc

Devuelve AX Sectores por grupo, FFFFH si la unidad es inválida

BX Número de grupos disponibles

CX bytes por sector

DX Grupos en unidad

Int 21/36

Descripción Esta función devuelve información básica que puede usarse

para determinar el espacio disponible en disco

Realiza CREAR SUBDIRECTORIO

Llamada AH 39H

DS:DX Apuntador a especificación de trayectoria ASCII

Devuelve Bandera de acarreo en cero si hubo éxito

Bandera de acarreo en uno si hubo error

AX 03H trayectoria no encontrada

05H acceso negado

Int 21/39

Descripción Permite la creación de nuevos directorios. La función

Page 69: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

69

devolverá un error y no creará el directorio si este ya existe,

si cualquier elemento del nombre de la trayectoria no existe

o si el directorio proviene de la raíz y la raíz está llena.

Realiza ELIMINAR SUBDIRECTORIO

Llamada AH 3AH

DS:DX Apuntador a especificación de trayectoria ASCII

Devuelve Bandera de acarreo en cero si hubo éxito

Bandera de acarreo en uno si hubo error

AX 03H trayectoria no encontrada

05H acceso negado

06H directorio actual

10H directorio actual

Int 21/3A

Descripción Permite el borrado de un directorio especificado, pero solo

si existe, está vacío y no es el directorio por omisión.

Realiza ESTABLECER DIRECTORIO

Llamada AH 3BH

DS:DX Apuntador a cadena de trayectoria ASCII

Devuelve Bandera de acarreo en cero si hubo éxito

Bandera de acarreo en uno si hubo error

AX 03H trayectoria no encontrada

Int 21/3B

Descripción Le permite cambiar el directorio actual (similar a la orden

CD)

Page 70: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

70

Realiza BORRAR ARCHIVO

Llamada AH 41H

DS:DX apuntador a especificación de archivo ASCII

Devuelve Bandera de acarreo en cero si hubo éxito

Bandera de acarreo en uno si hubo error

AX 02H archivo no encontrado

05H acceso negado Int 21/41

Descripción Borra un archivo marcando la entrada de directorio con un

E5H en el primer byte del nombre del archivo. Solo ese byte

se modifica en la entrada del directorio. Los grupos

asignados al archivo son devueltos al sistema para un

nuevo uso. No se permiten caracteres comodín en el

nombre del archivo.

Realiza RENOMBRAR ARCHIVO

Llamada AH 56H

DS:DX apuntador a nombre ASCII de archivo actual

ES:DI apuntador a nuevo nombre ASCII de archivo

Devuelve Bandera de acarreo en cero si hubo éxito

Bandera de acarreo en uno si hubo error

AX 02H archivo no encontrado

03H trayectoria no encontrada

05H acceso negado

11H no es el mismo dispositivo

Int 21/56

Descripción Permite renombrar archivos incluso en directorios

diferentes. En esta función no es válido usar caracteres

comodín, pero sí es posible especificar nombres de

trayectorias completas. No renombre archivos abiertos pues

esto puede traer resultados impredecibles.

Page 71: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

71

Realiza CREAR ARCHIVO

Llamada AH 5BH

CX atributo

DS:DX apuntador a especificación de archivo ASCII

Devuelve Bandera de acarreo en cero si hubo éxito

AX Control

Bandera de acarreo en uno si hubo error

AX 03H trayectoria no encontrada

04H no hay controles disponibles

05H acceso negado

50H archivo ya existe

Int 21/5B

Descripción Esta función que consitutye el método normal para crear un

archivo, devuelve un control de archivo para un acceso

posterior. El archivo se crea como un archivo normal con

acceso de lectura/escritura. No se pueden crear etiquetas

de volumen ni subdirectorios.

Page 72: REGISTROS DE PROPSITO GENERAL - leng …leng-ensam.wikispaces.com/file/view/Antologia+Lenguaje+Ensamblado… · El microprocesador es la parte de la computadora diseñada para ejecutar

Lenguaje Ensamblador Ing. Claudia Yadira Luna Carrasco

72

CONJUNTO DE CARACTERES ASCII EN HEXADECIMAL