Unidad 1 interfaz

19
12/02/2014 1 IMPORTANCIA DE LA PROGRAMACION EN LENGUAJE ENSAMBLADOR Un programa escrito en lenguaje ensamblador requiere considerablemente menos memoria y se ejecuta más rápidamente que un programa escrito en un lenguaje de alto nivel como Pascal. El lenguaje ensamblador ofrece al programador la posibilidad de realizar tareas muy específicas que sería muy difícil llevar a cabo en un lenguaje de alto nivel. El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de la máquina que ningún lenguaje de alto nivel puede ofrecer.

Transcript of Unidad 1 interfaz

Page 1: Unidad 1 interfaz

12/02/2014

1

IMPORTANCIA DE LA PROGRAMACION EN LENGUAJE ENSAMBLADOR

• Un programa escrito en lenguaje ensamblador requiere considerablementemenos memoria y se ejecuta más rápidamente que un programa escrito en unlenguaje de alto nivel como Pascal.

• El lenguaje ensamblador ofrece al programador la posibilidad de realizartareas muy específicas que sería muy difícil llevar a cabo en un lenguaje dealto nivel.

• El conocimiento del lenguaje ensamblador permite una comprensión de laarquitectura de la máquina que ningún lenguaje de alto nivel puede ofrecer.

Page 2: Unidad 1 interfaz

12/02/2014

2

• Desarrollar aplicaciones en lenguajes de alto nivel resulta mucho másproductivo que hacerlo en ensamblador, pero este último resultaespecialmente atractivo cuando hay que optimizar determinadas rutinas quesuponen un cuello de botella para el rendimiento del sistema.

• Los programas residentes y las rutinas de servicio de interrupción casisiempre se escriben en ensamblador.

• La carga inicial de un S.O. debe realizarse en ensamblador, pues hacerlo conun lenguaje de alto nivel supondría usar instrucciones que en ese momentono pueden ser ejecutadas por la máquina.

Page 3: Unidad 1 interfaz

12/02/2014

3

Ventajas del lenguaje ensamblador:

• Velocidad de ejecución de los programas

• Mayor control sobre el hardware de la computadora

Desventajas del lenguaje ensamblador:

• Repetición constante de grupos de instrucciones

• No existe una sintaxis estandarizada

• Dificultad para encontrar errores en los programas.

¿QUÉ SON LOS REGISTROS?

UN REGISTRO ES UNA MEMORIA DE ALTA VELOCIDAD Y POCA CAPACIDAD, INTEGRADA EN EL

MICROPROCESADOR, QUE PERMITE GUARDAR TRANSITORIAMENTE DATOS.

Page 4: Unidad 1 interfaz

12/02/2014

4

EL PROCESADOR

EL PROCESADOR SOLO ENTIENDE UN LENGUAJE QUE SE CONOCE COMO:

LENGUAJE ENSAMBLADOR

O

LENGUAJE MAQUINA

REGISTROS

UNO DE LOS MÓDULOS PRINCIPALES QUE UTILIZA EL LENGUAJE ENSAMBLADOR PARA

MANEJAR EL PROCESADOR SON LOS REGISTROS. LOS REGISTROS SE EMPLEAN PARA CONTROLAR

INSTRUCCIONES EN EJECUCIÓN, MANEJAR DIRECCIONAMIENTO DE MEMORIA Y

PROPORCIONAR CAPACIDAD ARITMÉTICA.

Page 5: Unidad 1 interfaz

12/02/2014

5

LOS REGISTROS INTERNOS DEL PROCESADOR SE PUEDE CLASIFICAR EN 6 TIPOS DIFERENTES:

• Registros de segmento

• Registros de propósito general

• Registro de apuntadores

• Registro de banderas

• Registros de Puntero de instrucción

• Registros de pila

MEMORIA

PRINCIPAL(RAM)

Page 6: Unidad 1 interfaz

12/02/2014

6

MEMORIA:

• Es el espacio que necesita la CPU para poder guardar los

programas y los datos que se manipulan mientras están en

uso. Desde el punto de vista físico, la memoria consiste en

chips, ya sea en la tarjeta madre o en un pequeño tablero de

circuitos conectados a ésta.

LA MEMORIA PRINCIPAL O RAM (MEMORIA DE ACCESO ALEATORIO)

• Es donde el ordenador guarda los datos que está utilizando

en el momento presente; son los "megas" famosos en

número de 32, 64 ó 128.

• Por su función, es una amiga inseparable del

microprocesador, con el cual se comunica a través de los

buses de datos.

Page 7: Unidad 1 interfaz

12/02/2014

7

• Por ejemplo, cuando la CPU tiene que

ejecutar un programa, primero lo coloca

en la memoria y después lo empieza a

ejecutar.

• Esta clase de memoria es volátil, es decir

que, cuando se corta la energía eléctrica,

se borra toda la información que estuviera

almacenada en ella.

ROM O MEMORIA DE SOLO LECTURA

• contiene un conjunto de instrucciones de inicio que aseguran que el resto de la memoria esté funcionando de manera apropiada; verifica los dispositivos de hardware y busca un sistema operativo en las unidades de disco de la computadora

Page 8: Unidad 1 interfaz

12/02/2014

8

INTERRUPCIONES

¿QUE ES UNA INTERRUPCIÓN?

• Una interrupción es el rompimiento en la secuencia de un programa para para ejecutar un programa especial.

Page 9: Unidad 1 interfaz

12/02/2014

9

CLASES

• Interrupciones por software

• Son aquellas programadas por el usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida.

• Interrupciones por hardware

• Son aquellas que son provocadas por dispositivos

• externos al procesador

INTERRUPCIONES POR HARDWARE EXISTEN 2 TIPOS

• Interrupciones por hardware enmascarables:

• Aquellas en las que el usuario decide si quiere o no ser interrumpido.

• Interrupciones por hardware no enmascarables (NMI):

• Aquellas que siempre interrumpen al programa.

Page 10: Unidad 1 interfaz

12/02/2014

10

1.5 LLAMADAS AL SISTEMA (SYSTEM CALL)

ES UN MÉTODO O FUNCIÓN QUE PUEDE INVOCAR UN PROCESO PARA

SOLICITAR CIERTO SERVICIO AL SISTEMA OPERATIVO .

LAS LLAMADAS SON PETICIONES A EJECUCIÓN DE RUTINAS,

PROPORCIONAN LA INTERFAZ ENTRE EL SISTEMA OPERATIVO Y UN

PROGRAMA EN EJECUCIÓN.

• SON INSTRUCCIONES DE LENGUAJE ENSAMBLADOR

• SE PRESENTAN EN LOS MANUALES QUE EMPLEAN LOS

PROGRAMADORES DE ESTE LENGUAJE.

Llamadas al sistema:

• TIME: Permite obtener la fecha y hora del sistema

• WRITE: Se emplea para escribir un dato en un cierto dispositivo de salida, tales

como una pantalla o un disco magnético

• READ: Es usada para leer de un dispositivo de entrada, tales como un teclado o un

disco magnético

• OPEN: Es usada para obtener un descriptor de un fiche del sistema, ese fichero

suele pasarse a write

Page 11: Unidad 1 interfaz

12/02/2014

11

Algunos sistemas permiten efectuar llamadas al

sistema directamente desde un programa realizado en

el lenguaje a mayor nivel se asemejan a una función o

sub-rutinas que generan una llamada a una ruta en

especial de tiempo de ejecución.

Ejemplo: En el procesador INTEL es INT y en

UNIX son rutinas

El siguiente diagrama ilustra la relación entre la Shell y el

Kernel.

• El Shell es lo que el sistema operativo nos muestra, la

portada, el intérprete de comandos, etc.

• El Kernel es el núcleo del sistema operativo.

Page 12: Unidad 1 interfaz

12/02/2014

12

INTRODUCCIÓN:

Modo de direccionamiento: mecanismo que permite conocer la ubicación de un dato o instrucción, una

computadora dispone de varios modos de direccionamiento.

Objeto: dato o instrucción que se desea direccionar.

Objetivos de los modos de direccionamiento:

• Reducir el espacio ocupado en memoria por las instrucciones.

• Permitir la reubicación del código.

• Facilitar el manejo de las estructuras de datos.

• Implícito: Llamado también inherente, el operando se especifica en la misma definición de la instrucción.

• Inmediato: El operando es el que figura en la instrucción, no su dirección. Este modo es útil para inicializar registros o palabras de memoria con un valor constante.

• Directo: El campo de operando en la instrucción contiene la direccion en memoria donde se encuentra el operando

• Indirecto: Aquí, el campo de operando de la instrucción indica la localización de la dirección efectiva del operando.

Page 13: Unidad 1 interfaz

12/02/2014

13

• EJECUCION

Para la ejecución del programa simplemente basta teclear su nombre en el prompt de MS-DOS y teclear ENTER. Con esto el programa será cargado en memoria y el sistema procederá a ejecutarlo. El proceso completo para poder crear un programa ejecutable con el Microsoft Macro Assembler se muestra abajo.

ESTRUCTURA GENERAL DE UN PROGRAMA EN LENGUAJE ENSAMBLADOR.

• Lenguaje ensamblador que usa servicios o funciones de MS-DOS (system calls) para imprimir el mensaje Hola mundo!! en pantalla.

• ; HOLA.ASM

• ; Programa clasico de ejemplo. Despliega una leyenda en pantalla.

• STACK SEGMENT STACK ; Segmento de pila

• DW 64 DUP (?) ; Define espacio en la pila

• STACK ENDS

• DATA SEGMENT ; Segmento de datos

• SALUDO DB "Hola mundo!!",13,10,"$" ; Cadena

• DATA ENDS

• CODE SEGMENT ; Segmento de Codigo

• ASSUME CS:CODE, DS:DATA, SS:STACK

• INICIO: ; Punto de entrada al programa

• MOV AX,DATA ; Pone direccion en AX

• MOV DS,AX ; Pone la direccion en los registros

• MOV DX,OFFSET SALUDO ; Obtiene direccion del mensaje

• MOV AH,09H ; Funcion: Visualizar cadena

• INT 21H ; Servicio: Funciones alto nivel DOS

• MOV AH,4CH ; Funcion: Terminar

• INT 21H

• CODE ENDS

• END INICIO ; Marca fin y define INICIO

Page 14: Unidad 1 interfaz

12/02/2014

14

• Estructura de una línea:

• INSTRUCCIÓN EN ENSAMBLADOR

• INSTRUCCIÓN EN LENGUAJE MÁQUINA

SINTAXIS DE UN LENGUAJE ENSAMBLADOR

DIRECCIÓN CÓDIGO DE OPERACIÓN DIRECCIÓN DE LOS OPERANDOS

Page 15: Unidad 1 interfaz

12/02/2014

15

• Etiqueta

• - Identifica la línea en la cual se encuentra.

• - Se asocia a la dirección en la cual se encuentra la instrucción o el dato, o a la constante definida.

• - Recomendaciones

• • Utilizar sólo letras o números (comenzar por una letra).

• • Colocar la primera letra de la etiqueta en el primer carácter de la línea.

• Nemotécnico

• - Identifica:

• • Un código de operación del lenguaje

• • Una pseudoinstrucción

• Campo de operandos

• - Identifica los operandos que intervienen en la instrucción o pseudoinstrucción.

• - Tipos de operandos:

• • Constantes

• ∗ Numéricas: decimales(D), binarias (%,B), octales (O,@,Q,C),

• hexadecimales (H,$).

• ∗ Alfabéticas: entre comillas.

• • Símbolos

• ∗ Predefinidos: registros, contador de dirección de ensamblado.

• ∗ Implícitos: etiquetas de dirección.

• ∗ Explícitos: mediante pseudoinstrucciones.

• • Expresiones

• Comentarios

• - Indicaciones para una mejor comprensión del programa ensamblador.

• - Pueden comenzar con el símbolo “;”.

CAMPOS DE UNA INSTRUCCIÓN EN ENSAMBLADOR

• Registros de datos

• Registros de segmento

• Registros punteros de la pila

• Registros índices

• Registro de instrucciones

• Registro de flags de estado

EL MICROPROCESADOR 8086 TIENE CATORCE REGISTROS DE 16 BITS:

Page 16: Unidad 1 interfaz

12/02/2014

16

• Los registros competos ax, bx, cx, dx trabajan sobre 16bits, mientras la parte alta (ah, bh, ch, dh) y baja (al, bl, cl,dl) de cada registro trabaja sobre 8 bits, es esencialconocerlo para a la hora de programar no cometer erroresen mover datos de un registro a otro.

ax (ah - al) - acumuladorbx (bh - bl) - registro basecx (ch - cl) - registro contadordx (dh - dl) - registro de datossp - registro del apuntador de pila

REGISTROS DE DATOS

• SP - Puntero de pila

• BP - Puntero base de pila

• SI - Registro índice

• DI - Registro índice

• IP - Contador de programa

REGISTROS PUNTEROS: REGISTRO DEL APUNTADOR DE PILA

Page 17: Unidad 1 interfaz

12/02/2014

17

• CS - segmento de código

• DS - segmento de datos

• ES - segmento extra

• SS - segmento pila

REGISTROS DE SEGMENTO:

INSTRUCCIONES DE TRANSAFERENCIA DE DATOS

• mov: mueve o transfiere

• xchg: intercambia

• in: entrada

• out:salida

• xlat: traduce usando una tabla

• lea: carga la direccion efectiva

• lds: carga el segmento de datos

• les: carga el segmento extralahf: carga los indicadores en ahsahf: guarda ah en los indicadorespush fuente: (sp)<- fuentepop destino: destino <- (sp)

Page 18: Unidad 1 interfaz

12/02/2014

18

INSTRUCCIONES ARITMÉTICAS

add: sumaadc: suma con acarreoaaa: ajuste ascii para la sumadaa: ajuste decimal para la suma

sub: restasbb: resta con acarreo negativoaas: ajuste ascii para la restadas: ajuste decimal para la resta

mul: multiplicacionimul: multiplicacion enteraaam: ajuste ascii para la multiplicacion

div: divisionidiv: division enteraaad: ajuste ascii para la division

cbw: pasar octeto a palabracwd: pasar palabra a doble palabraneg: negacion

sti: poner a 1 el indicador de interrupcioncli: borrar el indicador de interrupcioninto: interrupcion por capacidad excedida(desbordamiento)iret: retorno de interrupcionint: interrupcion

int 21: interrupcion 21, esta manda llamar al sistema operativo que ejecuta las instrucciones anteriores

int 20: interrupcion 20, esta interrupcion ejecuta lo anterior y termina el programa para que no se cicle

INTERRUPCIONES

Page 19: Unidad 1 interfaz

12/02/2014

19