Está en la página 1de 32

LENGUAJES Y AUTOMATAS II

EQUIPO 2:
❑ Flores Cocotle Lizbeth (19010295)
❑ Flores Miranda Jared Israel (1901340)
❑ Fuentes Medel Irving (18011203)
❑ García Martínez Joel Santiago (19011346)
❑ Hernández Luna Lucia Michelle (19010299)
UNIDAD 4: PROGRAMACIÓN BÁSICA

2.1 ENSAMBLADOR (Y LIGADOR) A UTILIZAR

2.2 CICLOS NUMÉRICOS

3.1.3 …..

2.4 COMPARACIÓN Y PRUEBA


UNIDAD 4: PROGRAMACIÓN BÁSICA

2.5 SALTOS

Ciclos condicionales
2.6

Incremento y decremento
2.7

3.4 ……
ENSAMBLADOR A UTILIZAR
Aunque la sintaxis entre ensambladores es parecida,
es necesario mencionar que los ejemplos de esta
presentación están hechos para las siguientes
herramientas:
Turbo Assembler (TASM) Turbo linker (T-Link)
TURBO ASSEMBLER

Turbo Assembler o TASM es un ensamblador desarrollado por


Borland el cual además de permitir ensamblar código MASM
(Microsoft Macro Assembler) en su modo de compatibilidad, es capaz
de soportar programación orientada a objetos desde la versión 3.0 y
de generar código para 16 o 32 bits.
● El Turbo Assembler
(TASM), es un paquete
ensamblador
principalmente
destinado a la
plataforma del IBM PC
y sus compatibles .
Para la compilación de un programa en ensamblador y su
enlazado, hay que seguir una serie de pasos. Este
ensamblador lo que hace es obtener un programa
“ejecutable” para un ordenador que tenga integrado un
microprocesador de la familia 80x86. La figura siguiente
detalla los cuatro pasos que lleva a cabo el compilador:
La característica más importante de Turbo Assembler es que
es compatible con lenguajes de alto nivel, por ejemplo: Turbo
Pascal, Turbo Basic, Turbo C, Turbo C++.
TURBO LINKER

Turbo Linker o T-Link es el enlazador (ligador) incluido con Turbo


Assembler, el cual se encarga de generar el código ejecutable a partir
del código objeto generado por TASM.
Ejemplo en Borland Turbo Assembler 5.0

● Se puede usar cualquier editor de texto para


escribir el código del programa en ensamblador. Para
que pueda ser interpretado por el ensamblador TASM,
la condición necesaria es que el fichero de este
programa lleve la extensión .ASM y el nombre del
fichero no deba ser mayor a ocho caracteres.

⮚Haremos uso de:


Ejemplo
Al terminar de digitar
el programa es hora de
guardar, en este caso se
selecciona Guardar como.

Lo siguiente será ubicar el


archivo a crear en la carpeta
donde se desea guardar en este
caso lo haremos en la siguiente
ruta: C:\TASM\BIN. En la
pestaña tipo se selecciona
“Todos los Archivos”, y en la
de nombre debe ir el nombre con
la extensión .asm y se presiona
el botón Guardar
Ese código se guarda en el siguiente
directorio: C:\TASM\BIN con la
extensión .ASM

Luego abrimos una consola de DOS de


Windows: Inicio > Ejecutar > cmd Y
escribimos lo siguiente: cd c:\tasm\bin
tasm Ejemplo
tlink Ejemplo
Para ejecutar lo que hemos compilado
debe escribir: Ejemplo.exe

Y listo, aparecerá la aplicación que haya


compilado, siempre y cuando no tenga ningún
mensaje de Error.
CICLOS NUMERICOS

Como en cualquier otro lenguaje de programación, hay ocasiones en las que es


necesario hacer que el programa no siga una secuencia lineal, sino que repita
varias veces una misma instrucción o bloque de instrucciones antes de
continuar con el resto del programa, es para esto que se utilizan los ciclos.
Existen 5 tipos de ciclos predefinidos en ensamblador

LOO
P
Esta función decrementa el valor del registro contador CX, si el valor
contenido en CX es cero ejecuta la siguiente instrucción, en caso
contrario transfiere el control a la ubicación definida por la etiqueta
utilizada al momento de declarar el ciclo.

Ejemplo:
• Mov cx,25
• Int 21h
• loop
Existen 5 tipos de ciclos predefinidos en ensamblador

LOOP
E
Esta función decrementa el valor del registro contador CX, si el
valor contenido en CX es cero y ZF es diferente de uno ejecuta
la siguiente instrucción, en caso contrario transfiere el control a
la ubicación definida por la etiqueta utilizada al momento de
declarar el ciclo.
Ejemplo:
• ciclo
• Int 21h
• loope
Existen 5 tipos de ciclos predefinidos en ensamblador

LOOPN
E
Esta función decrementa el valor del registro contador CX, si el
valor contenido en CX es cero y ZF es diferente de cero
ejecuta la siguiente instrucción, en caso contrario transfiere el
control a la ubicación definida por la etiqueta utilizada al
momento de declarar el ciclo, esta es la operación contraria a
loope. Ejemplo:
• ciclo
• Int 21h
• loopne
Existen 5 tipos de ciclos predefinidos en ensamblador

LOOPZ

Esta función decrementa el valor del registro contador CX, si el


valor contenido en CX es cero y ZF es diferente de uno ejecuta la
siguiente instrucción, en caso contrario transfiere el control a la
ubicación definida por la etiqueta utilizada al momento de
declarar el ciclo.

Ejemplo:
• ciclo
• Int 21h
• loopZ
Existen 5 tipos de ciclos predefinidos en ensamblador

LOOPN
Z
Esta función decrementa el valor del registro contador CX, si el
valor contenido en CX es cero y ZF es diferente de cero ejecuta
la siguiente instrucción, en caso contrario transfiere el control a la
ubicación definida por la etiqueta utilizada al momento de
declarar el ciclo, esta es la operación contraria a loopz..

Ejemplo:
• ciclo
• Int 21h
• loopnZ
2.4 Comparación y prueba
La comparación y prueba son instrucciones especiales con las que cuenta el
microprocesador, estas son CMP y TEST respectivamente.

Comparación (CMP):

Esta instrucción compara los dos valores que se le den como parámetros y
modifica las banderas de signo (SF), de cero (ZF) y de acarreo (CF) según sea
necesario.

Ejemplo:
CMP ah,10h: Compara el valor almacenado en el registro ah con el valor 10
hexadecimal.
TEST

Verifica que los valores que se le introduzcan como parámetros


sean iguales realizando la operación lógica AND, no almacena
ningún resultado pero modifica banderas según sea necesario.
Ejemplo:
MOV AL, 0x0F ; mueve el valor 0x0F (00001111 en binario) al registro AL
TEST AL, 0x09 ; realiza una prueba lógica entre AL y 0x09 (00001001 en binario)
JZ etiqueta1 ; salta a etiqueta1 si la prueba es cero (es decir, los bits 0 y 3 son cero)
; el código aquí se ejecutará si los bits 0 y 3 de AL no son cero
JMP etiqueta2 ; salta a etiqueta2
etiqueta1:
; el código aquí se ejecutará si los bits 0 y 3 de AL son cero
etiqueta2:
; el código aquí se ejecutará siempre después de la prueba
2.5 Saltos
Los saltos son instrucciones que permiten al programador cambiar el orden de ejecución del
programa según sea necesario, dentro de ensamblador existen dos tipos de salto principales:
condicionales e incondicionales.

Saltos Incondicionales:

Los saltos incondicionales se utilizan mediante la instrucción JMP, la cual transfiere el control a
la línea especificada después de la palabra JMP, la cual puede ser un valor directo o una
etiqueta.
Ejemplo:
salto: Etiqueta a la que se hará referencia para el salto incondicional.
JMP Salto: Instrucción que indica que el flujo del programa continuara desde la ubicación de la
etiqueta Salto.

Saltos Condicionales:

Los saltos condicionales transfieren el control del programa a la ubicación que se les dé como
parámetro si al hacer una comparación se cumple la condición establecida en el salto, los saltos
condicionales son los siguientes:
2.6 Ciclos condicionales

Dentro de la programación existen ocasiones en la que es


necesario ejecutar una misma instrucción un cierto número de
veces, el cual no siempre es conocido por el programador o puede
cambiar durante la ejecución del programa, para lo que existen los
ciclos condicionales, los cuales una vez se cumpla la condición
que tienen establecida, dejaran de ejecutarse como ciclo y
permitirán que el programa continúe con su flujo normal .
En ensamblador no existen de forma predefinida estos ciclos, pero
pueden crearse haciendo uso de los saltos incondicionales,
generando ciclos que se repetirán hasta que se cumpla la
condición definida por el programador.

Ejemplos…
mov al, 0: Asigna el valor cero al
registro al.

ciclo: Etiqueta a la que se hará


referencia para el ciclo condicional.

INC al: Aumenta en 1 el valor del


registro al.

CMP al, bl : Comparación entre el


valor almacenado en al y el
almacenado en bl.

JL ciclo: Instrucción que indica que el


flujo del programa continuara desde la
ubicación de la etiqueta ciclo si el valor
de al es menor al de bl.
2.7 Incremento y decremento

Instrucciones de conteo, se utilizan para decrementar o incrementar el contenido


de los contadores.
INC:
Consiste en sumar uno al contenido de un registro que se especifica en la
instrucción. Su esquema es:
R ← R+1
Donde “R” representa un registro cualquiera de 8 a 16 bits. Si se trata de un
registro doble (de 16 bits) se incrementa el registro de orden bajo (por ejemplo,
en el “BC” se incrementa “C”), y si ello hace que este pase a valer “0”, se
incrementa también el desorden alto.

Propósito: Incrementar el operando.


INC destino
La instrucción suma 1 al operando destino y guarda el resultado en el mismo
operando destino.
DEC:
Es la inversa de la anterior, consiste en restar uno al contenido de un registro. Su
esquema es:
R←
R-1Si se trata de un registro doble, se decrementa el de orden bajo y, si esto
hace que pase a valer 255 (FFh), se decremento también el de orden alto.

Propósito: Decrementar el operando Sintaxis:

DEC destino
Esta operación resta 1 al operando destino y almacena el nuevo valor en el
mismooperando

También podría gustarte