Está en la página 1de 72

Lenguaje Ensamblador

Ing. Claudia Yadira Luna Carrasco

PRESENTACIN

El lenguaje ensamblador aun en estos das presenta ventajas sobre los


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

La presente Antologa fue elaborada para la asignatura de Lenguaje


Ensamblador incluida en la Reforma Educativa 2004, para la Carrera de Ingeniera en
Sistemas Computacionales para el Instituto Tecnolgico Superior de Huauchinango.

Fue realizada con la finalidad de mostrar al lector las principales


instrucciones y aspectos bsicos del lenguaje Ensamblador.
Es utilizado el compilador MASM para el desarrollo de los programas,
mostrndose los pasos para la realizacin, compilacin y ligado de un progre

Esperando que la presente antologa sea de utilidad


Ing. Claudia Yadira Luna Carrasco

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

NDICE
Pg.
Presentacin
Unidad I

Fundamentos

1.1 Introduccin.

1.1.1 Uso y aplicaciones del lenguaje ensamblador.

1.1.2 Escalabilidad de los microprocesadores.

1.1.3 Tipos de lenguajes ensambladores.

1.1.4 Clasificacin de Memorias.

10

1.1.5

12

Unidades de entrada / salida.

1.2 El microprocesador.

13

1.2.1 Buses.

14

1.2.2 Registros.

15

1.2.3 Modos de direccionamiento.

18

1.3 Interrupciones.

19

1.3.1 Hardware.

23

1.3.2 Software.

24

1.4 Estructura de un programa en ensamblador.

25

1.4.1 Data segment.

26

1.4.2 Snack segment.

28

1.4.3 Code segment

28

1.4.4 Instrucciones del programa.

29

1.5 Procedimiento de ensamble, enlace y ejecucin.

31

1.6 Entorno de programacin.

34

Unidad II

Elementos del Lenguaje

2.1 Instrucciones lineales

35

2.1.1 Movimiento.

35

2.1.2 Pila.

35

2.1.3 Matemticos.

36

2.1.4 Ajustes.

37

2.1.5 Comparacin.

37

2.2 Saltos.

37

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

2.2.1 Incondicional.

37

2.2.2 Condicional.

38

2.3 Tipos de ciclos.

39

2.4 Operadores Lgicos.

39

2.5 Desplazamiento.

39

2.5.1 Lineal.

39

2.5.2 Circular.

40

2.6 Procesos de control

41

2.6.1 Banderas

41

2.6.2 Cadenas

41

2.6.3 Carga

42

Unidad III

Modularizacin

3.1 Macros

43

3.2 Procedimientos

45

3.2.1 Internos

45

3.2.2 Externos

47

Unidad IV
Interrupciones

Programacin Hbrida
53

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

UNIDAD I
FUNDAMENTOS
1.1 Introduccin
Cuando las primeras computadoras hicieron su aparicin, estas eran solo
programables por sus diseadores, puesto que ellos eran los que conocan su
diseo y la forma en que deban ser programadas.
Con el avance del tiempo, las computadoras fueron siendo diseadas bajo
arquitecturas similares, lo que facilit su programacin, aunque el grupo de
personas que poda realizar esta labor era pequeo, puesto que se deba tener un
amplio conocimiento sobre esta labor.
La informacin que hace que el hardware de la computadora realice una
determinada actividad de llama instruccin. Por consiguiente una instruccin es
un conjunto de unos y ceros.
Las instrucciones formadas con unos y ceros equivalen a acciones
elementales de la mquina, por lo que al conjunto de dichas instrucciones que
son interpretadas directamente por la mquina se denomina lenguaje mquina.
El lenguaje mquina fue el primero que empleo el hombre para la
programacin de las primeras computadoras, por esta razn el grupo de
programadores era limitado.
El Lenguaje Ensamblador es la primera abstraccin del Lenguaje Mquina, y
consiste en asociar palabras clave a estas instrucciones, para que faciliten su uso
por parte del programador.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

La aparicin del Lenguaje Ensamblador inicio la construccin de otros


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

1.1.1 Uso y aplicaciones del Lenguaje Ensamblador.


El uso del lenguaje ensamblador le permite al programador indicarle a la
computadora exactamente cmo llevar a cabo una tarea especfica usando la
menor cantidad de instrucciones. La optimizacin resulta en una mejora
sustancial en trminos de rendimiento y consumo de memoria as como otros
recursos.
El lenguaje ensamblador es usualmente utilizado en las siguientes circunstancias:
Para mejorar la eficiencia de una rutina o programa especfico que se puede o
se ha transformado en un cuello de botella.
Para obtener acceso a funciones de bajo nivel del procesador para realizar
tareas que no son soportadas por los lenguajes de alto nivel.
Para escribir manejadores de dispositivos para comunicarse directamente con
hardware especial.
Trabajar en ambientes con recursos limitados puede requerir el uso del
lenguaje ensamblador pues el cdigo ejecutable puede ser menor que el
generado por un Lenguaje de alto nivel.

El lenguaje ensamblador tiene como ventajas:


Velocidad: el proceso de traduccin que realizan los intrpretes, implica un
proceso de cmputo adicional al que el programador quiere realizar. Por ello el
lenguaje ensamblador es ms rpido que un intrprete, por que no necesita
traduccin.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

Tamao: un intrprete genera cdigo de ms al necesario y por ello un


ejecutable se crece, y comparado con ello, el ejecutable generado con
Lenguaje Ensamblador es relativamente pequeo.
Flexibilidad: los lenguajes de alto nivel no permiten el uso directo del hardware
de la computadora, Lenguaje Ensamblador si lo hace.
Las herramientas para programar en Lenguaje Ensamblador son:
1. Un editor de textos.
2. Un Ensamblador, que convierta el cdigo fuente al cdigo objeto.
3. Un Montador o de Ligado, que permita el mdulo objeto en ejecutable.

1.1.2 Escalabilidad de los microprocesadores.


En

una

computadora

est

contenido

un

chip

circuito

llamado

microprocesador. Todas las computadoras tienen por lo menos dos partes


bsicas, la unidad de control y la unidad aritmtico-lgica.
Todos los recursos de la computadora son administrados desde la unidad
de control, cuya funcin es coordinar todas las actividades de la computadora.
La unidad de control contiene las instrucciones del procesador para llevar a cabo
comandos.
El conjunto de instrucciones, que est incluido dentro de los circuitos de
la unidad de control, es una lista de todas las operaciones que realiza el
procesador. Cada instruccin en el conjunto de instrucciones es acompaado por
un microcdigo, que son instrucciones muy bsicas que le dicen al procesador
cmo ejecutar las instrucciones.
Cuando la computadora corre un programa, busca los comandos del
programa dentro del conjunto de instrucciones del procesador y las ejecuta en
orden.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

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


que involucran aritmtica o lgica. La ALU incluye un grupo de registros, es decir,
memoria construida directamente en el procesador que se usa para guardar datos
que estn siendo procesados por la instruccin actual.
Los procesadores modernos contienen ms de 20 millones de transistores y
pequeos de tamao, mientras que en sus inicios contenan solo 2000
transistores y el tamao era considerable.
El microprocesador es la parte de la computadora diseada para ejecutar
programas, con tecnologa semiconductora. Se eslabona desde los 50s pero la
tecnologa se fusiona en los 70s.
Anteriormente se usaban tubos al vaco (bulbos) como componentes
electrnicos activos. En 1948 en los laboratorios de Bell crearon el Transistor
(material de silicio de bajo costo) para reemplazar al tubo al vaco. De esta forma
comienzan a surgir los circuitos digitales que llevan a la reduccin de la tecnologa
a un circuito integrado llamado microprocesador.
Actualmente la capacidad de integracin y el abaratamiento de las
tecnologas permite que casi cualquier empresa pueda contar con una capacidad
de cmputo antes inimaginable para las tareas que necesita.
Se prev que la capacidad de integracin llegue a un techo tecnolgico, en
el cual se necesite un nuevo paradigma para poder seguir incrementando la
capacidad de procesamiento de las mquinas.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

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


la fecha en la que fueron presentados al mercado, la velocidad promedio que
alcanzaban, el ancho de bus que contenan, un aproximado de transistores y la
memoria interna de cada uno de ellos.

Procesador

Fecha de
presentacin

Velocidad
de Reloj

Ancho
de bus

Transistores

Memoria

4004

15/11/71

108 Khz

4 bits

2300

640 byte

8008

01/04/72

108 khz

8 bits

3500

16 kb

8080

01/04/74

2 Mhz

8 bits

6000

64 kb

8086

08/06/78

5-10 Mhz

16 bits

2900

100 Mb

8088

01/06/79

5-10 Mhz

8 bits

2900

300 Mb

80286

01/02/82

8-12 Mhz

16 bits

13400

1 Mb

80386

17/10/85

16-33 Mhz

27500

20 Mb

32 bits
80486

22/04/91

16-33 Mhz

32 bits

1185000

Pentium

22/03/93

60-200 Mhz

32 bits

3.1 millones

Pentium Pro

27/03/95

150-200
Mhz

64 bits

5.5 millones

AMD k5

1996

90-200 Mhz

64 bits

3.3 4.3
millones

Pentium II

07/05/97

233-300
Mhz

64 bits

7.5 millones

Intel Celaron

1998

266 Mhz

64 bits

7.5 millones

AMD Duron

2000

600-1000
Mhz

64 bits

25 millones

Pentium 4

2000

2000 Mhz

64 bits

42 millones

1 Gb

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

1.1.3 Tipos de Lenguajes Ensambladores


Los lenguajes ensambladores, dependen de la arquitectura de la computadora,
existen:
Los ensambladores de la familia Intel
Los ensambladores de la familia Motorota
Los ensambladores del procesador Power de las IBM
Aunque todos los ensambladores realizan bsicamente las mismas tareas,
podemos clasificarlos de acuerdo a caractersticas.
Ensambladores

Cruzados

(Cross-Assembler).

Se

denominan

as

los

ensambladores que se utilizan en una computadora que posee un procesador


diferente al que tendrn las computadoras donde va a ejecutarse el programa
objeto producido.
Ensambladores Residentes. Son aquellos que permanecen en la memoria
principal de la computadora y cargan, para su ejecucin, al programa objeto
producido.
Macroensambladores.

Son

ensambladores

que

permiten

el

uso

de

macroinstrucciones debido a su potencia, normalmente son programas


robustos que no permanecen en memoria una vez generado el programa
objeto.
Microensambladores.

Generalmente,

los

procesadores

utilizados

en

las

computadoras tienen un repertorio fijo de instrucciones, este conjunto de


instrucciones sirven para un determinado cdigo de operacin y a estas se les
conoce como microensambladores.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

10

1.1.4 Clasificacin de Memorias.


La memoria de un ordenador se puede definir como los circuitos que permiten
almacenar y recuperar la informacin.
Las memorias se clasifican, por la tecnologa empleada y, adems segn la
forma en que se puede modificar su contenido, A este respecto, las memorias se
clasifican en dos grandes grupos:
1) Memorias RAM: Son memorias en las que se puede leer y escribir, si bien su
nombre (Random Access Memory) no representa correctamente este hecho.
2) Memorias ROM (Read 0nly Memory): Son memorias en las que slo se puede
leer. Pueden ser:
a) ROM programadas por mscara, cuya informacin se graba en fbrica y no se
puede modificar.
b) PROM, o ROM programable una sola vez.
c) EPROM (erasable PROM) o RPROM (reprogramable ROM), cuyo contenido
puede borrarse mediante rayos ultravioletas para regrabarlas.
d) EAROM (electrically alterable ROM) o EEROM (electrically erasable ROM), que
son memorias que est en la frontera entre las RAM y las ROM ya que su
contenido puede regrabarse por medios elctricos, estas se diferencian de las
RAM en que no son voltiles. En ocasiones a este tipo de memorias tambin se
las denomina NYRAM (no voltil RAM).

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

11

La memoria principal esta formada por un conjunto de unidades llamadas


palabras en forma de una organizacin lineal. Dentro de cada una de estas
palabras se guarda la informacin que constituye una instruccin o parte de ella
(puede darse el caso de que una sola instruccin necesite varia palabras), o un
dato o parte de un dato (tambin un dato puede ocupar varias palabras).
A la cantidad de palabras que forman la Memoria Principal se le denomina
capacidad de memoria. De este modo, cuanto mayor sea el nmero de palabras
mayor ser el nmero de instrucciones y datos que podr almacenar la
computadora. El nmero de bits que forman una palabra se llama longitud de
palabra.
La accin de guardar una informacin en una palabra de la memoria se
llama acceso de escritura, y la accin de recuperarla, acceso de lectura. Los
accesos son coordinados por la UC. La secuencia de rdenes que debe generar la
Unidad de Control se indica en las siguientes tablas.

Secuencia de acceso a la memoria.

Acceso de Escritura

Acceso de Lectura

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

12

1.1.5 Unidades de Entrada / Salida.


La computadora tiene comunicacin de manera interna y externa, de manera
externa la comunicacin se consigue a travs de diversos dispositivos, como son:
teclados, ratones, impresoras, monitores, escner, etc.
Tomemos en cuenta que todos los perifricos (dispositivos que pueden
conectarse a la computadora) son diferentes, por tanto, el manejo que cada uno
de ellos da a la informacin tambin es diferente, en otras palabras la
computadora habla espaol y cada perifrico habla un idioma diferente, entonces,
para que la comunicacin entre la computadora y el perifrico sea la apropiada,
se hace necesario un intrprete o intermediario que permita la traduccin ante
los diversos idiomas que cada uno maneja.
La

unidad

que

funciona

como

intermediario

se

llama

Unidad

de

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


Entrada/Salida.
Definiremos una operacin de E/S como el conjunto de acciones necesarias
para la transferencia de un conjunto de datos (es decir, una transferencia
completa de datos). Para la realizacin de una operacin de E/S se deben
efectuar las siguientes funciones:
Recuento de las unidades de informacin transferidas (normalmente bytes)
para reconocer el fin de operacin.
Sincronizacin de velocidad entre la CPU y el perifrico.
Deteccin de errores (e incluso correccin) mediante la utilizacin de los
cdigos necesarios (bits de paridad, cdigos de redundancia cclica, etc.)
Almacenamiento temporal de la informacin. Es ms eficiente utilizar un
buffer temporal especfico para las operaciones de E/S que utilizan el rea
de datos del programa.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

13

Conversin de cdigos, conversin serie/paralelo, etc.

1.2 El Microprocesador.
La Unidad central de proceso o CPU, se puede definir como un circuito (chip) que
interpreta y ejecuta instrucciones.
El microprocesador se ocupa del control y el proceso de datos en los
ordenadores. Habitualmente, la CPU es un microprocesador fabricado en un chip,
un nico trozo de silicio que contiene millones de componentes electrnicos. El
microprocesador de la CPU est formado por una unidad aritmtico lgica que
realiza clculos y comparaciones, y toma decisiones lgicas (determina si una
afirmacin es cierta o falsa mediante las reglas del lgebra de Boole); por una
serie de registros donde se almacena informacin temporalmente, y por una
unidad de control que interpreta y ejecuta las instrucciones. Para aceptar rdenes
del usuario, acceder a los datos y presentar los resultados, la CPU se comunica a
travs de un conjunto de circuitos o conexiones llamado bus. El bus conecta la
CPU a los dispositivos de almacenamiento (por ejemplo, un disco duro), los
dispositivos de entrada (por ejemplo, un teclado o un ratn) y los dispositivos de
salida (por ejemplo, un monitor o una impresora).
Elementos que la componen:
Unidad de control: controla el funcionamiento de la CPU y por tanto de el
computador.
Unidad aritmtico-lgica (ALU): encargada de llevar a cabo las funciones de
procesamiento de datos del computador.
Registros: proporcionan almacenamiento interno a la CPU.
Interconexiones CPU: Son mecanismos que proporcionan comunicacin
entre la unidad de control, la ALU y los registros.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

1.2.1

14

Buses.

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


transportarse los datos de una unidad a otra.
Los buses han ido evolucionando conforme lo hicieron los procesadores,
entre ms ancho es el bus, mas rpida es la transportacin de datos, y por lo
tanto del procesador.
Un bus es en esencia una ruta compartida que conecta diferentes partes del
sistema, como el microprocesador, la controladora de unidad de disco, la
memoria y los puertos de entrada/salida (E/S), para permitir la transmisin de
informacin.
Existen:
Bus de Datos. Su funcin principal es la de transportar datos entre los
dispositivos.
Bus de Direcciones. En donde son transportadas las direcciones de memoria
principal.
Bus de Control. Transporta seales de estado de las operaciones efectuadas
por el CPU con las dems unidades.
Bus de Sincronizacin. Transporta las seales de reloj que permiten la
temporizacin.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

15

1.2.2 Registros.
El procesador para realizar y agilizar sus funciones contiene dentro de s, una
serie de registros que a continuacin se describen:
REGISTROS DE PROPSITO GENERAL
Pueden ser utilizados como un solo registro de 16 bits o bien como dos registros
independientes de 8 bits.
Registro
AX

BX
CX
DX

Registro
Acumulador
Registro
Base

Descripcin
Se utiliza generalmente para el almacenamiento de datos en
general, comnmente operandos o resultados parciales de
las operaciones realizadas por la ALU.
Se usa para conservar la direccin base de los datos
almacenados en el segmento de datos de la memoria

Registro

Guarda el valor del ndice de conteo durante la ejecucin de

Contador

un ciclo.

Registro De
Datos

Se usa para almacenar la parte alta del resultado de un


producto de mas de 16 bits.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

16

REGISTROS APUNTADORES E NDICES


Registro
Apuntador
IP

de

Descripcin
Contiene la direccin de la siguiente instruccin a ejecutar
por el procesador.

Instrucciones
SP

Apuntador
de Pila

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


la memoria.
Su uso principal es el de proveer un mecanismo paa poder

BP

Apuntador

pasar parmetros a rutinas. Tambin se usa para conservar

Base

la direccin base de los datos almacenados en el segmento


de pila de la memoria.

SI
DI

ndice
Fuente

Su principal aplicacin es en instrucciones u operaciones que

ndice

involucran cadenas.

Destino

REGISTROS DE SEGMENTO
Registro
CS

DS

SS

ES

Descripcin

Segmento

Contiene la

de cdigo

segmento que contiene los programas y sus procedimientos.

Segmento
de datos
Segmento
de pila

Contiene la

direccin
direccin

de
de

la
la

memoria
memoria

donde
donde

inicia
inicia

el

segmento o bloque de memoria que contiene la mayor parte


de los datos o variables utilizados en un programa.
Contiene la direccin de la memoria utilizado por la pila de la
memoria.

Segmento

Contiene la direccin de la memoria que se utiliza para

extra de

guardar datos cuando se ha excedido la capacidad del

datos

el

registro de segmento de datos (cadenas).

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

17

REGISTROS DE BANDERAS
F15 F14 F13 F12 F11 F10
OF

DF

F9

F8

F7

F6

IF

TF

SF

ZF

Registro
CF

bandera de

flag, bandera de
acarreo auxiliar
Zero flan,
bandera de cero
Sign flag,
badera de signo
Trap flag,

TF

bandera de
trampa

IF

CF

Descripcin

acarreo
Indica si el nmero de unos en el resultado de una
operacin es par o impar. PF = 0 indica una paridad impar.
Esta bandera se activa cuando existe acarreo de la parte
baja a la parte alta en el registro AL.
Se activa cuando el resultado de una operacin aritmtica
es cero.
Indica si el resultado de una operacin aritmtica es
positivo o negativo. SF = 0 si el resultado es positivo.
Indica

si

un

programa

se

ejecutar

instruccin

por

instruccin, detenindose en cada una de ellas.


Indica si las interrupciones se encuentran habilitadas o

flag, bandera de

deshabilitadas. IF = 1

cuando las interrupciones estn

habilitadas.

Direcction flag,

Indica el orden como sern manipulados los datos en

bandera de

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

direccin

OF

PF

F0

Interrupt enable
interrupcin

DF

F1

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

Auxiliary carry

SF

AF

F2

bandera de

paridad

ZF

F3

Indica un acarreo alto al trmino de una suma o un

Parity flag,

AF

F4

Carry flag,
acarreo

PF

F5

principio)

Overflow flag,

Se activa cuando al final de una operacin aritmtica existe

bandera de

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

sobreflujo

a la capacidad de almacenamiento del destino.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

18

Descripcin de las banderas


Por medio de smbolos, el comando R nos indica el estado de cada bit en el
registro de banderas.
Banderas
Desactivadas:
XF = 0
Activadas
XF = 1

OF

DF

IF

SF

ZF

AF

PF

CF

NV

UP

DI

PL

NZ

NA

PO

NC

OV

DN

EI

NG

ZR

AC

PE

CY

1.2.3 Modos de Direccionamiento


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

MOV Destino, Fuente

Tipo de Direccionamiento

Formato

De Registro

Mov Ax, BX

Inmediato

Mov Ax, 25H

Descripcin

Copia el contenido de un registro a otro.


Es cuando se guarda un dato de manera
directa en el destino.
Permite la transferencia de datos entre

Directo

Mov Al, [24A7]

una localidad de memoria situada dentro


del segmento de datos y los registros Al o
AX.
Permite

Indirecto por Registro

Mov AH, [BX]

transferir

los

datos

de

una

localidad de memoria por medio de los


siguientes registros BP, BX, DI o SI, los
cuales guardan el direccionamiento.
En

Relativo por Registro

Mov AX, [BX+100H]

este

tipo

de

direccionamiento

de

agrega un desplazamiento a un registro


base o ndice.

Base

ms

Indexado

ndice

Este tipo de direccionamiento tambin


Mov AX, [BP+DI]

interacta en forma indirecta con los


datos en la memoria. El desplazamiento

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

19
se forma por medio de un registro base
(BX o BP) mas un registro ndice (SI o
DI).
Opera similar al direccionamiento base

Relativo

Base

ms

ndice

Mov AL, [BP+SI+125H]

ms

ndice,

donde

se

agrega

un

desplazamiento ms en forma de un dato


inmediato.
Empuja el contenido de la fuente a la pila

PUSH Fuente

(Guarda en memoria), en la direccin a la

De Pila (LIFO, ltimo en

que apunta SP.

entrar, primero en salir)

Recupera un dato de la pila y lo coloca en


POP Destino

el destino (extrae de memoria), de la


direccin a la que apunta SP.

1.3 Interrupciones
Una interrupcin es una operacin que suspende la ejecucin de un programa de
modo que el sistema pueda realizar una accin especial. La rutina de interrupcin
ejecuta y por lo regular regresa el control al procedimiento que fue interrumpido,
el cual entonces reasume su ejecucin.
Una interrupcin guarda en la pila el contenido del registro de banderas, el CS, y
el IP.
La direccin CS:IP entonces apunta al inicio de la rutina en el rea del BIOS, que
ahora se ejecuta. La interrupcin regresa va una instruccin IRET (regreso de
interrupcin), que saca de la pila el IP, CS y las banderas y regresa el control a la
instruccin que sigue al INT.
Las interrupciones se dividen en dos tipos las cuales son: Externas y Internas.
Una interrupcin externa es provocada por un dispositivo externo al procesador.
Una interrupcin interna ocurre como resultado de la ejecucin de una instruccin
INT o una operacin de divisin que cause desbordamiento, ejecucin en modo de

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

20

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

por

lo

comn

utilizan

interrupciones

internas,

que

no

son

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


El BIOS contiene un extenso conjunto de rutinas de entrada/salida y tablas que
indican el estado de los dispositivos del sistema. El dos y los programas usuarios
pueden solicitar rutinas del BIOS para la comunicacin con los dispositivos
conectados al sistema. El mtodo para realizar la interfaz con el BIOS es el de las
interrupciones de software.
A continuacin se listan algunas interrupciones del BIOS.
INT 00H: Divisin entre cero. Llamada por un intento de dividir entre cero.
Muestra un mensaje y por lo regular se cae el sistema.
INT 01H: Un solo paso. Usado por DEBUG y otros depuradores para permitir
avanzar por paso a travs de la ejecucin de un programa.
INT 02H: Interrupcin no enmascarare. Usada para condiciones graves de
hardware, tal como errores de paridad, que siempre estn habilitados. Por lo
tanto un programa que emite una instruccin CLI (limpiar interrupciones) no
afecta estas condiciones.
INT 03H: Punto de ruptura. Usado por depuracin de programas para detener la
ejecucin.
INT 04H: Desbordamiento. Puede ser causado por una operacin aritmtica,
aunque por lo regular no realiza accin alguna.
INT 05H: Imprime pantalla. Hace que el contenido de la pantalla se imprima.
Emita la INT 05H para activar la interrupcin internamente, y presione las teclas
Cltr + PrtSC para activarla externamente. La operacin permite interrupciones y
guarda la posicin del cursor.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

21

INT 08H: Sistema del cronometro. Una interrupcin de hardware que actualiza la
hora del sistema y (si es necesario) la fecha. Un chip temporizador programable
genera una interrupcin cada 54.9254 milisegundos, casi 18.2 veces por
segundo.
INT 09H: Interrupcin del teclado. Provocada por presionar o soltar una tecla en
el teclado.
INT OBH, INT OCH: Control de dispositivo serial. Controla los puertos COM1 y
COM2, respectivamente.
INT 0DH, INT OFH: Control de dispositivo paralelo. Controla los puertos LPT1 y
LPT2, respectivamente.
INT 0EH: Control de disco flexible. Seala actividad de disco flexible, como la
terminacin de una operacin de E/S.
INT 10H: Despliegue en vdeo. Acepta el numero de funciones en el AH para el
modo de pantalla, colocacin del cursor, recorrido y despliegue.
INT 11H: Determinacin del equipo. Determina los dispositivos opcionales en el
sistema y regresa el valor en la localidad 40:10H del BIOS al AX. (A la hora de
encender el equipo, el sistema ejecuta esta operacin y almacena el AX en la
localidad 40:10H).
INT 12H: Determinacin del tamao de la memoria. En el AX, regresa el tamao
de la memoria de la tarjeta del sistema, en trminos de kilobytes contiguos.
INT 13H: Entrada/salida de disco. Acepta varias funciones en el AH para el
estado del disco, sectores ledos, sectores escritos, verificacin, formato y
obtener diagnostico.
Los dos mdulos del DOS, IO.SYS y MSDOS.SYS, facilitan el uso del BIOS. Ya que
proporcionan muchas de las pruebas adicionales necesarias, las operaciones del

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

22

DOS por lo general son mas fciles de usar que sus contrapartes del BIOS y por
lo comn son independientes de la maquina.
Las interrupciones desde la 20H hasta la 3FH estn reservadas para operaciones
del DOS.
INT 20H: Termina programa. Finaliza la ejecucin de un programa .COM,
restaura las direcciones para Cltr + Break y errores crticos, limpia los bufer de
registros y regresa el control al DOS. Esta funcin por lo regular seria colocada en
el procedimiento principal y al salir de el, CS contendra la direccin del PSP. La
terminacin preferida es por medio de la funcin 4CH de la INT 21H.
INT 21H: Peticin de funcin al DOS. La principal operacin del DOS necesita
una funcin en el AH.
INT 22H: Direccin de terminacin. Copia la direccin de esta interrupcin en el
PSP del programa (en el desplazamiento 0AH) cuando el DOS carga un programa
para ejecucin. A la terminacin del programa, el DOS transfiere el control a la
direccin de la interrupcin. Sus programas no deben de emitir esta interrupcin.
INT 23H: Direccin de Cltr + Break. Diseada para transferir el control a una
rutina del DOS (por medio del PSP desplazamiento 0EH) cuando usted presiona
Ctlt + Break o Ctlr + c. La rutina finaliza la ejecucin de un programa o de un
archivo de procesamiento por lotes. Sus programas no deben de emitir esta
interrupcin.
INT 24H: Manejador de error critico. Usada por el dos para transferir el control
(por medio del PSP desplazamiento 12H) cuando reconoce un error critico (a
veces una operacin de disco o de la impresora).Sus programas no deben de
emitir esta interrupcin.
INT 25H: Lectura absoluta de disco. Lee el contenido de uno o mas sectores de
disco.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

23

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


uno o mas sectores de disco.
INT 27H: Termina pero permanece residente (reside en memoria). Hace que un
programa .COM al salir permanezca residente en memoria.
INT 2FH: Interrupcin de multiplexion. Implica la comunicacin entre programas,
como la comunicacin del estado de un spooler de la impresora, la presencia de
un controlador de dispositivo o un comando del DOS tal como ASSIGN o APPEND.
INT 33H: Manejador del ratn. Proporciona servicios para el manejo del ratn.

1.3.1 Hardware
Se les conoce con este nombre a las interrupciones causadas o generadas por
dispositivos de hardware, como dispositivos de Entrada, dispositivos de salida,
etc.
Se dividen en:
a) Interrupciones Internas de Hardware.
Las interrupciones internas son generadas por ciertos eventos que surgen
durante la ejecucin de un programa. Este tipo de interrupciones son manejadas
en su totalidad por el hardware y no es posible modificarlas. Un ejemplo claro de
este tipo de interrupciones es la que actualiza el contador del reloj interno de la
computadora, el hardware hace el llamado a esta interrupcin varias veces
durante un segundo para mantener la hora actualizada. Aunque no podemos
manejar directamente esta interrupcin (no podemos controlar por software las
actualizaciones del reloj), es posible utilizar sus efectos en la computadora para
nuestro

beneficio,

por

ejemplo

para

crear

un

"reloj

virtual"

actualizado

continuamente gracias al contador del reloj interno. nicamente debemos escribir

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

24

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


entendible para el usuario.
b) Interrupciones Externas de Hardware.
Las interrupciones externas las generan los dispositivos perifricos, como
pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. Tambin son
generadas por los coprocesadores. No es posible desactivar a las interrupciones
externas. Estas interrupciones no son enviadas directamente a la CPU, sino que
se mandan a un circuito integrado cuya funcin es exclusivamente manejar este
tipo de interrupciones.

1.3.2 Software
Se les conoce con este nombre a las interrupciones causadas o generadas por
software,

como

son

programas

en

ejecucin,

interrupciones

del

Bios,

interrupciones del Sistema Operativo, etc.


Las interrupciones de software pueden ser activadas directamente por el
ensamblador invocando al nmero de interrupcin deseada con la instruccin INT.
El uso de las interrupciones nos ayuda en la creacin de programas, utilizndolas
nuestros programas son ms cortos, es ms fcil entenderlos y usualmente
tienen un mejor desempeo debido en gran parte a su menor tamao. Este tipo
de interrupciones podemos separarlas en dos categoras: las interrupciones del
sistema operativo DOS y las interrupciones del BIOS. La diferencia entre ambas
es que las interrupciones del sistema operativo son ms fciles de usar pero
tambin son ms lentas ya que estas interrupciones hacen uso del BIOS para
lograr su cometido, en cambio las interrupciones del BIOS son mucho ms
rpidas pero tienen la desventaja que, como son parte del hardware son muy
especficas y pueden variar dependiendo incluso de la marca del fabricante del

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

25

circuito. La eleccin del tipo de interrupcin a utilizar depender nicamente de


las caractersticas que le quiera dar a su programa: velocidad (utilizando las del
BIOS) o portabilidad (utilizando las del DOS).

1.4 Estructura de un programa en ensamblador


Un programa en ensamblador contiene cuatro partes fundamentales llamados
segmentos:

Cada

Segmento de Memoria

Segmento de Datos

Segmento de Pila

Segmento de Cdigo

segmento

debe

estar

incluido

en

un

programa

de

ensamblador

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


inicializarse o configurarse.
Todos los programas debern tener mnimamente la siguiente estructura:
.Model SMALL
.STACK
.DATA
; Seccin para definir variables y constantes
.CODE
Inicio:
MOV AX,@DATA
MOV DS,AX

MOV AH, ACH


INT 21H
END Inicio

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

26

.MODEL modelo de memoria


El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT o LARGE. Los
requisitos para cada modelo son:

Puede utilizar cualquiera de estos modelos para un programa autnomo (esto es,
un programa que no este enlazado con algn otro). El modelo TINY esta
destinado para uso exclusivo de programas .COM, los cuales tienen sus datos,
cdigo y pila en un segmento. El modelo SMALL exige que el cdigo quepa en un
segmento de 64K y los datos en otro segmento de 64K.
Los formatos generales (incluyendo el punto inicial) para las directivas que define
los segmentos de la pila, de datos y de cdigo son:
.STACK [tamao]
.DATA
.CODE [nombre]

1.4.1 Data Segment


Este segmento es utilizado para los datos, aunque en ensamblador a
diferencia de un lenguaje de alto nivel, el uso de variables es transparente,
puesto que en Lenguaje Ensamblador el uso de la memoria es directo, por tanto,
los nombres de las variables solo corresponden al nombre asignado para un
espacio de memoria reservado de acuerdo a las especificaciones requeridas.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

27

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


la vez lo complica.
CONSTANTES
El valor de una constante se asigna en la parte correspondiente al segmento de
datos por medio de la directiva EQU. Sintaxis:
NOMBRE

EQU VALOR

Ejemplo:
Constante EQU 11001B
RESUL EQU 573H
VARIABLES
Como se mencion anteriormente, es el nombre simblico de una posicin de
memoria correspondiente a segmento de datos la cual es accesible por programa.
Para declarar variables se usa cualquiera de las siguientes directivas:
NOMBRE DIRECTIVA VALOR
DB

realiza el almacenamiento por bytes (1 localidad de memoria)

DW realiza el almacenamiento por palabras (2 localidades)


DD

realiza el almacenamiento por palabras dobles (4 localidades)

DQ

realiza el almacenamiento por palabras cudruples (8 localidades)

DT

realiza el almacenamiento por paquetes de diez bytes.

Las variables que son de tipo cadena deber colocarse su valor entre comillas y
terminar con el signo $.
El tipo de directiva es importante, por que de ella depender el manejo de la
variable creada.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

28

1.4.2 Stack Segment


Es el segmento que permite definir el tamao del Segmento de pila.
La pila, es un segmento de la memoria principal que se reserva para un uso
especfico.
La pila funciona LIFO (Last Input, First Output), y utiliza dos funciones:
PUSH
Esta funcin sirve para almacenar informacin o colocar valores dentro de la pila,
su sintaxis es:
Push valor

POP
Esta funcin sirve para sustraer informacin o sacar valores almacenados en la
pila, su sintaxis es:
Pop variable

1.4.3 Code Segment


Segmento en el que se colocan las instrucciones o cdigo del programa,
generalmente se inicia con las siguientes dos lneas de cdigo y una etiqueta para
indicar el programa principal.
Inicio:
MOV AX,@DATA
MOV DS,AX

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

29

Estas dos instrucciones permiten a ensamblador iniciar el segmento de


datos, es decir, tomar la memoria principal para iniciar la ejecucin de un
programa en ensamblador.

1.4.4 Instrucciones de un programa en ensamblador


Una herramienta que permite visualizar el funcionamiento de las instrucciones
utilizadas en lenguaje ensamblador es el DEBUG, debug se encuentra contenido
dentro del sistema operativo MS-DOS.

DEBUG
El programa debug proporciona las rdenes que permiten controlar y examinar
cada paso de un programa en lenguaje ensamblador, debug se suele usar cuando
se

est

desarrollando

un

nuevo

programa

se

desea

comprobar

su

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


C:\> DEBUG
El programa responde con el smbolo - , que es el indicador del depurador. A
partir de ese momento estamos en posibilidad de invocar cualquiera de las
siguientes instrucciones:

COMANDO
R

Register,
Registro

DESCRIPCIN

FORMATO

Permite desplegar y modificar el contenido de

-R

todos

- R AX

los

registros

internos

del

microprocesador
Despliega el contenido de un bloque de

:
- D [Rango]

memoria correspondiente al segmento de

Dump, Vaciar

datos. Muestra el contenido de cada localidad


en sistema hexadecimal e indicando a la vez
su correspondiente carcter ASCII. Solo sirve

-D 0100 0108

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

30
-D 0105 L12

para el segmento de datos.


Donde el rango se especifica como una
direccin inicial hasta una direccin final, o
bien

como

una

direccin

inicial

hasta

direcciones consecutivas. Si no se especifica


un rango, se despliega el contenido de las
128

localidades

siguientes

la

ltima

en

forma

localidad mostrada.
Nos

permite

introducir

cdigo

-A [Direccin]

nemotcnica.
En

Assemble,
Ensamblar

donde

direccin

es

el

valor

del

desplazamiento en el segmento de cdigo a

-A 0100

partir de donde ser almacenado el cdigo

1591:0100 MOV AX, [BX]

introducido.

1591:0102 MOV AL, [BP+DI]

Si

este

parmetro

no

es

especificado, el cdigo se guardar a partir de


la localidad siguiente donde fue almacenada
la ltima instruccin.
Muestra

el

contenido

de

un

bloque

de

1591:0104
-

-U [rango]

memoria correspondiente al segmento de


cdigo.

Unassemble,
Desensamblar

El

visualiza

contenido

en

forma

de
de

la

memoria

instrucciones

lo
del

-U 0100 0105

ensamblador, tanto en forma desensamblada


como ensamblada.
Donde rango se define de manea similar al
comando vaciar (D)
Nos

Trace, Trazo

permite

ejecutar

una

instruccin

de

-T

programa, visualizando los resultados por


medio de una salida semejante a la del
comando R
Nos permite ejecutar un fragmento de un

-G [direccion_final]

programa.

Go, Ejecutar

Donde

direccin_final

memoria

hasta

donde

es

la

ser

direccin

de

ejecutado

el

-G 0109

programa
Suma y resta dos cantidades hexadecimales

Aritmtica
hexadecimal

-H op1 op2

visualizando ambos resultados.


Donde

op1

op2

son

los

datos

en

hexadecimal. En el clculo de la diferencia

-H 0105 0100

op1 es el minuendo y op2 es el sustraendo.


Se utiliza para dar nombre a un programa.

Name, Nombre

-N nombre

Donde el parmetro nombre indica un nombre


de programa con extensin .COM .EXE

Quit, Salir

Write, Grabar

Termina la ejecucin de debug y regresa el

-Q

control a la lnea de rdenes del DOS.


Se utiliza ara grabar programas en forma
permanente. Para hacerlo debemos:

-W

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

31
1.

Definir la longitud del programa en


bytes.

-N ejemplo.com

2.

Crear un nombre para el programa.

3.

Colocar la longitud del programa en

4.
5.

-R CX

el registro CX.

CX 0000

Colocar o apuntar el registro IP al

:5

inicio del programa.

-R IP

Dar la orden de escritura.

IP 0100
:
-W

Nos permite cargar un programa al entorno

-L [direccion]

de debed.
Donde direccin es la posicin de memoria en
el segmento de cdigo a partir de la cual ser

Load, Cargar

cargado el programa. Para ello se debe tomar

-N ejemplo.COM

en cuenta:

-L 0100

1.

Proporcionar

el

nombre

del

programa que va a ser cargado.


2.

Cargar.

3.

Desensamblar

para

verificar

-U 0100 L5

si

realmente fue cargado el archivo.


Permite modificar el contenido de la memoria

Enter, Introducir

-E direccin [dato]

en el segmento de datos.
Donde direccin es la localidad de memoria a
partir de la cual se van a guardar datos.

-E 0200

1.5 Procedimiento de ensamble, enlace y ejecucin.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

Los archivos fuente de cdigo ensamblador

32
deben estar en formato ASCII standard. Para esto

puede usarse cualquier editor que permita crear archivos sin formato y guardarlos con extensin
.asm.
Los comentarios se declaran con ; y terminan al final de la lnea.
El ensamblado se lleva a cabo invocando al MASM. Este puede ser invocado, usando una lnea de
comando, de la siguiente manera:
MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]
Donde:
archivo.- Corresponde al programa fuente. Por defecto se toma la extensin .ASM.
objeto.- Es el nombre para el archivo objeto.
listado.- Nombre del archivo de listado de ensamblado.
cross.- Es un archivo de referencias cruzadas.
opciones.- Pueden ser:
/A

escribe los segmentos en orden alfabtico

/S

escribe los segmentos en orden del fuente

/Bnum fija buffer de tamao num


/C

especifica un archivo de referencias cruzadas

/L

especifica un listado de ensamble

/D

crea listado del paso 1

/Dsym define un smbolo que puede usarse en el ensamble


/Ipath

fija path para buscar archivos a incluir

/ML

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

/MX

mantiene sensitividad en nombre pblicos y externos

/MU

convierte nombres a maysculas

/N

suprime tablas en listados

/P

checa por cdigo impuro

/R

crea cdigo para instrucciones de punto flotante

/E

crea cdigo para emular instrucciones de punto flotante

/T

suprime mensajes de ensamble exitoso

/V

despliega estadsticas adicionales en pantalla

/X

incluir condicionales falsos en pantalla

/Z

despliega lneas de error en pantalla

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

33

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


informacin que se solicita. Para omitir algn valor slo basta teclear ENTER si dar ningn valor.
De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser
invocado de la misma forma que el MASM. Los parmetros que este requiere son:
LINK objeto [,[ejecutable][,[mapa][,[librera]]]]][opciones][;]
Donde:
objeto.- Es el nombre para el archivo .OBJ
ejecutable.- Nombre del archivo .EXE
mapa.- Nombre del archivo mapa
librera.- Nombre del archivo biblioteca de rutinas
opciones.- Pueden ser:
/HELP

muestra lista de opciones

/PAUSE

pausa en el proceso

/EXEPACK

empaca archivo ejecutable

/MAP

crea mapa se smbolos pblicos

/LINENUMBERS

copia nmero de lneas al mapa

/NOIGNORECASE

mantiene sensitividad en nombres

/NODEFAULTLIBRARYSEARCH
/STACK:size

fija el tamao del stack a usar

/CPARMAXALLOC:nmero
/HIGH

fija alojacin mxima de espacio


fija la direccin de carga ms alta

/DSALLOCATE

aloja grupo de datos

/NOGROUPASSOCIATION

ignora asociaciones para direcciones

/OVERLAYINTERRUPT:nmero
/SEGMENTS:nmero
/DOSSEG

no usa bibliotecas por defecto

asigna nuevo nmero a la INT 03Fh

procesa un nmero de segmentos


sigue la convencin de orden de DOS

Para la ejecucin del programa simplemente basta teclear su nombre en el prompt de MS-DOS y
teclear ENTER. Con esto el programa ser cargado en memoria y el
ejecutarlo.

sistema proceder a

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

34

1.6 Entorno de programacin


El entorno de programacin del Lenguaje Ensamblador, es el entorno de
consola, por tanto, antes de programar en ensamblador se necesita aprender los
comandos bsicos del DOS.

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


mediante un editor de texto (Ejemplo el bloc de notas) y tiene que almacenarse
con extensin .asm y despus salir al smbolo del sistema (en el caso de
Windows) y ah ensamblar, enlazar y ejecutar el programa construido.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

35

UNIDAD II
ELEMENTOS DEL LENGUAJE
2.1 Instrucciones Lineales
Las instrucciones bsicas en Lenguaje ensamblador son las siguientes:

2.1.1 Movimiento
La instruccin para mover informacin de un lugar a otro es la instrucci{on
MOV, que funciona como si fuera el operador =
Instruccin Mov, almacena el contenido de la fuente en el destino.
Formato:

MOV Destino, Fuente

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

2.1.2 Pila
Las instrucciones para la manipulacin de la Pila son Push y Pop.
PUSH
Esta funcin sirve para almacenar informacin o colocar valores dentro de la pila,
su sintaxis es:
Push valor
Donde valor puede ser una constante o una variable

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

36

POP
Esta funcin sirve para sustraer informacin o sacar valores almacenados en la
pila, su sintaxis es:
Pop variable
Recordando siempre que la pila funciona LIFO.

2.1.3 Matemticos
Instruccin
ADD

Suma sin
acarreo

ADC

Suma con
acarreo

SUB

Resta

SBB

Resta con
prstamo

MUL

Multiplicaci
n

IMUL

Multiplicaci
n con signo

DIV

Divisin

IDIV

Divisin con
signo

INC
DEC

Incrementar
Decrementar

Descripcin

Formato

Suma la fuente al destino y guarda el resultado


en el desino

ADD destino, fuente

Suma la fuente con el destino, guardando el


resultado en el destino e incrementndolo en 1 si
la bandera de acarreo (CF) est activada.
Se utiliza para sumar datos de 32 bits, donde el
resultado se guarda en el registro par DX:AX
Resta la fuente del destino almacenando el
resultado en el destino.
Resta la fuente del destino, almacenando el
resultado en el destino y decrementndolo en 1,
si la bandera CF se encuentra activada.
Realiza la multiplicacin de dos datos sin signo.
Dependiendo de la longitud de los operandos se
puede se puede tener:
Fuente * AL = AX
Fuente * AX = DX:AX
Es similar a la instruccin MUL, con la nica
diferencia de que opera con datos representados
en notacin de complemento a 2 con signo.
Realiza una divisin sin signo. Existen dos casos:
AL
AX
Fuente AX
Fuente DX:AX
AH
DX

ADC destino, fuente

Opera de manera similar que DIV a excepcin de


que los nmeros son representados en notacin
de complemento a 2 con signo.
Incrementa en 1 al destino

IDIV fuente

Decrementa en 1 al destino

DEC destino

SUB destino, fuente


SBB destino, fuente
MUL fuente

IMUL fuente
DIV fuente

INC destino

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

37

2.1.4 Ajustes
Instruccin

Descripcin

Negacin bit a
bit
Negativo

NOT
NEG

Formato

Realiza la negacin bit a bit del operando destino

NOT Destino

Genera el complemento a 2 del operando destino

NEG Destino

2.1.5 Comparacin
Instruccin

Descripcin

CMP

Comparar

TEST

Probar

Formato

Resta operando fuente del destino sin guardar el


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

CMP Destino, Fuente

TEST Destino, Fuente

2.2 Saltos
Al

ser

el

lenguaje

ensamblador

un

lenguaje

estructurado,

existen

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


el flujo de la ejecucin a otro lado del programa, estos saltos pueden ser
condicionales o incondicionales.

2.2.1 Incondicional
Un salto incondicional, como su nombre lo dice, no necesita condiciones
para saltar, es decir, simplemente se coloca la funcin y el salto se realiza sean
cual sean las condiciones del programa.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

38

El salto incondicional puede realizarse mediante la funcin:


Instruccin
JMP

Salto incondicional

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

Formato
JMP etiqueta

2.2.2 Condicional
Los saltos condicionales, solo envan el flujo del control del programa si la
condicin que especifican se ha cumplido.
Los saltos condicionales son:
SALTO AL COMPARAR NMEROS SIN SIGNO

Instruccin
JA
JNBE
JAE
JNB
JB
JNAE
JBE
JNA

Salta si est por encima


Salta si no est por debajo
o igual
Salta si est por encima o
igual
Salta si no est por por
debajo
Salta si est por debajo
Salta si no esta por encima
o igual
Salta si est por debajo o
igual
Salta si no est por encima

Descripcin

Formato
CF = 0
CF = 0

ZF = 0
ZF = 0

CF = 0
Enva el flujo de control del programa
a la direccin de memoria situada en
el segmento

CF = 0
CF = 1
CF = 1
CF = 1
CF = 1

ZF = 1
ZF = 1

SALTO AL COMPARAR NMEROS CON SIGNO

Instruccin
JG
JNLE
JGE
JNL
JL
JNGE
JLE
JNG
JE
JNE

Salta si es mayor que


Salta si no es menor o
igual que
Salta si es mayor o igual
Salta si no es menor
Salta si es menor
Salta si no es mayor o
igual
Salta si es igual o menor
Salta si no es mayor
Salta si es igual
Salta si no es igual

Descripcin

Formato
ZF = 0 Y SF = OF
ZF = 0 Y SF = OF
SF = OF
SF = OF

Enva el flujo de control del programa


a la direccin de memoria situada en
el segmento

SF = OF
SF = OF
ZF = 1 O SF = OF
ZF = 1 O SF = OF
ZF = 1
ZF = 0

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

39

2.3 Tipos de Ciclos


Instruccin
LOOP

Ciclo

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

Formato
LOOP etiqueta

2.4 Operadores Lgicos


Instruccin
Conjuncin
AND
Disyuncin
OR
XOR

Disyuncin
exclusiva

Descripcin
Realiza la operacin lgica Y

Formato
AND Destino, Fuente

Realiza la operacin lgica O

OR Destino, Fuente

Realiza las operaciones lgicas correspondientes

XOR Destino, Fuente

2.5 Desplazamiento
Los desplazamientos dentro del Lenguaje Ensamblador, se trabajan a nivel de bits
de los valores de las variables (como todas las operaciones en ensamblador),
para entender los desplazamientos, se necesita tener el valor de una variable en
su equivalente binario y los desplazamientos o corrimientos se realizan de
acuerdo a la instruccin indicada, y pueden ser lineales o circulares.

2.5.1 Lineal
Los desplazamientos o corrimientos lineales, mueven los bits hacia la
derecha o izquierda segn sea el caso, y pierden bits del lado del corrimiento.
El nmero de bits que se pierde en este tipo de corrimientos depende del conteo
especificado, los bits perdidos son sustituidos por ceros.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

Instruccin
SHL

Corrimiento a
la izquierda

SHR

Corrimiento a
la derecha

40
Descripcin

SHL

Destino

Formato

Realiza corrimientos de bits a la izquierda en


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

el
el

SHL Destino, Conteo

el
el

SHR Destino, Conteo

SHR

Destino

2.5.2 Circular
Los desplazamientos o corrimientos circulares, mueven los bits hacia la
derecha o izquierda segn sea el caso de forma circular, es decir, no se pierde
ningn bit por que estos dan vuelta en circulo.

Instruccin
ROL
ROR
RCL
RCR

Rotacin a la
izquierda
Rotacin a la
derecha
Rotacin a la
izquierda con
acarreo
Rotacin a la
derecha con
acarreo

ROL

Descripcin

ROR Destino, Conteo


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

ROR
Destino

RCL
Destino

RCL Destino, Conteo

RCR Destino, Conteo

Destino

CF

Formato
ROL Destino, Conteo

RCR
Destino

CF

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

41

2.6 Procesos de Control


Los procesos de control se refiere a instrucciones para el control de algunas
caractersticas especiales, entre ellas:

2.6.1 Banderas
Banderas
Desactivadas:
XF = 0
Activadas
XF = 1

OF

DF

IF

SF

ZF

AF

PF

CF

NV

UP

DI

PL

NZ

NA

PO

NC

OV

DN

EI

NG

ZR

AC

PE

CY

SALTO SEGN EL ESTADO DEL REGISTRO DE BANDERAS

Instruccin
Acarreo
Cero
Sobreflujo
Signo
Paridad

Descripcin
JC
JNC
JZ
JNZ
JO
JNO
JS
JNS
JP
JNP

Salta
Salta
Salta
Salta
Salta
Salta
Salta
Salta
Salta
Salta

si
si
si
si
si
si
si
si
si
si

Formato

existe acarreo
no existe acarreo
es cero
no es cero
hay sobreflujo
no hay sobreflujo
es negadito
no es negativo o es positivo
el nmero de 1 es par
el nmero de 1 es impar o no es par

CF = 1
CF = 0
ZF = 1
ZF = 0
OF = 1
OF = 0
SF = 1
SF = 0
PF = 1
PF = 0

2.6.2 Cadenas
Instruccin
CMPS

Descripcin

Formato

Compara cadenas, es decir, compara


dos secciones de datos de memoria
de bytes, palabras o palabras dobles.
Utiliza

para

la

comparacin

los

registros DS y SI como apuntadores


para las cadenas a comparar.

CMPS

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

42

2.6.3 Carga
Instruccin
LEA

Descripcin

Formato

Carga la direccin efectiva de Fuente


en Destino,

es decir,

Destino

convierte en un puntero a Fuente

se

Lea Destino, Fuente

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

43

UNIDAD III
MODULARIZACIN
3.1 Macros
Una macro es un grupo de instrucciones que efectua una tarea con un
formato muy parecido al de un procedimiento. La diferencia que existe con
respecto a una rutina es que el MACRO se inserta o expande en el programa
principal como nuevo cdigo que contiene una secuencia de instrucciones. Las
macros se asemejan a las funciones en los lenguajes de alto nivel.
Las macrosecuencias se ejecutan con mayor rapidez que los procedimientos
por que no hay que ejecutar instrucciones de llamado ni retorno. En este caso las
instrucciones de macro se colocan en el programa en el punto donde se les
invoca.
Para delinear una macrosecuencia se hace uso de las directivas:
MACRO y ENDM
NOMBRE MARCO PARAM1, PARAM2, , PARAMN

ENDM
El primer enunciado de un macro contiene su nombre y una lista de
parmetros relacionados con el mismo. El siguiente ejemplo define a la macro
MOVER donde se manejan 2 parmetros.
MOVER MACRO A,B
PUSH AX
MOV AX,B
MOV B,AX

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

44

POP AX
ENDM

3.1.1 Internas
Una Macro interna, como su nombre lo dice se encuentra dentro del programa
principal.
Ejemplo:
;PROGRAMA QUE ACEPTA DOS DATOS DESDE TECLADO, LOS SUMA Y DESPLIEGA EL RESULTADO
.MODEL SMALL
SUMA MACRO R,S1,S2
PUSH AX
MOV AX,S1
ADD AX,S2
MOV R,AX
POP AX
ENDM
.STACK
.DATA
VAR1 DW ?
VAR2 DW ?
RESUL DW ?
M1 DB "INTRODUCE EL PRIMER VALOR:$"
M2 DB 10,13,"INTRODUCE EL SEGUNDO NMERO:$"
M3 DB 10,13,"SUMA:$"
.CODE
EXTRN RECIBE_DATO:FAR
EXTRN IMP_CADENA:FAR
EXTRN IMP_AX:FAR
INICIO:
MOV AX,@DATA
MOV DS,AX
LEA DX,M1
CALL IMP_CADENA
CALL RECIBE_DATO

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

45

MOV VAR1,SI
LEA DX,M2
CALL IMP_CADENA
CALL RECIBE_DATO
MOV VAR2,SI
LEA DX,M3
CALL IMP_CADENA
SUMA RESUL,VAR1,VAR2
MOV AX,RESUL
CALL IMP_AX
MOV AH,4CH
INT 21H
END INICIO

3.2 Procedimientos
Los procedimientos son subprogramas que se encuentran dentro o fuera del
programa principal. Estos pueden ser:
1. Internos
2. Externos

3.2.1 Internos

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


programa principal. En programa pueden incluirse cuantos procedimientos sean
necesarios.
.MODEL SMALL
.STACK
.DATA

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

46

Se usa la palabra
Call para llamar o
usar el
procedimiento

.CODE
INICIO:

CALL NOMBRE_PROCEDIMIENTO

MOV AH,4CH
INT 21H

Para
procedimientos
Internos

NOMBRE_PROCEDIMIENTO PROC NEAR


PUSH REGISTROS
Regresa el
control al
programa
principal

CODIGO DEL PROCEDIMIENTO

Deben guardarse los


valores de todos los
registros para que no se
pierdan

POP REGISTROS
RET
NOMBRE_PROCEDIMIENTO ENDP

Se regresan los
valores a los
registros

END INICIO

Ejemplo:

Programa que incluye un procedimiento interno que imprime una cadena

.MODEL SMALL
.STACK
.DATA
CADENA DB Procedimientos..$
.CODE
INICIO:
MOV AX,@DATA

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

47

MOV DS,AX
LEA DX, CADENA
CALL IMPCADENA
MOV AH,4CH
INT 21H
IMPCADENA PROC NEAR
PUSH AX
MOV AH,9
INT 21H
POP AX
RET
IMPCADENA ENDP
END INICIO

3.2.2 Externos
Es aquella que se encuentra en un segmento de cdigo diferente al que
almacena el programa principal, es decir, se encuentra en un archivo diferente.
Su formato es semejante al de un procedimiento interno donde la nica diferencia
estriba en que ser de tipo lejano (FAR) en lugar de cercano (NEAR).
Para incluir una rutina externa dentro de un programa usar:
Extrn Nombre_Procedimiento:far

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


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

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

48

Ejemplo:

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


.MODEL SMALL
.STACK
.DATA
CADENA DB Procedimientos..$
.CODE

Incluye el
procedimiento
externo

EXTRN IMPCADENA:FAR
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
INICIO:
IMPCADENA PROC FAR
PUSH AX
MOV AH,9
INT 21H
POP AX
RET
IMPCADENA ENDP
END INICIO

Alcance del
procedimiento

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

49

Para crear el archivo ejecutable:


1. Compilar por separado cada archivo fuente
MASM PRINCIPAL;
MASM IMPCAD;
se obtendr:
Principal.obj
Impcad.obj

2. Enlazar de la siguiente manera:


LINK PRINCIPAL + IMPCAD;
Al final se genera el ejecutable PRINCIPAL.EXE y es el que se ejecuta.
La ventaja principal de las rutinas externas, es que puede generarse un archivo
que contenga a todas ellas, y usarlas para cualquier archivo, puede generarse
una rutina para:
-

Aceptar a AX desde teclado

Imprimir el valor de AX

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


principales rutinas.
.MODEL SMALL
.DATA
NUM DB 5 DUP (?)
E DB "

$"

.CODE
PUBLIC IMP_CADENA
PUBLIC RECIBE_DATO
PUBLIC IMP_AX
INICIO:

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

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

50

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

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

51

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

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

52

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

53

UNIDAD IV
PROGRAMACIN HBRIDA
Interrupciones
INTERRUPCIONES DEL DOS
Realiza
Llamada

FIJAR POSICIN DEL CURSOR


AH

02H

BH Nmero de pgina (0 para modos grficos)


DH Rengln

Int 10/02

DL Columna

Devuelve
Descripcin

Nada
Se usa para colocar el cursor en una posicin especfica. Las
posiciones se definen en relacin con la esquina superior izquierda
(0,0) cuando la pantalla est en modo de texto. La esquina inferior
izquierda es (79,24) en el modo de texto 80x25 y (39,24) en el
modo 40x25.

Realiza
Llamada

ESCRIBIR CARCTER Y ATRIBUTO


AH 90H
AL Carcter ASCII
BH Pgina de presentacin visual
BL Byte de atributo del carcter en AL
CX Nmero de caracteres por escribir

Int 10/09

Devuelve
Descripcin

Nada
Escribe los bytes del carcter ASCII y atributo en la posicin
del cursor en una pgina especfica de presentacin. Esta
funcin no cambia la posicin del cursor. Escribe hasta
65536 caracteres en modo de texto.
Conforme la funcin escribe caracteres, cambia de rengln
al terminar cada uno.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

54
En el modo de graficacin, la funcin solo va al final del
rengln en curso y el byte de atributo de video asignado a
BL determina el color del carcter escrito. Si el bit 7 vale 1,
se le aplica XOR al valor en BL, con el color del fondo
cuando se muestra el carcter.

Realiza
Llamada

FIJAR PALETA DE COLOR


AH 0BH
BH Identificacin de la paleta de color que se est fijando
0, BL tienen el color de fondo y borde
1, BL tiene color de paleta
BL Valor del color que se usar

Devuelve
Descripcin

Nada
Esta funcin selecciona o fija el contenido de la paleta de
color y solo trabaja en pantallas de grficos de definicin
media. La funcin no tiene efecto directo sobre la memoria;

Int 10/0B

afecta la forma en que el controlador de TRC 6845


interpreta la memoria de video. En modo de texto, esta
funcin establece el color del borde. Las paletas de color
vlidas para esta funcin son:
Paleta
0

Pxel

Color

Igual que el fondo

Verde

Rojo

Caf

Igual que el fondo

Cianato

Magenta

Blanco

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

55
Realiza

ESCRIBE UN SOLO PXEL EN LA PANTALLA EN UNA


COORDENADA ESPECIFICADA

Llamada

AH 0CH
AL Valor del color
BH Nmero de pgina

Int 10/0C

CX Nmero de columna del pxel


DX Nmero de rengln del pxel
Devuelve
Descripcin

Nada
En modos de definicin media, el efecto de esta funcin
depende de la paleta en uso. Si el bit de Al es 1, al nuevo
color se le aplica XOR con el pxel actual.

Realiza

ESCRIBIR CADENA

Llamada

AH 13H
AL Modo de escritura
BH Pgina de video
BL Atributo (modos de escritura 0 y 1)
CX Longitud de la cadena
DH Rengln en el cual se escribir la cadena
DL Columna en la cual se escribir la cadena

Int 10/13

ES:BP Apuntador a cadena


Devuelve
Descripcin

Nada
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
0

COMENTARIOS
Atributo en BL. La cadena es solo de caracteres. No
se actualiza el cursor.

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

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

56
actualiza el cursor.
2

La cadena alterna caracteres y atributos. No se


actualiza el cursos.

La cadena alterna caracteres y atributos. Se actualiza


el cursor.

Realiza
Llamada

LEER DISQUETE
AH 02H
AL Nmero de sectores por transferir (1 a 9)
ES:BX Apuntador al buffer de disco del usuario
CH Nmero de pista (0 a 39)
CL Nmero de sector(1 a 39)
DH Nmero de cabeza (0 o 1)
DL Nmero de unidad (0 a 3)

Int 13/02

Devuelve

Bandera de acarreo en cero si hubo xito


AL nmero de sectorses transferidos
Bandera de acarreo en uno si hubo error
AH byte de estado

Descripcin

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


Todos

los

parmetros

cuidadosamente

antes

de
de

entrada
expedir

deben
una

verificarse

llamada

para

servicio; pasar un valor invlido puede producir resultados


impredecibles.

Int 13/03

Realiza
Llamada

ESCRIBE SECTORES DE DISCO


AH 03H
AL Nmero de sectores por transferir(1 9)
ES:BX Apuntador al buffer de disco del usuario
CH Nmero de pista (0 a 39)
CL Nmero de pista(0 a 39)

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

57
CL Nmero de sector(1 a 9)
DH Nmero de cabeza(0 o 1)
DL Nmero de unidad(0 a 3)
Devuelve

Bandera de acarreo en cero si hubo xito


AH 0
AL Nmero de sectores transferidos
Bandera de acarreo en uno si hubo error
AH Byte de estado

Descripcin

Escribe uno o mas sectores de la memoria al disquete.


Excepto por el nmero de unidad de disco, no se verifica la
validez de los valores. Pasar un valor invalido puede
producir resultados impredecibles.

Realiza
Llamada

DAR FORMATO A PISTA DEL DISCO


AH 05H
ES:BX Apuntador a lista de campos de direcciones de pistas
CH Nmero de pista
DH Nmero de cabeza
DL Nmero de unidad

Devuelve

Int 13/05

Descripcin

AH Cdigo de retorno
Da formato a una pista de disco iniciando los campos de
direccin de disco y los sectores de dastos. La operacin de
dar formato a disco es controlada por la lista de campos de
direcciones de pistas (ES:BX).l atabla est dispuesta como
una serie de entradas de 4 bytes (una para cada sector de la
pista), con cada entrada de la manera siguiente:
DESPLAZAMIENTO SIGNIFICADO
00H

Nmero de pista

01H

Nmero de cabeza

02H

Nmero de sector

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

58
03H

Cdigo de tamao

Realiza

PREPARA PUERTO DE COMUNICACIONES

Llamada

AH 00H
AL Parmetro de iniciacin
DX

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

3=COM4)
Devuelve

AH Estado de puerto
AL Estado de MODEM

Descripcin

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


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

Int 14/00

Bits 7,6,5

Bits 4,3

Velocidad

de paridad

Bits 1,0

Bits de Longitud
alto

bauds

de
palabra

000=110

00=ninguna 0=1

10=7 bits

001=150

01= impar

11=8 bits

010=300

10=ninguna

011=600

11=par

1=2

100=1200
101=2400
110=4800
111=9600

Int 14/01

Realiza
Llamada

ESCRIBE UN CARCTER EN PUERTO DE COMUNICACIONES


AH 01H
AL Carcter por escribir
DX

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

3=COM4)
Devuelve

AH bit 7=0 no hubo error

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

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

Escribe un carcter en el puerto serial especificado y


devuelve el estado de este. Antes de llamar a esta funcin,
asegrese de usar Int 14/00 para preparar el puerto.

Realiza

LEE CARCTER DEL PUERTO DE COMUNICACIONES

Llamada

AH 02H
DX

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

3=COM4)

Int 14/02

Devuelve

AH bit 7=0 no hubo error


AL Carcter
AH bit 7 = 1 error

Descripcin

Lee un carcter del puerto serial especificado y devuelve el


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

Realiza
Llamada

SOLICITAR EL ESTADO DEL PUERTO DE COMUNICACIONES


AH 03H
DX

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

3=COM4)

Int 14/03

Devuelve

AH Estado del puerto


AL Estado del modem

Descripcin

Esta funcin, que devuelve el estado del puerto de


comunicaciones especificado, solicita el estado sin hacer
E/S adicionales ni afectar el puerto de alguna otra manera.

Int 15/4F

Realiza
Llamada

INTERCEPCIN DEL TECLADO


AH 4FH

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

60
Bandera de acarreo en 1
AL Cdigo de examinacin del teclado
Devuelve

Bandera de acarreo en uno


AL Nuevo cdigo de examinacin
Bandera de acarreo en cero
AL Cdigo de examinacin original

Descripcin

Devuelve el cdigo de examinacin en el registro AL con la


bandera de acarreo en uno.

Realiza
Llamada

ABRIR DISPOSITIVO
AH 80H
BX Identificacin del dispositivo

Int 15/80

CX Identificacin del proceso


Devuelve

Bandera de acarreo en uno si hubo error


AH 86H

Descripcin

Fue diseada para usarse en operaciones rudimentarias de


mltiples tareas.

Realiza

Int 15/85

TECLA DE SOLICITUD DE SISTEMA PRESIONADA

Llamada

AH 85H

Devuelve

AL 00H tecla presionada


01H yecla liberada

Descripcin

BIOS llama a esta funcin siempre que la tecla de solicitud


del sistema se presionada o liberada.

Int 15/86

Realiza

ESPERA

Llamada

AH 86H
CX,DX Tiempo antes del regreso en microsegundos (exacto

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

61
hasta en 976 microsegundos)
Devuelve

Bandera de acarreo en uno (espera en progreso)


Bandera de acarreo en cero (espera exitosa)

Descripcin

Fue diseada para usarse dentro del software de sistema


operativo para establecer esperas del sistema.

Realiza

Int 16/00

LEER CARCTER DE TECLADO

Llamada

AH 00H

Devuelve

AH Cdigo de examinacin de teclado


AL Cdigo de carcter ASCII

Descripcin

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


devuelve junto con su cdigo de examinacin. El buffer del
teclado por lo general se localiza en 0040;001

Realiza

LEER ESTADO DEL TECLADO

Llamada

AH 01H

Devuelve

Bandera de cero en cero si se oprimi un atecla


AH Cdigo de examinacin
AL carcter ASCII

Int 16/01

Bandera de cero en uno si no se oprimi tecla alguna


Descripcin

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


bandera de cero y devuelve el cdigo ASCII de la digitacin
y el cdigo de examinacin del teclado. Si no hay
digitaciones por procesar, la funcin pone 1 en la bandera
de cero y regresa.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

62
Realiza

DEVOLVER BANDERAS DE TECLADO

Llamada

AH 02H

Devuelve

AL Byte de banderas de teclado de BIOS ROM

Descripcin

Devuelve el esdtaso de los conmutaciones biestables y las


teclas shift del registro de estado de BIOS mantenido en la
localidad de memoria 0000:0417H. la siguiente tabla
muestra el significado de los bits del registro AL al volver
de la funcin.

Int 16/02

Realiza

Int 16/10

Significado

Tecla shift derecha oprimida

Tecla shift izquierda oprimida

Tecla ctrl. oprimida

Tecla Alt oprimida

Scroll Lock habilitado

Num Lock habilitado

Caps Lock habilitado

Tecla Insert activada

OBTENER DIGITACIN

Llamada

AH 10H

Devuelve

AH Cdigo de examinacin
AL caracter

Descripcin

Int 17/00

Realiza
Llamada

Permite el reconocimiento de teclas similares

ESCRIBIR CARCTER EN IMPRESORA


AH 00H
AL Carcter
DX Nmero de impresora (0 a 2)

Devuelve

AH Estado de impresora

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

63
Descripcin

Escribe el carcter especificado en el puerto de impresora y


devuelve el estado actual de la impresora.

Realiza
Llamada

Int 17/01

PREPARAR PUERTO DE IMPRESIN


AH 001H
DX Nmero de impresora (0 a 2)

Devuelve
Descripcin

AH Estado de la impresora
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)

Int 1A/02

DH Segundos (BCD)
DL Bandera de tiempo de aprovechamiento de la luz de da
Bandera de acarreo en uno si hubo error
Descripcin

Devuelve los valores del reloj en BCD (decimal codificado en


binario)

Int 1A/03

Realiza
Llamada

FIJAR RELOJ DE TIEMPO REAL


AH 03H
CH Horas (BCD)
CL Minutos (BCD)
DH segundos (BCD)
DL Tiempo de ahorrro de luz de da

Devuelve

Nada

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

64
Descripcin

Los valores deben establecerse en BCD. DL se codifica para


indicar si el reloj mantiene un tiempo estndar (DL=0) o
tiempo de aprovechamiento de la luz del da(DL=1)

Realiza

LEER FECHA DEL RELOJ DE TIEMPO REAL

Llamada

AH 04H

Devuelve

Bandera de acarreo en cero si hubo xito


CH Siglo (BCD)

Int 1A/04

CL Ao
DH Mes
DL Da
Bandera de acarreo en uno si hubo error
Descripcin

Realiza
Llamada

Devuelve los valores de reloj en BCD.

FIJAR FECHA DEL RELOJ DE TIEMPO REAL


AH 5H
CH Siglo
CL Ao

Int 1A/05

DH Mes
DL Da
Devuelve
Descripcin

Int 1A/06

Realiza

Nada
Los valores del reloj deben establecerse en BCD

FIJAR ALARMA DEL SISTEMA, FIJA EL CRONMETRO DE


ALARMA DEL SISTEMA PARA GENERAR UNA INTERRUPCIN
EN UN MOMENTO FUTURO

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

65
Llamada

AH 06H
CH Horas
CL Minutos
DH Segundos

Devuelve

Bandera de acarreo en cero si hubo xito


Bandera de acarreo en uno si hubo error

Descripcin

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


alarma representa un desplazamiento del tiempo presente.
Cuando el tiempo se acaba, el sistema emitir una Int 04
(desborde aritmtico) . antes de reestablecer la alarma,
debe inhabilitarla con un Int 1A/07 y definir un manejador
de interrupcin para manejarla.

Realiza

Int 1A/07

INHABILITA ALARMA DEL RELOJ DE TIEMPO REAL

Llamada

AH 07H

Devuelve

Nada

Descripcin

Esta funcin inhabilita la alarma del reloj de tiempo real. Si


ya se fij la alarma, se debe usar esta funcin para poder
fijarla de nuevo.

Realiza
Llamada

MOSTRAR SALIDA
AH 02H
DL Datos con caracteres de 8 bits

Int 21/01

Devuelve
Descripcin

Nada
Dirige la salida a la pantalla de video (STDOUT). La funcin
manejar

el

carcter

de

retroceso

(backspace)

adecuadamente como un retroceso no destructivo en


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

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

66
Realiza

SALIDA AUXILIAR

Llamada

AH 04H

Int 21/04

DL Datos de 8 bits como salida para STDAUX


Devuelve
Descripcin

Realiza
Llamada

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

MOSTRAR CADENA
AH 09H
DS:DX Apuntador a cadena terminada con $

Int 21/09

Devuelve
Descripcin

Nada
Enva a la salida series contiguas de caracteres del mismo
modo que Int 02 muestra caracteres individuales. Todos los
caracteres que comienzan en una direccin especificada se
envan a la salida hasta que se encuentra un signo de $

Realiza

OBTENER FECHA DEL SISTEMA

Llamada

AH 2AH

Devuelve

CX Ao (1980 a 2099)
DH Mes (1 al 12)

Int 21/2A

DL Da(1 a 31)
AL Da de la semana (0=domingo, 1=lunes, etc)
Descripcin

Devuelve la fecha del sistema basndose en el reloj interno


de DOS.

Int 21/2B

Realiza
Llamada

ESTABLECER FECHA DEL SISTEMA


AH 2BH
CX Ao (1980 a 2099)

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

67
DH Mes
DL Dia
Devuelve

AL 00H, fecha establecida exitosamente


FFH fecha invalida, no establecida

Descripcin

Normalmente solo se establece la porcin de fecha del reloj


interno del DOS, pero si la computadora tiene un reloj
CMOS con esta funcin tambin se establece la fecha de
este.

Realiza

OBTENER HORA DEL SISTEMA

Llamada

AH 2CH

Devuelve

CH Hora (0 a 23)
CL Minutos (0 a 59)

Int 21/2C

DH Segundos (0 a 59)
DL centsimas de segundo (0 a 99)
Descripcin

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


exacta si fue establecida correctamente.

Realiza
Llamada

ESTABLECER LA HORA DEL SISTEMA


AH 2DH
CH Hora
CL Minutos
DH Segundos

Int 21/2D

DL centsimas
Devuelve

AL 00H hora fijada exitosamente


FFH hora invlida, no establecida

Descripcin

Normalmente, solo se establece la porcin de hora del reloj


interno de DOS.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

68
Realiza

TERMINAR Y PERMANECER RESIDENTE

Llamada

AH 31H
AL Cdigo de retorno
DX Tamao de memoria por reservar(en prrafos)

Int 21/31

Devuelve
Descripcin

Nada
Termina la operacin del programa pero no libera la
memoria asignada a este ni cierra los archivos abiertos.
Esta funcin permite mas de 64K de memoria y el control
del cdigo de retorno, que est disponible para el
programa padre a travs de Int 21/4D

Realiza
Llamada

OBTENER ESPACIO LIBRE DEL DISCO


AH 36H
DL Unidad de diso 0=omisin 1=A, 2=b, etc

Int 21/36

Devuelve

AX Sectores por grupo, FFFFH si la unidad es invlida


BX Nmero de grupos disponibles
CX bytes por sector
DX Grupos en unidad

Descripcin

Esta funcin devuelve informacin bsica que puede usarse


para determinar el espacio disponible en disco

Realiza
Llamada

CREAR SUBDIRECTORIO
AH 39H
DS:DX Apuntador a especificacin de trayectoria ASCII

Int 21/39

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

Descripcin

Permite la creacin de nuevos directorios. La funcin

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 raz y la raz est llena.

Realiza
Llamada

ELIMINAR SUBDIRECTORIO
AH 3AH
DS:DX Apuntador a especificacin de trayectoria ASCII

Devuelve

Bandera de acarreo en cero si hubo xito


Bandera de acarreo en uno si hubo error

Int 21/3A

AX 03H trayectoria no encontrada


05H acceso negado
06H directorio actual
10H directorio actual
Descripcin

Permite el borrado de un directorio especificado, pero solo


si existe, est vaco y no es el directorio por omisin.

Realiza

ESTABLECER DIRECTORIO

Llamada

AH 3BH
DS:DX Apuntador a cadena de trayectoria ASCII

Int 21/3B

Devuelve

Bandera de acarreo en cero si hubo xito


Bandera de acarreo en uno si hubo error
AX 03H trayectoria no encontrada

Descripcin

Le permite cambiar el directorio actual (similar a la orden


CD)

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

70
Realiza

BORRAR ARCHIVO

Llamada

AH 41H
DS:DX apuntador a especificacin 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

Int 21/41

05H acceso negado


Descripcin

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 comodn en el
nombre del archivo.

Realiza
Llamada

RENOMBRAR ARCHIVO
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

Int 21/56

03H trayectoria no encontrada


05H acceso negado
11H no es el mismo dispositivo
Descripcin

Permite

renombrar

archivos

incluso

en

directorios

diferentes. En esta funcin no es vlido usar caracteres


comodn, pero s es posible especificar nombres de
trayectorias completas. No renombre archivos abiertos pues
esto puede traer resultados impredecibles.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

71
Realiza

CREAR ARCHIVO

Llamada

AH 5BH
CX atributo
DS:DX apuntador a especificacin 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

Int 21/5B

04H no hay controles disponibles


05H acceso negado
50H archivo ya existe
Descripcin

Esta funcin que consitutye el mtodo 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.

Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco

CONJUNTO DE CARACTERES ASCII EN HEXADECIMAL

72

También podría gustarte