3. 1. definicion
El término ensamblador (del inglés assembler) se refiere a un tipo de
programa informático que se encarga de traducir un fichero fuente
escrito en un lenguaje ensamblador, a un fichero objeto que contiene
código máquina, ejecutable directamente por la máquina para la que se
ha generado.
El propósito para el que se crearon este tipo de aplicaciones es la de
facilitar la escritura de programas, ya que escribir directamente en
código binario, que es el único código entendible por la computadora,
es en la práctica imposible.
La evolución de los lenguajes de programación a partir del lenguaje
ensamblador originó también la evolución de este programa
ensamblador hacia lo que se conoce como programa compilador.
3
4. 2. historia
El primer compilador fue escrito por Grace Hopper, en 1952 para el
lenguaje de programación A-0.
En 1950 John Backus dirigió una investigación en IBM sobre un lenguaje
algebraico.
En 1954 se empezó a desarrollar un lenguaje que permitía escribir
fórmulas matemáticas de manera traducible por un ordenador; le
llamaron FORTRAN (FORmulae TRANslator).
Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso
de la computadora IBM modelo 704.
4
5. 2. historia
El primer compilador de FORTRAN tardó 18 años-
persona en realizarse y era muy sencillo
5
6. 2. historia
El primer compilador autocontenido, es decir, capaz de compilar su
propio código fuente fue el creado para Lisp por Hart y Levin en el MIT
en 1962. Desde 1970 se ha convertido en una práctica común escribir el
compilador en el mismo lenguaje que este compila, aunque Pascal y C
han sido alternativas muy usadas.
Crear un compilador autocontenido genera un problema llamado
bootstrapping, es decir el primer compilador creado para un lenguaje
tiene que o bien ser compilado por un compilador escrito en otro
lenguaje o bien compilado al ejecutar el compilador en un intérprete.
6
7. 3. componentes
Los elementos básicos del lenguaje ensamblador son:
Etiquetas
Instrucciones
Operandos
Directivas
Comentarios
7
8. etiquetas
Una etiqueta es una palabra utilizada para designar alguna línea o secci
ón del programa, se pueden utilizar para saltar de una parte hacia esa
etiqueta.
Es importante que las etiquetas empiecen con una letra o con un guión
bajo "_". La longitud de una etiqueta puede ser de hasta 32 caracteres y
como ya se dijo se deben escribir en la primer columna.
8
9. instrucciones
Las instrucciones son las operaciones
que realiza el microcontrolador, así que esta
s ya están definidas para cada familia de
PIC.
9
10. Microcontrolador PIC
Los PIC son una familia de microcontroladores tipo
RISC fabricados por Microchip Technology Inc. y
derivados del PIC1650, originalmente desarrollado
por la división de microelectrónica de General
Instrument.
El nombre actual no es un acrónimo. En realidad, el
nombre completo es PICmicro, aunque
generalmente se utiliza como Peripheral Interface
Controller (controlador de interfaz periférico)*.
10
12. operandos
Son los elementos que emplea la instru
cción que se está ejecutando. Usualmen
te los operandos son los registros, las
variables o las constantes.
12
13. directivas
Las directivas son similares a las instrucciones, pero a diferencia de
estas las directivas
son propias del lenguaje ensamblador e independientes del microcontr
olador que se utilice.
Las directivas representan algunas características del lenguaje ensambl
ador, se utilizan
para especificar el procesador empleado así como la configuración de e
ste, también para asignar locaciones de memoria.
13
14. comentarios
Los comentarios son las palabras, frases y oracione
s que se pueden escribir en el código para hacer el
programa más claro y legible, o solo para recordar.
Los comentarios se pueden escribir en cualquier
parte del código pero siempre deben
empezar con punto y coma ";".
14
15. 4. Software editores
Un programador escribe el programa origen en
lenguaje ensamblador utilizando cualquier editor de
textos o procesador de palabras que sea capaz de
producir una salida de texto en ASCII. Una vez que el
código origen ha sido escrito, el archivo origen es
ensamblado mediante su procesamiento a través de
algún ensamblador.
15
16. 4. Software reglas de
programación
Para la programación se utiliza una cierta tabulación que se
debe respetar, además utilizar
una tabulación adecuada hace los programas más claros y le
gibles.
Las etiquetas
se escriben en la primer columna de cualquier línea, las inst
rucciones y directivas en la
segunda y por último, en la tercer columna, los operandos.
Los comentarios
se pueden escribir en cualquier parte del programa.
16
21. 4. Software MASM Y TLINK
El Turbo Assembler (TASM) un paquete
ensamblador principalmente destinado a la
plataforma del IBM PC y sus compatibles.
El enlazador o linkador LINK permite
convertir el código objeto generado por
TASM en archivo ejecutable de tipo EXE*.
*empleando el ML de MASM 6.X se obtiene directamente el fichero EXE ya que
invoca automáticamente al linkador.
21
22. 5. registros
Se trata de una serie de "variables", que
contienen información que puede ser
cambiada.
22
23. REGISTROS IP Y CS
El registro CS es una variable de un tamaño de
dos bytes. Contiene el Segmento actual en que
se encuentra el programa.
El registro IP es la variable, de dos bytes
también, que contiene el Offset actual. Esto
significa, el ordenador va interpretando las
secuencias de bytes, pero necesita "algo" que le
indique donde tiene que leer.
23
24. COMBINACION DE REGISTROS
IP Y CS
La combinación CS:IP contiene la dirección en la que el
ordenador está interpretando información en el
momento. Indica la dirección de la próxima instrucción que
se va a ejecutar.
El registro DS y el registro ES también sirven para guardar
direcciones de Segmentos, y también son variables de dos
bytes, pueden ser utilizados para por ejemplo mover
datos en memoria, imprimir cadenas, etc. Son
"punteros", que apuntan a cierta zona de memoria. El
registro SS apunta a la pila, y el SP es el que contiene el
offset de la pila.
24
25. REGISTROS AX,BX,CX,DX
Todos ocupan dos bytes, y se pueden utilizar divididos en dos partes con un byte de longitud.
◦ AX se divide en AH y AL
◦ BX en BH y BL
◦ CX en CH y CL
◦ DX en DH y DL.
AX
|-----------------------------|
11010110 10111000
AH AL
La 'H' se refiere a High en inglés, alto (de mayor valor), y la 'L' a Low (de menor valor).
25
26. REGISTROS
AX y BX
AX se suele utilizar como propósito general, indica función a las
interrupciones, etc., y es el más flexible, ya que ser el único que
permita multiplicaciones y divisiones. Se denomina a veces
acumulador. Realiza operaciones como entrada/salida de datos,
ultiplicación, división, operaciones con decimales codificados en binario,
etc.
BX nos servirá mucho como "handler", para abrir/cerrar archivos,
etc, y como registro de propósito general al igual que AX, CX y DX.
Funciona como registro Base, en algunas ocasiones, para
referenciar direcciones de memoria En estos casos mantiene la
dirección de base, comienzo de tabla o matrices, en la que la dirección
se determina usando valores de desplaza- miento.
26
27. REGISTROS
cX y dX
CX se suele usar como contador. Es decir, cuenta el número de bits o
palabras en una determinada cadena de datos durante los
operaciones con cadenas.
◦ Ej: Si se va a mover de un área de memoria a otra n palabras, CX mantiene inicialmente el
número total de palabras a desplazar llevando la cuenta de la palabra o byte que va siendo
trasladada.
DX suele ser el puntero, señalando haciendo el papel de Offset
lugares en memoria. Se usa en la multiplicación para mantener
parte del producto de 32 bits o en las divisiones para antener el
valor del resto. Y en operaciones de Entrada/Salida de datos para
especificar la dirección del puerto de E/S usado.
27
28. 6. instrucciones
Se pueden clasificar en los siguientes grupos:
De Transferencia.
Aritméticos.
Lógicos.
De salto.
28
29. INSTRUCCIONES DE
TRANSFERENCIA
Este grupo de instrucciones se utiliza para efectuar la
transferencia de datos, copian datos de un origen a un destino
sin modificar dicho origen. Pueden transferir palabras,
fracciones de palabras, o bloques completos.
29
30. INSTRUCCIONES DE
TRANSFERENCIA push
PUSH: Guarda en la cima de la pila 16 bits, decrementando el puntero de
la pila en dos bytes, hay que tener en cuenta que no se puede guardar en
la pila el contenido del registro CS o el contenido del registro IP ya que
estos deben ser modificados por las instrucciones de salto.
SINTAXIS:
PUSH: reg16
PUSH: mem16
Ejemplo: PUSH: CX
PUSH: TABLA (SI)
30
31. INSTRUCCIONES DE
TRANSFERENCIA pop
POP: Extrae de la cima de la pila el valor de 16 bits almacenado,
depositándolo en la dirección de memoria indicada y a diferencia
del PUSH incrementa el puntero de la pila en dos bytes,
igualmente se debe tener en cuenta que no se debe rescatar
valores para los registros CS e IP ya que estos deben ser
modificados por las instrucciones de salto.
SINTAXIS:
PUSH: reg16
PUSH: mem16
Ejemplo: POP: DX
POP: [BX]
31
32. INSTRUCCIONES DE
TRANSFERENCIA xchg
XCHG: (Intercambio): Consta de dos operandos e intercambia
sus valores por lo que modifica los operandos a no ser que
tengan idéntico valor, cabe recalcar que no se permite que los
operandos estén los dos en la misma memoria.
SINTAXIS: XCHG destino, origen
Indicadores:
Ejemplo: XCHGN: bl, ch
XCHGN: mem pal, bx
32
34. INSTRUCCIONES aritméticas
inc
INC: Incrementa. Suma 1 al contenido de un registro o de una posición de
memoria, dicho contenido puede ser byte o palabra.
SINTAXIS: INC destino
Indicadores: OF DF IF TF SF ZF AF PF CF
Ejemplo: INC AX ; AX = AX+1
INC DL ; DL = DL +1
INC WORD PTR ES: [DI+4]; Increm. Palabra contenida
; es ES: DI+4
34
35. INSTRUCCIONES aritméticas
dec
DEC: Decrementa. resta 1 al contenido de un registro o de una posición
de memoria, dicho contenido puede ser byte o palabra.
SINTAXIS: DEC destino
Indicadores: OF DF IF TF SF ZF AF PF CF
Ejemplo: DEC AX ; AX = AX+1
DEC DL ; DL = DL-1
DEC WORD PTR ES: [DI+4] ; Decrem. Byte contenido
;en ES: DI+4
35
36. INSTRUCCIONES aritméticas
sub
SUB: Resta el operando destino al operando origen, colocando
dicho resultado en el operando destino, los operandos pueden
tener signo siempre y cuando sean del mismo tipo byte o palabra.
SINTAXIS:
SUB op_destino, op_fuente ; sintaxis básica.
Ejemplo: SUB al, bl
SUB dx,dx
36
37. INSTRUCCIONES LOGICAS
En este grupo se incluyen las instrucciones de conjunción,
disyunción, exclusiva y negación, la aplicación practica no es de
siempre sin embargo suelen estar presentes en la mayoría de
los programas.
37
38. INSTRUCCIONES LOGICAS
and
AND: Realiza una operación de “Y” lógico entre el operando origen y el
operando destino quedando el resultado en el operando destino.
SINTAXIS:
AND destino, origen
Ejemplo: AND AX,BX ; AX = AX AND BX
AND SI,ES:[DI] ; SI=SI AND ES:[DI]
AND BX,0A34H ; BX=BX AND 0A34H
AND ES:[BX], CX ; ES: [BX] = ES: [BX] AND CX
AND BYTE PTR [SI+4],5 ; [SI+4] = [SI+4] AND 5
38
39. INSTRUCCIONES LOGICAS
or
OR: Realiza una operación de “O” lógico a nivel de bits entre los dos operandos ,
almacenándose después dicho resultado en el operando destino.
SINTAXIS:
OR destino, origen
Ejemplo: OR AL,BL ; AL = AL OR BL
OR DI:[BX] ; DI=DI OR [BX]
OR CL,34 ; CL=CL OR 34
OR [DI], BX ; [DI] = [DI] OR BX
OR BYTE PTR [DI],8 ; [DI] = [DI] OR 8
39
40. INSTRUCCIONES LOGICAS
xor
XOR: Realiza una operación de “O” exclusivo lógico a nivel de bits entre los dos
operandos , almacenándose después dicho resultado en el operando destino.
SINTAXIS:
XOR destino, origen
Ejemplo: XOR CX,BX ; CX = CX XOR BX
XOR DI,ES:[SI] ; DI= DI XOR ES:[SI]
XOR AX,4500H ; AX=AX XOR 4500H
XOR [BX], AX ; [BX] = [BX] XOR AX
XOR BYTE PTR [SI+BX],50 ; [SI+BX] = [SI+BX] XOR 50
40
41. INSTRUCCIONES de salto
Sirven para que el procesador, en lugar de
ejecutar la siguiente instrucción , pase a
ejecutar otra en lugar que se denomina
“destino de salto”.
41
42. INSTRUCCIONES de salto
jmp
JMP: Realiza un salto de ejecución incondicional hacia la dirección o etiqueta especifica.
SINTAXIS:
JMP dirección o JMP SHORT dirección
Ejemplos: JMP 100H ; Salta a CX:100h
JMP 55AAH:100H ; Salto lejano a otro segmento
JMP WORD PTR [BX] ; Salto a la dirección contenida en
; la dirección de memoria especificada
; por BX (salto indirecto)
JMP REPITE ; Salto a la etiqueta REPITE
42
43. INSTRUCCIONES de salto
call
CALL: El efecto de esta instrucción es similiar a la de salto
incondicional con la diferencia de que el procesador guarda
ciertos datos en lugares para facilitar el retorno una vez
terminada la ejecución de la subrutina.
SINTAXIS:
CALL destino
43
44. LAB1 50%>.: Tarea 1 - GUIA DE EJERCICIOS 02-Junio
Investigar que otras instrucciones hay disponibles para ensamblador y
desarrolle 6 ejemplos donde se utilicen estas.
Tarea:
1. Traer los archivos de código fuente escritos en su cuaderno
2. Presentar los archivos en digital listo para ser compilador en una
memoria usb
3. El docente seleccionara uno para que lo explique a sus compañeros
4. Individual