You are on page 1of 17

Instituto Universitario de Gerencia y Tecnologa

IUGT Caracas
Mencin: Informtica
3
er
Semestre
Materia: Arquitectura del Computador















Lenguaje Maquina


















Profesor: Jhampiert Barrios


Paredes Francisco
C.I: 19.583.698
Caracas Abril de 2014

ii
L

ndice

Definicin ............................................................................................................................... 2
Evolucin ................................................................................................................................ 2
Funcionamiento interno del Computador ............................................................................... 3
Funcionamiento del Lenguaje Ensamblador .......................................................................... 4
Sintaxis ................................................................................................................................... 5
Estructura de un programa en ensamblador ........................................................................... 7
Hola mundo en assembler....................................................................................................... 8
Pasos para ejecutar un programa en ensamblador .................................................................. 8
Conclusin .............................................................................................................................. 9
Bibliografa ........................................................................................................................... 10
Anexos .................................................................................................................................. 11






























1
L
Introduccin

En el siguiente trabajo se conocer sobre lo que es el lenguaje maquina, como interacta
con los computadores y su uso, adems conoceremos su evolucin y la implementacin de
nuevos lenguajes que lo sustituyen para facilitar la programacin basndose en crear
lenguajes lo ms parecidos al lenguaje natural.

Se conocer una pequea parte sobre el funcionamiento interno del computador para
comprender como interacta este lenguaje con el computador, tambin se conocer el
funcionamiento del lenguaje ensamblador, y su sintaxis.

Finalmente vera como se estructura el cdigo en lenguaje ensamblador, se podr visualizar
un el cdigo de un pequeo programa de ejemplo y los pasos para ejecutarlo.



































2
L
Definicin

Segn la Unidad de Informtica del instituto UPIICSA (Unidad Profesional
Interdisciplinaria de Ingeniera y Ciencias Sociales y Administrativas) de Mxico el
lenguaje maquina es un conjunto de instrucciones conformadas por 0 y 1 que son
interpretadas directamente por un computador.

Los sistemas computarizados son equipos que pueden realizar una serie de tareas que el
fabricante o programador le asigne, estn conformados por dispositivos electrnicos tales
como capacitores, resistencias, transistores entre otros, y para que estos equipos puedan
realizar estas tareas hay que asignarle una correspondiente serie de instrucciones pero estas
instrucciones hay que insertarlas de una manera que el equipo entienda, en este caso como
es un sistema electrnico que trabaja con corriente interna la manera de darle instrucciones
es a travs de impulsos elctricos y estos se pueden representar a travs de cdigos binarios
ceros 0 (no corriente) y unos 1 (corriente) siendo estos cdigos interpretados por un
procesador que cuenta con una serie de instrucciones diferentes a la de otros procesadores.


Evolucin

En la dcada del 40, surgen representaciones para estas instrucciones. Ya no eran unos y
ceros, sino que se los representaba con palabras ms fciles de recordar (instrucciones
mnemonicas) como MOVE, LDA, ADD, etc.

Cada instruccin mnemotcnica tena su instruccin en cdigo binario y viceversa naciendo
as los traductores llamados Ensambladores y creando as el primer lenguaje de
programacin llamado Ensamblador.

Segn Jeff Duntemann el lenguaje Ensamblador es un lenguaje traductor que permite tener
un control total sobre cada instruccin generada por una mquina en particular mediante el
programa traductor, tal programa traductor es llamado Ensamblador.

Posteriormente comenzaron a crear nuevos lenguajes tratando si asimilarlos lo ms posible
al lenguaje natural humano, con nuevas funcionalidades, usos y caractersticas como
FORTRAN, ALGOL-58, COBOL, LISP, etc.













3
L
Funcionamiento interno del Computador

Para entender la programacin en lenguaje ensamblador es necesario tener un conocimiento
previo sobre el funcionamiento interno del computador.

La memoria

La unidad bsica de memoria es el byte. Un computador con 32 Mega bytes de memoria
puede almacenar aproximadamente 32 millones de bytes de informacin. Cada byte est
etiquetado por un nmero nico conocido como su direccin.
Direccin 0 1 2 3 4 5 6 7
Memoria 2A 45 B8 20 8F CD 12 2E

A menudo la memoria se usa en trozos ms grandes que un byte. En la arquitectura del PC,
los nombres que se le han dado a estas secciones de memoria ms grandes se muestran en
la Tabla:

WORD 2 Bytes
DOUBLE WORD 4 Bytes
QUAD WORD 8 Bytes
Paragraph 16 Bytes

Todos los datos en la memoria son numricos. Los caracteres son almacenados usando
cdigos de caracteres que traduce un nmero en un carcter. Uno de los cdigos de
caracteres es conocido como ASCII (American Estndar Code for Information
Interchange). Un nuevo cdigo, ms completo, que est reemplazando al ASCII es el
Unicode. Una diferencia clave entre los dos cdigos es que el ASCII usa un byte para
codificar un carcter, pero Unicode usa dos bytes (o una palabra) por carcter. Por ejemplo
ASCII decodifica el byte 4116 (6510) en la A mayscula. Unicode la codifica con la
palabra 004116. Ya que ASCII usa un byte est limitado a slo 256 caracteres diferentes.
Unicode ampla los valores ASCII a palabras y permite que se representen muchos ms
caracteres. Esto es importante para representar los caracteres de todas las lenguas del
mundo.

La CPU

La Unidad Central de Procesamiento (CPU) es el dispositivo fsico que ejecuta las
instrucciones. Las instrucciones que ejecuta la CPU son por lo general muy simples. Las
instrucciones pueden requerir datos que estn en un lugar especial de almacenamiento de la
CPU en s misma llamados registros. La CPU puede acceder a los datos en los registros
mucho ms rpido que en la memoria. Sin embargo el nmero de registros en la CPU es
limitado, as el programador debe tener cuidado de dejar slo los datos que est usando en
los registros.

Las instrucciones que un tipo de CPU ejecuta las hace en lenguaje de mquina. Los
programas en lenguaje de maquina tienen una estructura mucho mas bsica que los

4
L
lenguajes de alto nivel. Las instrucciones en lenguaje de maquina son codificadas como
nmeros no en formatos de texto amigables. Una CPU debe estar en capacidad de
decodificar una instruccin de propsito muy rpidamente para correr eficientemente. Los
lenguajes de maquina son diseados con este objetivo en mente, no para ser fcilmente
descifrados por humanos. Los programas escritos en otros lenguajes deben ser convertidos
en lenguaje de maquina nativo para que se ejecute en el computador.


Un compilador es un programa que traduce programas escritos en un lenguaje de
programacin al lenguaje de mquina de una arquitectura en particular de un computador.
En general cada tipo de CPU tiene su propio y nico lenguaje de mquina. Esa es una de las
razones por las cuales programas escritos para un Mac no corren en un PC tipo IBM.

Los computadores usan un reloj para sincronizar la ejecucin de las instrucciones.
El reloj pulsa a una frecuencia GHz significa giga Hertz o fija conocida como velocidad del
reloj. Cuando Ud. compra un computador de 1.5 GHz, la frecuencia de su reloj es 1.5 GHz.
Simplemente toca a una razn constante, la electrnica de la CPU usa un ritmo para realizar
sus operaciones correctamente, como el ritmo de un metrnomo para la ejecucin de
msica al ritmo correcto. El numero de toques (o como ellos llaman comnmente ciclos)
que una instruccin requiere depende de la instruccin anterior y de otros factores tambin.

Las PC de tipo IBM tienen una CPU de la familia Intel (o un clon de ellas) Las CPU de esta
familia todas tienen algunas caractersticas comunes incluyendo el lenguaje de mquina
bsico. Sin embargo los miembros ms recientes amplan grandemente las caractersticas.

Cada tipo de CPU entiende su propio lenguaje de mquina. Las instrucciones en lenguaje
de mquina son nmeros almacenados como bytes en memoria. Cada instruccin tiene su
propio y nico cdigo llamado cdigo de operacin u opcode. Las instrucciones del
procesador 80X86 varan en tamao. El opcode est siempre al inicio de la instruccin.
Muchas instrucciones incluyen tambin datos usados por las instrucciones.


Funcionamiento del Lenguaje Ensamblador

Un programa Escrito en lenguaje ensamblador es almacenado como texto (tal como
programas de alto nivel). Cada instruccin representa exactamente una instruccin de la
mquina. Por ejemplo:
La instruccin para sumar los registros EAX y EBX y almacenar el resultado en EAX es

add eax, ebx

Ac el significado de la instruccin es mucho ms claro que el cdigo de la mquina. La
palabra add es el nemnico para la instruccin de suma. La forma general de una
instruccin de ensamblaje es:

mnemonico operando(s)


5
L
Un ensamblador es un programa que lee un archivo de texto con instrucciones de
ensamblador y convierte el ensamblador en cdigo de mquina. Los compiladores son
programas que hacen conversiones similares para lenguajes de programacin de alto nivel.
Un ensamblador es mucho ms simple que un compilador. Cada instruccin de lenguaje
ensamblador representa una sola instruccin de la mquina. Las instrucciones de un
lenguaje de alto nivel son mucho ms complejas y pueden requerir muchas instrucciones de
mquina.



Otra diferencia importante entre los lenguajes ensamblador y de alto nivel es que debido a
que cada tipo de CPU tiene su propio lenguaje de mquina, tambin tiene su propio
lenguaje ensamblador. Trasladar programas entre arquitecturas de computador diferentes es
mucho ms difcil que en un lenguaje de alto nivel.


Sintaxis

Operandos de las instrucciones:

Los cdigos de las instrucciones de mquina tienen una variedad de tipos y operandos; sin
embargo, en general cada instruccin en si misma tiene un nmero fijo de operandos (0 a
3). Los operandos pueden tener los siguientes tipos:

Registro: Estos operandos se refieren directamente al contenido de los registros de la CPU.

Memoria: Estos se refieren a los datos en la memoria. La direccin de los datos puede ser
una constante fija en la instruccin o puede ser calculada usando los valores de los
registros. Las direcciones son siempre desplazamientos relativos al comienzo de un
segmento.

Inmediato: Estos son valores fijos que estn listados en la instruccin en s misma. Ellos
son almacenados en la instruccin en si misma (en el segmento de cdigo), no en el
segmento de datos.

Implicado: Estos operandos no son mostrados explcitamente. Por ejemplo, la instruccin
de incremento aade uno a un registro o a memoria. El uno est implcito.

Instrucciones bsicas:

La instruccin esencial es MOV . Ella translada datos de un lugar a otro haciendo la
funcin de asignacin, ejemplo

mov dest, src

El dato especificado por src es copiado a dest.


6
L
Los ; inician un comentario.

La instruccin ADD se usa para sumar enteros.

add eax, 4 ; eax = eax + 4

La instruccin SUB resta enteros.

sub bx, 10 ; bx = bx - 10
Las instrucciones INC y DEC incrementan o decrementan valores en uno.

inc ecx ; ecx++
dec dl ; dl--


Directivas:
Una directiva es un artificio del ensamblador no de la CPU. Ellas se usan
generalmente para decirle al ensamblador que haga alguna cosa o informarle al
ensamblador de algo. Ellas no se traducen en cdigo de mquina. Los usos comunes
de las directivas son:

Definir constantes
Definir memoria para almacenar datos en ella
Definir la memoria para almacenar datos en ella
Agrupar la memoria en segmentos
Incluir cdigo fuente condicionalmente
Incluir otros archivos

Directiva equ se puede usar para definir un smbolo

sbolo equ valor

directiva %define es parecida a la #define de C usada para definir macros.

%define SIZE 100

Las directivas de datos son usadas en segmentos de datos para definir espacios de
memoria.

L1 db 0 ; byte etiquetado como L1 con valor inicial 0







7
L
Rutinas de entrada y salida

print int imprime en la pantalla el valor del entero almacendo en EAX

print char imprime en la pantalla el caracter cuyo codigo ASCII est
almacendo en AL

print string imprime en la pantalla el contenido de la cadena en la direccin
almacenada en EAX. La cadena debe ser tipo C, terminada en
NULL).

print nl imprime en pantalla el caracter de nueva lnea.

read int lee un entero del teclado y lo almacena en el registro.
read char lee un solo caracter del teclado y almacena el cdigo ASCII en el
registro EAX.


Estructura de un programa en ensamblador

Un programa en ensamblador podra estar englobado en cuatro bloques fundamentales:

Declaraciones y definiciones:
o definicin de constantes, importacin de cdigo o informacin al
compilador.
Segmento de datos:
o Reserva de espacio para las variables que usa el programa.
o Para la creacin de un segmento, se utiliza la directiva SEGMENT, la cual
indica el comienzo del mismo.
o El segmento, en el cdigo fuente, define un bloque de sentencias fuente, ya
sean directivas o instrucciones.
o El final del segmento viene dado por la directiva ENDS (END Segment).

Segmento de pila:
o Todos los programas han de llevar pila, con el fin de depositar la
informacin necesaria para las llamadas a funciones, o bien almacenar datos
temporalmente. En este bloque se define un tamao para la pila.
o El segmento de pila se define como cualquier otro segmento, pero
especificando la palabra reservada STACK.
o En este segmento reservamos nicamente espacio para la pila, es decir,
definimos su tamao.

Segmento de cdigo:
o Definicin de todos los procedimientos e instrucciones del programa.
o Un procedimiento es un conjunto de sentencias, las cuales se engloban entre
la directiva PROC (PROCedure) y la directiva ENDP (END Procedure).

8
L
Hola mundo en assembler

1. .model small
2. .stack
3. .data
4. saludo db "Hola Mundo les dice Francisco Paredes", "$"
5.
6. .code
7.
8. main proc ;Inicia proceso
9. mov ax,seg saludo ;hmm seg?
10. mov ds,ax ;ds = ax = saludo
11.
12. mov ah,09 ;Function(print string)
13. lea dx,saludo ;DX = String terminated by "$"
14. int 21h ;Interruptions DOS Functions
15.
16. ;mensaje en pantalla
17.
18. mov ax,4c00h ;Function (Quit with exit code (EXIT))
19. int 21h ;Interruption DOS Functions
20.
21. main endp ;Termina proceso
22. end main



Pasos para ejecutar un programa en ensamblador

Estos pasos varan dependiendo del programa traductor que se valla a utilizar y bajo que
sistema operativo y arquitectura.
En este caso se tomara como ejemplo sistema operativo Windows 32Bits utilizando DOS y
como programa ensamblador se utilizara el MASM611

1. Se escribe en un editor de textos como el block de notas u otro el cdigo del programa.
2. Se guarda el archivo de texto en la carpeta del MASM611 dentro de la carpeta BIN, el
programa debe guardarse con la extensin .ASM.
3. Se ingresa al comand del Windows ingresando al men Inicio, luego ejecutar, se escribe
cmd, y presionamos enter.
4. A travs del CMD ingresamos a la carpeta bin del MASM611 escribiendo lo siguiente
cd..
cd..
cd MASM611\BIN\
5. Luego escribimos ml archivo.asm siendo la palabra archivo el nombre que le
colocamos.
6. Y finalmente para ejecutar el programa escribimos archivo.exe siendo la palabra archivo
el nombre que le colocamos al archivo de texto. (Ver anexos)







9
L
Conclusin

Se ha concluido que el lenguaje maquina y el ensamblador en la actualidad no se utiliza
comnmente, sus mayores utilidades son para la enseanza de la programacin y la mejor
comprensin de cmo interacta el cdigo con la parte interna de un computador, logrando
dar unas bases solidas para el aprendizaje y la utilizacin de lenguajes creados
posteriormente como C, C++, COBOL, FORTRAN.

Tambin se logra entender mejor el funcionamiento de los programas traductores llamados
ensambladores y los compiladores.






































10
L
Bibliografa


Carter, P. (2006). Lenguaje ensamblador para PC. Oxford: Paul Carter.

Duntemann, J. (2000). Assembly Language Step-by-Step: Programming with DOS
and Linux. New York: John Wiley & Sons.

Instituto Politecnico Nacional de Mexico. (s.f.). UPIICSA. Recuperado el 22 de
Abril de 2014, de
http://www.sites.upiicsa.ipn.mx/polilibros/portal/Polilibros/P_terminados/PolilibroF
C/Unidad_III/Unidad%20III_5.htm

Luzza, N. (s.f.). ALEGSA. Recuperado el 22 de Abril de 2014, de
http://www.alegsa.com.ar/Notas/232.php
































11
L
Anexos





12
L



13
L



14
L



15
L

You might also like