Está en la página 1de 4

LENGUAJES DE INTERFAZ, UNIDAD 2, FEBRERO 2015

Sntesis Unidad 2 Lenguajes de Interfaz


Ivn de Jess Prez Gonzlez

AbstractLa unidad 2 de arquitectura de computadoras habla acerca de la programacin bsica en lenguaje ensamblador, dentro de
ello podemos encontrar los ciclos, las cadenas, las comparacin, tambin vemos como podemos hacer funciones aritmeticas en
lenguaje ensamblador, la forma de incrementar y decremetar a un valor inicial, entre otras muchas cosas.

1
1.1

P ROGRAMACIN BSICA
Ensamblador (y ligador) a utilizar

El lenguaje ensamblador, o assembler (assembly language)


es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores y otros
circuitos integrados programables. El ensamblador es el
programa que convierte un listado de cdigo fuente escrito
en un fichero de texto en cdigo objeto, que es lo mismo a
lenguaje mquina que es el que interpretar el procesador.
El cdigo fuente es un fichero que contiene la secuencia
de instrucciones en lenguaje ensamblador que forma el
programa, as como ciertas directivas o comandos para el
propio ensamblador, que ha sido creado utilizando un editor
de texto.
Al construir un programa algunos de sus mdulos
pueden colocarse en el mismo mdulo fuente y ensamblarse juntos, otros pueden estar en mdulos diferentes
y ser ensamblados separadamente. En cualquier caso, los
mdulos objeto resultantes, algunos de los cuales pueden
estar agrupados en libreras, deben ser enlazados para formar el mdulo de carga, antes de que se pueda ejecutar
el programa. Adems de dar como salida el mdulo de
carga, el linker o enlazador imprime un mapa de memoria
que indica donde sern cargados los mdulos objeto en la
memoria.
1.2

Ciclos numricos

Un bucle es un grupo de instrucciones que se ejecutan


cclicamente un nmero concreto de veces.
Hay 4 tipos de bucles bsicos: o Bucles sin fin o Bucles
por conteo, Bucles hasta o Bucles mientras. Las instrucciones
de control de bucles son las siguientes:
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
El lenguaje ensamblador cuenta con una instruccin muy
poderosa que permite la programacin de ciclos nitos, la

Lenguajes de Interfaz
E-mail: cinivan21@gmail.com.
Insituto Tecnolgico de Tuxtla Gutirrez, Tuxtla Gutirrez, Chiapas

instruccin LOOP. Esta instruccin trabaja en forma conjunta con el registro contador CX. El formato general de esta
instruccin es:
Mov CX,Numero_Veces
Etiqueta: Instrucciones a realizar
Loop Etiqueta
La instruccin Loop ejecuta las instrucciones que se encuentran entre la Etiqueta: y Loop Etiqueta el numero de veces
que indique el campo No_Veces.

(Imagen 1)
1.3

Captura bsica de cadenas

Una cadena es una secuencia de bytes contiguos. El lenguaje


ensamblador cuenta con cinco instrucciones para el manejo
de cadenas:
MOVS: Mueve un byte o palabra desde una localidad de memoria a otra.
LODS : Carga desde la memoria un byte en AL o
una palabra enAX.
STOS : Almacena el contenido del registro AL o AX
en la memoria.
CMPS : Compara localidades de memoria de un
byte o palabra.
SCAS : Compara el contenido de AL o AX con el
contenido de alguna localidad de memoria.
Las instrucciones para cadenas trabajan en conjunto con la
instruccin CLD, la cual permite establecer que el sentido
en el que las cadenas sern procesadas ser de izquierda a
derecha. Otra instruccin importante es el prejo de repeticin REP, el cual permite que una instruccin para manejo
de cadenas pueda ser repetida un nmero determinado de
veces. Los registros ndice juegan un papel importante en

LENGUAJES DE INTERFAZ, UNIDAD 2, FEBRERO 2015

JNE o JNZ: Salta si no es igual o salta si no es cero


(jump if not equal or jump if not zero). El salto se
efecta si ZF=0.
JG o JNLE: Salta si es mayor o salta si no es menor
o igual (jump if greater or jump if not less or equal).
El salto se efecta si ZF=0 u OF=SF.
JGE o JNL: Salta si es mayor o igual o salta si no
es menor (jump if greater or equal or jump if not
less). El salto se efecta si SF=OF.

el procesamiento de cadenas de datos, el par de registros


CS:SI indican la direccin de la cadena original que ser
procesada, y el par ES:DI contienen la direccin donde las
cadenas pueden ser almacenadas.
1.4

Comparacin y prueba

Existen dos instrucciones especiales en el microprocesador


8086: CMP y TEST.
CMP (Comparar) compara si dos valores son iguales o
diferentes. Su funcionamiento es similar al de la instruccin
SUB, slo que no modica el operando de destino, solamente
modica las banderas de signo, de cero y de acarreo.
Por ejemplo.
CMP AX,33 Esta instruccin compara si el valor
almacenado en el registro AX es igual que el
valor 33 en decimal. Por otro lado, la instruccin TEST realiza la operacin AND de los
operandos especicados sin que el resultado se
almacene en algn registro, modicando nicamente ciertas banderas. Su aplicacin ms
comn es la de probar si algn bit es cero.
1.5

Saltos

En los lenguajes de alto nivel como Pascal y C, los programadores pueden controlar el ujo de los programas
por medio de instrucciones condicionales compuestas, el
lenguaje ensamblador no proporciona tales mecanismos.
Este tipo de decisiones se realizan por medio de una serie de
instrucciones que van teniendo un signicado consecutivo;
es decir, el efecto de la instruccin siguiente depende del
resultado anterior.
El lenguaje ensamblador proporciona un conjunto de
instrucciones conocidas como instrucciones de salto. Estas
instrucciones son utilizadas en conjunto con instrucciones
de comparacin y prueba para determinar el flujo del programa
1.6

Ciclos condicionales

Las instrucciones de salto condicional, revisan si ha ocurrido alguna situacin para poder transferir el control del
programa a otra seccin.
La siguiente es una lista de las instrucciones de salto
condicional:
JA o JNBE: Salta si est arriba o salta si no est por
debajo o si no es igual (jump if above or jump if not
below or equal). El salto se efecta si la bandera de
CF=0 o si la bandera ZF=0.
JAE o JNB: Salta si est arriba o es igual o salta si
no est por debajo (jump if above or equal or jump
if not below). El salto se efecta si CF=0.
JB o JNAE: Salta si est por debajo o salta si no est
por arriba o es igual (jump if below or jump if not
above or equal). El salto se efecta si CF=1.
JBE o JNA: Salta si est por debajo o es igual o
salta si no est por arriba (jump if below or equal
or jump if not above). El salto se efecta si CF=1 o
ZF=1.
JE o JZ: Salta si es igual o salta si es cero (jump if
equal or jump if zero). El salto se efecta si ZF=1.

1.7

Incremento y decremento

Las instrucciones INC y DEC permiten incrementar los


contenidos de los registros.
El contenido de un registro de 8 bits o localidad de
memoria es incrementada o decrementada por uno. El contenido de un registro de 16 bits puede ser incrementado o
decrementado por uno.
Solo la operacin de 8 bits afecta las banderas.
Ejemplo:
INC B DEC BC
1.8

Captura de cadenas con formato

Permiten el movimiento, comparacin o bsqueda rpida


en bloques de datos:
MOVC transferir carcter de una cadena
MOVW transferir palabra de una cadena
CMPC comparar carcter de una cadena
CMPW comparar palabra de una cadena
SCAC buscar carcter de una cadena
SCAW buscar palabra de una cadena
LODC cargar carcter de una cadena
LODW cargar palabra de una cadena
STOC guardar carcter de una cadena
STOW guardar palabra de una cadena
1.9

Instrucciones aritmticas

Estas instrucciones son las que realiza directamente el


8086/8088
Grupo de adicin:
ADD suma
ADC suma con acarreo
AAA ajuste ASCII para la suma
DAA ajuste decimal para la suma
Grupo de sustraccin:
SUB resta
SBB resta con acarreo negativo
AAS ajuste ASCII para la resta
DAS ajuste decimal para la resta
Grupo de multiplicacin:
MUL multiplicacin
IMUL multiplicacin entera
AAM ajuste ASCII para la multiplicacin
Grupo de divisin:
DIV divisin
IDIV divisin entera
AAD ajuste ASCII para la divisin
Conversiones:

LENGUAJES DE INTERFAZ, UNIDAD 2, FEBRERO 2015

CBW pasar octeto a palabra


CWD pasar palabra a doble palabra
NEG negacin

Estas instrucciones requieren dos operandos, a excepcin


de la operacin NOT que slo requiere uno. La operacin
OR establece el resultado a 1 si cualquiera de los dos operandos es 1, de lo contrario el resultado ser 0. La instruccin
XOR coloca en 0 el resultado si los operandos son iguales,
de lo contrario establece 1. Finalmente, la instruccin NOT
cambia de estado todos los bits del operando, los unos por
ceros y los ceros por unos.
La principal aplicacin de estas instrucciones es el enmascaramiento de informacin. La operacin AND nos
permite poner a cero cualquier bit de un dato; la operacin
OR nos permite poner a uno cualquier bit de un dato y
la operacin XOR permite borrar el contenido de algn
registro o localidad de memoria, as como para negar algn
bit.

(Imagen 2)
1.10

Manipulacin 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 informacin. La pila de
los programas es del tipo LIFO (Last In First Out, Ultimo
en entrar, Primero en salir). Para controlar la pila el microprocesador cuenta con dos instrucciones bsicas: Push
(Meter) y Pop (sacar). El formato de estas instrucciones es el
siguiente: Push operando Pop operando Cuando se ejecuta
la instruccin Push, el contenido del operando se almacena
en la ultima posicin de la pila.

(Imagen 3)
1.11

Obtencin de cadena con representacin decimal

En las computadoras el formato natural para la aritmtica es


en cdigo binario. La representacin de un nmer dcimal
se da en tres formatos:
ACCII (4 bytes)
BCD desempaquetado (4 bytes)
BCD empaquetado (2 bytes)
El procesador realiza aritmtica en valores ASCII y BCD un
dgito a la vez. Ya que los datos son ingresados desde un
teclado signican que estn en formato ASCII.
1.12

Instrucciones lgicas

Se cuenta con un grupo de instrucciones lgicas que operan


a nivel de bit, estas instrucciones son: AND, OR, XOR y
NOT.

(Imagen 4)
1.13

Desplazamiento y rotacin

El microprocesador cuenta con un conjunto de instrucciones


que permiten la manipulacin de las posiciones individuales
de los bits dentro de un registro o localidad de memoria,
estas instrucciones se encuentran divididas en dos grupos:
instrucciones de rotacin e instrucciones de desplazamiento
tambin conocidas como instrucciones para corrimientos.
Las instrucciones para rotacin son cuatro y nos permiten mover de forma cclica los bits que forman parte de
un registro o localidad de memoria, estas instrucciones son
ROL, ROR, RCL , RCR.
ROL y ROR funcionan de forma muy semejante; al
ejecutar una instruccin ROL, el bit ms signicativo del dato
es desplazado hacia la bandera de acarreo y tambin hacia
la posicin del bit memos signicativo, por lo cual todos los
bits restantes son rotados o movidos hacia la izquierda. La
instruccin ROR funciona igual, slo que sta trabaja hacia
la derecha.
Las instrucciones RCL y RCR permiten la rotacin de los
bits de una localidad de memoria o registro, considerando
tambin el contenido de la bandera de acarreo. En el caso de
RCL, el bit ms signicativo pasa hacia la bandera de acarreo,
el bit que se encontraba en la bandera de acarreo pasa al bit
menos signicativo y finalmente los bits restantes son rotados
hacia la izquierda. La instruccin RCR funciona igual, pero
aplica su rotacin hacia la derecha.
1.14 Obtencin de una cadena con la representacin
hexadecimal
La conversin entre numeracin binaria y hexadecimal es
sencilla. Lo primero que se hace para una conversin de un
nmero binario a hexadecimal es dividirlo en grupos de 4
bits, empezando de derecha a izquierda. En caso de que el

LENGUAJES DE INTERFAZ, UNIDAD 2, FEBRERO 2015

ltimo grupo sea menor de 4 bits se rellenan los faltantes


con ceros.
Tomando como ejemplo el nmero binario 101011 lo
dividimos en grupos de 4 bits y nos queda: 10 - 1011
Rellenando con ceros el ltimo grupo:
0010; 1011
Despus tomamos cada grupo como un nmero independiente y consideramos su valor en decimal:
0010 = 2; 1011 = 11
Pero como no podemos representar este nmero hexadecimal como 211 porqu sera un error, tenemos que
sustituir todos los valores mayores a 9 por su respectiva
representacin en hexadecimal, con lo que obtenemos: 2BH
(Donde la H representa la base hexadecimal)
Para convertir un nmero de hexadecimal a binario solo
es necesario invertir estos pasos: se toma el primer dgito
hexadecimal y se convierte a binario, y luego el segundo, y
as sucesivamente hasta completar el nmero.

(Imagen 5)
1.15

Operaciones bsicas sobre archivos de disco

Servicios de la interrupcin 16h para manejo del teclado.


Funcin 00h. Lee un carcter. Esta funcin maneja las
teclas del teclado de 83 teclas, pero no acepta entrada de
las teclas adicionales en el teclado ampliado de 101 teclas.
Retorna en al el carcter, ah el cdigo de rastreo si al=0 es
una tecla de funcin extendida.
Funcin 01h. Determina si un carcter esta presente.
Funcin 02h. Regresa el estado actual de las
teclas shift.
Funcin 10h. Lectura de un carcter del teclado.
Funcin 11h. Determina si esta presente un
carcter.
MOVS. Mueve un byte, palabra o palabra doble
desde una localidad en memoria direccionada por
SI a otra localidad direccionada por DI.
LODS. Carga desde una localidad de memoria
direccionada por SI un byte en AL, una palabra en
AX o una palabra doble en EAX.
STOS. Almacena el contenido de los registros
AL, AX, o EAX en la memoria direccionada por SI.

CMPS. Compara localidades de memoria de un


byte, palabra o palabra doble direccionadas por SI,
DI.
SCAS. Compara el contenido de AL, AX o EAX
con el contenido de una localidad de memoria
direccionada por SI.

R EFERENCES
[1]

Patricia Quiroga, Arquitectura de computadoras, 1rd ed. Alfaomega, Buenos Aires, 2010.
[2] Canal, Ramn; Elias, Eduard; Gonzlez, Jos; Marcuello, Pedro;
Molina, Carlos, Pea, M.A.; Valero, Miguel. Estructura y Diseo
de Computadores. Barcelona, 2000.
[3] Morris Mano, Arquitectura de computadoras, 1rd ed. McGrawHill Interameticana, 2007.
[4] Behrooz Parhami, Arquitectura de computadoras, de los microprocesadores a los supercomputadoras, 1rd ed. McGraw-Hill Interamericana, 2007.
[5] Manuel de programacin en ensamblador 8086, Tesis, Santiago
Snchez Gonzlez.
[6] Imagen 1: http://programaciondesistemasligadores.blogspot.mx/
[7] Imagen 2: http://www.alciro.org/microcontroladores
[8] Imagen 3: http://programaciondesistemasligadores.blogspot.mx/
[9] Imagen 4: http://sistemasiiesc43-2011.blogspot.mx/
[10] Imagen 5: http://sistemasiiesc43-2011.blogspot.mx/

También podría gustarte