Está en la página 1de 15

Instituto Tecnológico Superior de Teposcolula

“2020, Año de Leona Vicario, Benemérita Madre de la Patria”

TECNOLÓGICO NACIONAL DE MÉXICO


INSTITUTO TECNOLÓGICO SUPERIOR DE
TEPOSCOLULA

RESUMEN: SUBTEMAS UNIDAD 2

Asignatura: Lenguajes de Interfaz

Docente: Ing. David Vázquez Ayala

Carrera: Ingeniería en Sistemas Computacionales.

Semestre: 6°.

Grupo: “A”.

Integrantes del equipo: Numero de control:

Liliana Quero 1820164

Oaxaca; Oax. A 28 de abril de 2021

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 1
Introducción

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 2
Ensamblador (y ligador) a utilizar.
Aunque la sintaxis entre ensambladores es parecida, es necesario mencionar que los
ejemplos de este manual están hechos para las siguientes herramientas:

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.
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.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 3
Ciclos Numéricos.
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, aunque también se pueden crear


ciclos personalizados por medio de instrucciones de salto las cuales se verán en la
sección 2.6 de este manual.

Los ciclos predefinidos de ensamblador son los siguientes:

LOOP:
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: Número de veces que se repetirá el ciclo, en este caso 25.
 ciclo:  Etiqueta que se utilizará como referencia para el ciclo loop.
 int 21h: Instrucción contenida dentro del ciclo (puede contener más de una
instrucción).
 loop:  Ciclo loop que transferirá el control a la línea de la etiqueta ciclo en caso de
que CX no sea cero.

LOOPE:
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: Etiqueta que se utilizará como referencia para el ciclo loope.
int 21h: Instrucción contenida dentro del ciclo (puede contener más de una
instrucción).
loope: Ciclo loope que transferirá el control a la línea de la etiqueta ciclo en caso de
que CX no sea cero y ZF sea igual a uno.

LOOPNE:
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.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 4
Ejemplo:
ciclo: Etiqueta que se utilizará como referencia para el ciclo loopne.
int 21h: Instrucción contenida dentro del ciclo (puede contener más de una
instrucción).
loopne: Ciclo loopne que transferirá el control a la línea de la etiqueta ciclo en caso
de que CX no sea cero y ZF sea igual a cero.

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: Etiqueta que se utilizará como referencia para el ciclo loopz.
int 21h: Instrucción contenida dentro del ciclo (puede contener más de una
instrucción).
loopz: Ciclo loopz que transferirá el control a la línea de la etiqueta ciclo en caso de
que CX no sea cero y ZF sea igual a uno.

LOOPNZ:
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: Etiqueta que se utilizará como referencia para el ciclo loopnz.
int 21h: Instrucción contenida dentro del ciclo.
loopnz: Ciclo loopnz que transferirá el control a la línea de la etiqueta ciclo en
caso de que CX no sea cero y ZF sea igual a cero.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 5
Captura básica de cadenas.
Dentro del lenguaje ensamblador no existe el tipo de dato cadena (string en otros
lenguajes), por lo que para utilizarla es necesario tratar a las cadenas como un conjunto
de caracteres reservados bajo el nombre de una sola variable.

El lenguaje ensamblador cuenta con instrucciones que por su naturaleza sirven para el
manejo de cadenas, estas son:

MOVSB: Mueve un byte desde una localidad de memoria hasta otra.

MOVSW: Mueve una palabra desde una localidad de memoria hasta otra.

LODSB: Carga en la parte baja del registro acumulador (AL) el valor de la localidad de
memoria determinada por DS:SI.

LODSW: Carga en el registro acumulador (AX) el valor de la localidad de memoria


determinada por DS:SI.

Ejemplo:

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 6
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.

Prueba (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:
TEST al, 1: Verifica que el valor almacenado en al sea 1.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 7
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.
También se puede contar como un salto incondicional la instrucción CALL, la cual llama
un procedimiento y al terminarla devuelve el control a la línea siguiente de donde se inició
la llamada a procedimiento.

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:

JA (Jump if Above):
Salta cuando el valor es superior, su condición es equivalente al salto JNBE (Jump if Not
Below or Equal).

JAE (Jump if Above or Equal):


Salta cuando el valor es superior o igual, su condición es equivalente al salto JNB (Jump
if Not Below).

JB (Jump if Below):
Salta cuando el valor es menor, su condición es equivalente al salto JNAE (Jump if Not
Above or Equal).

JBE (Jump if Below or Equal):


Salta cuando el valor es menor o igual, su condición es equivalente al salto JNA (Jump if
Not Above).

JE (Jump if Equal):
Salta cuando el valor es igual.

JZ (Jump if Zero):
Salta cuando el valor es cero.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 8
JNE (Jump if Not Equal):
Salta cuando el valor no es igual.

JNZ (Jump if Not Zero):


Salta cuando el valor no es cero.

JG (Jump if Greater):
Salta cuando el valor es mayor, su condición es equivalente al salto JNLE (Jump if Not
Less or Equal).

JGE (Jump if Greater or Equal):


Salta cuando el valor es mayor o igual, su condición es equivalente al salto JNL (Jump if
Not Less).

JL (Jump if Less):
Salta cuando el valor es menor, su condición es equivalente al salto JNGE (Jump if Not
Greater or Equal).

JLE (Jump if Less or Equal):


Salta cuando el valor es menor o igual, su condición es equivalente al salto JNG (Jump if
Not Greater).

Ejemplo:
 Salto:  Etiqueta a la que se hará referencia para el salto condicional.
 CMP al, bl: Comparación entre el valor almacenado en al y el almacenado en bl.
 JG Salto: Instrucción que indica que el flujo del programa continuara desde la
ubicación de la etiqueta Salto si el valor de al es mayor al de bl.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 9
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.

Ejemplo:
 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.

Incremento Y Decremento.
En ensamblador existen dos instrucciones que cumplen con el propósito de aumentar o
reducir el valor contenido dentro de un registro.

INC: Incrementa en uno el valor contenido dentro del registro que se le dé como
parámetro.

INC al: Aumenta en 1 el valor del registro al.

DEC: Reduce en uno el valor contenido dentro del registro que se le dé como parámetro.

DEC al: Reduce en 1 el valor del registro al.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 10
Captura De Cadenas Con Formato.
El capturar cadenas con formato permite el movimiento, comparación o búsqueda rápida
entre bloques de datos, las instrucciones son las siguientes:

MOVC:
Esta instrucción permite transferir un carácter de una cadena.

MOVW:
Esta instrucción permite transferir una palabra de una cadena.

CMPC:
Este comando es utilizado para comparar un carácter de una cadena.

CMPW:
Esta instrucción es utilizada para comparar una palabra de una cadena.

SCAC:
Esta instrucción permite buscar un carácter de una cadena.

SCAW:
Esta instrucción se utiliza para buscar una palabra de una cadena.

LODC:
Esta instrucción permite cargar un carácter de una cadena.

LODW:
Esta instrucción es utilizada para cargar una palabra de una cadena.

STOC:
Esta instrucción permite guardar un carácter de una cadena.

STOW:
Esta instrucción es utilizada para guardar una palabra de una cadena.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 11
Instrucciones Aritméticas.
Dentro de ensamblador se pueden llevar a cabo las 4 instrucciones aritméticas básicas,
cada una de ellas cuenta con su propia función:

Instrucción de Suma ADD:


Suma los operandos que se le dan y guarda el resultado en el primer operando.
Ejemplo
 ADD al, bl: Suma los valores guardados en los registros al y bl, almacenando el
resultado en al.

Instrucción de Resta SUB:


Resta el primer operando al segundo y almacena el resultado en el primero.
Ejemplo:
 SUB al, bl: Resta el valor de AL al de BL y almacena el resultado en AL.

Instrucción de multiplicación MUL:


Multiplica el contenido del acumulador por el operando, a diferencia de los métodos
anteriores, solo es necesario indicar el valor por el que se multiplicará, ya que el
resultado siempre es almacenado en el registro AX.
Ejemplo:
 MUL DX: Multiplica el valor del registro acumulador (AX) por el de DX.

Instrucción de división DIV:


Divide un numero contenido en el acumulado entre el operando fuente, el cociente se
guarda en AL o AX y el resto en AH o DX según el operando sea byte o palabra
respectivamente. Es necesario que DX o AH sean cero antes de la operación por lo que
es necesario utilizar el ajuste de división antes de la instrucción DIV.
Ejemplo:
 AAM: Ajuste ASCII para la división.
 DIV  bl: Instrucción que divide los valores en ax y bl.

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 12
Manipulación De la pila.
La pila es un grupo de localidades de memoria que se
reservan para contar con un espacio de almacenamiento
temporal cuando el programa se está ejecutando.

La pila es una estructura de datos del tipo LIFO (Last In


First Out), esto quiere decir que el último dato que es
introducido en ella, es el primero que saldrá al sacar
datos de la pila.
Para la manipulación de la pila ensamblador cuenta con
dos instrucciones específicas, las cuales son las
siguientes:
Push:
Esta instrucción permite almacenar el contenido del operando dentro de la última posición
de la pila.
Ejemplo:
Push ax    El valor contenido en ax es almacenado en el último espacio de la pila.

Pop:
Esta instrucción toma el último dato almacenado en la pila y lo carga al operando.
Ejemplo:
Pop bx       El valor contenido en el último espacio de la pila se almacena en el registro

El siguiente ejemplo muestra como implementar la instrucción XCHG por medio de las
instrucciones Push y Pop. Recuerde que la instrucción XCHG intercambia el contenido de
sus dos operandos. 

.COMMENT 
Programa: PushPop.ASM 
Descripción: Este programa demuestra el uso de las instrucciones para el
manejo de la pila, implementando la instrucción XCHG con Push y Pop 
MODEL tiny 
.CODE 
Inicio: ;Punto de entrada al programa 
Mov AX,5 ;AX=5 
Mov BX,10 ;BX=10 
Push AX ;Pila=5 
Mov AX,BX ;AX=10 
Pop BX ;BX=5 
Mov AX,4C00h ;Terminar programa y salir al DOS 
Int 21h ; 
END Inicio 
END

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 13
Obtención De Cadena Con Representación Decimal.
En este modo, los datos son proporcionados directamente como parte de la instrucción.
Ejemplo:
Mov AX,34h ;
Copia en AX el número 34h hexadecimal Mov CX,10 ;
Copia en CX el número 10 en decimal
.COMMENT
Programa: PushPop.ASM
Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila,
implementando la instrucción XCHG con Push y Pop
MODEL tiny
.CODE
Inicio: Punto de entrada al programa
Mov AX,5 ;AX=5
Mov BX,10 ;BX=10
Push AX ;Pila=5
Mov AX,BX ;AX=10
Pop BX ;BX=5
Mov AX,4C00h ;Terminar programa y salir al DOS
Int 21h ;
END Inicio
END

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 14
CONCLUSIONES:
Realizado esta investigación nos damos cuenta que el lenguaje ensamblador es muy
complejo y no es sencillo de aprender, pero el leguaje ensamblador es y seguirá siendo
una de las herramientas de programación más utilizadas por todas las personas que
desean tener un mayor grado de comprensión sobre el funcionamiento de los
dispositivos.
Este lenguaje nos brinda todas las herramientas con las cuales nosotros podemos
innovar y seguir aprendiendo de ello.
El lenguaje ensamblador no ha sido relegado, en la actualidad existe una gran cantidad
de programas ensambladores que nos permiten programar en ambientes operativos
gráficos como Windows, Linux, iOS, entre otros.

Bibliografía:

 http://www.infor.uva.es/~cllamas/fi2/fi2-2.pdf
 Cecilio Blanco Viejo, Electró nica digital http://books.google.com.mx/books?
id=myOXwYAhOwgC&pg=PA209&dq=MEMORIA

 Rojas, A.; Ensamblador Bá sico; Ed. Computec; 2ł Edició n; 1995.

 Raúl Alcaraz Martínez, Aspectos hard- ware y software del microprocesador 6800
https://books.google.com.mx/books?
id=p07XAgAAQBAJ&pg=PA36&dq=ensamblador+

Av. Tecnológico No. 1 Paraje El Alarcón San Pedro y San Pablo Teposcolula, Oaxaca, C.P. 69500
Tels. 953 537 85 55
e-mail: dir_dteposcolula@tecnm.mx www.tecnm.mx | www.itsteposcolula.edu.mx Página 15

También podría gustarte