Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 2
Osmar Dallan Perez Estrada
Instituto Tecnologico de Tuxtla Gutierrez
blue viper94@hotmail.com
I. Introducci
on
Hablar de lenguaje ensamblador es hablar
de un programa convertidor, este convierte
un determinado codigo a otro tipo de
codigo. Estos tipos de codigo es lo que
unicamente son distinguidos por la computadora ya que esta interpreta los datos
binarios (lenguaje maquina) para manipular las partes fsicas de estas. Como la
computadora solo distingue datos binarios,
se necesita el ensamblador del que antes se
ha hablado para realizar la programacion
basica para manipular cualquier dispositivo
o periferico que se desee de la computadora.
El contenido de la presente sntesis cuenta
con informacion de la segunda unidad de la
materia de Lenguajes de Interfaz enfocada
en la Programacion basica del lenguaje
ensamblador, abordando temas como, ciclos numericos, ciclos condicionales, saltos,
manipulacion de pilas entre otros. Todo lo
mencionado anteriormente es parte de la
programacion basica y esencial del lenguaje
ensamblador, para asi poder hacer uso de
los recursos fsicos con los que cuenta la
computadora o algun otro dispositivo.
II. Desarrollo
A. Ensamblador y ligador a utiizar
Un ensamblador es el programa que convierte un listado de codigo fuente que esta
escrito en un fichero de texto al codigo
Figura 1ejemplo del proceso del
objeto, es decir al lenguaje maquina,
ensamblado y ligado
que el computador, microprocesador o
microcontrolador distinguira ya que estos
distinguen los datos de tipo binario y
pueden interpretarlo y hacer uso de ello.
Para poder realizar el codigo ensamblador
Para ello el ensamblador lee el archivo hay que tomar algunas caractersticas en
1
INC incrementar
DEC decrementar
LOOP realizar un bucle
LOOPZ, LOOPE realizar un bucle si es
cero
LOOPNZ, LOOPNE realizar un bucle
si no es cero
JCXZ salta si CX es cero
B. Ciclos Numericos
Dentro del lenguaje ensamblador existen
muchos tipos de ciclos o bucles, que se
puede elegir dependiendo de lo que se
requiera y como se requiera es decir que en
veces se necesita una instruccion poderosa
por que el codigo lo necesita o bien una
instruccion menor que no requiere de gran
exigencia. Por ejemplo si se necesita una
instruccion poderosa el lenguaje ensamblador cuenta con una que permite la
programacion de ciclos infinitos, esa es la
instruccion LOOP. Un bucle es un grupo de
instrucciones que se ejecutan cclicamente
un n
umero concreto de veces.
E. Saltos
El lenguaje ensamblador proporciona un
conjunto de instrucciones conocidas como
instrucciones de salto. Estas instrucciones
son utilizadas en conjunto con instrucciones
de comparacion y prueba para determinar
el flujo del programa.
En muchos lenguajes de alto nivel los
programadores pueden controlar el flujo de
los programas por medio de instrucciones
condicionales compuestas. Por contra el
lenguaje ensamblador no proporciona tales
mecanismos.
Estos tipos de decisiones
se realizan por medio de una serie de
instrucciones que van teniendo un significado consecutivo, es decir, el efecto de la
instruccion siguiente depende del resultado
anterior.
D. Comparacion y prueba
Dentro de la programacion existen dos
instrucciones que ayudan a la comparacion
y a la verificacion de valores, estos son
el CMP y TEST. CMP que se utiliza
para comparar, realiza una comparacion
si dos valores son iguales o diferentes. Su
funcinamiento es similar a la instruccion
SUB que es restar, solo que no modifica el
operando de destino, solamente modifica
3
F. Ciclos condicionales
Los ciclos condicionales son saltos que
crean un bucle bajo la confirmacion de si ha
ocurrido alguna situacion, es decir que las
instrucciones de salto condicional, revisan
si ha ocurrido alguna situacion para poder
transferir el control del programa a otra
seccion.
JMP: salta
JE, JZ: salta si es igual a cero.
JNE, JNZ: salta si no es igual a cero.
JS: salta si tiene signo negativo.
Figura 6. Ejemplo de instruccion de un
ciclo condicional
G. Incremento y Decremento
JNLE, JG: salta si no es menor que o En ocaciones necesitamos incrementar
algun valor de un registro o decrementarlo
igual -mayor-.
segun se le necesite, en el lenguaje ensamblador se utilizan dos instrucciones que
4
I. Instrucciones aritmeticas
Las instrucciones aritmeticas son muchas
apesar de que solo son 8 instrucciones
basicas, debido a que cada uno tiene mas
elemntos en sus grupo, es decir que las
operaciones se pueden realizar dependiendo
Figura 7 ejemplo de modo de operacion de
del valor que se tiene. Las 8 instrucciones
INC y DEC
basicas son: ADD (suma), SUB (resta),
MUL (multiplicacion sin signo), DIV
(division sin signo), IMUL (multiplicacion
con signo), IDIV (division con signo), INC
(incremento unitario),DEC (decremento
unitario).
Por otra parte las instrucciones ADD y
H. Captura de Cadenas con formato
SUB permiten realizar sumas y restas
Las instrucciones para trabajar sobre cadesencillas y tienen el siguiente formato:
nas permiten el movimiento, comparacion
a.- ADD destino,fuente.
y b
usqueda rapida en bloques de datos.
b.- SUB destino, fuente.
Las instrucciones que permiten manejar las
cadenas con formato son:
MOVC: transferir caracter de una cadena.
MOVW transferir palabra de una cadena
Grupo de adici
on:
ADD: suma
REP repetir
POP operando
Cuando se ejecuta la instruccion Push, el
contenido del operando se almacena en la
u
ltima pocision de la pila.
Por ejemplo: Si AX se carga previamente
con el valor 5, una instruccion Push AX almacenaria el valor 5 en la ultima posicion
de la pila.
Por otro lado la instruccion POP saca el
u
ltimo dato almacenado en la pila y lo
coloca en el operando.
Siguiendo el ejemplo anterior, la instruccion
POP BX obtendra el n
umero 5 y lo almacenara en el registro BX.
Una de las funciones de la pila del sistema
es la de salvaguardar (conservar) datos (la
otra es la de salvaguardar las direcciones de
retorno de las llamadas a subrutinas):
PUSH: introducir
POP: extraer
PUSHF: introducir indicadores
Grupo de Divisi
on
DIV: division
IDIV: division entera
AAD: ajuste ASCII para la division
Grupo de Conversiones
CBW: pasar octeto a palabra
CWD: pasar palabra a doble palabra
NEG negacion
J. Manipulacion de la Pila
La pila es un grupo de localidades de memoria que se reservan con la finalidad de
proporcionar un espacio para el almacenamiento temporal de informacion. La pila
de los programas es del tipo LIFO. Para controlar la pila el microprocesador cuenta con
dos instrucciones basicas: PUSH (meter) y
POP (sacar).
El formato de estas instrucciones es el siguiente:
PUSH operando
Procesos de Control
a.-NOP (operacion nula)
Sintaxis:
WAIT
Sintaxis:
NOP
Ejemplo :
ESC21, AX
Direccionamiento o seleccion del dispositivo que debe llevar a cabo la operacion de E/S.
Conversion de codigos,
serie/paralelo, etc.
conversion
Una de las funciones basicas del ordenador es comunicarse con los dispositivos
exteriores, es decir, el ordenador debe ser
capaz de enviar y recibir datos desde estos
dispositivo. Sin esta funcion, el ordenador
no sera operativo porque sus calculos no
seran visibles desde el exterior. Existe
una gran variedad de dispositivos que
pueden comunicarse con un ordenador,
desde los dispositivos clasicos (terminales,
impresoras, discos, cintas, etc.)
hasta
convertidores A/D y D/A para aplicaciones
de medida y control de procesos, De todos
los posibles perifericos, algunos son de
lectura, otros de escritura y otros de lectura
y escritura (es importante resaltar que este
hecho siempre se mira desde el punto de
vista del proceso). Por otra parte, existen
perifericos de almacenamiento tambien
llamados memorias auxiliares o masivas.
La mayora de los perifericos estan compuestos por una parte mecanica y otra parte
electronica. Estas partes suelen separarse
claramente para dar una mayor modularidad. A la componente electronica del
periferico se le suele denominar controlador
del dispositivo o, tambien, adaptador del
dispositivo. Si el dispositivo no tiene parte
10
III. Conclusi
on
Hoy en dia el lenguaje ensamblador representa la base de todo proceso puesto que
todo microprocesador y microcontrolador
usa este lenguaje. La programacion basica
tal y como su nombre lo dice, es sumamente
indispensable, las instrucciones utilizadas
son las que casualmente se utilizan ya
que su funcion es primordial o es una
instruccion de base, como los que actuan
sobre la memoria, cambian, aumentan o
disminuyen algun valor de un registro o
localidad de la memoria, que son los que
usualmente utilizan los programadores
ya que para realizar cualquier tipo de
operacion se debe trabajar con la memoria,
como por ejemplo la instruccion MOV,
cuyo proposito es la transferencia de datos
entre los registros de procesador o registros
y memoria y que es una instruccion de
lenguaje ensamblador que se encuentra
en la mayoria de los procesadores, tales
como, los procesadores Intel pentium, amd
y sparc entre otros, debido a esto, esta
instruccion y muchos otros, a la practica,
son instrucciones de ensamblador basicas y
esenciales en cualquier proceso. El lenguaje
ensamblador es muy amplio y en su caso,
complejo, pero el estudio adecuado de estas
instrucciones basicas y su programacion
basica nos podran permitir adentrarnos un
IV. Referencias
1.- Canal, Ramon; Elias, Eduard;
Gonzalez, Jose; Marcuello, Pedro; Molina,
Carlos, Pe
na, M.A.; Valero, Miguel.
Estructura y Dise
no de Computadores.
Barcelona, 2000. Reverte. ISBN: 84-2912619-8.
2.- Apuntes de Modos de Direccionamiento.
Departamento de Informatica, Universidad de Valladolid.
www.infor.uva.es/ bastida/OC/modos.pdf
3.- Garca, Manuel; Lopez, Jose. Apuntes
de Organizacion de Computadoras. Ediciones de la Universidad de Oviedo. 2007.
ISBN: 978-84-8317-606-1. [6] Tanenbaum,
Andrew S. Sistemas Operativos Modernos; Segunda Edicion.Pearson Educaci
on.
Mexico, 2003. ISBN: 970-26-0315-3. Pag:
976.
4.- Ivan Perez, Lenguaje Y Compiladores,
2005, Primera Edicion, pp.13.
5.- Irv Englander, Arquitectura Computacional, Mexico 2002, Primera Edici
on,
pp.233-240.
11