exposicion equipo iii

Anuncio
Lenguaje
Ensamblador
Equipo 3
 Alberto Abraham Gomez Cruz
 Edgar
Unidad 1
 1.3 Interruptores
 1.4 Estructura de un programa en
ensamblador
Introducción
 El lenguaje ensamblador es el sistema alfanumérico
para escribir código máquina mediante
expresiones abreviadas (mnemotécnicos).
 La compilación es más complicada porque incluye la
conversión de operaciones matemáticas
complejas, comandos de lenguaje natural o tipos de
comandos complejos.
Introducción
 Cada ordenador tiene su propio lenguaje
ensamblador, exclusivo de su CPU; un lenguaje de
alto nivel (LAN) puede ser compilado en distintas
máquinas.
Introducción
Es usado
principalmente porque
hay aplicaciones o
programas que deben
tratar directamente
con los registros de la
máquina, la memoria,
dispositivos de E/S,
etc.
1.3 Interruptores
 Definición:
Una interrupción es una operación que suspende la
ejecución de un programa de modo que el sistema
pueda realizar una acción especial. La rutina de
interrupción ejecuta y por lo regular regresa el
control al procedimiento que fue interrumpido, el
cual entonces reasume su ejecución.
1) INTERRUPCIONES INTERNAS DE
HARDWARE:
 Las interrupciones internas son generadas por
ciertos eventos que surgen durante la ejecución de
un programa. Este tipo de interrupciones son
manejadas en su totalidad por el hardware y no es
posible modificarlas.
2) INTERRUPCIONES EXTERNAS DE
HARDWARE:
 Las interrupciones externas las generan los
dispositivos periféricos, como pueden ser: teclado,
impresoras, tarjetas de comunicaciones, etc. También
son generadas por los coprocesadores. No es
posible desactivar a las interrupciones externas. Estas
interrupciones no son enviadas directamente a la
UCP, sino que se mandan a un circuito integrado cuya
función es exclusivamente manejar este tipo de
interrupciones.
3) INTERRUPCIONES DE SOFTWARE:
 Las interrupciones de software pueden ser
activadas directamente por el ensamblador
invocando al número de interrupción deseada con la
instrucción INT. El uso de las interrupciones nos
ayuda en la creación de programas, utilizándolas
nuestros programas son más cortos, es más fácil
entenderlos y usualmente tienen un mejor
desempeño debido en gran parte a su menor
tamaño.
IRQ Definición
 (Interrupt ReQuest - solicitud de interrupción).
Canales utilizados para gestionar dispositivos
periféricos. Las IRQ son las líneas de interrupción
que utilizan los dispositivos para avisar al
microprocesador que necesitan su atención.
Números IRQ
IRQ 0: cronómetro del
sistema. Este interruptor
está reservado para el timer
del sistema y jamás está
disponible para otros
dispositivos.
•IRQ 1: controlador del
teclado.
•IRQ 2: Interrupciones en
cascada para las
interrupciones IRQ del 8 al
15.
•IRQ 3: Segundo Puerto Serie
(COM2). A menudo es
también para el cuarto
puerto serie (COM4).
•IRQ 4: Primer Puerto Serie
(COM1). También es utilizado
por defecto para el COM3.
Numeros IRQ
•IRQ 5: Tarjeta de
sonido.
•IRQ 6: Controlador de
disquetera.
•IRQ 7: Puerto Paralelo
LPT1 para impresoras o
cualquier otro
dispositivo que utiliza
puerto paralelo.
•IRQ 8: Reloj del
Sistema.
•IRQ 9, 10, 11:
Interrupción disponible
para periféricos extras.
Números IRQ
•IRQ 12: Mouse PS/2 o
Placa de Red o
similares.
•IRQ 13:
Coprocesador/Unidad
de punto flotante
•IRQ 14: Canal IDE
Primario. En sistemas
que no se utiliza
dispositivos IDE, este
canal se utiliza para
otros periféricos
•IRQ 15: Canal IDE
Secundario
PIC
Definición
Los PIC son los circuitos integrados de Microchip Technology Inc. , que
pertenece a la categoría de los microcontroladores es decir, aquellos
componentes que integran en un único dispositivo todos los circuitos
necesarios para realizar un completo sistema digital programable.
INT
 fundamental (es decir, integrada en el compilador
de tipo numérico utilizado para definir las variables
de explotación números enteros).
 El tamaño del número que se puede almacenar en
un entero depende del hardware. Por lo general,
pero no siempre es así de 32 bits el rango de
valores está entre -2.147.483.648 y 2.147.483.647.
FLAGS
 la bandera o flag se refiere a uno o más bits que se
utilizan para almacenar un valor binario o código
que tiene asignado un significado
1.3.1 Hardware
 Las interrupciones hardware ocurren cuando un
dispositivo necesita atención del procesador y
genera una señal eléctrica en la línea IRQ que tiene
asignada. Esta señal es recogida y procesada por el
controlador de excepciones PIC antes de ser
enviada al procesador, lo que puede realizarse de
dos formas, según el tipo de interrupción sea
enmascarable o no enmascarable.
1.3.1 Hardware
 Cuando se habla de una significa que, bajo control
del software, el procesador puede aceptar o ignorar
(enmascarar) la señal de interrupción. Para ello se
envía una señal a la patilla INTR, y el procesador la
atiende o la ignora en función del contenido de un
bit (IF) en un registro (FLAGS) que puede estar
habilitado o deshabilitado.
1.3.1 Hardware
 En el primer caso, cuando se recibe la señal, el
procesador concluye la instrucción que estuviese en
proceso y a continuación responde con una
combinación de señales en algunas de sus patillas
componiendo una sucesión de dos señales INTA
("Interrupt Acknowledge“).
1.3.1 Hardware
 La primera señal es simplemente un aviso; la
segunda es una petición para que el PIC coloque en
el bus de datos un Byte con el número de
interrupción, de forma que el procesador pueda
localizar el servicio solicitado.
1.3.1 Hardware
 El valor recibido (0-255) es multiplicado por 4 para
calcular la dirección del vector correspondiente en
la tabla de vectores de interrupción, lo que se
realiza mediante un desplazamiento binario de dos
posiciones a la izquierda.
El procesador dejará de hacer lo que está haciendo para atender al
dispositivo para
posteriormente regresar a la tarea que estaba ejecutando antes de
ser interrumpido.
1.3.1 Hardware
A este tipo de
interrupción se
le conoce
como
Interrupción
por Hardware.
Para atender a un
dispositivo el
procesador ejecuta
una rutina
especial llamada
Rutina de Servicio
a Interrupciones.
Las rutinas de
servicio a
interrupciones, por
lo
general, se cargan a
la memoria RAM
como parte del
proceso de
iniciación de la
computadora.
Interrupción no
enmascarable significa
que la interrupción no
puede ser
deshabilitada por
software. Este tipo de
interrupciones ocurren
cuando se recibe una
señal en la patilla NMI
("Nonmaskable
Interrupt") del
procesador. Se
reservan para casos en
que es crítica la
respuesta, por
ejemplo que se
detecte un error de
paridad en la
memoria. Además son
de prioridad más alta
que las
enmascarables.
1.3.2.- Software
 Un programa escrito en un lenguaje de alto nivel
utiliza funciones de la biblioteca estándar,
provistas por
 el compilador empleado, para realizar la
mayoría de las tareas relacionadas con el
manejo de los
 dispositivos de entrada y salida, y la gestión de
los archivos y memoria
1.3.2.- Software.
 Los procesadores Intel de la gama x86 y
compatibles, disponen de una instrucción INT que
permite generar por software cualquiera de los 256
tipos de interrupción anteriormente descritos
1.3.2.- Software
 El proceso seguido es exactamente el mismo que si
se recibe una interrupción hardware en la patilla
INTR, salvo que en este caso se conoce el tipo de
interrupción, y no se requiere ningún ciclo INTA.
 Este tipo de interrupciones son de prioridad más
alta que las de hardware (enmascarables y no
enmascarables), de forma que si se recibe una
interrupción hardware mientras que se ejecuta una
software, esta última tiene prioridad
1.3.2.- Software
 Cuando un programa
ejecuta una llamada al
sistema interrumpe al
procesador.
1.3.2.- Software
 El procesador dejará de
 hacer lo que está
haciendo para ejecutar
la rutina del sistema
deseada y
posteriormente
regresará a la
tarea que estaba
ejecutando antes de ser
interrumpido.
1.3.2.- Software
 La estructura de una
rutina del sistema es
igual a
la estructura de una rutina
de servicio a
interrupciones. Una
llamada al sistema se
genera mediante una
instrucción del
ensamblador llamada
Interrupción por
Software.
FUNCIONES DE LA BIOS
 Las funciones de la BIOS se invocan, desde los
programas de usuario, ejecutando una interrupción
software con un cierto valor inicial en los registros
Funciones del BIOS
 Las rutinas del BIOS (Basic Input/Output System)
son específicas a cada computadora y las
proporciona el fabricante del sistema. Contienen
los manejadores por defecto para los siguientes
dispositivos:
Funciones del BIOS
·
·
·
·
·
Monitor y teclado
Puerto serie
Dispositivo auxiliar
Reloj de tiempo real
Unidades de disco
FUNCIONES DE LA
BIOS
 INT 10h:
Servicios de Vídeo (texto y gráficos).

INT 11h:
Informe sobre la configuración del equipo.

INT 12h:
Informe sobre el tamaño de la memoria convencional.

INT 13h:
Servicios de disco (muy elementales: pistas, sectores, etc.).

INT 14h:
Comunicaciones en serie.

INT 15h:
Funciones casette (PC) y servicios especiales del sistema
(AT).

INT 16h:
Servicios de teclado.

INT 17h:
Servicios de impresora.

INT 18h:
Llamar a la ROM del BASIC (sólo máquinas IBM).

INT 19h:
Reinicialización del sistema.

INT 1Ah: Servicios horarios.

INT 1Fh: Apunta a la tabla de los caracteres ASCII 128-255 (8x8
puntos).
FUNCIONES DEL BIOS
 Las rutinas del BIOS son cargadas a memoria RAM
durante el proceso de iniciación del sistema y se
encuentran en un archivo llamado IO.SYS o
IBMBIO.COM.
Ejemplo sobre Rutinas del BIOS

















;*************************************************************
; BIOS_MAC.ASM
;
; Este archivo contiene macros permiten desplegar un carácter
; a pantalla y leer un carácter del teclado. Las macros
utilizan
; llamadas a las rutinas del BIOS
;*************************************************************
;*************************************************************
; APUTCH
;
; Esta macro despliega un carácter en la pantalla
;
; Parámetro:
;
; AL = carácter
;



























; Regresa:
;
; Nada
;*************************************************************
macro aputch
mov ah, 0Eh ;; Despliega un carácter
mov bh, 0 ;; en la página 0
int 10h ;; Interrupción de video
endm aputch
;*************************************************************
; AGETCH
;
; Esta macro lee un carácter del teclado
;
; Parámetro:
;
; Nada
;;;
; Regresa:
;
; AH = Código de la tecla
; AL = Código ASCII del carácter
;*************************************************************
macro agetch
mov ah, 10h ;; Leer un carácter
int 16h ;; Interrupción del teclado
endm agetch
FUNCIONES DEL DOS
 NT 20h:
Terminar programa (tal vez en desuso).

INT 21h:
Servicios del DOS.

INT 22h:
Control de finalización de programas.

INT 23h: Tratamiento de Ctrl-C.

INT 24h: Tratamiento de errores críticos.

INT 25h:
Lectura absoluta de disco (sectores lógicos).

INT 26h:
Escritura absoluta en disco (sectores lógicos).

INT 27h: Terminar dejando residente el programa (en desuso).

INT 28h:
Idle (ejecutada cuando el ordenador está inactivo).

INT 29h:
Impresión rápida en pantalla (no tanto).

INT 2Ah:
Red local MS NET.

INT 2Bh-2Dh:
Uso interno del DOS.

INT 2Eh:
Procesos Batch.

INT 2Fh:
Interrupción Multiplex.

INT 30h-31h:
Compatibilidad CP/M-80.

INT 32h:
Reservada.
Vectores De Interrupción
Ejemplo sobre Rutinas del DOS




















;*************************************************************
; DOS_MAC.ASM
;
; Este archivo contiene macros que permiten desplegar un
; carácter a pantalla y leer un carácter del teclado. Las
; macros utilizan llamadas a las rutinas del DOS
;*************************************************************
;*************************************************************
; APUTCHAR
;
; Esta macro despliega un carácter en la pantalla
;
; Parámetro:
;
; DL = carácter
;
; Regresa:
;
; Nada
;*************************************************************
1.4.- Estructura de un programa en
ensamblador.
 Un programa en lenguaje ensamblador estará
formado por una secuencia de sentencias. Cada
sentencia ocupa una sola línea y tiene la siguiente
estructura:
 etiqueta] [operación] [operandos] [;comentarios]
Estructura de un programa en
ensamblador.
Los cuatro campos de
una sentencia son
opcionales, si no
aparece ninguno de
ellos (una línea en
blanco) tendríamos una
sentencia vacía.
 Las sentencias se dividen en dos tipos:
 * Instrucciones:
Estas sentencias representan órdenes al
procesador y tras el proceso de
compilación generan código ejecutable.
 * Directivas:
Estas sentencias dirigen el proceso de
compilación o construcción del
programa ejecutable. No generan código
ejecutable. Normalmente se utilizan
para aumentar la legibilidad del código
fuente.
Estructura de un fichero en
lenguaje ensamblador
La estructura a
seguir se
muestra a
continuación:
escala EQU 1000 ;Definición de constantes simbólicas
ORIGEN 7F40h
;Definición del origen
de carga del programa
INICIO ini
;Definición de la etiqueta
que marca la
;primera instrucción a
ejecutar del programa
.PILA 100h
;Definición de la pila
.DATOS
;Definición de los datos del
programa
dato1 VALOR 12h
…
.CODIGO
;Definición del código del
programa
INI: MOV R5, R4
…
FIN
Estructura de un fichero en
lenguaje ensamblador
 Los ficheros de código fuente escritos en lenguaje
ensamblador se organizan en líneas. Cada una de
las líneas del fichero puede contener una directiva,
una instrucción o ambas cosas a la vez en los casos
en que sea posible.
No existe una convención establecida para la
estructura de un programa en lenguaje ensamblador
(no como sucede con otros lenguajes, como C/C++).
Como regla de oro, es necesarios la declaración de
dos segmentos, la de código (CODE) y la de pila
(STACK). En total, hay 4 segmentos principales:
Segmento de datos, Segmento de código, Segmento
de pila y Segmento Extra.
 Los diferentes segmentos tienen las siguientes
funciones:
 Segmento de datos: Contiene la dirección donde
inicia la declaración de variables. Aquí,
escribiremos nuestras variables.
 Segmento de código: Contiene la dirección de inicio
donde se encuentran las instrucciones del
programa. Aquí, escribiremos todo el código de
nuestro programa
 Segmento de pila: Contiene la dirección donde se
encuentra la pila.
 Segmento Extra: Contiene la dirección donde
podemos almacenar datos extras.
TÉCNICAS DE CODIFICACIÓN EN
ENSAMBLADOR:
 BUCLES:
 Inicialización de un registro(a modo de contador) al
nº de vueltas del bucle
Etiqueta: Primera instrucción del bucle
<resto de instrucciones dentro del bucle>
decrementar el contador
saltar a la etiqueta si el contador es mayor que cero
<instrucciones fuera del bucle>
TÉCNICAS DE CODIFICACIÓN EN
ENSAMBLADOR:
 SALTOS CONDICIONALES:
Instrucción de comparación
Evaluar condición y si se cumple saltar a la etiqueta
prefijada
<instrucciones para el caso de no cumplirse la
condición>
saltar fuera del condiciona
TÉCNICAS DE CODIFICACIÓN EN
ENSAMBLADOR:
 MACROS:
Declaración:
<nombre de la macro> MACRO
<instrucciones de la macro>
ENDM
5
Llamada:
<nombre de la macro>
TÉCNICAS DE CODIFICACIÓN EN
ENSAMBLADOR:
 SUBRUTINAS:
Declaración:
<nombre la de subrutina> PROC
<instrucciones de la subrutina>
RET
<nombre de la subrutina> ENDP
Llamada:
CALL <nombre de la subrutina>
Llamado De Procedimientos En
Ensamblador Desde C
 Modelos de memoria
 Nomenclatura de los segmentos en los
programas en C
Conclusión
 Considerando lo
mencionado, decimos
que :
 Bibliografía
 1. Abel, Peter. Lenguaje Ensamblador y





Programación para PC IBM y Compatibles.
Capítulo 9 Rutinas en Ensamblador en Programas
en C 171
ITSON Manuel Domitsu Kono
3. Brey, Barry B. Los microprocesadores Intel:
8086/8088, 80186, 80286, 80386 y 80486.
Hispanoamericana, S. A. México. 1995.
4. Godfrey, J. Terry. Lenguaje Ensamblador para
Microcomputadoras IBM para
Descargar