Programación de
microprocesadores
Ing. Yuliana león Bazan([Link]@[Link] )
Primeras Instrucciones
• PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR
• Introducción.
Unidad #2: • Estructura de un programa
TÉCNICAS DE • Comandos en Assembler
• Movimiento de datos.
PROGRAMACIÓN • Operaciones aritméticas y lógicas.
Y LENGUAJE • Corrimientos, rotaciones y operaciones con
cadenas.
ENSAMBLADOR • Saltos y Saltos condicionales.
• Subrutinas.
• Un primer programa.
Registros necesarios
Los tres segmentos principales son:
Segmentos Segmentos Segmentos
de código de datos de pila
Contiene instrucciones de maquina
que son ejecutadas.
Segmentos de
codigo (CS) Comúnmente la primera instrucción
ejecutable esta en el inicio del
segmento, el SO enlaza a esa
localidad para iniciar la ejecución
del programa
Contiene datos, constantes
y áreas de trabajo
definidos por el programa
Segmento de
datos (DS)
El registro del DS
direcciona al segmento de
datos
La pila contiene los datos y
direcciones que se necesitan
guardar temporalmente o para el
uso de sus llamadas subrutinas.
Segmento de
pila (SS)
El registro del segmento de la pila
(SS) direcciona el segmento de la
pila
• Los registros de segmentos contienen la
direccion inicial de cada segmento
• Los formatos generales (incluyendo el punto
inicial) para las directivas que define los
segmentos de la pila, de datos y de código son:
• .STACK [tamaño]
• .DATA
• .CODE [nombre]
instrucciones • Cada una de estas directivas hace que el
ensamblador genere el enunciado
• SEGMENT necesario y su correspondiente ENDS.
Los nombres por omisión de los segmentos (que
usted no tiene que definir) son STACK, DATA y
TEXT (para el segmento de código).
• Un programa en lenguaje ensamblador consiste en
un conjunto de enunciados.
• Los dos tipos de enunciados son:
INSTRUCCIONES 1. Instrucciones, tal como MOV y ADD, que el ensamblador
traduce a código objeto.
2. Directivas, que indican al ensamblador que realiza una
acción especifica, como definir un elemento de dato.
INTERRUPCIONES
INTERRUPCIONES DEL D.O.S.
• Las interrupciones desde la 20H hasta la 3FH están reservadas para
operaciones del DOS.
DIRECTIVAS SIMPLIFICADAS DE SEGMENTOS
• .MODEL modelo de memoria
• El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT
o LARGE.
• Puede utilizar cualquiera de estos modelos para un programa
autónomo (esto es, un programa que no este enlazado con algún
otro). El modelo TINY esta destinado para uso exclusivo de
programas .COM, los cuales tienen sus datos, código y pila en un
segmento. El modelo SMALL exige que el código quepa en un
segmento de 64K y los datos en otro segmento de 64K.
Sintaxis de una instrucción en ensamblador
Etiqueta : mnemónicos Destino , origen
Inicio : MOV AX , 10A
Nota: comentarios se colocan anteponiente el ;
• Estructura básica
Instrucciones aritméticas
Instrucciones de transferencia de control
Saltos condicionales
cmp
• CMP realiza la resta de los dos operandos (como la instrucción
SUB) pero NO afecta a ninguno de ellos, SÓLO afecta al registro de
estado. Admite todos lo modos de direccionamiento, excepto los
dos operando en memoria. CMP reg, reg CMP reg, mem CMP mem,
reg CMP reg, inmediato CMP mem, inmediato
Taller # 3
• Escriba un programa en ensamblador que permita comparar dos
valores. Utilice las instrucciones CMP, y saltos condicionales.
• Escriba un programa en ensamblador que realice un ciclo infinito
cuando se encuentre un valor negativo.
Taller # 5
• Elabore los siguientes programas en Ensamblador:
• Realice un programa que permita imprimir por pantalla el mensaje “Esto
es una iteración dentro de un WHILE”, un número de veces n (ingresadas
por teclado) simulando la estructura de un ciclo repetitivo WHILE.
• Realice un programa que permita sumar 4 números.
• Realice un programa que permita solicitar el ingreso de cualquier
número hasta que se encuentre el número 0, en cuyo caso se deberá
finalizar el programa.
Funciones de cadena
Operación Instrucción Operandos
Mover Movs ES:DI; DS:SI
Cargar Lods AX; DS:SI
Almacenar Stos ES:DI; AX
Comparar Cmps DS:SI; ES:DI
Rastrear Scas ES:DI; AX
REP: Prefijo de repetición
• Se usa antes de llamar a una función de cadena.
• Provoca que una instrucción para cadena se ejecute de manera repetitiva n veces-
• Banderas DF: datos de izquierda a derecha se hace uso de la instrucción CLD, pone DF=0.
• Datos de derecha a izquierda se utiliza instrucción STD, pone DF=1.
• Para utilizar REP es necesario usar el segmento extra de datos:
mov ax,@data
mov ds,ax
mov es,ax ;Segmentro extra de datos