SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
INSTITUTO TECNOLOGICO SUPERIOR
DE
FELIPE CARRILLO PUERTO
INVESTIGACIÓN:
U1 Introducción al Lenguaje Ensamblador

D O C E N T E:
Ing. Marcos Gaspar Pech Cruz.
PRESENTA
Angulo Estrella Jesús Alberto
Lara Domínguez Efraín
Yama May José Luis

Aula: J2

No. De Control 111K0030
No. De Control 111K0043
No. De Control 111K0056

Grupo: B

C A R R E R A:
Ingeniería en sistemas computacionales
M A T E R I A:
Lenguajes de Interfaz

Felipe Carrillo Puerto, Quintana Roo a 27 de Enero de 2014
Introducción al Lenguaje Ensamblador

Contenido
1.1 Importancia de la programación en Lenguaje Ensamblador ....................................... 3
1.2 El procesador y sus registros internos ................................................................................... 4
1.3 La memoria principal (RAM) .................................................................................................... 7
1.4 Concepto De Interrupción. ............................................................................................................ 8
1.5 Llamadas A Servicios Del Sistema. ........................................................................................ 9
1.6 Modos De Direccionamiento. ................................................................................................. 10
Direccionamiento Directo. ................................................................................................. 11
Direccionamiento Relativo................................................................................................. 12
Direccionamiento Indirecto. .............................................................................................. 12
Direccionamiento Implícito. ............................................................................................... 13
Direccionamiento de Registro. ......................................................................................... 13
Direccionamiento Indirecto por Registro. ..................................................................... 13
1.7 Proceso de ensamblado y ligado .......................................................................................... 14
1.8 Desplegado de mensajes en el monitor ............................................................................... 15

ITS Carrillo Puerto

Lenguajes De Interfaz

2
ISC-6B
Introducción al Lenguaje Ensamblador

UNIDAD I: INTRODUCCION AL LENGUAJE ENSAMBLADOR
1.1 Importancia de la programación en Lenguaje Ensamblador
Definición: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado
para escribir programas informáticos, y constituye la representación más directa del
código máquina específico para cada arquitectura de microprocesador.
La importancia del lenguaje ensamblador es principalmente que se trabaja
directamente con el microprocesador; por lo cual se debe de conocer el
funcionamiento interno de este, tiene la ventaja de que en él se puede realizar
cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar.
Otro punto sería que los programas en ensamblador ocupan menos espacio en
memoria.

Ventajas y desventajas del Lenguaje Ensamblador
Ventajas
1. 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.
2. Eficiencia de tamaño.- Un programa en ensamblador no ocupa mucho espacio
en memoria porque no tiene que cargan librerías y demás como son los
lenguajes de alto nivel.
3. Flexibilidad.- En lenguaje ensamblador se pueden hacer tareas específicas que
en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas
limitantes que no se lo permite.

ITS Carrillo Puerto

Lenguajes De Interfaz

3
ISC-6B
Introducción al Lenguaje Ensamblador

1.2 El procesador y sus registros internos
El procesador es un elemento importante del hardware de la PC. Es la unidad
del sistema, que contiene una tarjeta de sistema, fuente de poder y ranuras de
expansión para tarjetas opcionales. Los elementos de la tarjeta de sistema son un
microprocesador, memoria de solo lectura (ROM) y memoria de acceso aleatorio
(RAM).

REGISTROS INTERNOS DEL PROCESADOR.
Los registros del procesador se emplean para controlar instrucciones en
ejecución, manejar direccionamiento de memoria y proporcionar capacidad
aritmética. Los registros son direccionables por medio de un nombre. Los bits por
convención, se numeran de derecha a izquierda, como en:
... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Registros de segmento
Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria
para direccionamiento conocida como el segmento actual.








Registro CS. El DOS almacena la dirección inicial del segmento de código
de un programa en el registro CS. Esta dirección de segmento, más un valor
de desplazamiento en el registro apuntador de instrucción (IP), indica la
dirección de una instrucción que es buscada para su ejecución.
Registro DS. La dirección inicial de un segmento de datos de programa es
almacenada en el registro DS. En términos sencillos, esta dirección, más un
valor de desplazamiento en una instrucción, genera una referencia a la
localidad de un byte especifico en el segmento de datos.
Registro SS. El registro SS permite la colocación en memoria de una pila,
para almacenamiento temporal de direcciones y datos. El DOS almacena la
dirección de inicio del segmento de pila de un programa en el registro SS.
Esta dirección de segmento, más un valor de desplazamiento en el registro
del apuntador de pila (SP), indica la palabra actual en la pila que está siendo
direccionada.
Registros ES. Algunas operaciones con cadenas de caracteres (datos de
caracteres) utilizan el registro extra de segmento para manejar el
direccionamiento de memoria. En este contexto, el registro ES está asociado

ITS Carrillo Puerto

Lenguajes De Interfaz

4
ISC-6B
Introducción al Lenguaje Ensamblador



con el registro DI (índice). Un programa que requiere el uso del registro ES
puede inicializarlo con una dirección de segmento apropiada.
Registros FS y GS. Son registros extra de segmento en los procesadores
80386 y posteriores.

Registros de propósito general.
Son únicos en el sentido de que se puede direccionarlos como una palabra o
como una parte de un byte. El último byte de la izquierda es la parte "alta", y el último
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.
 Registro AX. El registro AX, el acumulador principal, es utilizado para
operaciones que implican entrada/salida y la mayor parte de la aritmética.
Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el
uso del AX. También, algunas operaciones generan código más eficiente si
se refieren al AX en lugar de a los otros registros.

 Registro BX. El BX es conocido como el registro base ya que es el único
registro de propósito general que puede ser índice para direccionamiento
indexado. También es común emplear el BX para cálculos.

 Registro DX. El DX es conocido como el registro de datos. Algunas
operaciones de entrada/salida requieren uso, y las operaciones de
multiplicación y división con cifras grandes suponen al DX y al AX trabajando
juntos.

Registro de Apuntador de Instrucciones.

ITS Carrillo Puerto

Lenguajes De Interfaz

5
ISC-6B
Introducción al Lenguaje Ensamblador

El registro apuntador de instrucciones (IP) de 16 bits contiene el
desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP está
asociado con el registro CS en el sentido de que el IP indica la instrucción actual
dentro del segmento de código que se está ejecutando actualmente. Los
procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP.
Registros Apuntadores.
Los registros SP (apuntador de la pila) Y BP (apuntador de base) están
asociados con el registro SS y permiten al sistema accesar datos en el segmento
de la pila.
Registro SP. El apuntador de la pila de 16 bits está asociado con el registro
SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que
está siendo procesada en la pila. El sistema maneja de forma automática estos
registros.
Registro BP. El BP de 16 bits facilita la referencia de parámetros, los cuales
son datos y direcciones transmitidos vía pila.
Registros Índice.
Los registros SI y DI están disponibles para direccionamiento indexado y para
sumas y restas.
Registro SI. El registro índice fuente de 16 bits es requerido por algunas
operaciones con cadenas (de caracteres). En este contexto, el SI está asociado con
el registro DS.
Registro DI. El registro índice destino también es requerido por algunas
operaciones con cadenas de caracteres. En este contexto, el DI está asociado con
el registro ES.
Registro de Banderas.
Sirven para indicar el estado actual de la máquina y el resultado del
procesamiento. Muchas instrucciones que piden comparaciones y aritmética
cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar
pruebas para determinar la acción subsecuente:
 OF (Overflow, desbordamiento). Indica desbordamiento de un bit de orden
alto (mas a la izquierda) después de una operación aritmética.
 DF (dirección). Designa la dirección hacia la izquierda o hacia la derecha
para mover o comparar cadenas de caracteres.
ITS Carrillo Puerto

Lenguajes De Interfaz

6
ISC-6B
Introducción al Lenguaje Ensamblador

 IF (interrupción). Indica que una interrupción externa, como la entrada
desde el teclado, sea procesada o ignorada.
 TF (trampa). Permite la operación del procesador en modo de un paso. Los
programas depuradores, como el DEBUG, activan esta bandera de manera
que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo,
para examinar el efecto de esa instrucción sobre los registros de memoria.
 SF (signo). Contiene el signo resultante de una operación aritmética (0 =
positivo y 1 = negativo).
 ZF (cero). Indica el resultado de una operación aritmética o de comparación
(0 = resultado diferente de cero y 1 = resultado igual a cero).
 AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de 8
bits para aritmética especializada.
 PF (paridad). Indica paridad par o impar de una operación en datos de 8 bits
de bajo orden (mas a la derecha).
 CF (acarreo). 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 de rotación.
Las banderas están en el registro de banderas en las siguientes posiciones:

1.3 La memoria principal (RAM)

RAM es el acrónimo inglés de Random Access Memory (memoria de acceso
aleatorio). Se trata de una memoria de semiconductor en la que se puede tanto leer
como escribir información. Es una memoria volátil, es decir, pierde su contenido al
desconectar la energía eléctrica. Se utiliza normalmente como memoria temporal
para almacenar resultados intermedios y datos similares no permanentes.
En estas memorias se accede a cada celda (generalmente se direcciona a
nivel de bytes) mediante un cableado interno, es decir, cada byte tiene un camino
prefijado para entrar y salir, a diferencia de otros tipos de almacenamiento, en las
ITS Carrillo Puerto

Lenguajes De Interfaz

7
ISC-6B
Introducción al Lenguaje Ensamblador

que hay una cabeza lectograbadora que tiene que ubicarse en la posición deseada
antes de leer el dato deseado.
Se dicen "de acceso aleatorio" porque los diferentes accesos son
independientes entre sí. Por ejemplo, si un disco rígido debe hacer dos accesos
consecutivos a sectores alejados físicamente entre sí, se pierde un tiempo en mover
la cabeza hasta la pista deseada (o esperar que el sector pase por debajo, si ambos
están en la misma pista), tiempo que no se pierde en la RAM.
Las RAM se dividen en estáticas y dinámicas. Una memoria RAM estática
mantiene su contenido inalterado mientras esté alimentada. La información
contenida en una memoria RAM dinámica se degrada con el tiempo, llegando ésta
a desaparecer, a pesar de estar alimentada. Para evitarlo hay que restaurar la
información contenida en sus celdas a intervalos regulares, operación denominada
refresco.
Las memorias se agrupan en módulos, que se conectan a la placa base del
computador. Según los tipos de conectores que lleven los módulos, se clasifican en
Módulos SIMM (Single In-line Memory Module), con 30 o 72 contactos,
módulos DIMM (Dual In-line Memory Module), con 168 contactos y
módulos RIMM (RAMBUS In-line Memory Module) con 184 contactos.

1.4 Concepto De Interrupción.
Un procesador no puede procesar simultáneamente varios trozos de
información (procesa un trozo de información a la vez), un programa que está siendo
ejecutado puede, gracias al pedido de interrupción, ser momentáneamente
suspendido mientras se produce una interrupción. El programa interrumpido puede
continuar ejecutándose luego. Existen 256 direcciones de interrupción diferentes.
Una interrupción se convierte en una interrupción de hardware cuando es
solicitada por uno de los componentes de hardware del equipo. En efecto, existen
varios periféricos en un equipo. Estos periféricos necesitan generalmente utilizar los
recursos del sistema aunque sólo sea para comunicarse con el sistema mismo.
Cuando un periférico desea acceder a un recurso, envía un pedido de
interrupción al procesador para llamar su atención. Los periféricos cuentan con un
número de interrupción que se denomina IRQ (Peticiones de Interrupción. Es como
si cada periférico tirara de un "hilo" que está atado a una campana para señalarle al
equipo que desea que le preste atención.
ITS Carrillo Puerto

Lenguajes De Interfaz

8
ISC-6B
Introducción al Lenguaje Ensamblador

Este "hilo" es, de hecho, una línea física que conecta cada ranura de
expansión así como cada interfaz E/S a la placa madre. Para una ranura ISA de 8
bits, por ejemplo, hay 8 líneas IRQ que unen ranuras ISA de 8 bits a la placa madre
(IRQ0 a IRQ7). Estos IRQ están controlados por un "controlador de interrupción"
que se encarga de “cederle la palabra” al IRQ que posee la mayor prioridad.
Al aparecer las ranuras de 16 bits, se agregaron IRQ 8 a 15. En
consecuencia, fue necesario agregar un segundo controlador de interrupción. Los
dos grupos de interrupciones están unidos por IRQ 2 el cual se conecta (o "produce
una cascada") a IRQ 9. En cierto modo, esta cascada "inserta" IRQ 8 a 15 entre
IRQ1 y 3:

Dado que la prioridad va del IRQ inferior al superior y que se insertan IRQ 8
a 15 entre IRQ 1 y 3, el orden de prioridad es el siguiente:
0 > 1 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 3 > 4 > 5 > 6 > 7

1.5 Llamadas A Servicios Del Sistema.
Las llamadas al sistema comúnmente usan una instrucción especial de
la CPU que causa que el procesador transfiera el control a un código privilegiado.
Previamente especificado por el mismo código. Esto permite al código privilegiado
especificar donde va a ser conectado así como el estado del procesador.
Cuando una llamada al sistema es invocada, la ejecución del programa que
invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque
de Control de Proceso del inglés Process Control Block), para poder continuar
ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones
de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta
finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso
demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de
la llamada al sistema y del algoritmo de planificación de CPU.
Las llamadas son peticiones a ejecución de rutinas y proporcionan la interfaz
entre el sistema operativo y un programa en ejecución. Estas llamadas son
instrucciones de lenguaje ensamblador y se presentan en los manuales que
emplean los programadores de este lenguaje.
ITS Carrillo Puerto

Lenguajes De Interfaz

9
ISC-6B
Introducción al Lenguaje Ensamblador

Las llamadas al sistema para ejecución y el control de programas,
usualmente incluyen un conjunto completo de los servicios accesibles por la vía del
lenguaje de órdenes, tales como: RUN, EXECUTE, ABORT y planificación
relacionada con el tiempo, además los usuarios con las llamadas del sistema
pueden suspender, establecer o cambiar atributos del tiempo de ejecución de uno
o más programas.
Las llamadas del sistema para el gestor de recursos, proporcionan servicios
para la asignación, reserva y reclamación de los recursos del sistema. Por ejemplo,
existen llamadas del sistema para extender o reducir la cantidad de memoria
poseída por el programa que se llama. Las llamadas del sistema pueden asignar o
reservar otros tipos de objetos del sistema y después destruir o devolver su custodia
al sistema operativo.
Las llamadas al sistema se pueden agrupar en cinco categorías:
1. Control de proceso (Crear, cargar, ejecutar un proceso, obtener y
establecer atributos, esperar un suceso, liberar memoria, abortar y terminar
proceso).
2. Manipulación de archivos (Crear, abrir, leer, obtener y establecer
atributos, cerrar y eliminar archivos).
3. Manipulación de periféricos (Solicitar, escribir, leer, obtener y establecer
atributos, liberar periférico).
4. Manipulación de la información (Obtener fecha y hora, establecer fecha
y hora, obtener y establecer datos del sistema, obtener y establecer
atributos).
5. Comunicaciones (Crear conexión, enviar mensajes, recibir mensajes,
transferir información del estado y eliminar conexión.

1.6 Modos De Direccionamiento.
Los llamados modos de direccionamiento son las diferentes maneras de
especificar en informática un operando dentro de una instrucción en lenguaje
ensamblador.
Un modo de direccionamiento especifica la forma de calcular la dirección de
memoria efectiva de un operando mediante el uso de la información contenida en
registros y / o constantes, contenida dentro de una instrucción de la máquina o en
otra parte.

ITS Carrillo Puerto

Lenguajes De Interfaz

10
ISC-6B
Introducción al Lenguaje Ensamblador

Las operaciones se hacen entre registros o registros y memoria, pero nunca
entre memoria y memoria (salvo algunas operaciones con cadenas de caracteres).
Los modos de direccionamiento determinan el lugar en que reside un operando, un
resultado o la siguiente instrucción a ejecutar según el caso.
Tenga en cuenta que no existe una forma generalmente aceptada de
nombrar a los distintos modos de direccionamiento. En particular, los distintos
autores y fabricantes de equipos pueden dar nombres diferentes para el modo de
hacer frente al mismo, o los mismos nombres, a los diferentes modos de
direccionamiento
Direccionamiento Inmediato.
En este modo el operando es especificado en la instrucción misma. En otras
palabras, una instrucción de modo inmediato tiene un campo de operando en vez
de un campo de dirección. El campo del operando contiene el operando actual que
se debe utilizar en conjunto con la operación especificada en la instrucción. Las
instrucciones de modo inmediato son útiles para inicializar los registros en un valor
constante.
Cuando el campo de dirección especifica un registro del procesador, la
instrucción se dice que está en el modo de registro.

Direccionamiento Directo.
Es directo cuando la instrucción contiene el lugar donde se encuentra el
operando. Según el lugar donde se encuentra el operando puede ser:
• Direccionamiento directo a registro.
• Direccionamiento directo a memoria
• Dirección completa (p. ej. Z80 sobre 64 Kb con 16 bits)
• Dirección sobre una página del mapa de memoria; también se
conoce como direccionamiento de página base.

ITS Carrillo Puerto

Lenguajes De Interfaz

11
ISC-6B
Introducción al Lenguaje Ensamblador

Direccionamiento Relativo.
La instrucción indica el desplazamiento del operando con respecto a un
puntero:
La dirección efectiva es calculada por la unidad de control sumando, o
restando, el desplazamiento al puntero de referencia que suele estar en un registro.
Dependiendo del puntero se tienen diferentes modos de direccionamiento.
Dirección efectiva = Reg. Referencia + desplazamiento.
Modo de direccionamiento / Registro de referencia / Cálculo dirección efectiva:
 Relativo a contador de programa Contador de programa (CP) DE = CP +
desplazamiento.
 Relativo a registro base Un registro base (R B) DE = RB + desplazamiento.
 Relativo a registro índice Un registro índice (R I) DE = RI +
desplazamiento.
 Relativo a pila Registro de pila (SP) DE = SP + desplazamiento.
Ventajas
 Las instrucciones son más compactas.
 El código puede cambiar de lugar en el mapa de memoria con cambiar el
valor del puntero.
 Gran facilidad de manejo de estructuras de datos.
Inconvenientes
 Se requiere una operación adicional para el cálculo de la dirección del
operando.
Direccionamiento Indirecto.
La posición indicada por la instrucción no es el operando sino la dirección de
memoria en la que se encuentra, por lo que se necesita un acceso adicional a
memoria.
ITS Carrillo Puerto

Lenguajes De Interfaz

12
ISC-6B
Introducción al Lenguaje Ensamblador

La dirección de memoria se puede dar mediante:





Direccionamiento directo a memoria
Direccionamiento relativo
Es posible que se realicen múltiples niveles de indirección.
Su utilidad más común es la de acceso a diversas informaciones mediante
tablas de punteros.

Direccionamiento Implícito.
En este modo de direccionamiento no es necesario poner ninguna dirección
de forma explícita, ya que en el propio código de operación se conoce la dirección
del (de los) operando(s) al (a los) que se desea acceder o con el (los) que se quiere
operar. Requiere que el programador conozca con que operandos se está
trabajando.
Direccionamiento de Registro.
Sirve para especificar operandos que están en registros.

Direccionamiento Indirecto por Registro.
En este modo el campo de la dirección de la instrucción da la dirección en
donde la dirección efectiva se almacena en la memoria. El control localiza la
instrucción de la memoria y utiliza su parte de dirección para acceder a la memoria
ITS Carrillo Puerto

Lenguajes De Interfaz

13
ISC-6B
Introducción al Lenguaje Ensamblador

de nuevo para leer una dirección efectiva. Unos pocos modos de direccionamiento
requieren que el campo de dirección de la instrucción sea sumado al control de un
registro especificado en el procesador. La dirección efectiva en este modo se
obtiene del siguiente cálculo:
Dir. Efectiva = Dir. de la parte de la instrucción + Contenido del registro del
procesador.

1.7 Proceso de ensamblado y ligado
Para poder crear un programa se requieren varias herramientas: Primero un
editor para crear el programa fuente. Segundo un compilador que no es más que un
programa que "traduce" el programa fuente a un programa objeto. Y tercero un
enlazador o linker, que genere el programa ejecutable a partir del programa objeto.
El editor puede ser cualquier editor de textos que se tenga a la mano, como
compilador utilizaremos el MASM (macro ensamblador de Microsoft) ya que es el
más común, y como enlazador utilizaremos el programa link.
La extensión usada para que MASM reconozca los programas fuente en
ensamblador es .ASM; una vez traducido el programa fuente, el MASM crea un
archivo con la extensión .OBJ, este archivo contiene un "formato intermedio" del
programa, llamado así porque aún no es ejecutable pero tampoco es ya un
programa en lenguaje fuente. El enlazador genera, a partir de un archivo .OBJ o la
combinación de varios de estos archivos, un programa ejecutable, cuya extensión
es usualmente .EXE aunque también puede ser .COM, dependiendo de la forma en
que se ensambló.

ITS Carrillo Puerto

Lenguajes De Interfaz

14
ISC-6B
Introducción al Lenguaje Ensamblador

1.8 Desplegado de mensajes en el monitor
Para poder desplegar mensajes en lenguaje ensamblador
debemos conocer la estructura del programa en ensamblador.

primero

Comentarios En Lenguaje Ensamblador.
El uso de comentarios a lo largo de un programa puede mejorar su claridad,
en especial en lenguaje ensamblador, donde el propósito de un conjunto de
instrucciones con frecuencia no es claro. Un comentario empieza con punto y coma
(;) y, en donde quiera que lo codifique, el ensamblador supone que todos los
caracteres a la derecha de esa línea son comentarios. Un comentario puede
contener cualquier carácter imprimible, incluyendo el espacio en blanco.
Un comentario puede aparecer solo en una línea o a continuación de una
instrucción en la misma línea, como lo muestran los dos ejemplos siguientes:



Toda esta línea es un comentario.
ADD AX, BX; Comentario en la misma línea que la instrucción.

Ya que un comentario aparece solo en un listado de un programa fuente
en ensamblador y no genera código de máquina, puede incluir cualquier cantidad
de comentarios sin afectar el tamaño o la ejecución del programa
ensamblado. Otra manera de proporcionar comentarios es por medio de la directiva
COMMENT.
Palabras Reservadas
Ciertas palabras en lenguaje ensamblador están reservadas para sus
propósitos propios, y son usadas solo bajo condiciones especiales. Por categorías,
las palabras reservadas incluyen:





Instrucciones, como MOV y ADD, que son operaciones que la computadora
puede ejecutar.
Directivas como END o SEGMENT, que se emplean para proporcionar
comandos al ensamblador.
Operadores, como FAR y SIZE, que se utilizan en expresiones.
Símbolos predefinidos, como @Data y @Model, que regresan información a
su programa.

Identificadores.
Un identificador es un nombre que se aplica a elementos en el programa. Los
dos tipos de identificadores son: nombre, que se refiere a la dirección de un
elemento de dato y etiqueta, que se refiere a la dirección de una instrucción. Un
identificador puede usar los siguientes caracteres:
ITS Carrillo Puerto

Lenguajes De Interfaz

15
ISC-6B
Introducción al Lenguaje Ensamblador

1. Letras del alfabeto: Desde la A hasta la Z(mayúsculas o minúsculas)
2. Dígitos: Desde el 0 al 9 (no puede ser el primer carácter)
3. Caracteres especiales: Signo de interrogación ( ? ) Subrayado ( _ ), Signo de
pesos ( $ ), Arroba ( @ ), Punto ( . ) (no puede ser el primer carácter)
El primer carácter de un identificador debe ser una letra o un carácter especial,
excepto punto. Ya que el ensamblador utiliza algunos símbolos especiales en
palabras que inician con el símbolo @, debe evitar usarlo en sus definiciones.
En consecuencia, en una instrucción tal como:



ADD AX, BX: El ensamblador sabe de forma automática que AX y BX se
refieren a los registros. Sin embargo, en una instrucción como:
MOV REGSAVE, AX: El ensamblador puede reconocer el nombre REGSAVE
solo si se define en algún lugar del programa.

Identificador, operación y operando pueden empezar en cualquier columna. Sin
embargo, si de manera consistente se inicia en la misma columna para estas tres
entradas se hace un programa más legible.
 IDENTIFICADOR: Como ya se explicó, el termino nombre se aplica al
nombre de un elemento o directiva definida, mientras que el termino etiqueta
se aplica al nombre de una instrucción.
 OPERACIÓN: La operación, que debe ser codificada, es con mayor
frecuencia usada para la definición de áreas de datos y codificación de
instrucciones. Para un elemento de datos, una operación como DB o DW
define un campo, área de trabajo o constante.
 OPERANDO: El operando (si existe) proporciona información para la
operación que actúa sobre él. Para un elemento de datos, el operando
identifica su valor inicial. Por ejemplo, en la definición siguiente de un
elemento de datos llamado COUNTER, la operación DB significa "definir
byte", y el operando inicializa su contenido con un valor cero:

Para una instrucción, un operando indica en donde realizar la acción.
Un operando de una instrucción puede tener una, dos o tal vez ninguna entrada.
Aquí están tres ejemplos:

ITS Carrillo Puerto

Lenguajes De Interfaz

16
ISC-6B
Introducción al Lenguaje Ensamblador

Directivas Para Listar: Page Y Title.
La directiva PAGE y TITLE ayudan a controlar el formato de un listado de un
programa en ensamblador. Este es su único fin, y no tienen efecto sobre la
ejecución subsecuente del programa.
PAGE. Al inicio de un programa, la directiva PAGE designa el número
máximo de líneas para listar en una página y el número máximo de caracteres en
una línea. Su formato general es:
PAGE [longitud][, ancho]
El ejemplo siguiente proporciona 60 líneas por página y 132 caracteres por
línea: PAGE 60, 132
El número de líneas por página puede variar desde 10 hasta 255, mientras
que el número de caracteres por línea desde 60 hasta 132. La omisión de PAGE
causa que el ensamblador tome PAGE 50, 80.
TITLE. Se puede emplear la directiva TITLE para hacer que un título para un
programa se imprima en la línea 2 de cada página en el listado del programa. Puede
codificar TITLE de una vez, al inicio del programa. Su formato general es:
TITLE Texto.
Para el operando texto, una técnica recomendada es utilizar el nombre del
programa como se registra en el disco. Por ejemplo:
TITLE Prog1 Mi primer programa en ensamblador
Directiva Segment.
Un programa ensamblado en formato .EXE consiste en uno o más
segmentos. Un segmento de pila define el almacén de la pila, un segmento de datos
define los elementos de datos y un segmento de código proporciona un código
ejecutable. Las directivas para definir un segmento, SEGMENT y ENDS tienen el
formato siguiente:
El enunciado SEGMENT define el inicio de un segmento. El nombre del
segmento debe estar presente, ser único y cumplir las convenciones para nombres
del lenguaje. EL enunciado ENDS indica el final del segmento y contiene el mismo
nombre del enunciado SEGMENT. El tamaño máximo de un segmento es de 64K.
El operando de un enunciado SEGMENT puede tener tres tipos de opciones:
alineación, combinar y clase, codificadas en este formato:
nombre

SEGMENT

ITS Carrillo Puerto

alineación

combinar

Lenguajes De Interfaz

' clase ‘
17
ISC-6B
Introducción al Lenguaje Ensamblador

TIPO ALINEACION. La entrada alineación indica el límite en el que inicia el
segmento. Para el requerimiento típico, PARA, alinea el segmento con el límite de
un párrafo, de manera que la dirección inicial es divisible entre 16, o 10H. En
ausencia de un operando hace que el ensamblador por omisión tome PARA.
TIPO COMBINAR. La entrada combinar indica si se combina el segmento
con otros segmentos cuando son enlazados después de ensamblar. Los tipos de
combinar son STACK, COMMON, PUBLIC y la expresión AT. Por ejemplo, el
segmento de la pila por lo común es definido como:
nombre SEGMENT

PARA

STACK

Puede utilizar PUBLIC y COMMON en donde tenga el propósito de combinar
de forma separada programas ensamblados cuando los enlaza. En otros casos,
donde un programa no es combinado con otros, puede omitir la opción o codificar
NONE.
TIPO CLASE. La entrada clase, encerrada entre apóstrofos, es utilizada para
agrupar segmentos cuando se enlazan. Se utiliza la clase 'code' para el segmento
de códigos, 'data' por segmento de datos y 'stack' para el segmento de la pila. El
ejemplo siguiente define un segmento de pila con tipos alineación, combinar y clase:
nombre

SEGMENT

PARA

STACK

'Stack'

Directiva Assume.
Un programa utiliza el registro SS para direccionar la pila, al registro DS para
direccionar el segmento de datos y el registro CS para direccionar el segmento de
código. Para este fin, usted tiene que indicar al ensamblador el propósito de cada
segmento en el programa.
La directiva para este propósito es ASSEME, codificada en el segmento de
código como sigue:
Operación Operando.
ASSUME

SS:nompila, DS:nomsegdatos, CS: nomsegcodigo,. . .

Los operandos pueden aparecer en cualquier orden. Al igual que otras
directivas, ASSUME es solo un mensaje que ayuda al ensamblador a convertir
código simbólico a código maquina; aún puede tener que codificar instrucciones que
físicamente cargan direcciones en registros de segmentos en el momento de la
ejecución.
•PAGE 60,132
ITS Carrillo Puerto

Lenguajes De Interfaz

18
ISC-6B
Introducción al Lenguaje Ensamblador

•TITLE P04ASM1 ESTRUCTURA DE UN PROGRAMA .EXE
•;------------------------------------------------------------------------------•STACKSG SEGMENT PARA STACK 'Stack'
•
...
•STACKSG ENDS
•------------------------------------------------------------------------------•DATASG SEGMENT PARA 'Data'
•
...
•DATASG ENDS
•;------------------------------------------------------------------------------•CODESG SEGMENT PARA 'Code'
•BEGIN
PROC
FAR
•ASSUME
SS:STACKSG, DS:DATASG,CS:CODESG
•MOV
AX, DATASG
;Obtiene la dirección del segmento de datos
•MOV
DS, AX
;Almacena dirección en DS
•
...
•MOV
AX, 4C00H
;Peticion
•INT
21H
;Salida al DOS
•BEGIN
ENDP
•CODESG ENDS
•END
BEGIN

Directivas Simplificadas De Segmentos
Los ensambladores de Microsoft y de Borland proporcionan algunas formas
abreviadas para definir segmentos. Para usar estas abreviaturas, inicialice el
modelo de memoria antes de definir algún segmento. El formato general (incluyendo
el punto inicial) es:
.MODEL modelo de memoria
El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT o
LARGE. Los requisitos para cada modelo son:
Puede utilizar cualquiera de estos modelos para un programa autónomo (esto
es, un programa que no esté enlazado con algún otro). El modelo TINY está
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. La directiva .MODELL genera automáticamente el enunciado
ASSUME necesario.
Los formatos generales (incluyendo el punto inicial) para las directivas que
define los segmentos de la pila, de datos y de código son:
ITS Carrillo Puerto

Lenguajes De Interfaz

19
ISC-6B
Introducción al Lenguaje Ensamblador

.STACK [tamaño]
.DATA
.CODE [nombre]
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).

ITS Carrillo Puerto

Lenguajes De Interfaz

20
ISC-6B

Mais conteúdo relacionado

Mais procurados

Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitosPortafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitosHumano Terricola
 
automatas finitos
 automatas finitos automatas finitos
automatas finitosAnel Sosa
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
 
Alfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y ProblemasAlfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y ProblemasRaul
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARESAnel Sosa
 
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Fundamentos de TelecomunicacionesUnidad 5 Dispositivos de ComunicaciónFundamentos de TelecomunicacionesUnidad 5 Dispositivos de Comunicación
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de ComunicaciónJosé Antonio Sandoval Acosta
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraAlexandraMolinaSanchez
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre Juan Anaya
 
Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.LuiS YmAY
 
Gramática Libre de Contexto
Gramática Libre de ContextoGramática Libre de Contexto
Gramática Libre de ContextoBrayhan Acosta
 

Mais procurados (20)

UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
 
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitosPortafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Jerarquia de chomsky
Jerarquia de chomskyJerarquia de chomsky
Jerarquia de chomsky
 
Ensambladores
EnsambladoresEnsambladores
Ensambladores
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
 
Analisis lexico automatas i
Analisis lexico automatas iAnalisis lexico automatas i
Analisis lexico automatas i
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
Alfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y ProblemasAlfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y Problemas
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARES
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Fundamentos de TelecomunicacionesUnidad 5 Dispositivos de ComunicaciónFundamentos de TelecomunicacionesUnidad 5 Dispositivos de Comunicación
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
 
1.2. El procesador y sus registros internos
1.2. El procesador y sus registros internos1.2. El procesador y sus registros internos
1.2. El procesador y sus registros internos
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre
 
Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.
 
Gramática Libre de Contexto
Gramática Libre de ContextoGramática Libre de Contexto
Gramática Libre de Contexto
 

Destaque

Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfazjomapuga
 
5154 Tema3 Jose Rojas
5154 Tema3 Jose Rojas5154 Tema3 Jose Rojas
5154 Tema3 Jose RojasJose Rojas
 
El procesador y sus registros internos
El procesador y sus registros internosEl procesador y sus registros internos
El procesador y sus registros internosromo91
 
Lenguaje ensamblador y Estructura del CPU
Lenguaje ensamblador y Estructura del CPULenguaje ensamblador y Estructura del CPU
Lenguaje ensamblador y Estructura del CPUromo91
 
15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y LogicasJaime E. Velarde
 
Formatos de instrucción
Formatos de instrucciónFormatos de instrucción
Formatos de instrucciónSantiago Rozo
 
Instrucciones lenguaje assembler
Instrucciones lenguaje assemblerInstrucciones lenguaje assembler
Instrucciones lenguaje assemblerANDREA
 
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURGRelatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURGCibele Vasconcelos Dziekaniak
 
Lenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipeLenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipeDanielRomoDR
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador evelynm10
 

Destaque (20)

Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfaz
 
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADORUNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
 
5154 Tema3 Jose Rojas
5154 Tema3 Jose Rojas5154 Tema3 Jose Rojas
5154 Tema3 Jose Rojas
 
Div, idiv, Neg ensamblador
Div, idiv, Neg ensambladorDiv, idiv, Neg ensamblador
Div, idiv, Neg ensamblador
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
El procesador y sus registros internos
El procesador y sus registros internosEl procesador y sus registros internos
El procesador y sus registros internos
 
Lenguaje ensamblador y Estructura del CPU
Lenguaje ensamblador y Estructura del CPULenguaje ensamblador y Estructura del CPU
Lenguaje ensamblador y Estructura del CPU
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 
Uso Mplab
Uso MplabUso Mplab
Uso Mplab
 
15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas
 
Formatos de instrucción
Formatos de instrucciónFormatos de instrucción
Formatos de instrucción
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
 
Instrucciones lenguaje assembler
Instrucciones lenguaje assemblerInstrucciones lenguaje assembler
Instrucciones lenguaje assembler
 
Unidad 1 interfaz
Unidad 1 interfazUnidad 1 interfaz
Unidad 1 interfaz
 
Ots 2014 2 a5
Ots 2014 2 a5Ots 2014 2 a5
Ots 2014 2 a5
 
Tipos De Lenguajes
Tipos De LenguajesTipos De Lenguajes
Tipos De Lenguajes
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURGRelatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
 
Lenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipeLenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipe
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador
 

Semelhante a Unidadi. lenguajes de interfaz

Semelhante a Unidadi. lenguajes de interfaz (20)

Unidad I.pdf
Unidad I.pdfUnidad I.pdf
Unidad I.pdf
 
Tutorial ensamblador
Tutorial ensambladorTutorial ensamblador
Tutorial ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
El Microprocesador Y Su Arquitectura
El Microprocesador Y Su ArquitecturaEl Microprocesador Y Su Arquitectura
El Microprocesador Y Su Arquitectura
 
Emsamblador
EmsambladorEmsamblador
Emsamblador
 
asm_mododir2.pdf
asm_mododir2.pdfasm_mododir2.pdf
asm_mododir2.pdf
 
Definición de registro de procesador
Definición de registro de procesadorDefinición de registro de procesador
Definición de registro de procesador
 
Asm mododir2
Asm mododir2Asm mododir2
Asm mododir2
 
Esamblador8086
Esamblador8086Esamblador8086
Esamblador8086
 
Registros
RegistrosRegistros
Registros
 
Registros del cpu
Registros del cpuRegistros del cpu
Registros del cpu
 
Microporcesadores registro
Microporcesadores registroMicroporcesadores registro
Microporcesadores registro
 
Registros
RegistrosRegistros
Registros
 
Registros del procesador
Registros del procesadorRegistros del procesador
Registros del procesador
 
Registros ensayo
Registros ensayoRegistros ensayo
Registros ensayo
 
Registros del procesador 01
Registros del procesador 01Registros del procesador 01
Registros del procesador 01
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
Registros del cpu!
Registros del cpu!Registros del cpu!
Registros del cpu!
 
Registros
RegistrosRegistros
Registros
 
Assambler
AssamblerAssambler
Assambler
 

Mais de LuiS YmAY

Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLLuiS YmAY
 
Externalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costosExternalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costosLuiS YmAY
 
programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4LuiS YmAY
 
Dispositivos logicos programables
Dispositivos logicos programablesDispositivos logicos programables
Dispositivos logicos programablesLuiS YmAY
 
conversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogicoconversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogicoLuiS YmAY
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4LuiS YmAY
 
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONALUNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONALLuiS YmAY
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionLuiS YmAY
 
Tipos de servidores
Tipos de servidoresTipos de servidores
Tipos de servidoresLuiS YmAY
 
U7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSU7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSLuiS YmAY
 
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOSUNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOSLuiS YmAY
 
Fisica general.cinetica
Fisica general.cineticaFisica general.cinetica
Fisica general.cineticaLuiS YmAY
 
Programacion no lineaL
Programacion no lineaLProgramacion no lineaL
Programacion no lineaLLuiS YmAY
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOLuiS YmAY
 
Fisica.optica
Fisica.opticaFisica.optica
Fisica.opticaLuiS YmAY
 

Mais de LuiS YmAY (15)

Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
Externalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costosExternalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costos
 
programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4
 
Dispositivos logicos programables
Dispositivos logicos programablesDispositivos logicos programables
Dispositivos logicos programables
 
conversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogicoconversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogico
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4
 
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONALUNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
 
Tipos de servidores
Tipos de servidoresTipos de servidores
Tipos de servidores
 
U7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSU7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOS
 
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOSUNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
 
Fisica general.cinetica
Fisica general.cineticaFisica general.cinetica
Fisica general.cinetica
 
Programacion no lineaL
Programacion no lineaLProgramacion no lineaL
Programacion no lineaL
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Fisica.optica
Fisica.opticaFisica.optica
Fisica.optica
 

Último

DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...Martin M Flynn
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfmiriamguevara21
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfsolidalilaalvaradoro
 
Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Edith Liccioni
 
5º SOY LECTOR PART1- MD EDUCATIVO.pdfde
5º SOY LECTOR PART1- MD  EDUCATIVO.pdfde5º SOY LECTOR PART1- MD  EDUCATIVO.pdfde
5º SOY LECTOR PART1- MD EDUCATIVO.pdfdeBelnRosales2
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectosTrishGutirrez
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfJosé Hecht
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
Docencia en la Era de la Inteligencia Artificial UB4 Ccesa007.pdf
Docencia en la Era de la Inteligencia Artificial UB4  Ccesa007.pdfDocencia en la Era de la Inteligencia Artificial UB4  Ccesa007.pdf
Docencia en la Era de la Inteligencia Artificial UB4 Ccesa007.pdfDemetrio Ccesa Rayme
 
Buenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaBuenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaMarco Camacho
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
Presentación MF 1445 EVALUACION COMO Y QUE
Presentación MF 1445 EVALUACION COMO Y QUEPresentación MF 1445 EVALUACION COMO Y QUE
Presentación MF 1445 EVALUACION COMO Y QUEJosé Hecht
 
Filosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroFilosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroJosé Luis Palma
 
Descripción del Proceso de corte y soldadura
Descripción del Proceso de corte y soldaduraDescripción del Proceso de corte y soldadura
Descripción del Proceso de corte y soldaduraJose Sanchez
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías productommartinezmarquez30
 

Último (20)

DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
Acuerdo segundo periodo - Grado Septimo.pptx
Acuerdo segundo periodo - Grado Septimo.pptxAcuerdo segundo periodo - Grado Septimo.pptx
Acuerdo segundo periodo - Grado Septimo.pptx
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdf
 
Act#25 TDLab. Eclipse Solar 08/abril/2024
Act#25 TDLab. Eclipse Solar 08/abril/2024Act#25 TDLab. Eclipse Solar 08/abril/2024
Act#25 TDLab. Eclipse Solar 08/abril/2024
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
 
Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.Libro Ecuador Realidad Nacional ECUADOR.
Libro Ecuador Realidad Nacional ECUADOR.
 
5º SOY LECTOR PART1- MD EDUCATIVO.pdfde
5º SOY LECTOR PART1- MD  EDUCATIVO.pdfde5º SOY LECTOR PART1- MD  EDUCATIVO.pdfde
5º SOY LECTOR PART1- MD EDUCATIVO.pdfde
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
 
Sesión ¿Amor o egoísmo? Esa es la cuestión
Sesión  ¿Amor o egoísmo? Esa es la cuestiónSesión  ¿Amor o egoísmo? Esa es la cuestión
Sesión ¿Amor o egoísmo? Esa es la cuestión
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
Docencia en la Era de la Inteligencia Artificial UB4 Ccesa007.pdf
Docencia en la Era de la Inteligencia Artificial UB4  Ccesa007.pdfDocencia en la Era de la Inteligencia Artificial UB4  Ccesa007.pdf
Docencia en la Era de la Inteligencia Artificial UB4 Ccesa007.pdf
 
Buenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria FarmaceuticaBuenas Practicas de Manufactura para Industria Farmaceutica
Buenas Practicas de Manufactura para Industria Farmaceutica
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
Presentación MF 1445 EVALUACION COMO Y QUE
Presentación MF 1445 EVALUACION COMO Y QUEPresentación MF 1445 EVALUACION COMO Y QUE
Presentación MF 1445 EVALUACION COMO Y QUE
 
Filosofía del gobierno del general Alfaro
Filosofía del gobierno del general AlfaroFilosofía del gobierno del general Alfaro
Filosofía del gobierno del general Alfaro
 
Descripción del Proceso de corte y soldadura
Descripción del Proceso de corte y soldaduraDescripción del Proceso de corte y soldadura
Descripción del Proceso de corte y soldadura
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías producto
 

Unidadi. lenguajes de interfaz

  • 1. INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO INVESTIGACIÓN: U1 Introducción al Lenguaje Ensamblador D O C E N T E: Ing. Marcos Gaspar Pech Cruz. PRESENTA Angulo Estrella Jesús Alberto Lara Domínguez Efraín Yama May José Luis Aula: J2 No. De Control 111K0030 No. De Control 111K0043 No. De Control 111K0056 Grupo: B C A R R E R A: Ingeniería en sistemas computacionales M A T E R I A: Lenguajes de Interfaz Felipe Carrillo Puerto, Quintana Roo a 27 de Enero de 2014
  • 2. Introducción al Lenguaje Ensamblador Contenido 1.1 Importancia de la programación en Lenguaje Ensamblador ....................................... 3 1.2 El procesador y sus registros internos ................................................................................... 4 1.3 La memoria principal (RAM) .................................................................................................... 7 1.4 Concepto De Interrupción. ............................................................................................................ 8 1.5 Llamadas A Servicios Del Sistema. ........................................................................................ 9 1.6 Modos De Direccionamiento. ................................................................................................. 10 Direccionamiento Directo. ................................................................................................. 11 Direccionamiento Relativo................................................................................................. 12 Direccionamiento Indirecto. .............................................................................................. 12 Direccionamiento Implícito. ............................................................................................... 13 Direccionamiento de Registro. ......................................................................................... 13 Direccionamiento Indirecto por Registro. ..................................................................... 13 1.7 Proceso de ensamblado y ligado .......................................................................................... 14 1.8 Desplegado de mensajes en el monitor ............................................................................... 15 ITS Carrillo Puerto Lenguajes De Interfaz 2 ISC-6B
  • 3. Introducción al Lenguaje Ensamblador UNIDAD I: INTRODUCCION AL LENGUAJE ENSAMBLADOR 1.1 Importancia de la programación en Lenguaje Ensamblador Definición: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador. La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en él se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria. Ventajas y desventajas del Lenguaje Ensamblador Ventajas 1. 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. 2. Eficiencia de tamaño.- Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan librerías y demás como son los lenguajes de alto nivel. 3. Flexibilidad.- En lenguaje ensamblador se pueden hacer tareas específicas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite. ITS Carrillo Puerto Lenguajes De Interfaz 3 ISC-6B
  • 4. Introducción al Lenguaje Ensamblador 1.2 El procesador y sus registros internos El procesador es un elemento importante del hardware de la PC. Es la unidad del sistema, que contiene una tarjeta de sistema, fuente de poder y ranuras de expansión para tarjetas opcionales. Los elementos de la tarjeta de sistema son un microprocesador, memoria de solo lectura (ROM) y memoria de acceso aleatorio (RAM). REGISTROS INTERNOS DEL PROCESADOR. Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre. Los bits por convención, se numeran de derecha a izquierda, como en: ... 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Registros de segmento Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamiento conocida como el segmento actual.     Registro CS. El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución. Registro DS. La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. En términos sencillos, esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte especifico en el segmento de datos. Registro SS. El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de pila (SP), indica la palabra actual en la pila que está siendo direccionada. Registros ES. Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES está asociado ITS Carrillo Puerto Lenguajes De Interfaz 4 ISC-6B
  • 5. Introducción al Lenguaje Ensamblador  con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada. Registros FS y GS. Son registros extra de segmento en los procesadores 80386 y posteriores. Registros de propósito general. Son únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El último byte de la izquierda es la parte "alta", y el último 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.  Registro AX. El registro AX, el acumulador principal, es utilizado para operaciones que implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las instrucciones para multiplicar, dividir y traducir suponen el uso del AX. También, algunas operaciones generan código más eficiente si se refieren al AX en lugar de a los otros registros.  Registro BX. El BX es conocido como el registro base ya que es el único registro de propósito general que puede ser índice para direccionamiento indexado. También es común emplear el BX para cálculos.  Registro DX. El DX es conocido como el registro de datos. Algunas operaciones de entrada/salida requieren uso, y las operaciones de multiplicación y división con cifras grandes suponen al DX y al AX trabajando juntos. Registro de Apuntador de Instrucciones. ITS Carrillo Puerto Lenguajes De Interfaz 5 ISC-6B
  • 6. Introducción al Lenguaje Ensamblador El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP está asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se está ejecutando actualmente. Los procesadores 80386 y posteriores tienen un IP ampliado de 32 bits, llamado EIP. Registros Apuntadores. Los registros SP (apuntador de la pila) Y BP (apuntador de base) están asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila. Registro SP. El apuntador de la pila de 16 bits está asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila. El sistema maneja de forma automática estos registros. Registro BP. El BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones transmitidos vía pila. Registros Índice. Los registros SI y DI están disponibles para direccionamiento indexado y para sumas y restas. Registro SI. El registro índice fuente de 16 bits es requerido por algunas operaciones con cadenas (de caracteres). En este contexto, el SI está asociado con el registro DS. Registro DI. El registro índice destino también es requerido por algunas operaciones con cadenas de caracteres. En este contexto, el DI está asociado con el registro ES. Registro de Banderas. Sirven para indicar el estado actual de la máquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente:  OF (Overflow, desbordamiento). Indica desbordamiento de un bit de orden alto (mas a la izquierda) después de una operación aritmética.  DF (dirección). Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres. ITS Carrillo Puerto Lenguajes De Interfaz 6 ISC-6B
  • 7. Introducción al Lenguaje Ensamblador  IF (interrupción). Indica que una interrupción externa, como la entrada desde el teclado, sea procesada o ignorada.  TF (trampa). Permite la operación del procesador en modo de un paso. Los programas depuradores, como el DEBUG, activan esta bandera de manera que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo, para examinar el efecto de esa instrucción sobre los registros de memoria.  SF (signo). Contiene el signo resultante de una operación aritmética (0 = positivo y 1 = negativo).  ZF (cero). Indica el resultado de una operación aritmética o de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero).  AF (acarreo auxiliar). Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmética especializada.  PF (paridad). Indica paridad par o impar de una operación en datos de 8 bits de bajo orden (mas a la derecha).  CF (acarreo). 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 de rotación. Las banderas están en el registro de banderas en las siguientes posiciones: 1.3 La memoria principal (RAM) RAM es el acrónimo inglés de Random Access Memory (memoria de acceso aleatorio). Se trata de una memoria de semiconductor en la que se puede tanto leer como escribir información. Es una memoria volátil, es decir, pierde su contenido al desconectar la energía eléctrica. Se utiliza normalmente como memoria temporal para almacenar resultados intermedios y datos similares no permanentes. En estas memorias se accede a cada celda (generalmente se direcciona a nivel de bytes) mediante un cableado interno, es decir, cada byte tiene un camino prefijado para entrar y salir, a diferencia de otros tipos de almacenamiento, en las ITS Carrillo Puerto Lenguajes De Interfaz 7 ISC-6B
  • 8. Introducción al Lenguaje Ensamblador que hay una cabeza lectograbadora que tiene que ubicarse en la posición deseada antes de leer el dato deseado. Se dicen "de acceso aleatorio" porque los diferentes accesos son independientes entre sí. Por ejemplo, si un disco rígido debe hacer dos accesos consecutivos a sectores alejados físicamente entre sí, se pierde un tiempo en mover la cabeza hasta la pista deseada (o esperar que el sector pase por debajo, si ambos están en la misma pista), tiempo que no se pierde en la RAM. Las RAM se dividen en estáticas y dinámicas. Una memoria RAM estática mantiene su contenido inalterado mientras esté alimentada. La información contenida en una memoria RAM dinámica se degrada con el tiempo, llegando ésta a desaparecer, a pesar de estar alimentada. Para evitarlo hay que restaurar la información contenida en sus celdas a intervalos regulares, operación denominada refresco. Las memorias se agrupan en módulos, que se conectan a la placa base del computador. Según los tipos de conectores que lleven los módulos, se clasifican en Módulos SIMM (Single In-line Memory Module), con 30 o 72 contactos, módulos DIMM (Dual In-line Memory Module), con 168 contactos y módulos RIMM (RAMBUS In-line Memory Module) con 184 contactos. 1.4 Concepto De Interrupción. Un procesador no puede procesar simultáneamente varios trozos de información (procesa un trozo de información a la vez), un programa que está siendo ejecutado puede, gracias al pedido de interrupción, ser momentáneamente suspendido mientras se produce una interrupción. El programa interrumpido puede continuar ejecutándose luego. Existen 256 direcciones de interrupción diferentes. Una interrupción se convierte en una interrupción de hardware cuando es solicitada por uno de los componentes de hardware del equipo. En efecto, existen varios periféricos en un equipo. Estos periféricos necesitan generalmente utilizar los recursos del sistema aunque sólo sea para comunicarse con el sistema mismo. Cuando un periférico desea acceder a un recurso, envía un pedido de interrupción al procesador para llamar su atención. Los periféricos cuentan con un número de interrupción que se denomina IRQ (Peticiones de Interrupción. Es como si cada periférico tirara de un "hilo" que está atado a una campana para señalarle al equipo que desea que le preste atención. ITS Carrillo Puerto Lenguajes De Interfaz 8 ISC-6B
  • 9. Introducción al Lenguaje Ensamblador Este "hilo" es, de hecho, una línea física que conecta cada ranura de expansión así como cada interfaz E/S a la placa madre. Para una ranura ISA de 8 bits, por ejemplo, hay 8 líneas IRQ que unen ranuras ISA de 8 bits a la placa madre (IRQ0 a IRQ7). Estos IRQ están controlados por un "controlador de interrupción" que se encarga de “cederle la palabra” al IRQ que posee la mayor prioridad. Al aparecer las ranuras de 16 bits, se agregaron IRQ 8 a 15. En consecuencia, fue necesario agregar un segundo controlador de interrupción. Los dos grupos de interrupciones están unidos por IRQ 2 el cual se conecta (o "produce una cascada") a IRQ 9. En cierto modo, esta cascada "inserta" IRQ 8 a 15 entre IRQ1 y 3: Dado que la prioridad va del IRQ inferior al superior y que se insertan IRQ 8 a 15 entre IRQ 1 y 3, el orden de prioridad es el siguiente: 0 > 1 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 3 > 4 > 5 > 6 > 7 1.5 Llamadas A Servicios Del Sistema. Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado. Previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador. Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU. Las llamadas son peticiones a ejecución de rutinas y proporcionan la interfaz entre el sistema operativo y un programa en ejecución. Estas llamadas son instrucciones de lenguaje ensamblador y se presentan en los manuales que emplean los programadores de este lenguaje. ITS Carrillo Puerto Lenguajes De Interfaz 9 ISC-6B
  • 10. Introducción al Lenguaje Ensamblador Las llamadas al sistema para ejecución y el control de programas, usualmente incluyen un conjunto completo de los servicios accesibles por la vía del lenguaje de órdenes, tales como: RUN, EXECUTE, ABORT y planificación relacionada con el tiempo, además los usuarios con las llamadas del sistema pueden suspender, establecer o cambiar atributos del tiempo de ejecución de uno o más programas. Las llamadas del sistema para el gestor de recursos, proporcionan servicios para la asignación, reserva y reclamación de los recursos del sistema. Por ejemplo, existen llamadas del sistema para extender o reducir la cantidad de memoria poseída por el programa que se llama. Las llamadas del sistema pueden asignar o reservar otros tipos de objetos del sistema y después destruir o devolver su custodia al sistema operativo. Las llamadas al sistema se pueden agrupar en cinco categorías: 1. Control de proceso (Crear, cargar, ejecutar un proceso, obtener y establecer atributos, esperar un suceso, liberar memoria, abortar y terminar proceso). 2. Manipulación de archivos (Crear, abrir, leer, obtener y establecer atributos, cerrar y eliminar archivos). 3. Manipulación de periféricos (Solicitar, escribir, leer, obtener y establecer atributos, liberar periférico). 4. Manipulación de la información (Obtener fecha y hora, establecer fecha y hora, obtener y establecer datos del sistema, obtener y establecer atributos). 5. Comunicaciones (Crear conexión, enviar mensajes, recibir mensajes, transferir información del estado y eliminar conexión. 1.6 Modos De Direccionamiento. Los llamados modos de direccionamiento son las diferentes maneras de especificar en informática un operando dentro de una instrucción en lenguaje ensamblador. Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra parte. ITS Carrillo Puerto Lenguajes De Interfaz 10 ISC-6B
  • 11. Introducción al Lenguaje Ensamblador Las operaciones se hacen entre registros o registros y memoria, pero nunca entre memoria y memoria (salvo algunas operaciones con cadenas de caracteres). Los modos de direccionamiento determinan el lugar en que reside un operando, un resultado o la siguiente instrucción a ejecutar según el caso. Tenga en cuenta que no existe una forma generalmente aceptada de nombrar a los distintos modos de direccionamiento. En particular, los distintos autores y fabricantes de equipos pueden dar nombres diferentes para el modo de hacer frente al mismo, o los mismos nombres, a los diferentes modos de direccionamiento Direccionamiento Inmediato. En este modo el operando es especificado en la instrucción misma. En otras palabras, una instrucción de modo inmediato tiene un campo de operando en vez de un campo de dirección. El campo del operando contiene el operando actual que se debe utilizar en conjunto con la operación especificada en la instrucción. Las instrucciones de modo inmediato son útiles para inicializar los registros en un valor constante. Cuando el campo de dirección especifica un registro del procesador, la instrucción se dice que está en el modo de registro. Direccionamiento Directo. Es directo cuando la instrucción contiene el lugar donde se encuentra el operando. Según el lugar donde se encuentra el operando puede ser: • Direccionamiento directo a registro. • Direccionamiento directo a memoria • Dirección completa (p. ej. Z80 sobre 64 Kb con 16 bits) • Dirección sobre una página del mapa de memoria; también se conoce como direccionamiento de página base. ITS Carrillo Puerto Lenguajes De Interfaz 11 ISC-6B
  • 12. Introducción al Lenguaje Ensamblador Direccionamiento Relativo. La instrucción indica el desplazamiento del operando con respecto a un puntero: La dirección efectiva es calculada por la unidad de control sumando, o restando, el desplazamiento al puntero de referencia que suele estar en un registro. Dependiendo del puntero se tienen diferentes modos de direccionamiento. Dirección efectiva = Reg. Referencia + desplazamiento. Modo de direccionamiento / Registro de referencia / Cálculo dirección efectiva:  Relativo a contador de programa Contador de programa (CP) DE = CP + desplazamiento.  Relativo a registro base Un registro base (R B) DE = RB + desplazamiento.  Relativo a registro índice Un registro índice (R I) DE = RI + desplazamiento.  Relativo a pila Registro de pila (SP) DE = SP + desplazamiento. Ventajas  Las instrucciones son más compactas.  El código puede cambiar de lugar en el mapa de memoria con cambiar el valor del puntero.  Gran facilidad de manejo de estructuras de datos. Inconvenientes  Se requiere una operación adicional para el cálculo de la dirección del operando. Direccionamiento Indirecto. La posición indicada por la instrucción no es el operando sino la dirección de memoria en la que se encuentra, por lo que se necesita un acceso adicional a memoria. ITS Carrillo Puerto Lenguajes De Interfaz 12 ISC-6B
  • 13. Introducción al Lenguaje Ensamblador La dirección de memoria se puede dar mediante:     Direccionamiento directo a memoria Direccionamiento relativo Es posible que se realicen múltiples niveles de indirección. Su utilidad más común es la de acceso a diversas informaciones mediante tablas de punteros. Direccionamiento Implícito. En este modo de direccionamiento no es necesario poner ninguna dirección de forma explícita, ya que en el propio código de operación se conoce la dirección del (de los) operando(s) al (a los) que se desea acceder o con el (los) que se quiere operar. Requiere que el programador conozca con que operandos se está trabajando. Direccionamiento de Registro. Sirve para especificar operandos que están en registros. Direccionamiento Indirecto por Registro. En este modo el campo de la dirección de la instrucción da la dirección en donde la dirección efectiva se almacena en la memoria. El control localiza la instrucción de la memoria y utiliza su parte de dirección para acceder a la memoria ITS Carrillo Puerto Lenguajes De Interfaz 13 ISC-6B
  • 14. Introducción al Lenguaje Ensamblador de nuevo para leer una dirección efectiva. Unos pocos modos de direccionamiento requieren que el campo de dirección de la instrucción sea sumado al control de un registro especificado en el procesador. La dirección efectiva en este modo se obtiene del siguiente cálculo: Dir. Efectiva = Dir. de la parte de la instrucción + Contenido del registro del procesador. 1.7 Proceso de ensamblado y ligado Para poder crear un programa se requieren varias herramientas: Primero un editor para crear el programa fuente. Segundo un compilador que no es más que un programa que "traduce" el programa fuente a un programa objeto. Y tercero un enlazador o linker, que genere el programa ejecutable a partir del programa objeto. El editor puede ser cualquier editor de textos que se tenga a la mano, como compilador utilizaremos el MASM (macro ensamblador de Microsoft) ya que es el más común, y como enlazador utilizaremos el programa link. La extensión usada para que MASM reconozca los programas fuente en ensamblador es .ASM; una vez traducido el programa fuente, el MASM crea un archivo con la extensión .OBJ, este archivo contiene un "formato intermedio" del programa, llamado así porque aún no es ejecutable pero tampoco es ya un programa en lenguaje fuente. El enlazador genera, a partir de un archivo .OBJ o la combinación de varios de estos archivos, un programa ejecutable, cuya extensión es usualmente .EXE aunque también puede ser .COM, dependiendo de la forma en que se ensambló. ITS Carrillo Puerto Lenguajes De Interfaz 14 ISC-6B
  • 15. Introducción al Lenguaje Ensamblador 1.8 Desplegado de mensajes en el monitor Para poder desplegar mensajes en lenguaje ensamblador debemos conocer la estructura del programa en ensamblador. primero Comentarios En Lenguaje Ensamblador. El uso de comentarios a lo largo de un programa puede mejorar su claridad, en especial en lenguaje ensamblador, donde el propósito de un conjunto de instrucciones con frecuencia no es claro. Un comentario empieza con punto y coma (;) y, en donde quiera que lo codifique, el ensamblador supone que todos los caracteres a la derecha de esa línea son comentarios. Un comentario puede contener cualquier carácter imprimible, incluyendo el espacio en blanco. Un comentario puede aparecer solo en una línea o a continuación de una instrucción en la misma línea, como lo muestran los dos ejemplos siguientes:   Toda esta línea es un comentario. ADD AX, BX; Comentario en la misma línea que la instrucción. Ya que un comentario aparece solo en un listado de un programa fuente en ensamblador y no genera código de máquina, puede incluir cualquier cantidad de comentarios sin afectar el tamaño o la ejecución del programa ensamblado. Otra manera de proporcionar comentarios es por medio de la directiva COMMENT. Palabras Reservadas Ciertas palabras en lenguaje ensamblador están reservadas para sus propósitos propios, y son usadas solo bajo condiciones especiales. Por categorías, las palabras reservadas incluyen:     Instrucciones, como MOV y ADD, que son operaciones que la computadora puede ejecutar. Directivas como END o SEGMENT, que se emplean para proporcionar comandos al ensamblador. Operadores, como FAR y SIZE, que se utilizan en expresiones. Símbolos predefinidos, como @Data y @Model, que regresan información a su programa. Identificadores. Un identificador es un nombre que se aplica a elementos en el programa. Los dos tipos de identificadores son: nombre, que se refiere a la dirección de un elemento de dato y etiqueta, que se refiere a la dirección de una instrucción. Un identificador puede usar los siguientes caracteres: ITS Carrillo Puerto Lenguajes De Interfaz 15 ISC-6B
  • 16. Introducción al Lenguaje Ensamblador 1. Letras del alfabeto: Desde la A hasta la Z(mayúsculas o minúsculas) 2. Dígitos: Desde el 0 al 9 (no puede ser el primer carácter) 3. Caracteres especiales: Signo de interrogación ( ? ) Subrayado ( _ ), Signo de pesos ( $ ), Arroba ( @ ), Punto ( . ) (no puede ser el primer carácter) El primer carácter de un identificador debe ser una letra o un carácter especial, excepto punto. Ya que el ensamblador utiliza algunos símbolos especiales en palabras que inician con el símbolo @, debe evitar usarlo en sus definiciones. En consecuencia, en una instrucción tal como:   ADD AX, BX: El ensamblador sabe de forma automática que AX y BX se refieren a los registros. Sin embargo, en una instrucción como: MOV REGSAVE, AX: El ensamblador puede reconocer el nombre REGSAVE solo si se define en algún lugar del programa. Identificador, operación y operando pueden empezar en cualquier columna. Sin embargo, si de manera consistente se inicia en la misma columna para estas tres entradas se hace un programa más legible.  IDENTIFICADOR: Como ya se explicó, el termino nombre se aplica al nombre de un elemento o directiva definida, mientras que el termino etiqueta se aplica al nombre de una instrucción.  OPERACIÓN: La operación, que debe ser codificada, es con mayor frecuencia usada para la definición de áreas de datos y codificación de instrucciones. Para un elemento de datos, una operación como DB o DW define un campo, área de trabajo o constante.  OPERANDO: El operando (si existe) proporciona información para la operación que actúa sobre él. Para un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en la definición siguiente de un elemento de datos llamado COUNTER, la operación DB significa "definir byte", y el operando inicializa su contenido con un valor cero: Para una instrucción, un operando indica en donde realizar la acción. Un operando de una instrucción puede tener una, dos o tal vez ninguna entrada. Aquí están tres ejemplos: ITS Carrillo Puerto Lenguajes De Interfaz 16 ISC-6B
  • 17. Introducción al Lenguaje Ensamblador Directivas Para Listar: Page Y Title. La directiva PAGE y TITLE ayudan a controlar el formato de un listado de un programa en ensamblador. Este es su único fin, y no tienen efecto sobre la ejecución subsecuente del programa. PAGE. Al inicio de un programa, la directiva PAGE designa el número máximo de líneas para listar en una página y el número máximo de caracteres en una línea. Su formato general es: PAGE [longitud][, ancho] El ejemplo siguiente proporciona 60 líneas por página y 132 caracteres por línea: PAGE 60, 132 El número de líneas por página puede variar desde 10 hasta 255, mientras que el número de caracteres por línea desde 60 hasta 132. La omisión de PAGE causa que el ensamblador tome PAGE 50, 80. TITLE. Se puede emplear la directiva TITLE para hacer que un título para un programa se imprima en la línea 2 de cada página en el listado del programa. Puede codificar TITLE de una vez, al inicio del programa. Su formato general es: TITLE Texto. Para el operando texto, una técnica recomendada es utilizar el nombre del programa como se registra en el disco. Por ejemplo: TITLE Prog1 Mi primer programa en ensamblador Directiva Segment. Un programa ensamblado en formato .EXE consiste en uno o más segmentos. Un segmento de pila define el almacén de la pila, un segmento de datos define los elementos de datos y un segmento de código proporciona un código ejecutable. Las directivas para definir un segmento, SEGMENT y ENDS tienen el formato siguiente: El enunciado SEGMENT define el inicio de un segmento. El nombre del segmento debe estar presente, ser único y cumplir las convenciones para nombres del lenguaje. EL enunciado ENDS indica el final del segmento y contiene el mismo nombre del enunciado SEGMENT. El tamaño máximo de un segmento es de 64K. El operando de un enunciado SEGMENT puede tener tres tipos de opciones: alineación, combinar y clase, codificadas en este formato: nombre SEGMENT ITS Carrillo Puerto alineación combinar Lenguajes De Interfaz ' clase ‘ 17 ISC-6B
  • 18. Introducción al Lenguaje Ensamblador TIPO ALINEACION. La entrada alineación indica el límite en el que inicia el segmento. Para el requerimiento típico, PARA, alinea el segmento con el límite de un párrafo, de manera que la dirección inicial es divisible entre 16, o 10H. En ausencia de un operando hace que el ensamblador por omisión tome PARA. TIPO COMBINAR. La entrada combinar indica si se combina el segmento con otros segmentos cuando son enlazados después de ensamblar. Los tipos de combinar son STACK, COMMON, PUBLIC y la expresión AT. Por ejemplo, el segmento de la pila por lo común es definido como: nombre SEGMENT PARA STACK Puede utilizar PUBLIC y COMMON en donde tenga el propósito de combinar de forma separada programas ensamblados cuando los enlaza. En otros casos, donde un programa no es combinado con otros, puede omitir la opción o codificar NONE. TIPO CLASE. La entrada clase, encerrada entre apóstrofos, es utilizada para agrupar segmentos cuando se enlazan. Se utiliza la clase 'code' para el segmento de códigos, 'data' por segmento de datos y 'stack' para el segmento de la pila. El ejemplo siguiente define un segmento de pila con tipos alineación, combinar y clase: nombre SEGMENT PARA STACK 'Stack' Directiva Assume. Un programa utiliza el registro SS para direccionar la pila, al registro DS para direccionar el segmento de datos y el registro CS para direccionar el segmento de código. Para este fin, usted tiene que indicar al ensamblador el propósito de cada segmento en el programa. La directiva para este propósito es ASSEME, codificada en el segmento de código como sigue: Operación Operando. ASSUME SS:nompila, DS:nomsegdatos, CS: nomsegcodigo,. . . Los operandos pueden aparecer en cualquier orden. Al igual que otras directivas, ASSUME es solo un mensaje que ayuda al ensamblador a convertir código simbólico a código maquina; aún puede tener que codificar instrucciones que físicamente cargan direcciones en registros de segmentos en el momento de la ejecución. •PAGE 60,132 ITS Carrillo Puerto Lenguajes De Interfaz 18 ISC-6B
  • 19. Introducción al Lenguaje Ensamblador •TITLE P04ASM1 ESTRUCTURA DE UN PROGRAMA .EXE •;------------------------------------------------------------------------------•STACKSG SEGMENT PARA STACK 'Stack' • ... •STACKSG ENDS •------------------------------------------------------------------------------•DATASG SEGMENT PARA 'Data' • ... •DATASG ENDS •;------------------------------------------------------------------------------•CODESG SEGMENT PARA 'Code' •BEGIN PROC FAR •ASSUME SS:STACKSG, DS:DATASG,CS:CODESG •MOV AX, DATASG ;Obtiene la dirección del segmento de datos •MOV DS, AX ;Almacena dirección en DS • ... •MOV AX, 4C00H ;Peticion •INT 21H ;Salida al DOS •BEGIN ENDP •CODESG ENDS •END BEGIN Directivas Simplificadas De Segmentos Los ensambladores de Microsoft y de Borland proporcionan algunas formas abreviadas para definir segmentos. Para usar estas abreviaturas, inicialice el modelo de memoria antes de definir algún segmento. El formato general (incluyendo el punto inicial) es: .MODEL modelo de memoria El modelo de memoria puede ser TINY, SMALL, MEDIUM, COMPACT o LARGE. Los requisitos para cada modelo son: Puede utilizar cualquiera de estos modelos para un programa autónomo (esto es, un programa que no esté enlazado con algún otro). El modelo TINY está 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. La directiva .MODELL genera automáticamente el enunciado ASSUME necesario. Los formatos generales (incluyendo el punto inicial) para las directivas que define los segmentos de la pila, de datos y de código son: ITS Carrillo Puerto Lenguajes De Interfaz 19 ISC-6B
  • 20. Introducción al Lenguaje Ensamblador .STACK [tamaño] .DATA .CODE [nombre] 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). ITS Carrillo Puerto Lenguajes De Interfaz 20 ISC-6B