SlideShare una empresa de Scribd logo
UNIVERSIDAD FERMÍN TORO
VICERRECTORADO ACADÉMICO
FACULTAD DE INGENIERIA
ESCUELA DE COMPUTACION
Edianny Adan
CI.26370562
ASSEMBLER 8086
Ciclo de desarrollo
Edición
Ensamble
Enlace
Depuración
Archivo de programa fuente
Archivo de programa objeto
Archivo de programa ejecutable
Archivo de programa ejecutable
Modificacion en
case de error
El archivo ejecutable debe ser depurado para descubrir errores lógicos. La
depuración puede involucrar las siguientes técnicas:
• Ejecutar el programa para estudiar su entrada y su salida.
• Estudiar archivos fuente (.ASM) y de listado (.LST).
• Utilizar el programa CREF para crear un archivo de listado de referencias
cruzadas(.REF)
• Utilizar un depurador, como Turbo Debugger de Borland Int'l, para seguir la
ejecución del programa. Si algún error lógico es encontrado durante la
depuración, deberá retornarse al primer paso(edición) para corregir el código
fuente
ASSEMBLER 8086
En general, las directivas son usadas para especificar la organización de
memoria, realizar ensamblado condicional, definir macros, entrada, salida,
control de archivos, listados, cross-reference, direcciones e información acerca
de la estructura de un programa y las declaraciones de datos. El apéndice D
proporciona una lista completa de estas directivas.
•Conjunto de instrucciones. Dentro de las directivas más importantes, tenemos
las que establecen el conjunto de instrucciones a soportar para un
microprocesador en especial:
•.8086(default).- Activa las instrucciones para el 8086 y 8088 e inhibe las del
80186 y 80286.
•.8087(default).- Activa instrucciones para el 8087 y desactiva las del 80287.
•.186.- Activa las instrucciones del 80186
•.286c.- Activa instrucciones del 80286 en modo no protegido.
•.289p.- Activa instrucciones del 80286 en modo protegido y no protegido
Las directivas iniciales de un programa
ensamblador .
ASSEMBLER 8086
Directiva
DB 1 byte
Define
DW 2 bytes = una palabra
DD 4 bytes = una doble palabra
DF, DP 6 bytes = un apuntador de palabra far
DQ 8 bytes = un quadpalabra
DT 10 bytes
ASSEMBLER 8086
¿Que es el lenguaje ensamblador?
El lenguaje ensamblador es un lenguaje de
programación que está dedicado a escribir
programas de bajo nivel; ejerce control
sumamente directo al hardware, la palabra
bajo hace referencia a una reducida
abstracción entre lo que es el lenguaje y el
hardware; los programas de bajo nivel son
hechos para controladores, aplicaciones
especializadas en tiempo real, entre otras.
El lenguaje ensamblador trabaja
directamente con el microprocesador de
una máquina
ASSEMBLER 8086
Estructura de un programa ensamblador
en el lenguaje ensamblador las líneas de código constan de dos partes, la
primera es el nombre de la instrucción que se va a ejecutar y la segunda son los
parámetros del comando u operando. Para hacer la terea del programador mas
grata, se unen algunas convenciones. Cada uno puede adoptar la que mas le
agrade y le ayuden a ser mas productivo. En general las convenciones son
cualquier acción que facilita la revisión y comprensión de un programa
ASSEMBLER 8086
ADD ah bh Aquí "ADD" es el comando a ejecutar (en este caso una
adición o suma) y tanto "ah" como "bh" son los parámetros. El nombre de
las instrucciones en este lenguaje puede estar formado de 2 a 6 letras, a
estas instrucciones también se les llama nombres mnemónicos o códigos
de operación, ya que representan alguna función que habrá de realizar el
procesador. Existen algunos comandos que no requieren parámetros para
su operación, así como otros que requieren solo un parámetro. Algunas
veces se utilizarán las instrucciones como sigue: ADD al,[170] Los
corchetes en el segundo parámetro nos indican que vamos a trabajar con
el contenido de la casilla de memoria número 170 y no con el valor 170, a
esto se le conoce como direccionamiento directo (en la instrucción viene
la dirección del objeto).
ASSEMBLER 8086
Ejemplo
Una interrupción es una instrucción que detiene la
ejecución de un programa para permitir el uso de la UCP a
un proceso prioritario. Una vez concluido este último
proceso se devuelve el control a la aplicación anterior
ASSEMBLER 8086
Interrupción
Interrupción (mov ah,09h) es lo que nos permite desplegar el
mensaje.
Las interrupciones 21h, 09h, 10h.
Interrupción 21H
Propósito: Llamar a diversas funciones del DOS.
Sintaxis: Int 21H
Nota: Cuando trabajamos en MASM es necesario especificar que el valor que
estamos utilizando es hexadecimal. Esta interrupción tiene varias funciones,
para acceder a cada una de ellas es necesario que el el registro AH se
encuentre el número de función que se requiera al momento de llamar a la
interrupción.
ASSEMBLER 8086
Función 09H
Uso: Despliega una cadena de caracteres en la pantalla.
Registros de llamada: AH = 09H DS:DX = Dirección de inicio de una cadena de caracteres
Registros de retorno: Ninguno.
Esta función despliega los caracteres, uno a uno, desde la dirección indicada en el registro
DS:DX hasta encontrar un carácter $, que es interpretado como el final de la cadena. Se
recomienda utilizar la función 40H en lugar de esta función.
Función 40H
Uso: Escribir a un dispositivo o a un archivo.
Registros de llamada: AH = 40H BX = Vía de comunicación CX = Cantidad de bytes a escribir
DS:DX = Dirección del inicio de los datos a escribir
Registros de retorno: CF = 0 si no hubo error AX = Número de bytes escritos CF = 1 si hubo
error AX = Código de error
El uso de esta función para desplegar información en pantalla se realiza dándole al registro BX
el valor de 1 que es el valor pre asignado al video por el sistema operativo MS-DOS.
Función 01H
Uso: Leer un carácter del teclado y desplegarlo.
Registros de llamada: AH = 01H Registros de retorno: AL = Carácter leído Con esta función es
muy sencillo leer un carácter del teclado, el código hexadecimal del carácter leído se guarda en
el registro AL. En caso de que sea un carácter extendido el registro AL contendrá el valor de 0 y
será necesario llamar de nuevo a la función para obtener el código de este carácter.
ASSEMBLER 8086
Propósito: Llamar a diversas funciones de video del BIOS.
Sintaxis:
Int 10H
Esta interrupción tiene diversas funciones, todas ellas nos sirven para controlar la
entrada y salida de video, la forma de acceso a cada una de las opciones es por
medio del registro AH.
Funciones :
Función 02H
Uso: Posiciona el cursor en la pantalla dentro de las coordenadas válidas de texto.
Registros de llamada: AH = 02H BH = Página de video en la que se posicionará el
cursor. DH = Fila DL = Columna Registros de retorno: Ninguno. Las posiciones
de localización del cursor son definidas por coordenadas iniciando en 0,0, que
corresponde a la esquina superior izquierda hasta 79,24 correspondientes a la
esquina inferior derecha. Tenemos entonces que los valores que pueden tomar los
registros DH y DL en modo de texto de 80 x 25 son de 0 hasta 24 y de 0 hasta 79
respectivamente.
Interrupción 10H
ASSEMBLER 8086
. Función 09H
Uso: Desplegar un carácter un determinado número de veces con un atributo definido
empezando en la posición actual del cursor.
Registros de llamada: AH = 09H AL = Carácter a desplegar BH = Página de video en
donde se desplegará BL = Atributo a usar Número de repeticiones.
Registros de retorno: Ninguno Esta función despliega un carácter el número de veces
especificado en CX pero sin cambiar la posición del cursor en la pantalla.
Función 0AH
Uso: Desplegar un carácter en la posición actual del cursor. Registros de llamada: AH =
0AH AL = Carácter a desplegar BH = Página en donde desplegar BL = Color a usar (sólo
en gráficos). CX = Número de repeticiones
Registros de retorno: Ninguno. La única diferencia entre esta función y la anterior es que
ésta no permite modificar los atributos, simplemente usa los atributos actuales. Tampoco se
altera la posición del cursor con esta función.
Función 0EH
Uso: Desplegar un carácter en la pantalla actualizando la posición del cursor. Registros de
llamada: AH = 0EH AL = Carácter a desplegar BH = Página donde se desplegara el
carácter BL = Color a usar (solo en gráficos)
ASSEMBLER 8086
Código para leer carácter con eco
mov ah,01h ;petición de leer carácter
int 21h ;llama al DOS
la función 01h indica la operación para leer un carácter desde el
teclado, carácter con eco quiere decir: que cuando pulsas un carácter
se imprime en la pantalla enseguida
Código para leer carácter sin eco
mov ah,07h ;petición de leer carácter
int 21h ;llama al DOS
la función 07h o también 08h ambas indica la operación para leer un
carácter desde el teclado, carácter sin eco quiere decir: que cuando pulsas
un carácter no es impreso el carácter pulsado hasta que se manda imprimir
con otra función
Las instrucciones para leer un carácter de
pantalla.
ASSEMBLER 8086
Ejemplo: Suma el 2793H y el 3182H y guarda el resultado en la locación de
memoria 2050H y 2051H. Suponga que los números se encuentran en BC y DE
respectivamente
Condiciones Iníciales
Memória
B 27 93 C 2050 XX
D31 82 E 2051 XX
LD A,C ADD A,E A 93 XX F
A 15 CY =1 F 93H + 82H =115H
LD L,A LD A, H 15 L 1H + 31H + 27H =59H
D ADC A, A 31 CY =1 F
LD H,A LD
(2050H),HL
H 59 15 L
A 59 CY =0 F
2050 15 H
2051 59 H
Las instrucciones para sumar y restar 2 números
ASSEMBLER 8086
.Model small
.satck 100
.data
Variable1 db 0
Variable2 db 0
Linea db 13,10, “$”
Num1 db 13,10 , “ingrese numero 1: ” ; “$”
Num2 db 13,10 , “ingrese numero 2 : ”; “$’
msn1 db 13,10 , “suma : “ ; “$”
msn2 db 13,10 , “resta : ” ; “$”
.code
.startup
Mov ah .09h
Lea dx
Int 21h
Call leer
Sub al, 30h
Mov variable , al
Mov ah, 09h
Lea dx , num2
Int 21h
Call leer
Sub al , 30h
Mov variable2, al
Mov bl, variable 2
;Suma
Add variable 1
Mov ah, 09h
Lea dx, msn1
Int 21h
Mov dl,bl
Add dl, 30h
Mov ah, 02h
Int 21h
.exit
ASSEMBLER 8086
ASSEMBLER 8086
Edianny.adan.programacion.docx
Edianny.adan.programacion.docx

Más contenido relacionado

La actualidad más candente

Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
quesada_diego
 
Lecture 06 relational algebra and calculus
Lecture 06 relational algebra and calculusLecture 06 relational algebra and calculus
Lecture 06 relational algebra and calculus
emailharmeet
 
Arreglo de punteros
Arreglo de punterosArreglo de punteros
Arreglo de punteros
pedreror1
 
Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01
Emerson Garay
 

La actualidad más candente (20)

Bibliotecas de C
Bibliotecas de CBibliotecas de C
Bibliotecas de C
 
Punteros y funciones
Punteros y funciones Punteros y funciones
Punteros y funciones
 
Comandos java
Comandos javaComandos java
Comandos java
 
7.2. funciones sql
7.2.  funciones sql7.2.  funciones sql
7.2. funciones sql
 
SQL subquery
SQL subquerySQL subquery
SQL subquery
 
Pilas estáticas. IESIT
Pilas estáticas. IESITPilas estáticas. IESIT
Pilas estáticas. IESIT
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Algoritmos ejemplos
Algoritmos ejemplosAlgoritmos ejemplos
Algoritmos ejemplos
 
Colas estáticas. IESIT
Colas estáticas. IESITColas estáticas. IESIT
Colas estáticas. IESIT
 
Lecture 06 relational algebra and calculus
Lecture 06 relational algebra and calculusLecture 06 relational algebra and calculus
Lecture 06 relational algebra and calculus
 
Arreglo de punteros
Arreglo de punterosArreglo de punteros
Arreglo de punteros
 
SQL Join Basic
SQL Join BasicSQL Join Basic
SQL Join Basic
 
Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01Arreglos en pseudocodigo 01
Arreglos en pseudocodigo 01
 
Treinamento Oracle Forms
Treinamento Oracle FormsTreinamento Oracle Forms
Treinamento Oracle Forms
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Programación 1: cadenas en C
Programación 1: cadenas en CProgramación 1: cadenas en C
Programación 1: cadenas en C
 
Manejo de triggers en sql server
Manejo de triggers en sql server Manejo de triggers en sql server
Manejo de triggers en sql server
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Plsql lab mannual
Plsql lab mannualPlsql lab mannual
Plsql lab mannual
 

Similar a Edianny.adan.programacion.docx

Debug PaulinaChacon
Debug PaulinaChaconDebug PaulinaChacon
Debug PaulinaChacon
Pau22
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
Carlos Pastorino
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
Gustavo Davila
 

Similar a Edianny.adan.programacion.docx (20)

assembler
assembler assembler
assembler
 
Debug PaulinaChacon
Debug PaulinaChaconDebug PaulinaChacon
Debug PaulinaChacon
 
Registros de la cpu
Registros de la cpuRegistros de la cpu
Registros de la cpu
 
Emsamblador
EmsambladorEmsamblador
Emsamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
PROCESAMIENTO EN PANTALLA Y TECLADO BASICO
PROCESAMIENTO EN PANTALLA Y TECLADO BASICOPROCESAMIENTO EN PANTALLA Y TECLADO BASICO
PROCESAMIENTO EN PANTALLA Y TECLADO BASICO
 
Tutorial ensamblador
Tutorial ensambladorTutorial ensamblador
Tutorial ensamblador
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensamblador
 
Estructura .COM
Estructura .COMEstructura .COM
Estructura .COM
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
Lenguaje Ensamblador
Lenguaje Ensamblador Lenguaje Ensamblador
Lenguaje Ensamblador
 
Modos de direccionamiento.pdf
Modos de direccionamiento.pdfModos de direccionamiento.pdf
Modos de direccionamiento.pdf
 
Lenguaje ensamblador y Estructura del CPU
Lenguaje ensamblador y Estructura del CPULenguaje ensamblador y Estructura del CPU
Lenguaje ensamblador y Estructura del CPU
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 
Práctica final tercer parcial
Práctica final  tercer parcialPráctica final  tercer parcial
Práctica final tercer parcial
 
Assembler
AssemblerAssembler
Assembler
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 

Más de Edianny Adan

Ejercicios de todas las estructuras
Ejercicios de todas las estructurasEjercicios de todas las estructuras
Ejercicios de todas las estructuras
Edianny Adan
 

Más de Edianny Adan (20)

Longitud
LongitudLongitud
Longitud
 
Revista
RevistaRevista
Revista
 
Ejerccios de fisica (1)
Ejerccios de fisica (1)Ejerccios de fisica (1)
Ejerccios de fisica (1)
 
Ejerccios de fisica
Ejerccios de fisicaEjerccios de fisica
Ejerccios de fisica
 
Integrales definidas
Integrales definidasIntegrales definidas
Integrales definidas
 
Practica3.
Practica3.Practica3.
Practica3.
 
Practica 7
Practica 7Practica 7
Practica 7
 
Practica6
Practica6Practica6
Practica6
 
Practica4
Practica4Practica4
Practica4
 
Practica5
Practica5Practica5
Practica5
 
Practica1,2
Practica1,2Practica1,2
Practica1,2
 
Estadistica
Estadistica Estadistica
Estadistica
 
Estadistica
Estadistica Estadistica
Estadistica
 
Algoritmo.c 1
Algoritmo.c 1Algoritmo.c 1
Algoritmo.c 1
 
Logaritmo.repetitivo
Logaritmo.repetitivoLogaritmo.repetitivo
Logaritmo.repetitivo
 
Edianny adan.ci26370562
Edianny adan.ci26370562Edianny adan.ci26370562
Edianny adan.ci26370562
 
estructura del computador
estructura del computador estructura del computador
estructura del computador
 
Actividad
ActividadActividad
Actividad
 
Actividad
ActividadActividad
Actividad
 
Ejercicios de todas las estructuras
Ejercicios de todas las estructurasEjercicios de todas las estructuras
Ejercicios de todas las estructuras
 

Último

matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
alberto891871
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
mesiassalazarpresent
 
Mecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporMecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vapor
alema3825
 
MODULO DE MATEMATICAS BÁSICAS universidad UNAD.pdf
MODULO DE MATEMATICAS  BÁSICAS universidad UNAD.pdfMODULO DE MATEMATICAS  BÁSICAS universidad UNAD.pdf
MODULO DE MATEMATICAS BÁSICAS universidad UNAD.pdf
frankysteven
 

Último (20)

Sistemas de posicionamiento global (G.P.S.).pdf
Sistemas de posicionamiento global (G.P.S.).pdfSistemas de posicionamiento global (G.P.S.).pdf
Sistemas de posicionamiento global (G.P.S.).pdf
 
Deilybeth Alaña - Operaciones Básicas - Construcción
Deilybeth Alaña - Operaciones Básicas - ConstrucciónDeilybeth Alaña - Operaciones Básicas - Construcción
Deilybeth Alaña - Operaciones Básicas - Construcción
 
Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.
 
Presentación PISC Préstamos ISC Final.pdf
Presentación PISC Préstamos ISC Final.pdfPresentación PISC Préstamos ISC Final.pdf
Presentación PISC Préstamos ISC Final.pdf
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
 
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
 
matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
 
DESVIACION
DESVIACION DESVIACION
DESVIACION
 
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdfSISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
 
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALESLA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
 
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
 
Joseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadJoseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidad
 
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagneticoPresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
PresentaciónReto_Equipo6 Explicacion del reto de freno electromagnetico
 
Mecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporMecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vapor
 
Efecto. Fotovoltaico y paneles.pdf
Efecto.     Fotovoltaico  y  paneles.pdfEfecto.     Fotovoltaico  y  paneles.pdf
Efecto. Fotovoltaico y paneles.pdf
 
Sistema de 4 barras articuladas bb_2.pdf
Sistema de 4 barras articuladas bb_2.pdfSistema de 4 barras articuladas bb_2.pdf
Sistema de 4 barras articuladas bb_2.pdf
 
MODULO DE MATEMATICAS BÁSICAS universidad UNAD.pdf
MODULO DE MATEMATICAS  BÁSICAS universidad UNAD.pdfMODULO DE MATEMATICAS  BÁSICAS universidad UNAD.pdf
MODULO DE MATEMATICAS BÁSICAS universidad UNAD.pdf
 
problemas consolidación Mecánica de suelos
problemas consolidación Mecánica de suelosproblemas consolidación Mecánica de suelos
problemas consolidación Mecánica de suelos
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
 

Edianny.adan.programacion.docx

  • 1. UNIVERSIDAD FERMÍN TORO VICERRECTORADO ACADÉMICO FACULTAD DE INGENIERIA ESCUELA DE COMPUTACION Edianny Adan CI.26370562
  • 2. ASSEMBLER 8086 Ciclo de desarrollo Edición Ensamble Enlace Depuración Archivo de programa fuente Archivo de programa objeto Archivo de programa ejecutable Archivo de programa ejecutable Modificacion en case de error
  • 3. El archivo ejecutable debe ser depurado para descubrir errores lógicos. La depuración puede involucrar las siguientes técnicas: • Ejecutar el programa para estudiar su entrada y su salida. • Estudiar archivos fuente (.ASM) y de listado (.LST). • Utilizar el programa CREF para crear un archivo de listado de referencias cruzadas(.REF) • Utilizar un depurador, como Turbo Debugger de Borland Int'l, para seguir la ejecución del programa. Si algún error lógico es encontrado durante la depuración, deberá retornarse al primer paso(edición) para corregir el código fuente ASSEMBLER 8086
  • 4. En general, las directivas son usadas para especificar la organización de memoria, realizar ensamblado condicional, definir macros, entrada, salida, control de archivos, listados, cross-reference, direcciones e información acerca de la estructura de un programa y las declaraciones de datos. El apéndice D proporciona una lista completa de estas directivas. •Conjunto de instrucciones. Dentro de las directivas más importantes, tenemos las que establecen el conjunto de instrucciones a soportar para un microprocesador en especial: •.8086(default).- Activa las instrucciones para el 8086 y 8088 e inhibe las del 80186 y 80286. •.8087(default).- Activa instrucciones para el 8087 y desactiva las del 80287. •.186.- Activa las instrucciones del 80186 •.286c.- Activa instrucciones del 80286 en modo no protegido. •.289p.- Activa instrucciones del 80286 en modo protegido y no protegido Las directivas iniciales de un programa ensamblador . ASSEMBLER 8086
  • 5. Directiva DB 1 byte Define DW 2 bytes = una palabra DD 4 bytes = una doble palabra DF, DP 6 bytes = un apuntador de palabra far DQ 8 bytes = un quadpalabra DT 10 bytes ASSEMBLER 8086
  • 6. ¿Que es el lenguaje ensamblador? El lenguaje ensamblador es un lenguaje de programación que está dedicado a escribir programas de bajo nivel; ejerce control sumamente directo al hardware, la palabra bajo hace referencia a una reducida abstracción entre lo que es el lenguaje y el hardware; los programas de bajo nivel son hechos para controladores, aplicaciones especializadas en tiempo real, entre otras. El lenguaje ensamblador trabaja directamente con el microprocesador de una máquina ASSEMBLER 8086
  • 7. Estructura de un programa ensamblador en el lenguaje ensamblador las líneas de código constan de dos partes, la primera es el nombre de la instrucción que se va a ejecutar y la segunda son los parámetros del comando u operando. Para hacer la terea del programador mas grata, se unen algunas convenciones. Cada uno puede adoptar la que mas le agrade y le ayuden a ser mas productivo. En general las convenciones son cualquier acción que facilita la revisión y comprensión de un programa ASSEMBLER 8086
  • 8. ADD ah bh Aquí "ADD" es el comando a ejecutar (en este caso una adición o suma) y tanto "ah" como "bh" son los parámetros. El nombre de las instrucciones en este lenguaje puede estar formado de 2 a 6 letras, a estas instrucciones también se les llama nombres mnemónicos o códigos de operación, ya que representan alguna función que habrá de realizar el procesador. Existen algunos comandos que no requieren parámetros para su operación, así como otros que requieren solo un parámetro. Algunas veces se utilizarán las instrucciones como sigue: ADD al,[170] Los corchetes en el segundo parámetro nos indican que vamos a trabajar con el contenido de la casilla de memoria número 170 y no con el valor 170, a esto se le conoce como direccionamiento directo (en la instrucción viene la dirección del objeto). ASSEMBLER 8086 Ejemplo
  • 9. Una interrupción es una instrucción que detiene la ejecución de un programa para permitir el uso de la UCP a un proceso prioritario. Una vez concluido este último proceso se devuelve el control a la aplicación anterior ASSEMBLER 8086 Interrupción
  • 10. Interrupción (mov ah,09h) es lo que nos permite desplegar el mensaje. Las interrupciones 21h, 09h, 10h. Interrupción 21H Propósito: Llamar a diversas funciones del DOS. Sintaxis: Int 21H Nota: Cuando trabajamos en MASM es necesario especificar que el valor que estamos utilizando es hexadecimal. Esta interrupción tiene varias funciones, para acceder a cada una de ellas es necesario que el el registro AH se encuentre el número de función que se requiera al momento de llamar a la interrupción. ASSEMBLER 8086
  • 11. Función 09H Uso: Despliega una cadena de caracteres en la pantalla. Registros de llamada: AH = 09H DS:DX = Dirección de inicio de una cadena de caracteres Registros de retorno: Ninguno. Esta función despliega los caracteres, uno a uno, desde la dirección indicada en el registro DS:DX hasta encontrar un carácter $, que es interpretado como el final de la cadena. Se recomienda utilizar la función 40H en lugar de esta función. Función 40H Uso: Escribir a un dispositivo o a un archivo. Registros de llamada: AH = 40H BX = Vía de comunicación CX = Cantidad de bytes a escribir DS:DX = Dirección del inicio de los datos a escribir Registros de retorno: CF = 0 si no hubo error AX = Número de bytes escritos CF = 1 si hubo error AX = Código de error El uso de esta función para desplegar información en pantalla se realiza dándole al registro BX el valor de 1 que es el valor pre asignado al video por el sistema operativo MS-DOS. Función 01H Uso: Leer un carácter del teclado y desplegarlo. Registros de llamada: AH = 01H Registros de retorno: AL = Carácter leído Con esta función es muy sencillo leer un carácter del teclado, el código hexadecimal del carácter leído se guarda en el registro AL. En caso de que sea un carácter extendido el registro AL contendrá el valor de 0 y será necesario llamar de nuevo a la función para obtener el código de este carácter. ASSEMBLER 8086
  • 12. Propósito: Llamar a diversas funciones de video del BIOS. Sintaxis: Int 10H Esta interrupción tiene diversas funciones, todas ellas nos sirven para controlar la entrada y salida de video, la forma de acceso a cada una de las opciones es por medio del registro AH. Funciones : Función 02H Uso: Posiciona el cursor en la pantalla dentro de las coordenadas válidas de texto. Registros de llamada: AH = 02H BH = Página de video en la que se posicionará el cursor. DH = Fila DL = Columna Registros de retorno: Ninguno. Las posiciones de localización del cursor son definidas por coordenadas iniciando en 0,0, que corresponde a la esquina superior izquierda hasta 79,24 correspondientes a la esquina inferior derecha. Tenemos entonces que los valores que pueden tomar los registros DH y DL en modo de texto de 80 x 25 son de 0 hasta 24 y de 0 hasta 79 respectivamente. Interrupción 10H ASSEMBLER 8086
  • 13. . Función 09H Uso: Desplegar un carácter un determinado número de veces con un atributo definido empezando en la posición actual del cursor. Registros de llamada: AH = 09H AL = Carácter a desplegar BH = Página de video en donde se desplegará BL = Atributo a usar Número de repeticiones. Registros de retorno: Ninguno Esta función despliega un carácter el número de veces especificado en CX pero sin cambiar la posición del cursor en la pantalla. Función 0AH Uso: Desplegar un carácter en la posición actual del cursor. Registros de llamada: AH = 0AH AL = Carácter a desplegar BH = Página en donde desplegar BL = Color a usar (sólo en gráficos). CX = Número de repeticiones Registros de retorno: Ninguno. La única diferencia entre esta función y la anterior es que ésta no permite modificar los atributos, simplemente usa los atributos actuales. Tampoco se altera la posición del cursor con esta función. Función 0EH Uso: Desplegar un carácter en la pantalla actualizando la posición del cursor. Registros de llamada: AH = 0EH AL = Carácter a desplegar BH = Página donde se desplegara el carácter BL = Color a usar (solo en gráficos) ASSEMBLER 8086
  • 14. Código para leer carácter con eco mov ah,01h ;petición de leer carácter int 21h ;llama al DOS la función 01h indica la operación para leer un carácter desde el teclado, carácter con eco quiere decir: que cuando pulsas un carácter se imprime en la pantalla enseguida Código para leer carácter sin eco mov ah,07h ;petición de leer carácter int 21h ;llama al DOS la función 07h o también 08h ambas indica la operación para leer un carácter desde el teclado, carácter sin eco quiere decir: que cuando pulsas un carácter no es impreso el carácter pulsado hasta que se manda imprimir con otra función Las instrucciones para leer un carácter de pantalla. ASSEMBLER 8086
  • 15. Ejemplo: Suma el 2793H y el 3182H y guarda el resultado en la locación de memoria 2050H y 2051H. Suponga que los números se encuentran en BC y DE respectivamente Condiciones Iníciales Memória B 27 93 C 2050 XX D31 82 E 2051 XX LD A,C ADD A,E A 93 XX F A 15 CY =1 F 93H + 82H =115H LD L,A LD A, H 15 L 1H + 31H + 27H =59H D ADC A, A 31 CY =1 F LD H,A LD (2050H),HL H 59 15 L A 59 CY =0 F 2050 15 H 2051 59 H Las instrucciones para sumar y restar 2 números ASSEMBLER 8086
  • 16. .Model small .satck 100 .data Variable1 db 0 Variable2 db 0 Linea db 13,10, “$” Num1 db 13,10 , “ingrese numero 1: ” ; “$” Num2 db 13,10 , “ingrese numero 2 : ”; “$’ msn1 db 13,10 , “suma : “ ; “$” msn2 db 13,10 , “resta : ” ; “$” .code .startup Mov ah .09h Lea dx Int 21h Call leer Sub al, 30h Mov variable , al Mov ah, 09h Lea dx , num2 Int 21h Call leer Sub al , 30h Mov variable2, al Mov bl, variable 2 ;Suma Add variable 1 Mov ah, 09h Lea dx, msn1 Int 21h Mov dl,bl Add dl, 30h Mov ah, 02h Int 21h .exit ASSEMBLER 8086

Notas del editor

  1. Inicio del Algoritmo Variables Numero: Entero Inicio Numero=0 Escribir (“ingrese un numero”) Leer (numero) Si (Numerod2=0) Entonces Haga Imprimir (“El numero Par”; numero) Sino Imprimir (“El número impar;”numero) Fin del Algoritmo
  2. algoritmo Aumento_Trabajadores_Universidades variables sueldo, sueldoaum: Decimal tiempo: Entero inicio Imprimir (“ Introduce el sueldo del trabajador:”) Leer (sueldo) Imprimir (“ Introduce el tiempo de servicio:”) Leer (tiempo) SI (tiempo >= 1) O (tiempo <= 5) ENTONCES sueldoaum = sueldo + (sueldo * 0.03) Imprimir (“El tiempo de Servicio en la Institución es de:”, tiempo, “por lo tanto se le otorgo un aumento del 3% y su sueldo ahora sera de:”, sueldoaum) SINO SI (tiempo > 5) O (tiempo <= 10) ENTONCES sueldoaum = sueldo + (sueldo * 0.05) Imprimir (“El tiempo de Servicio en la Institución es de:”, tiempo, “por lo tanto se le otorgo un aumento del 5% y su sueldo ahora sera de:”, sueldoaum) SINO SI (tiempo > 10) O (tiempo <= 20) ENTONCES sueldoaum = sueldo + (sueldo * 0.08)
  3. Determinar si un triangulo es : equilatero, isóceles o escaleno, conociendo sus tres lados (a,b,c).