Practico Nro 3
Practico Nro 3
Practico Nro 3
“TRABAJO DE INVESTIGACIÓN”
2022
VENTAJAS Y DESVENTAJAS DE PROGRAMACIÓN
ENSAMBLADOR
El lenguaje ensamblador o assembler es un lenguaje de programación de bajo nivel. Consiste
VENTAJAS
1. Velocidad .- Como trabaja directamente con el microprocesador al ejecutar un
programa, pues como este lenguaje es el más cercano a la máquina la computadora lo
procesa más rápido.
memoria porque no tiene que cargar librerías y demás como son los lenguajes de alto
nivel
3. Flexibilidad .- Es flexible porque todo lo que puede hacerse con una máquina,
puede hacerse en el lenguaje ensamblador de esta máquina; los lenguajes de alto nivel
tienen en una u otra forma limitantes para explotar al máximo los recursos de la
máquina. O sea que en lenguaje ensamblador se pueden hacer tareas específicas que en
un lenguaje de alto nivel no se pueden llevar a cabo porque tienen ciertas limitantes
que no se lo permiten
DESVENTAJAS
2. Programas fuente grandes .- Por las mismas razones que aumenta el tiempo, crecen los
3. Peligro de afectar recursos inesperadamente .- Que todo error que podamos cometer,
o todo riesgo que podamos tener, podemos afectar los recursos de la máquina, programar en
este lenguaje lo más común que pueda pasar es que la máquina se bloquee o se reinicialice.
4. Falta de portabilidad.- Porque para cada máquina existe un lenguaje ensamblador; por
una máquina y luego llevar los programas a otros sistemas operativos o modelos
REGISTROS DEL MICROPROCESADOR
Sirven para indicar el estado actual de la maquina y el resultado del procesamiento. De los 16
bits de registro de bandera 9 son comunes a toda la familia de los procesadores 8086.
ensamblador minimizar las referencias a memoria principal por medio de la optimización de uso
de registros
Registros de control y estado: Son utilizados por la unidad de control para controlar el
funcionamiento del procesador y por programas privilegiados del sistema operativo para
Los registros están divididos en seis grupos los cuales tienen un fin especifico. Los registros se
dividen en:
• Registros de segmento
• Registros apuntadores
• Registro índice
• Registro de bandera.
REGISTROS DE SEGMENTO.
Un registro de segmento se utiliza para alinear en un límite de párrafo o dicho de otra forma
• Registro CS
• Registro DS
• Registro SS
• Registro ES
• Registro FS y GS
REGISTRO APUNTADOR DE INSTRUCCIONES. (IP)
REGISTROS APUNTADORES.
Los registros apuntadores están asociados con el registro SS y permiten al procesador accesar
• El registro SP
• El registro BP
Los registros de propósitos generales AX, BX, CX y DX son los caballos de batalla o las
herramientas del sistema. Son los únicos en el sentido de que se puede direccionarlos como
una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte "alta", y el
ultimo byte de la derecha es la parte "baja" por ejemplo, el registro CX consta de una parte
CH (alta) y una parte CL (baja), y usted puede referirse a cualquier parte por su nombre.
REGISTROS AX.
multiplicar, dividir y traducir suponen el uso del AX. También, algunas operaciones generan
REGISTRO BX.
El BX es conocido como el registro base ya que es el único registro de propósitos generales que
pueden ser unos índices para direccionamiento indexado. También es común emplear al BX para
cálculos.
REGISTRO CX.
El CX es conocido como el registro contador. Puede contener un valor para controlar el número
de veces que un ciclo se repite o un valor para corrimiento de bits, hacia la derecha o hacia la
REGISTRO DX.
trabajando juntos. Puede usar los registros de propósitos para suma y resta de cifras de 8, 16,
32 bits.
REGISTRO ÍNDICE.
Los registros SI y DI están disponibles para direccionamientos indexados y para sumas y restas.
REGISTRO DE BANDERA.
Los registros de banderas sirven parar indicar el estado actual de la maquina y el resultado del
Las banderas más comunes son las siguientes: OF (Over flow flag, desbordamiento).
Indica el desbordamiento de un bit de orden alto (más a la izquierda) después de una operación
aritmética.
Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de
caracteres.
Indica que una interrupción externa, como la entrada desde el teclado sea procesada
o ignorada.
TF (Trap flag, Trampa).
Examina el efecto de una instrucción sobre los registros y la memoria. Los programas
depuradores como DEBUG, activan esta bandera de manera que pueda avanzar en la ejecución
Contiene un acarreo externo del bit 3 en un dato de 8 bits, para aritmética especializada PF
Indica paridad par o impar de una operación en datos de ocho bits de bajo orden (más a la
derecha).
Contiene el acarreo de orden más alto (más a la izquierda) después de una operación
aritmética; también lleva el contenido del último bit en una operación de corrimiento o
rotación.
TIPOS DE REGISTROS FUNCIÓN
Registros de Propósito General Son los caballos de batalla del sistema y pueden ser
direccionados como una palabra o como una parte de
un byte. Los procesadores 80386 y posteriores
permiten el uso de todos los registros de propósitos
general, más sus versiones ampliadas de 32 bits
llamados EAX, EBX,ECX y EDX.
(linkeador). El enlazador toma este código objeto y genera el código ejecutable para el
programa, y lo entrega al cargador. Algunas veces los programas grandes se dividen en los
El resultado de la compilación de estos programas se denomina fichero objeto (object file) y por
el último el resultado del enlazado fichero ejecutable (executable file). Es este último el único
que puede entender un ordenador sin la presencia del compilador. En el caso de los lenguajes
Consiste en la traducción del código fuente (archivo.asm) en código objeto (archivo .obj) y la
generación de un archivo intermedio. Cuando se ensambla se crean dos extensiones .obj y .lst.
Para enlazar un programa en caso de ser por medio de doxbox se entra en la carpeta de donde
se encuentra el ensamblador y el linkeador (enlazador)
Luego de abrir la carpeta TD se coloca el siguiente comando para ensamblar el código TASM
/zd/zi nombre y le dan enter no les debe arrojar errores ni nada si por alguna razón les arroja
un error les dirá la línea en la cual da el error y hasta que no lo corrijan no lo ensamblará
Enlazar
El programa para enlazar toma el código objeto (.obj) generado por el ensamblado y le añade
los encabezados apropiados para crear otro archivo que va hacer el ejecutable y crea las
extensiones .exe y .map
Para linkearlo se escribe el siguiente comando TLINK /v/s nombre y enter
Ejecutar
Para ejecutar, el programa crea un psp inmediatamente antes de que el programa este cargado
en memoria.
Para ver la ejecución del programa paso a paso y lo que va haciendo en cada instrucción se
entra al turbo debugger se coloca td nombre y entre y abre una pantalla así
Para ejecutar paso a paso F7, para cambiar de pantalla de las cuarto que sales F6, para ejecutar
el programa completo F9
LOS COMANDOS DE ENSAMBLADOR DEBUG
El programa DEBUG
El DOS viene con un programa llamado DEBUG que es utilizado para probar y depurar
Programas ejecutables.
Características de DEBUG:
• Despliega todo el código del programa y los datos en forma hexadecimal.
• Permite ejecutar un programa en modo de paso sencillo (un paso a la vez) de manera
Que se pueda ver el efecto de cada instrucción sobre las localidades de memoria y los
Registros.
Comandos de DEBUG
Los comandos que proporciona DEBUG nos permiten realizar diferentes operaciones
Útiles.
La mayoría de los comandos de DEBUG ejecutan una acción y vuelven al indicador, pero
Si es un comando largo, como puede ser mostrar un trozo grande de código, puede
El paquete Turbo Assembler vino junto con el enlazador Turbo Linker, y era interoperable
con el depurador Turbo Debugger. Para la compatibilidad con el ensamblador Microsoft
Macro Assembler (MASM) de Microsoft, TASM también podía ensamblar los archivos de código
fuente del MASM por medio de su modo MASM. Al igual que este, es un ensamblador de alto nivel.
Link de Descarga
https://sourceforge.net/projects/guitasm8086/
Procedimiento:
2. Instalamos el programa
INSTRUCCIONES Y DIRECCIONAMIENTO DEL
MICROPROCESARO 8088/8086
El 8086 es un microprocesador de 16 bits, tanto en lo que se refiere a su estructura como en sus
conexiones externas, mientras que el 8088 es un procesador de 8 bits que internamente es casi
idéntico al 8086. La única diferencia entre ambos es el tamaño del bus de datos externo. Intel
trata esta igualdad interna y desigualdad externa dividiendo cada procesador 8086 y 8088 en dos
sub-procesadores. O sea, cada uno consta de una unidad de ejecución (EU: Execution Unit) y una
unidad interfaz del bus (BIU: Bus Interface Unit). La unidad de ejecución es la encargada de
realizar todas las operaciones mientras que la unidad de interfaz del bus es la encargada de
acceder a datos e instrucciones del mundo exterior. Las unidades de ejecución son idénticas en
ambos microprocesadores, pero las unidades de interfaz del bus son diferentes en varias
cuestiones, como se desprende del siguiente diagrama en bloques: