Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Antologia Lenguaje Ensamblador
Antologia Lenguaje Ensamblador
PRESENTACIN
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
NDICE
Pg.
Presentacin
Unidad I
Fundamentos
1.1 Introduccin.
10
1.1.5
12
1.2 El microprocesador.
13
1.2.1 Buses.
14
1.2.2 Registros.
15
18
1.3 Interrupciones.
19
1.3.1 Hardware.
23
1.3.2 Software.
24
25
26
28
28
29
31
34
Unidad II
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
39
39
2.5 Desplazamiento.
39
2.5.1 Lineal.
39
2.5.2 Circular.
40
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
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
una
computadora
est
contenido
un
chip
circuito
llamado
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
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
Cruzados
(Cross-Assembler).
Se
denominan
as
los
Son
ensambladores
que
permiten
el
uso
de
Generalmente,
los
procesadores
utilizados
en
las
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
10
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
11
Acceso de Escritura
Acceso de Lectura
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
12
unidad
que
funciona
como
intermediario
se
llama
Unidad
de
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
13
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.
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
Contador
un ciclo.
Registro De
Datos
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
16
de
Descripcin
Contiene la direccin de la siguiente instruccin a ejecutar
por el procesador.
Instrucciones
SP
Apuntador
de Pila
BP
Apuntador
Base
SI
DI
ndice
Fuente
ndice
involucran cadenas.
Destino
REGISTROS DE SEGMENTO
Registro
CS
DS
SS
ES
Descripcin
Segmento
Contiene la
de cdigo
Segmento
de datos
Segmento
de pila
Contiene la
direccin
direccin
de
de
la
la
memoria
memoria
donde
donde
inicia
inicia
el
Segmento
extra de
datos
el
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
flag, bandera de
deshabilitadas. IF = 1
habilitadas.
Direcction flag,
bandera de
direccin
OF
PF
F0
Interrupt enable
interrupcin
DF
F1
Auxiliary carry
SF
AF
F2
bandera de
paridad
ZF
F3
Parity flag,
AF
F4
Carry flag,
acarreo
PF
F5
principio)
Overflow flag,
bandera de
sobreflujo
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
18
OF
DF
IF
SF
ZF
AF
PF
CF
NV
UP
DI
PL
NZ
NA
PO
NC
OV
DN
EI
NG
ZR
AC
PE
CY
Tipo de Direccionamiento
Formato
De Registro
Mov Ax, BX
Inmediato
Descripcin
Directo
transferir
los
datos
de
una
este
tipo
de
direccionamiento
de
Base
ms
Indexado
ndice
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
ms
ndice,
donde
se
agrega
un
PUSH Fuente
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
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
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
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
24
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,
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
25
Cada
Segmento de Memoria
Segmento de Datos
Segmento de Pila
Segmento de Cdigo
segmento
debe
estar
incluido
en
un
programa
de
ensamblador
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
26
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]
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
27
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
DQ
DT
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
POP
Esta funcin sirve para sustraer informacin o sacar valores almacenados en la
pila, su sintaxis es:
Pop variable
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
29
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
COMANDO
R
Register,
Registro
DESCRIPCIN
FORMATO
-R
todos
- R AX
los
registros
internos
del
microprocesador
Despliega el contenido de un bloque de
:
- D [Rango]
Dump, Vaciar
-D 0100 0108
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
30
-D 0105 L12
como
una
direccin
inicial
hasta
localidades
siguientes
la
ltima
en
forma
localidad mostrada.
Nos
permite
introducir
cdigo
-A [Direccin]
nemotcnica.
En
Assemble,
Ensamblar
donde
direccin
es
el
valor
del
-A 0100
introducido.
Si
este
parmetro
no
es
el
contenido
de
un
bloque
de
1591:0104
-
-U [rango]
Unassemble,
Desensamblar
El
visualiza
contenido
en
forma
de
de
la
memoria
instrucciones
lo
del
-U 0100 0105
Trace, Trazo
permite
ejecutar
una
instruccin
de
-T
-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
op1
op2
son
los
datos
en
-H 0105 0100
Name, Nombre
-N nombre
Quit, Salir
Write, Grabar
-Q
-W
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
31
1.
-N ejemplo.com
2.
3.
4.
5.
-R CX
el registro CX.
CX 0000
:5
-R IP
IP 0100
:
-W
-L [direccion]
de debed.
Donde direccin es la posicin de memoria en
el segmento de cdigo a partir de la cual ser
Load, Cargar
-N ejemplo.COM
en cuenta:
-L 0100
1.
Proporcionar
el
nombre
del
Cargar.
3.
Desensamblar
para
verificar
-U 0100 L5
si
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
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
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
/S
/L
/D
/ML
/MX
/MU
/N
/P
/R
/E
/T
/V
/X
/Z
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
33
/PAUSE
pausa en el proceso
/EXEPACK
/MAP
/LINENUMBERS
/NOIGNORECASE
/NODEFAULTLIBRARYSEARCH
/STACK:size
/CPARMAXALLOC:nmero
/HIGH
/DSALLOCATE
/NOGROUPASSOCIATION
/OVERLAYINTERRUPT:nmero
/SEGMENTS:nmero
/DOSSEG
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
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:
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
IDIV fuente
Decrementa en 1 al destino
DEC destino
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
NOT Destino
NEG Destino
2.1.5 Comparacin
Instruccin
Descripcin
CMP
Comparar
TEST
Probar
Formato
2.2 Saltos
Al
ser
el
lenguaje
ensamblador
un
lenguaje
estructurado,
existen
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
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
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
Instruccin
JG
JNLE
JGE
JNL
JL
JNGE
JLE
JNG
JE
JNE
Descripcin
Formato
ZF = 0 Y SF = OF
ZF = 0 Y SF = OF
SF = OF
SF = OF
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
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
Disyuncin
exclusiva
Descripcin
Realiza la operacin lgica Y
Formato
AND Destino, Fuente
OR 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
el
el
el
el
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
RCL
Destino
Destino
CF
Formato
ROL Destino, Conteo
RCR
Destino
CF
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
41
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
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
para
la
comparacin
los
CMPS
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
42
2.6.3 Carga
Instruccin
LEA
Descripcin
Formato
es decir,
Destino
se
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
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
POP REGISTROS
RET
NOMBRE_PROCEDIMIENTO ENDP
Se regresan los
valores a los
registros
END INICIO
Ejemplo:
.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
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
48
Ejemplo:
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
Alcance del
procedimiento
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
49
Imprimir el valor de AX
$"
.CODE
PUBLIC IMP_CADENA
PUBLIC RECIBE_DATO
PUBLIC IMP_AX
INICIO:
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
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
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
02H
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
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
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
Pxel
Color
Verde
Rojo
Caf
Cianato
Magenta
Blanco
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
55
Realiza
Llamada
AH 0CH
AL Valor del color
BH Nmero de pgina
Int 10/0C
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
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.
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
56
actualiza el cursor.
2
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
Descripcin
los
parmetros
cuidadosamente
antes
de
de
entrada
expedir
deben
una
verificarse
llamada
para
Int 13/03
Realiza
Llamada
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
Descripcin
Realiza
Llamada
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
Llamada
AH 00H
AL Parmetro de iniciacin
DX
3=COM4)
Devuelve
AH Estado de puerto
AL Estado de MODEM
Descripcin
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
3=COM4)
Devuelve
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
Realiza
Llamada
AH 02H
DX
3=COM4)
Int 14/02
Devuelve
Descripcin
Realiza
Llamada
3=COM4)
Int 14/03
Devuelve
Descripcin
Int 15/4F
Realiza
Llamada
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
60
Bandera de acarreo en 1
AL Cdigo de examinacin del teclado
Devuelve
Descripcin
Realiza
Llamada
ABRIR DISPOSITIVO
AH 80H
BX Identificacin del dispositivo
Int 15/80
Descripcin
Realiza
Int 15/85
Llamada
AH 85H
Devuelve
Descripcin
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
Descripcin
Realiza
Int 16/00
Llamada
AH 00H
Devuelve
Descripcin
Realiza
Llamada
AH 01H
Devuelve
Int 16/01
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
62
Realiza
Llamada
AH 02H
Devuelve
Descripcin
Int 16/02
Realiza
Int 16/10
Significado
OBTENER DIGITACIN
Llamada
AH 10H
Devuelve
AH Cdigo de examinacin
AL caracter
Descripcin
Int 17/00
Realiza
Llamada
Devuelve
AH Estado de impresora
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
63
Descripcin
Realiza
Llamada
Int 17/01
Devuelve
Descripcin
AH Estado de la impresora
Prepara el puerto paralelo de la impresora y devuelve el
estado de este.
Realiza
Llamada
AH 02H
Devuelve
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
Int 1A/03
Realiza
Llamada
Devuelve
Nada
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
64
Descripcin
Realiza
Llamada
AH 04H
Devuelve
Int 1A/04
CL Ao
DH Mes
DL Da
Bandera de acarreo en uno si hubo error
Descripcin
Realiza
Llamada
Int 1A/05
DH Mes
DL Da
Devuelve
Descripcin
Int 1A/06
Realiza
Nada
Los valores del reloj deben establecerse en BCD
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
65
Llamada
AH 06H
CH Horas
CL Minutos
DH Segundos
Devuelve
Descripcin
Realiza
Int 1A/07
Llamada
AH 07H
Devuelve
Nada
Descripcin
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)
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
66
Realiza
SALIDA AUXILIAR
Llamada
AH 04H
Int 21/04
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
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
Int 21/2B
Realiza
Llamada
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
67
DH Mes
DL Dia
Devuelve
Descripcin
Realiza
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
Realiza
Llamada
Int 21/2D
DL centsimas
Devuelve
Descripcin
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
68
Realiza
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
Int 21/36
Devuelve
Descripcin
Realiza
Llamada
CREAR SUBDIRECTORIO
AH 39H
DS:DX Apuntador a especificacin de trayectoria ASCII
Int 21/39
Devuelve
Descripcin
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
Int 21/3A
Realiza
ESTABLECER DIRECTORIO
Llamada
AH 3BH
DS:DX Apuntador a cadena de trayectoria ASCII
Int 21/3B
Devuelve
Descripcin
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
70
Realiza
BORRAR ARCHIVO
Llamada
AH 41H
DS:DX apuntador a especificacin de archivo ASCII
Devuelve
Int 21/41
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
Int 21/56
Permite
renombrar
archivos
incluso
en
directorios
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
Int 21/5B
Lenguaje Ensamblador
Ing. Claudia Yadira Luna Carrasco
72