Вы находитесь на странице: 1из 38

Introduccin al

Lenguaje
Ensamblador

Departamento de Sistemas Computacionales


Ingeniera en Sistemas Computacionales
Instituto Tecnolgico de Villahermosa
MGTI. Fidelio Castillo Romero

Enero Junio 2015

1. Relacin con otras asignaturas

Asignaturas Anteriores

Arquitectura de
computadoras.
Comunicacin interna de
la computadora.

Asignaturas Posteriores

Interfaces.
Perifricos
estandarizados
Programacin de bajo
nivel.

Otros vnculos
1. Arquitectura de computadoras
2. Compiladores
3. Sistemas Operativos
4. Concepto de mquina virtual
5. Operaciones booleanas elementales
6. Ciclo de ejecucin de instrucciones
7. Acceso a memoria e intercambio
8. Interrupciones
9. Concepto de canalizacin y superescalares
10. E/S basada en hardware
11. Representacin binaria para punto flotante
12. Arquitectura IA-32 y 64: Memoria protegida y paginacin,
segmentacin, system call en MSDOS y BIOS (interrupciones)
13. Algoritmos de bsqueda y ordenacin
14. Estructuras de lenguajes de alto nivel
15. Ejemplos de optimizacin de cdigo

Mapa curricular

2. Objetivo de la asignatura
El estudiante utilizar un lenguaje de bajo nivel para
saber explotar las capacidades de hardware que dispone
un equipo de cmputo, operando eficientemente sus
componentes

3. Temario
Unidad 1. Fundamentos
Unidad
1. Fundamentos

Introduccin:

Introduccin:
Uso y aplicaciones del lenguaje ensamblador.
Uso y aplicaciones del lenguaje ensamblador.
Escalabilidad de los microprocesadores.
Escalabilidad de los microprocesadores.
Tipos de lenguajes ensambladores.
Tipos de lenguajes ensambladores.
Clasificacin de Memorias.
Clasificacin de Memorias.
Unidades de entrada / salida.
Unidades de entrada / salida.

El microprocesador.
El microprocesador.
Buses.
Buses.
Registros.
Registros.
Modos de direccionamiento.
Modos de direccionamiento.

Interrupciones.
Interrupciones.
Hardware.
Hardware.
Software.
Software.

Estructura de un programa en ensamblador.


Estructura
de
un programa en ensamblador.
Data
segment.
Data segment.
Stack segment.
Stack segment.
Code segment.
Code segment.
Instrucciones del programa.
Instrucciones del programa.
Directivas.
Directivas.

Procedimiento de ensamble, enlace y ejecucin.


de ensamble, enlace y ejecucin.
Procedimiento
Entorno de programacin.
Entorno de programacin.

4. Requerimientos
Microprocesador Intel o AMD de 32/64 bits
Plataforma MS Windows Vista
MS Macro Assembler (MASM 8.0)
Visual C++ 2008 Express/ Visual Studio
2008. Cada uno incluye Microsoft Assembler
Carpeta c:\Irvine

5. Funcionamiento
El programa lee el fichero escrito en lenguaje
ensamblador y sustituye cada uno de los cdigos

nemotcnicos que aparecen por su cdigo de


operacin correspondiente en sistema binario para
la plataforma que se eligi como

6. Cronologa en el desarrollo de
algunos lenguajes de programacin

7. Preguntas detonantes

Actividad No. 1
1.

Qu son los ensambladores?

2.

Qu son los enlazadores?

3.

Qu son los depuradores?

4.

Cmo se relaciona el lenguaje ensamblador con el lenguaje mquina?

5.

Es portable el lenguaje ensamblador?

6.

Por qu aprender lenguaje ensamblador?

8. C, C++ y Java con el Lenguaje Ensamblador

Una sola instruccin en C++ o Java se expande en varias instrucciones en


lenguaje ensamblador o lenguaje mquina.
La siguiente instruccin lleva a cabo dos operaciones aritmticas y asigna el
resultado a una variable. Si X y Y son enteros:
int Y;
int X = (Y +5 ) * 7;
Traducida al lenguaje ensamblador:
mov eax, Y
add eax, 5
mov ebx, 7
imul ebx
mov X, eax

9. MQUINA VIRTUAL:
Relacin entre hardware y software
Lenguaje mquina nativo L0. Difcil de programar, est en extremo detallado
y consta solo de nmeros
Si se construyera un nuevo lenguaje L1 que fuera ms fcil de usar, los
programas podran escribirse en L1. Hay dos formas de lograr esto:
Interpretacin
Compilacin
Mquinas virtuales
En vez de utilizar slo lenguajes, es ms fcil pensar en trminos de una
computadora hipottica o mquina virtual, en cada nivel.

Mquina Virtual MV1


Mquina Virtual MV0

Cada mquina puede construirse con hardware o software. Si el


lenguaje de programacin no es adecuado para usarlo en aplicaciones
tiles, entonces podra disearse otra mquina virtual MV2.

Mquinas especficas
Se

pueden

relacionar

estos

conceptos con las computadoras


y los lenguajes usando nombres
como Nivel 1 para MV1 y Nivel
0 para VM0.

10. REPRESENTACIN DE DATOS


Nmeros binarios
Suma binaria
Tamaos de almacenamiento de enteros

Actividad No. 2

Ejercicios de conversiones, suma y resta:


Sistema de numeracin Binaria y Hexadecimal

11. INTRODUCCIN A MASM


(VISUAL STUDIO 2008)
Configuracin requerida para aplicaciones de 32 bits
1.
2.
3.

4.
5.

Instalar Visual Studio 2008 o Visual C++ 2008 Express. Cada


Uno de estos programas incluye Microsoft Assembler
Verificar la instalacin de MASM ubicando el archivo ml.exe
en la carpeta \vc\bin de la instalacin de Visual Studio
c:\Archivos de programa\Microsoft Visual Studio x.x\vc\bin.
("x.x" puede ser 8.0, 9.0, 10.0, o alguna variacin de este)
Instalar la carpeta C:\Irvine
Crear la carpeta Ejemplos (C:\Irvine\Ejemplos)

6. Iniciar Visual C + + Express, y seleccionar Opciones


en el men Herramientas. Seleccionar Editor de texto,
seleccionar todos los idiomas, y seleccionar aqu:

7. Abrir un Proyecto. Ver configuracin Propiedades del Proyecto

8. Crear un proyecto

12. ARQUITECTURA DEL PROCESADOR IA-32

Diseo bsico de una computadora

Ciclo de ejecucin de instrucciones


Fetch:
The control unit fetches the next instruction from the instruction queue and
increments the instruction pointer (IP). The IP is also known as the program
counter
. Decode:
The control unit decodes the instructions function to determine what the
instruction will do. The instructions input operands are passed to the ALU, and
signals are sent to the ALU indicating the operation to be performed.
Fetch operands:
If the instruction uses an input operand located in memory, the control unit uses a
read operation to retrieve the operand and copy it into internal registers. Internal
registers are not visible to user programs.
Execute:
The ALU executes the instruction using the named registers and internal registers
as operands and sends the output to named registers and/or memory. The ALU
updates status flags providing information about the processor state.
Store output operand:
If the output operand is in memory, the control unit uses a write operation to store
the data.

The sequence of steps can be expressed in


pseudocode:
loop
fetch next instruction
advance the instruction pointer (IP)
decode the instruction
if memory operand needed, read value from memory
execute the instruction
if result is memory operand, write result to memory
continue loop

Ejecucin de una
instruccin no
canalizada de 6
etapas

Ejecucin de una
instruccin
canalizada de 6
etapas

Ejecucin con
canalizacin,
utilizando una sola
canalizacin.
Arquitectura
superescalar

Procesador escalar
canalizado de 6
etapas

Arquitectura del procesador


Modos de operacin
Los procesadores IA32 tienen 3 modos principales de
operacin: protegido, direccionamiento real y
de
administracin del sistema. El modo 8086 virtual es un caso
especial del modo protegido.
Modo protegido: Estado nativo del procesador, en el que estn
disponibles todas las instrucciones y caractersticas.
Los programas reciben reas separadas de memoria llamadas
segmentos, y el procesador evita que los programas hagan
referencia a la memoria que se encuentra fuera de sus
segmentos asignados.

Modo 8086 virtual. Mientras se encuentra en modo


protegido, el procesador puede ejecutar en forma directa el
software para modo de direccionamiento real, como los
programas de MS-DOS, en un entorno multitarea seguro.
Si un programa de MS-DOS falla o trata de escribir datos en
el rea

de memoria del sistema, no afectar a los otros

programas que se ejecuten al mismo tiempo.


Windows XP puede ejecutar varias sesiones separadas en
modo 8086 a la vez.

Modo de direccionamiento real. Implementa el entorno de


programacin del procesador 8086 de Intel.
Disponible en Windows 98 y puede usarse para ejecutar un
programa de MS-DOS que requiera el acceso directo a la
memoria del sistema y a los dispositivos de hardware.
Los programas que se ejecutan en modo de direccionamiento
real pueden hacer que el sistema operativo falle.

Modo de administracin del sistema. Proporciona al


SO un mecanismo para implementar funciones, como la
administracin de energa y la seguridad del sistema.
Estas funciones las implementas los fabricantes de
computadoras, personalizan el procesador para una
configuracin especfica del sistema.

Entorno bsico de ejecucin


Espacio de direcciones. Los procesadores IA-32 pueden
acceder a 4GB de memoria en modo protegido.
Los programas en modo de direccionamiento real tienen un
rango de memoria de 1MB. Si el procesador se encuentra en
modo protegido y ejecuta varios programas en modo 8086
virtual , cada programa tiene su propia memoria de 1MB.
Registros bsicos de ejecucin de un programa.
Los registros son ubicaciones de almacenamiento de alta
velocidad.
Hay 8 registros de propsito general, 6 registros de
segmento, un registro de las banderas de estado del
procesador y un apuntador de instrucciones.

Registros de propsito
general de 32 bits

Registros de segmento de 16
bits

EAX

EBP

CS

ES

EBX

ESP

SS

FS

ECX

ESI

DS

GS

EDX

EDI
EFLAGS

EIP

Los registros de propsito general se usan principalmente para


operaciones aritmticas y el movimiento de datos.
Cada registro puede direccionarse como un valor individual de
32 bits, o como dos valores de 16 bits

Hay partes de algunos registros que pueden


direccionarse como valores de 8 bits. El
registro EAX de 32 bits tiene una mitad
inferior de 16 bits llamada AX. A su vez, el
registro AX tiene una mitad superior de 8
bits llamada AH y una mitad inferior
llamada AL.

8 bits

8 bits

AH

AL
AX 16 bits

32 bits

16 bits

8 bits (superior)

8 bits (inferior)

EAX

AX

AH

AL

EBX

BX

BH

BL

ECX

CX

CH

CL

EDX

DX

DH

DL

El resto de los registros de propsito general slo tienen nombres


especficos para sus 16 bits inferiores.
Por lo general, los registros de 16 bits que se muestran aqu se utilizan
cuando se escriben programas en modo de direccionamiento real.

13. Sistema de entrada/salida


Los programas de aplicacin leen, de manera rutinaria, la entrada que se recibe
del teclado y de los archivos en disco, y escriben la salida en la pantalla y en
archivos.
Las operaciones de E/S no se realizan mediante el acceso directo al hardware,
sino que podemos llamar a las funciones que proporciona el sistema operativo.
Existen 3 niveles principales de acceso a las operaciones de E/S.
High-level language functions: A high-level programming language such as C+
+ or Java contains functions to perform input-output. These functions are
portable because they work on a variety of different computer systems and are
not dependent on any one operating system.
Operating system: Programmers can call operating system functions from a
library known as the API (application programming interface). The operating
system provides high-level operations such as writing strings to files, reading
strings from the keyboard, and allocating blocks of memory.
BIOS: The Basic Input-Output System is a collection of low-level subroutines
that communicate directly with hardware devices. The BIOS is installed by the
computers manufacturer and is tailored to fit the computers hardware.
Operating systems typically communicate with
the BIOS.

JERARQUA DE ENTRADA/SALIDA
El siguiente esquema representa lo que ocurre cuando un programa de aplicacin
muestra una cadena de caracteres en la pantalla

Nivel 3

Nivel 2

Una instruccin en el Programa de


Aplicacin llama y le pasa un
apuntador de cadena

Funcin del Sistema


Operativo utiliza un ciclo,
pasa el cdigo ASCII y el
color de cada carcter

El SO llama a otra subrutina del BIOS


para desplazar el cursor a la
siguiente posicin en la pantalla

Funcin del BIOS recibe un carcter y lo enva a

Nivel 1 un puerto de hardware, conectado a la tarjeta


controladora de video

Nivel 0

Hardware
La tarjeta controladora de video
genera seales de hardware para la
pantalla video

Level 3: Call library functions to perform generic text I/O and file-based I/O.
Level 2: Call operating system functions to perform generic text I/O and file-based I/O. If the OS
uses a graphical user interface, it has functions to display graphics in a device-independent
way.
Level 1: Call BIOS functions to control device-specific features such as color, graphics, sound,
keyboard input, and low-level disk I/O.
Level 0: Send and receive data from hardware ports, having absolute control over specific devices.

Actividad No. 3

Realizar un resumen de los subtemas:


Arquitectura el procesador
Sistema de entrada y salida

Actividad No. 4

Realizar una investigacin de Interupciones:


Hardware
Sofware
Interrupcin 21 y sus funciones

14. Estructura de un Programa en ensamblador


TITLE Formato de programa
(formato.asm)

TITLE Formato de programa (formato.asm)

; Descripcin del programa:


; Autor:
;Fecha de creacin:
;Fecha de ltima modificacin:

INCLUDE Irvine32.inc

INCLUDE Irvine32.inc
;Definiciones de smbolos
.data
;colocar variables
.code
Main PROC
; insertar instrucciones ejecutables
Exit ; sale al sistema operativo
main ENDP
; aqu insertar procedimientos adicionales

.code
main PROC
call Clrscr
mov eax,X
add eax,6
mov Y,eax
call DumpRegs
exit
main ENDP
END main

END main

;Este programa suma enteros de 32 bits

.data
X = 10h
Y dword ?

Вам также может понравиться