You are on page 1of 85

Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Introduccin
40s:
Primeros computadores electrnicos

de gran costo y tamao, con escasa


capacidad
id d d
de cmputo.

Programados en principio en

lenguaje de mquina,

posteriormente en lenguaje
ensamblador.
s bl d
Programacin centrada en el tipo de

mquina.
i
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Introduccin
50s:
Se desarrolla
d
ll ell primer

lenguaje de alto nivel


(dialecto original de Fortran)
A Fortran le siguen lenguajes

como LISP y Algol


Al l
Traduccin de lenguaje de

alto
l nivel
i l a lenguaje
l
j de
d
mquina a travs de un
compilador.
compilador
Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Lenguaje
g j de Programacin
g
Un lenguaje es la forma que

utilizan
tili
d
dos entidades
tid d
llamadas emisor y receptor
para comunicarse.
comunicarse

Un
U lenguaje
l
j de
d programacin
i

es la forma en que un ser


humano le indica a una
computadora lo que debe
hacer.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Lenguaje
g j de Programacin
g
Los lenguajes de programacin se clasifican de

acuerdo
d a su objetivo
bj ti en:
9 Propsito General
9 Propsito Especfico.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Lenguaje
g j de Programacin
g
Los lenguajes de programacin tambin se pueden

clasificar
l ifi
de
d acuerdo
d a su nivel
i ld
de abstraccin
b t
i en :
9 Bajo Nivel
9 Alto Nivel

El nivell de
d abstraccin
b
se da
d

desde el punto de vista


humano; es decir
decir, el de alto
nivel est ms cercano al
lenguaje natural.
natural
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Lenguaje
g j de Programacin
g
En lenguajes de bajo nivel, se codifican instrucciones

simblicas
bl
que generan instrucciones en llenguaje d
de
mquina, permiten el desarrollo ms eficiente de
aplicaciones pero la programacin es ms complicada.
aplicaciones,
complicada

Una instruccin en un lenguaje de alto nivel,


nivel puede generar

muchas instrucciones en lenguaje de mquina. son muy


parecidos a lenguajes naturales como el ingls. Permiten un
rpido desarrollo e implantacin de algoritmos.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Lenguaje
g j de Programacin
g
Cmo es posible que dos entidades

con diferentes lenguajes (humanos y


mp
) puedan
p
comunicarse
m
computadoras)
entre si?
Se puede realizar por medio de un traductor. Lo cual

da otra clasificacin de lenguajes de programacin.


programacin
9 Ensamblador
9 Compilador
C
il d e I
Interprete
t
t

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Lenguaje
g j de Programacin
g
Cdigo Fuente

Programa Intermedio
Entrada

Traductor

Mquina Virtual

Programa
Intermedio

Salida

Si el traductor es sencillo es decir, hace una transformacin trivial


del cdigo fuente, entonces se considera como un interpretador.
Ahora bien si la traduccin es ms compleja, es decir no hay mucha
similitud entre el programa intermedio y el fuente, el traductor se
considera un compilador que produce una forma intermedia que puede
interpretarse a posteriori.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Lenguaje
g j de Programacin
g
Muchos lenguajes interpretados emplean un traductor
inicial

(preprocesador)

que

remueve

comentarios

espacios en blanco, y agrupa caracteres en tokens para


formar

palabras

clave
clave,

identificadores
identificadores,

nmeros

smbolos.
Luego expande abreviaciones al estilo de un macro de
assembler

finalmente

identifica

estructuras

sintcticas
i i
d alto
de
l nivel
i l como loops
l
y subrutinas.
b i
L que
Lo
se busca es obtener una forma intermedia, similar al
cdigo fuente, que pueda interpretarse con mayor
facilidad.
Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Ensamblador
LENGUAJE ENSAMBLADOR
Es
E ell traductor
d
del
d l lenguaje
l
j de
d bajo
b j

nivel. Son abreviaciones mnemnicas


que corresponden 1 a 1 a las
instrucciones de la mquina y que son
traducidas a travs de un assembler.

El lenguaje ensamblador evolucion

con macro expansiones permitindole


a los programadores definir una
secuencia
i d
de iinstrucciones
t
i
a ttravs

de una abreviacin.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Ensamblador
VENTAJAS

Proporciona ms control sobre el

manejo particular de los


requerimientos de hardware
Genera mdulos ejecutables ms

pequeos y compactos.
Normalmente se ejecutan
j
ms

rpido que el proceso equivalente


codificado en un lenguaje de alto
nivel.
Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Compilador
p
Con el nacimiento de los primeros lenguajes de alto nivel, se hizo

necesario
necesar
o un mecan
mecanismo
smo para la traduccin
traducc n de las instrucciones
nstrucc ones de
estos lenguajes a las que pueden ser entendidas por la mquina.

Es por ello que surge el compilador que no es ms que un programa

st ma que
qu lleva
a a cabo
ca o las
as mencionadas
m nc ona as labores
a or s de
del ssistema
traduccin.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Compilador
p
El compilador es ms

complejo
l j que ell lenguaje
l
j
ensamblador ya que no hay
una correspondencia 1 a 1
entre el cdigo fuente y las
instrucciones de la mquina,
mquina
adems sus programas son
ms lentos q
que los
elaborados en lenguaje
ensamblador.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Compilador
p

Viendo el compilador en alto nivel,


nivel ste se encarga de traducir el cdigo
fuente a un programa objeto (tpicamente en lenguaje de mquina).
A su vez el compilador suele ser un programa escrito en lenguaje de
mquina.
i
Cuando un programa objeto es escrito a un archivo en un formato que
puede ser entendido por el sistema operativo se conoce como cdigo
objeto.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Compilador
p
Controla la
Compilacin
Cdigo Fuente

Entrada

Compilador

Programa Objeto

Programa Objeto

Salida

Controla la
Ejecucin
j

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Compilador
p
Programa Fuente

Compilador

Lenguaje
Ensamblador

Lenguaje
Ensamblador

Assembler
bl

Lenguaje
de Mquina

Muchos compiladores
p
generan
g
cdigo
g assembler en lugar
g de lenguaje
g j
de maquina ya que:
Facilita el debugging
Es ms fcil de leer por las personas.
Aisla al compilador de cambios en el formato de los archivos del
lenguaje de mquina que son mantenidos por las diversas versiones de
Sistemas Operativos.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Compilador
p
VENTAJAS
Ofrece mejor desempeo,
desempeo ya que el
proceso de compilacin debe llevarse
a cabo una sola vez y el programa
puede ser ejecutado en muchas
oportunidades.
Otra de las caractersticas de la
compilacin es que durante ella no se
consideran las decisiones que deben
ser realizadas a tiempo de ejecucin.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Interpretador
p
Cdigo Fuente

Interpretador

Entrada

Salida

Controla la
Ejecucin

El interpretador implementa una mquina virtual cuyo


lenguaje de mquina es el lenguaje de alto nivel en el que
est escrito el programa.
programa
El interpretador
p
lee una lnea por
p vez y la ejecuta.
j

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Interpretador
p
VENTAJAS
Como ventaja con respecto al
compilador, el interpretador
ofrece mayor flexibilidad y
mensajes de error ms
explicativos.
li ti
Adicionalmente,
Adicionalmente se comienza
a ejecutar una vez hechas las
modificaciones sin esperar por
el proceso de recompilacin.

Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Enlazador ((Linker))
Programa
Fuente
Lenguaje de Mquina
Incompleto
Librera de rutinas

Traductor

Enlazador

Lenguaje de Mquina
Incompleto

Programa
g
en
Lenguaje de Mquina

El Linker
Link se
s encarga
n
de
d asociar
s i las
l s rutinas
tin s de
d lib
librera

apropiadas al programa final.


Ntese que la traduccin produce lenguaje de mquina
incompleto ya que quedan por resolver las referencias a
libreras.
Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
El MASM (Microsoft Macro
Assembler) posee un conjunto de
instrucciones que no pertenecen al
lenguaje ensamblador propiamente
sino que son instrucciones que
nicamente son reconocidas por el
ensamblador y que han sido
agregadas para facilitar la tarea de
ensamblado,
bl d tanto para ell
programador como para el programa
que lo lleva a cabo.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Le indican al ensamblador que
realice una accin especifica;
son enunciados que permiten
controlar la manera en que un
programa ensambla y lista.
Actan solo durante el
ensamblado de un programa y
no genera cdigo
di ejecutable
j
bl
de maquina.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Son usadas para especificar :
9 La organizacin de memoria
9 Realizar ensamblado condicional
9 Definir macros,
macros
9 Entrada, salida,
9 Control de archivos,
9 Listados,
9 Cross-reference
9 Direcciones
Di
i
e iinformacin
f
i acerca
de la estructura de un programa
9 Las declaraciones de datos.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Las direcrectivas se dividen en cuatro (4) grupos funcionales:
Directivas de Datos
- Datos
- Simbolos
Si b l
- Control del Ensamblador
- Segmentos
g
y Procedimientos
- Referencias Externas
- Bloques
Directivas Condicionales
Directivas de listado
Directivas de Macros

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Di
Directivas
ti
d
de D
Datos
t

para la definicin de datos

Sistemas Digitales III

Directiva

Descripcin

DB

Definir un byte.
byte Sirve adems para
definir cadenas de caracteres.

DW

Definir una palabra (2 bytes).

DD

Definir una p
palabra doble (4
( bytes).
y
)

DF

Definir una palabra larga (6 bytes).

DQ

Definir una palabra cudruple (8 bytes).

DT

D fi i di
Definir
diez b
bytes
t (10 b
bytes).
t )

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Directivas de Datos
para los Smbolos

Directiva
EQU

Descripcin
Asigna un smbolo a una expresin fija

Directivas de Datos

para el Control del Ensamblador


Directiva
END
ORIGIN
O
IGIN
EVEN
RADIX

Sistemas Digitales III

Descripcin
Fin del modulo fuente
Origen
Or
gen de cd
cdigo
go de datos
Pone el contador de posiciones en un
numero par
Base de numeracin por defecto

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Directivas de Datos

para los Segmentos y Procedimientos


Directiva
SEGMENT
ENDS

Descripcin
Comienzo de segmento
Fin de segmento o de estructura

ASSUME

Suponer registro segmento

PROC

Comienzo de procedimiento

ENDP

Fin de procedimiento

Directivas de Datos

para Referencias Externas


Directiva
PUBLIC

Definir smbolo publico

EXTRN

Definir smbolo externo

INCLUDE
Sistemas Digitales III

Descripcin

Incluir fichero fuente


Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Directivas de Datos
para los Bloques

Directiva
GROUP

Agrupar segmentos

NAME

Nombre de un modulo

LABEL

Asigna un atributo a un nombre

RECORD
E
STRUC

Sistemas Digitales III

Descripcin

Definir
f
registro
Definir estructura

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Directivas Condicionales
Directiva
IF

Descripcin
Condion SI

ELSE
ENDIF

Opcional SI NO
Fin del IF

Directivas de Macros
Directiva
SUMAR MACRO
XX,YY,ZZ

Sistemas Digitales III

Descripcin
Definicin de macro

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Directivas de Listado
Directiva
PAGE

Formato de pagina de listado

TITLE

Titulo del listado

SUBTTL
COMMENT
LALL

Subtitulo del listado


Delimitador de comentario
Listar macros y sus expansiones. SALL (No lista)
y XALL (Lista solo los que generan cdigo objeto)

XCREF

Suprimir listado de referencias cruzadas

CREF

Restaurar listado de referencias cruzadas

XLIST
LIST

LFCOND

Sistemas Digitales III

Descripcin

Suprimir el listado ensamblador desde este punto


Restaurar de nuevo la salida de listado
ensamblador
Listar los bloques
q
de cdigo
g asociados a una
condicin falsa (IF). SFCOND (Suprime) y
TFCOND (Invierte)
Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
Aqu se listan directivas que son exclusivas para la declaracin y
manejo de los segmentos
Directivas para declaracin y manejo de segmentos
Directiva

Descripcin

.MODEL

Para definir el modelo del programa

.STACK

Las declaraciones siguientes se insertarn en el


segmento de pila.

.DATA

Las declaraciones siguientes se insertarn


en el segmento de datos.

.CODE

Las declaraciones siguientes se insertarn


en el segmento de cdigo

END

programa.
g
Finaliza todo el p

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Directivas
La siguiente tabla resume los distintos tipos de modelos de memoria:

MODELO
TINY
SMALL
COMPACT
LARGE
HUGE

Sistemas Digitales III

CARACTERSTICAS
Datos y cdigo cogen en un solo segmento de 64K.
Un segmento de datos y otro de cdigo.
Mltiples
p
segmentos
g
de datos y un nico segmento
g
de cdigo.
g
Este modelo y el anterior son los que normalmente se utilizan.
Mltiples segmentos de datos y de cdigo.
Mltiples segmentos de datos y de cdigo. Los
segmentos pueden pasar 64K,
pero haciendo operaciones especiales de normalizacin de
direcciones.

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Palabras Reservadas
Ciertas palabras en lenguaje ensamblador estn
reservadas para sus propsitos propios, y son usadas
slo bajo condiciones especiales. Por categoras, las
palabras reservadas incluyen:
a)) Instrucciones
I t
i

PALABRA

b) Nombres de registros
c) Directivas
d) Operadores
e) Smbolos predefinidos
Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

PSP

(Prefijo
j de Segmento
g
de Programa)
g

Es una zona de un archivo .COM o

.EXE
EXE de 256 bytes que se utiliza
para almacenar la cola de
ordenes, resguardar ciertos
valores, es decir, almacena el
estado de a programa.

El PSP siempre esta ubicado en

los primeros 256 bytes del


segmento donde se carga el
programa (forma parte del
programa en la memoria).

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

PSP

(Prefijo
j de Segmento
g
de Programa)
g

El PSP tiene
la estructura
siguiente:

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Offset 0000H El primer campo del PSP contiene una instruccin cdigo
mquina (20CD). Se trata de la instruccin (Int 20h). Esta instruccin genera
la Interrupcin 20h
20h, utilizada para terminar la ejecucin del programa
programa. Esta
instruccin ha quedado obsoleta, sustituyndose su uso por la funcin 4Ch de
la INT 21h. Por tanto no le daremos mayor importancia a este primer campo
del PSP.
PSP

Offset 0002H En este campo se almacena la direccin del siguiente


segmento de memoria a continuacin de nuestro programa.

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Mediante este campo podemos saber el tamao del bloque de memoria en el


que se ha cargado
q
g
el programa.
p g
Restando a la direccin de segmento
g
almacenada en el offset 0002h la direccin de inicio del segmento donde se
ha cargado el PSP, tenemos el tamao del bloque (en prrafos) que contiene a
p g
nuestro programa.

Si multiplicamos ese valor por 16 (un prrafo=16 bytes) obtendremos el


t
tamao
((en b
bytes)
t )d
de memoria
i que h
ha suministrado
i i t d ell DOS para nuestro
t
programa.

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Offset 0004H Campo Reservado.

Offset 0005H Aqu nos encontramos con una curiosa forma de acceder a las
funciones de la INT 21h. Este mtodo de acceso que vamos a ver ha quedado
obsoleto, pero se sigue manteniendo en el PSP por motivos de compatibilidad.
Se trata de una llamada lejana distribuidor de funciones del DOS. Este
distribuidor de funciones es una rutina que ejecuta una de las funciones de la
j
en este caso se indica mediante el registro
g
INT 21H. La funcin a ejecutar
CL, y no AH (como es costumbre).
Mediante este tipo de llamadas slo se puede acceder a las funciones
numeradas de la 00h a la 24h.
24h Es decir
decir, CL slo debe contener un nmero
comprendido entre el 00h y el 24h al realizar este tipo de llamadas a la INT
21H.

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Offset 000AH En estos 4 bytes se almacena el contenido del vector de


interrupcin 22h, es decir, la direccin donde comienza la rutina de atencin
a la INT 22H.
De esta manera, aunque durante la ejecucin del programa se modifique el
p
, este campo
p (000AH)
(
) sirve para
p
valor de este vector de interrupcin,
resguardar el valor original.
El vector INT 22h contiene la direccin de la rutina que recibe el control
cuando se finaliza el programa mediante uno de los siguientes mtodos:
- INT 20H
- INT 27H
- INT 21H (funciones 00H, 31H, 4CH)

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Offset 000EH En estos 4 bytes se almacena el contenido del vector de


interrupcin 23h, es decir, la direccin donde comienza la rutina de atencin
a la INT 23H. La INT 23h se ejecuta cada vez que el DOS detecta la
pulsacin de la combinacin de teclas CTRL+C, y provoca la interrupcin del
programa en curso.

Si la variable de sistema BREAK est con valor OFF),


OFF) la deteccin de CTRL+C
slo se produce en las funciones de Entrada/Salida de caracteres. Si
(BREAK=ON), adems de en dichas funciones de E/S, se comprobar la
pulsacin de CTRL+C en la mayora de las restantes funciones del DOS.
DOS

En muchos programas se deshabilita el efecto de la INT 23H (CTRL+C) para


que el usuario no pueda interrumpir dicho programa. Mediante el campo
000EH ell DOS se asegura que all salir
000EH,
li del
d l programa en curso se mantenga ell
antiguo valor del vector INT 23H.

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Offset 0012H En estos 4 bytes se almacena el contenido del vector de


interrupcin 24h, es decir, la direccin donde comienza la rutina de atencin
a la INT 24H.
La INT 24h contiene la direccin del Gestor de Errores Crticos. El Gestor

que se
de Errores Crticos recibe el control ((mediante la INT 24H)) cada vez q
produce un Error Crtico.

Ejemplos de errores crticos son:


- Intentar
I
escribir
ibi en una disquetera
di
vaca
((sin
i di
disquete),
)
- Intentar escribir en un disquete protegido contra escritura,
- Error de CRC ((Cdigo
g de Redundancia Cclica)) en los datos leidos/escritos.
- Que la impresora se quede sin papel cuando se le manda imprimir

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Offset 002CH En este campo se almacena la direccin de inicio del


segmento de memoria que contiene el Bloque de Entorno.

Offset 005CH Este campo contiene al primer Bloque de Control de Fichero


(FCB) por defecto. Este FCB est compuesto por varios campos:
- Unos que ofrecen variada informacin acerca de un determinado fichero,
- Y los restantes que se utilizan para el Control del Fichero.
El mtodo de acceso a ficheros mediante FCB dej de utilizarse a partir de
la versin 2.0 del MS-DOS, en favor del mtodo Handle (mucho ms cmodo
y verstil). Todas las funciones de manejo de ficheros que vimos en la leccin
10 se basan en el mtodo

Handle. No merece la pena (al menos en un


principio) siquiera enumerar las funciones FCB.

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Si se sigue incluyendo soporte FCB en el


DOS es simplemente por motivos de
compatibilidad con programas antiguos.
Veamos la estructura de un FCB (por
curiosidad):

Todos los campos donde aparece la palabra


'Registro' se emplean para leer/escribir de
forma aleatoria (no secuencial) en el
fichero.

E ell mtodo
En
t d Handle
H dl se emplea
l la
l funcin
f
i
42h de la INT 21h para desplazarse por el
fichero, y luego las funciones de
lectura/escritura con el tamao de bloque
(Registro en FCB) a leer/escribir.

Sistemas Digitales III

Ing. Mara Franco

PSP

Lenguaje
E
Ensamblador
bl d

(Prefijo
j de Segmento
g
de Programa)
g

Offset 006CH Este campo contiene al segundo Bloque de Control de


por defecto.
f
((Lo indicado p
para el campo
mp anterior es
Fichero ((FCB)) p
aplicable a ste).

Offset 0080H Este campo es el ultimo de la estructura del PSP y


cumple dos cometidos:
- Almacena la Cola de Ordenes q
que el usuario le ha pasado
p
al programa.
p g
- Sirve como buffer de fichero por defecto (DTA por defecto).

Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Programas
g
.COM

Lenguaje
E
Ensamblador
bl d

Los programas .COM surgen a partir de los


procesadores de 8 bits cuyo sistema operativo
usaba la extensin command de all la
abreviatura .COM (Copy Of Memory), para
implicar que era un programa ejecutable.

Este tipo de programa es almacenado en el


disco exactamente como ser cargado en la
memoria para su ejecucin.

Estos programas se copian en memoria


justamente arriba del PSP, y empiezan siempre
en el desplazamieto (offset) 0100H que
equivale a 256 bytes que es el tamao del PSP.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Programas
g
.EXE
Los programas .EXE nacen de la contraccin

executable (ejecutable) pueden contener


diferentes segmentos de cdigo, datos y pila
al mismo tiempo, de acuerdo al modelo de
memoria
i que se este usando.
d
Este tipo de programa tambin una un PSP

que se carga
q
g inmediatamente arriba de el.

Al comenzar la ejecucin, los registros DS y


ES apuntan al segmento del PSP, y el CS
apunta a la primera instruccin que ser
ejecutada. El SS apunta al comienzo de la
pila y generalmente se encuentra arriba del
DS

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Programas
g
.COM y .EXE
Editor

Ensamblador

prog.lst
prog.crt
prog.map

Enlazador

prog.asm

Crea un programa
fuente en ensamblador
(.ASM)

Ensamble

Ensambla el p
programa
g
fuente, crea un
programa objeto
(.OBJ)

prog.obj

Enlace

Enlaza el programa
objeto, crea un
programa
p
g
ejecutable
j

prog.exe
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Programas
g
.COM y .EXE
Los programas .EXE y los .COM

difieren bsicamente en cuanto :


Al tamao del cdigo ejecutable
La inicializacin
Los segmentos,
La forma en que quedan

almacenados en los ficheros


La velocidad de carga en memoria.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Programas
g
.COM y .EXE
TAMAO DEL PROGRAMA
El t
tamao
d
de un programa .EXE
EXE slo
l est
t li
limitado
it d por la
l

memoria de la que se disponga, mientras que un programa


.COM est restringido a un segmento, y por tanto, a una
longitud mxima de 64K, incluyendo el PSP. El PSP es un bloque de
256 bytes que el DOS inserta antes de los programas .COM y
.EXE cuando los carga en memoria para su ejecucin.

Un programa .COM es ms pequeo que su correspondiente

.EXE. Uno de los motivos es el encabezado, que ocupa


espacio en disco y que precede a un programa .EXE, que no
aparece en un .COM..
COM

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Programas
g
.COM y .EXE
INICIALIZACION DEL PROGRAMA
All cargar un programa .COM
COM en memoria
i para su ejecucin,
j
i

todos los registros de segmento se inicializan de forma


automtica con la direccin del PSP. Los registros CS y DS
contendrn la direccin de segmento inicial correcta, luego
no hay que manipularlos.

La inicializacin de los programas .COM siempre tienen

lugar a partir de la localidad 0100H, que equivale a 256


bytes, que es exactamente el tamao del PSP.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Programas
g
.COM y .EXE
SEGMENTOS
Segmento
S
t d
de Pil
Pila. En
E un programa .EXE
EXE hay
h que definir
d fi i un

segmento de pila, mientras que en un programa .COM la pila se


genera automticamente. De este modo, cuando se escribe un
programa .COM la definicin de la pila se omite.
Segmento

de Datos. Un programa .EXE por lo comn define

un segmento de datos e inicializa el registro DS con la direccin


de ese segmento. Como en un programa .COM los datos estn
definidos dentro del segmento de cdigo, tampoco se tiene
que definir el segmento de datos.

Segmento de Cdigo. En un programa .COM el PSP, la pila,


el segmento de datos y el segmento de cdigo se encuentran
dentro del mismo segmento, que como mximo tendr 64K.

Sistemas Digitales III

Ing. Mara Franco

Puntos a Tratar

Lenguaje
E
Ensamblador
bl d

Introduccin

Lenguaje de Programacin

Ensamblador
Compilador e Interpretador

Enlazador

Directivas
Palabras
l
reservadas
Prefijo de Segmento de Programa
Programas .COM y .EXE
Estructura de Programa fuente:

Modo formal

Modo simplificado

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
PROGRAMAS .COM
Todos
T d llos registros
i t
de
d Segmento,
S
t incluido
i l id SS (registro
(
i t d
de

Segmento de Pila) se inicializan con valor 0, apuntando as al


principio del segmento donde se carga el programa, en definitiva,
apuntando al principio del PSP, ya que dicho PSP se sita justo al
principio del segmento.
El registro IP (Puntero de Instruccin) se inicializa con valor 100h

para que apunte a la primera instruccin del programa. La primera


instruccin del programa se encuentra justo despus del PSP y
normalmente suele ser un salto (JMP). Esto es as ya que los datos
suelen estar antes que el cdigo del programa.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
PROGRAMAS .COM

Ahora nos surge un problema: Si situamos los datos al principio

del programa (Offset 100h) el procesador tomar estos datos


como instrucciones y las ejecutar, es decir, se ejecutaran los
datos! . Para remediarlo, al principio del programa incluimos una
instruccin de salto (JMP) hacia el cdigo del programa,
saltando as los datos.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
PROGRAMAS .COM

Una caracterstica importante relacionada con la forma en que

el DOS le cede el control a los programas .COM


COM es la siguiente:
Una vez que un programa .COM toma el control, el DOS
reserva toda la memoria libre para este programa. Es decir,
por muy pequeo que sea el programa .COM, el DOS le d toda
la memoria libre del sistema.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
MODO FORMAL DE UN PROGRAMA .COM
TITLE

NOMBRE ASM
NOMBRE.ASM

; Programa clsico de ejemplo.


ejemplo
; Despliega una leyenda en pantalla.
; Segmento de Cdigo

CODE

SEGMENT PUBLIC code


ORG 100H
ASSUME CS:CODE, ES:CODE , DS:CODE, SS:CODE

main:
JMP begin
;declaracin de variables
b i
begin:
;cdigo

CODE

Sistemas Digitales III

MOV AH,4CH
AH 4CH
INT 21H
ENDS
END main

; Funcin: Terminar
; Marca fin y define main

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
MODO SIMPLIFICADO DE UN PROGRAMA .COM
.MODEL
MODEL SMALL
.CODE
ORG 100H

; Programa clsico de ejemplo


ejemplo.
; Segmento de Cdigo
; Segmento de pila y espacio

main:
g
JMP begin
;declaracin de variables
begin:
;cdigo

MOV AH,4CH
INT 21H
END main

Sistemas Digitales III

; Funcin: Terminar
; Marca fin y define main

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
PROGRAMAS .EXE
En
E un programa EXE
EXE, llos d
datos,
t
pila
il y cdigo
di se definen
d fi
en

segmentos independientes. Se utiliza un segmento distinto para


cada una de esas tres principales estructuras. Aunque, en realidad,
podemos tener varios segmentos de datos, cada uno accesible de
forma independiente.
El fichero EXE cuenta con una cabecera que le indica al DOS como

ubicar cada uno de los diferentes segmentos definidos en memoria.


Esta cabecera la proporciona el programa LINK, nosotros no
debemos preocuparnos por ella.

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
PROGRAMAS .EXE
Una
U vez que ell DOS ha
h cargado
d ell programa EXE en memoria
i

para su ejecucin, ste quedara de la siguiente manera:

Como podemos ver, el PSP se sita al principio de todo

segmento
t d
de programa, como ocurra
con llos programas
COM.
Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g

En un principio ES y DS apuntan al PSP, ms


tarde deberemos hacer que DS apunte a
nuestro segmento de datos para poder
acceder a stos.

El p
par de registros
g
CS:IP apuntan
p
a la
primera instruccin de nuestro programa.
Esta primera instruccin a ejecutar viene
por la p
pseudo_instruccin END ((Fin de
dada p
Programa).

El par de registros SS:SP apuntan a la base


de la pila (ya que an no hay ninguno)
ninguno), y a la
vez apuntan a la cima de la pila (ya que el
primer elemento que se introduzca en la
pila se har segn la direccin de SS:SP).
SS:SP)

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
Una vez que nuestro programa toma el control, har accesible

su segmento de datos (como podemos ver en el modelo y en el


ejemplo de progs EXE), obteniendo la siguiente representacin
grfica:

Sistemas Digitales III

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
MODO FORMAL DE UN PROGRAMA .EXE
TITLE

NOMBRE ASM
NOMBRE.ASM

STACK SEGMENT PARA STACK stack


DW 64 DUP (?)
STACK ENDS

; Programa clsico de ejemplo.


ejemplo
; Despliega una leyenda en pantalla.
; Segmento de pila
; Define espacio en la pila

DATA SEGMENT PARA data


DATO1 DB
DATA ENDS

; Segmento de datos
; Se definen los datos

CODE

; Segmento de Cdigo

INICIO:

CODE

Sistemas Digitales III

SEGMENT PARA code


ASSUME
E CS:CODE,
DE DS:DATA,
D D
SS:STACK
MOV AX,DATA ;
MOV DS,AX

MOV AH,4CH
INT 21H
ENDS
END INICIO

; Punto de entrada al programa


; Pone direccin en AX
; Pone la direccin en los registros

; Funcin: Terminar
; Marca fin y define INICIO

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Estructura de Programa
g
MODO SIMPLIFICADO DE UN PROGRAMA .EXE
.MODEL
MODEL SMALL

; Programa clsico de ejemplo


ejemplo.
; Despliega una leyenda en pantalla.
; Segmento de pila y espacio

.STACK 100H
DATO1
D
O

.DATA
D
DB
.CODE
MOV AX,DATA ;
MOV DS,AX

MOV AH,4CH
INT 21H
END

Sistemas Digitales III

; Segmento de datos
;S
Se definen
f n n los
os datos
atos

; Segmento de Cdigo
; Pone direccin en AX
; Pone la direccin en los registros

; Funcin: Terminar
; Marca fin y define INICIO

Ing. Mara Franco

Lenguaje
E
Ensamblador
bl d

Preguntas, dudas y
comentarios?

Sistemas Digitales III

Ing. Mara Franco

Concluy el tema:
LENGUAJE ENSAMBLADOR
Muchas gracias por su atencin!!

TAREA
Leer las guas enviadas para
complementar

Sistemas Digitales III

Ing. Mara Franco