Vous êtes sur la page 1sur 20

Instituto Tecnolgico de Lzaro

Crdenas
Ing. En sistemas computacionales

Lenguajes de interfaz
Unidad 2: Programacin bsica.
2.1 Ensamblador (y ligador) a utilizar.
2.2 Ciclos numricos.
2.3 Captura bsica de cadenas.
2.4 Comprobacin y prueba.
2.5 Saltos.
Profesor: Ing. Amadeo Reynoso Bolaos

Equipo:

Ramrez Galindo Emma

Ramos Castro Dalila Gpe.

Silva Soto Rosa Lizbeth

Daz Martnez Katia

Unidad 2: Programacin bsica.


2.1 Ensamblador (y ligador) a utilizar.
El termino ensamblador se refiere a un tipo de programa informtico que se
encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un
fichero objeto que contiene cdigo mquina, ejecutable directamente por el
microprocesador.
El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno
de los cdigos nemotcnicos que aparecen por su cdigo de operacin
correspondiente en sistema binario para la plataforma que se eligi como destino
en las opciones especificas del ensamblador.

Podemos distinguir entre dos tipos de ensambladores:

Ensambladores modulares 32 bits o de alto nivel, son ensambladores que aparecieron como respuesta
a una nueva arquitectura de procesadores de 32bits, muchos de ellos teniendo compatibilidad hacia
atrs pudiendo trabajar con programas con estructuras d 16 bits.
Ensambladores bsicos. Son de muy bajo nivel, y su tarea consiste bsicamente en ofrecer nombres
simblicos a las distintas instrucciones, parmetros y cosas tales como los modos.

Un ligador, es un programa que enlaza todos los programas o mdulos obteniendo lo que denominamos
programa ejecutable.
Es un programa que enlaza distintos mdulos o programas que poseen subprogramas. Adems incorporan
las denominadas rutinas de libreras en caso de solicitarlas el propio programa.
La generacin de un mdulo ejecutable a partir de una coleccin de procedimientos
traducidos
independientemente requiere un ligador.

Principales funciones de los ligadores:


Enlazar cdigo intermedio compilado independientemente en un solo mdulo de carga
resolviendo las diferencias entre Tokens.
Incorpora las denominadas rutinas de libreras en caso de solicitarlas el propio
programa.
Su funcin es reducir procedimientos traducidos por separado y enlazarlos para que se
ejecuten como una unidad llamada programa binario ejecutable.

2.2 Ciclos Numricos

http://lenguajes-interfaz-

2.3 CAPTURA BSICA DE CADENAS


Una cadena es una secuencia de bytes contiguos. Las operaciones que se
pueden realizar sobre las cadenas son las siguientes:

2.4 comparacin y prueba


Instrucciones de 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 (restar), slo que no modifica el
operando de destino, solamente modifica las banderas de signo (SF), de cero (ZF) y
de acarreo (CF).
Por ejemplo:
CMP AX,1235
Esta instruccin compara si el valor almacenado en el registro AX es igual que el
valor 1235 en decimal.
Por otro lado, la instruccin TEST realiza la operacin AND de los operandos
especificados sin que el resultado se almacene en algn registro, modificando
nicamente ciertas banderas. Su aplicacin ms comn es la de probar si algn bit
es cero.

Ejemplo:
Test AL,1
Esta instruccin prueba si el bit menos significativo de AL es 1 y Test AL,128 prueba si el bit ms
significativo de AL es 1. Por lo general estas instrucciones van seguidas de alguna de las
instrucciones de salto, las cuales se estudian en otra seccin.

COMPARACION.
LA INSTRUCCION CMP
La instruccin CMP pro lo comn es utilizada para comparar dos campos de datos, uno de los
[etiqueta:] | CMP |
cuales estn contenidos en un| registro.
El formato general para CMP es:
{registro/memoria},
{registro/memoria/inmediat
o} |

El resultado de una operacin CMP afecta la banderas AF, CF, OF, PF, SF y ZF, aunque no tiene
que probar estas banderas de forma individual. El cdigo siguiente prueba el registro BX por un
valor cero:
X CMP BX, 00 ;Compara Bx con cero
JZ B50 ;Si es cero salta aB50
. ;(Accin si es diferente de cero)
.
B50: ... ;Destino del salto, si BX es cero
Si el BX tiene cero, cmp establece ZF a 1 y puede o no cambiar la configuracin de otras
banderas. La instruccin JZ (salta si es cero) solo prueba la bandera ZF. Ya que ZF tiene 1 (que
significa una condicin cero), JZ transfiere el control (salta) a la direccin indicada por el
operando B50
Observe que la operacin compara el primer operando con el segundo; por ejemplo, el valor del
primer operando es mayor que, igual o menor que el valor del segundo operando?

LA INSTRUCCION CMPS
CMPS compara el contenido de una localidad de memoria (direccionada por DS:SI).
Dependiendo de la bandera de direccin, CMPS incrementa o disminuye tambin los registros
SI y DI en 1 para bytes, en 2 para palabras y en 4 para palabras dobles.
La operacin establece las banderas AF, CF, OF, PF, SF y ZF.
Cuando se combinan con un prefijo REP y una longitud en el CX, de manera sucesiva CMPS
puede comparar cadenas de cualquier longitud.
Pero observe que CMPS proporciona una comparacin alfanumrica, esto es, una
comparacin de acuerdo a con los valores ASCII. Considere la comparacin de dos cadenas
que contienen JEAN y JOAN. Una comparacin de izquierda a derecha, tiene el resultado
siguiente:
J:J Iguales
E:O Diferentes (E es menor)
A:A Iguales
N:N Iguales

Algunas derivaciones de CMPS son las siguientes:


CMPSB. Compara bytes.
CMPSD. Compara palabras dobles.
CMPSW. Compara palabras.
A continuacin se muestra la codificacin del uso del CMPS y sus derivaciones:
TITLE P12CMPST (COM) Uso de CMPS para operaciones en cadenas
.MODEL SMALL
.CODE
ORG 100H
BEGIN: JMP SHORT MAIN
;------------------------------------------------------------------------------------NOM1 DB 'Assemblers' ;Elementos de datos
NOM2 DB 'Assemblers'
NOM3 DB 10 DUP (' ')
;------------------------------------------------------------------------------------MAIN PROC NEAR ;Procedimiento principal
CLD ;Izquierda a derecha
MOV CX, 10 ;Iniciar para 10 bytes

LEA DI, NOM2


LEA SI, NOM1
REPE CMPSB ;Compare NOM1:NOM2
JNE G20 ;No es igual, saltarlo
MOV BH,01 ;Igual, fijar BH
G20:
MOV CX, 10 ;Iniciar para 10 bytes
LEA DI, NOM3
LEA SI, NOM2
REPE CMPSB ;Compare NOM2:NOM3
JE G30 ;Igual, salir

Instrucciones de prueba, comparacin y saltos

2.5 Saltos

En los lenguajes de alto nivel como pascal y C, los


programadores pueden controlar el flujo de los programas
por medio de instrucciones condicionales compuestas.
En contraste, el lenguaje ensamblador no proporciona tales
mecanismos.
Este tipo de decisiones se realizan por medio de una serie de
instrucciones que van teniendo un significado 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.

SALTOS
En lenguaje ensamblador existen diferentes tipos de saltos que nos ayudan a
saltar a una lnea especificada de cdigo.

JMP salta
JNBE, JA salta si no por abajo o igual
JE, JZ salta si es igual a cero
(encima)
JNE, JNZ salta si no igual a cero
JL, JNGE salta si menor que (no mayor o
JS salta si signo negativo
igual)
JNS salta si signo no negativo
JNL, JGE salta si no menor que (mayor o
JP, JPE salta si paridad par
igual)
JNP, JOP salta si paridad impar
JLE, JNG salta si menor que o igual (no
JO salta si hay capacidad excedida
mayor)
JNO salta si no hay capacidad excedida
JNLE, JG salta si no menor que o igual
JB, JNAE salta si por abajo (no encima o igual) (mayor)
JNB, JAE salta si no est por abajo (encima o igual)
JBE, JNA salta si por abajo o igual (no encima)

Por ejemplo el salto:


JMP (Salto)
Sintaxis: JMP direccin o JMP SHORT direccin.
Transfi ere el control incondicionalmente a la direccin indicada en el
operando. La bifurcacin puede ser tambin directa o indirecta, pero
adems puede ser corta (tipo SHORT). Si se hace un JMP SHORT y no llega
el salto (porque est demasiado alejada esa etiqueta) el ensamblador
dar error. Los buenos ensambladores (como TASM) cuando dan dos
pasadas colocan all donde es posible un salto corto, para economizar
memoria, sin que el programador tenga que ocuparse de poner short. Si
el salto de dos bytes, que permite desplazamientos de 64 Kb en la
memoria sigue siendo insufi ciente, se puede indicar con far que es largo
(salto a otro segmento).
Ejemplos:
JMP ETIQUETA

Bibliografa
https://
es.scribd.com/doc/134779820/Unidad-2-Lenguajes-de-Interfaz#scribd
https://prezi.com/y5nr_na4vfjr/unidad-2/

Vous aimerez peut-être aussi