Está en la página 1de 18

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Desarrollo de Programas en Ensamblador


TEMA 1 - Estructura de un programas

    

Segmentos Principales. Tratamiento de los Segmentos. Estructura bsica de un programa. Directivas. Pasos para Obtener un programa ejecutable.

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Segmentos Principales:
El segmento de cdigo. En este segmento se encuentran las instrucciones que forman el programa. Tiene como base el contenido del registro CS y para acceder a los datos contenidos en l, se usa el registro IP como desplazamiento. El segmento de datos. Contiene los datos que utiliza el programa (variables, etc.) Para acceder a los datos contenidos en l, se tiene como base el registro DS y a los registros SI y DI como desplazamiento, as como tambin los registros de propsito general. El segmento de pila. En l se implementa la pila del programa, utilizada para guardar temporalmente datos. Debe estar presente en todos los programas EXE de forma obligada. Para acceder a las direcciones de este segmento se utiliza SS como base y el registro SP o BP como desplazamiento.
Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Tratamiento de los Segmentos:


0000 CS = 2014 Segmento de cdigo DS = 2100 Segmento de datos SS = 22F0 Segmento de pila
La direccin real de un dato se obtiene al sumar DS + un desplazamiento que puede ser por registro o por valor inmediato La direccin real de un dato es SS + SP La direccin real de una instruccin se obtiene de sumar CS + el valor del IP

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Estructura bsica de un programa:


.MODEL small ; Esto define el tamao y cantidad de segmentos .STACK 64 ; Esto define el tamao en bytes para la pila .DATA ; Esto define los datos a usar en el programa DATO1 DB 20 DATO2 DW 2020 ARREGLO DB 100 DUP(0) .CODE ; Definicin de los Procedimientos del programa INICIO PROC FAR ; Definicin del procedimiento principal MOV AX, @DATA ; Obtener la direccin de los DATOS MOV DS, AX ; y asignarla al registro DS . MOV AH,4CH ; Funcin de salida al DOS INT 21H ; Interrupcin del DOS INICIO ENDP SUBPRO PROC NEAR ; Definicin del procedimiento secundario . RET SUBPRO ENDP END INICIO

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


Existen varias directivas de usos diferentes, solo nos centraremos en las ms comunes que tengan efecto sobre un programa TITLE: Asocia una cadena de caracteres como un titulo al programa, similar a PROGRAM de PASCAL. No tiene efecto en el cdigo ejecutable. Sintaxis: TITLE Texto Ej.: TITLE Prueba Programa de suma de 3 nmeros.

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


.MODEL: Permite definir el modelo de memoria o programa a desarrollar (TINY, SMALL,MEDIUM,COMPACT O LARGE) Requisitos para cada Modelo:
MODELO SEGMENTOS DE CODIGO SEGMENTOS DE DATO

TINY SMALL MEDIUM COMPACT LARGE Sintaxis:

UNO SOLO PARA CODIGO y DATOS (programas .COM) 1 1 ms de 1 1 1 ms de 1 ms de 1 ms de 1

.MODEL [MODELO] Ej.: .MODEL SMALL

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


PROC: Definicin de procedimiento Sintaxis: Nombre_procedimiento PROC [FAR/NEAR] El operador FAR, se coloca como indicacin de lejano, o sea que no est dentro del mismo segmento de cdigo, la nica excepcin a esta regla es cuando se trata del procedimiento principal que es el punto de entrada del programa. Se utiliza NEAR para un procedimiento que esta en el mismo segmento. Ej. FIJACUR PROC NEAR

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


ENDP: Delimita el final de un procedimiento. Sintaxis: Nombre_procedimiento ENDP Ej. FIJACUR PROC NEAR . . FIJACUR ENDP

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


.STACK: Determina la existencia de un segmento para la Pila y especifica un tamao en Bytes. Sintaxis: .STACK [TAMAO] Ej. .STACK 128

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


.DATA: Determina la existencia de un segmento para Datos. Luego de esta directiva es que se definen (o declaran) los datos o variables a usar en el programa. Sintaxis: .DATA Ej. .DATA CONTA1 DB 12

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


.CODE: Determina la existencia de un segmento para las instrucciones. Luego de esta directiva es que se definen (o declaran) los procedimientos que conforman el programa. Sintaxis: .CODE Ej. .CODE

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


. END: se utiliza para finalizar el programa. Sintaxis: Ej.: END [Nombre_procedimiento_inicial] END INICIO

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


. EQU: Declaracin de constantes. Sintaxis: Ej.: [Nombre_constante] EQU [Valor] PI EQU 3.141592 MAX EQU 100 CADENA EQU <Hola mundo!>

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


INCLUDE: Se utiliza para incluir cdigo fuente que est en otro archivo. Sintaxis: Ej.: INCLUDE [RUTA:NOMBRE.EXTENSION] INCLUDE C:\TURBO\VIDEO.LIB

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Directivas del Lenguaje Ensamblador:


LABEL: Permite declarar una estructura de datos con varios campos. Sintaxis: [Nombre_Estructura] LABEL [TIPO] Tipo puede ser: BYTE, WORD, DWORD Ej.: NAMEPAR LABEL BYTE ; Esto define una estructura para cadena MAXLEN 20 ; La cadena tendr como mximo 20 caracteres NAMELEN ? ; Inicialmente la cadena no se define cuantos caracteres tiene NAMEFLD 20 DUP( ) ; Inicialmente el contenido de la cadena es
NAMEPAR MAXLEN ASCII HEX 20 20 6 6 C A M I L O 43 41 4D 4C 37 4F 0D

20

20

20 20 20 20 20 20 20 20 20 20 20 20 20 20

NAMELEN

NAMEFLD Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 1 - Estructura de un programas

Pasos para obtener un programa ejecutable:


MEDIO PROCESO PRODUCTO
CODIGO FUENTE
Ins truc c iones s imblic as almac enadas en un arc hiv o de ex tens in .A SM

EDITOR
Ej. EDT.EXE EDIT.EXE

EDICIN

ENSAMBLADOR
Ej. MA SM.EXE TA SM.EXE

ENSAMBLE

CODIGO OBJETO

Traduc c in a c digo binario guardada en un arc hiv o de ex tens in .OBJ

CODIGO OBJETO

ENLAZADOR
Ej. LINK.EXE TLINK.EXE

ENLACE

CODIGO EJECUTABLE

Ins truc c iones ejec utables por el Mic roproc es ador

EJECUCIN

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 2 Implementacin de Libreras

En el programa principal se utiliza la directiva include para referenciar un archivo donde solo se ha escrito las instrucciones de las rutinas que queremos implementar como libreras y el programa principal se escribe normalmente. Para usar las rutinas declaradas en la librera basta con utilizar CALL de la forma acostumbrada.

Prof. Camilo Duque

UNEFA

DPTO. INGENIERIA ELECTRONICA MICROPROCESADORES

Arquitectura Funcional del Computador


TEMA 2 Implementacin de Libreras
Programa Principal
TITLE LIBRERIA .MODEL SMALL .STACK 64 .DATA COL EQU 5 CADENA DB 'PRESIONE [ENTER] PARA SALIR...$' FILA DB 0 .CODE INCLUDE C:\TURBO\MISRUT.LIB PPAL PROC FAR CALL ASIGNADS CALL CLEARSCR LAZO: MOV DH, FILA MOV DL, COL CALL IRAFC LEA DX,CADENA CALL PRINTS CALL GETCAR CMP AL,0DH JE FIN INC FILA JMP LAZO FIN: MOV AL,00 CALL EXIT PPAL ENDP END PPAL

MISRUT.LIB (Extracto)
CLEARSCR PROC NEAR MOV AH,06H MOV AL,00H MOV BH,70H MOV CX,00H MOV DX,184FH INT 10H RET CLEARSCR ENDP IRAFC PROC NEAR ;LA FILA Y COLUMNA SE ESTABLECEN ;EN EL PROGRAMA DESDE DONDE DONDE ;SE INVOCA ESTA FUNCION MOV AH,02H MOV BH,00H INT 10H RET IRAFC ENDP GETCAR PROC NEAR MOV AH,01H INT 21H ;EL CARACTER SE GUARDA EN AL RET ENDP

GETCAR

Prof. Camilo Duque

También podría gustarte