Beruflich Dokumente
Kultur Dokumente
lenguaje ensamblador
Equipo 5
Lenguaje mquina
El ordenador slo entiende un lenguaje muy
restringido y de bajo nivel llamado lenguaje
mquina
El lenguaje mquina depende del procesador
Existe una incompatibilidad innata entre los
distintos procesadores
Constituye una de las caractersticas ms
importantes de su arquitectura
El lenguaje mquina establece las
capacidades bsicas del computador
El lenguaje mquina est formado por un
conjunto de instrucciones mquina
Cada instruccin tiene una representacin
determinada en forma de bits, almacenados en
memoria
Los distintos tipos de representacin se denominan
formato de instruccin
Lenguaje mquina
Propiedades de las instrucciones mquina
Realizan una nica y sencilla funcin su
decodificacin es sencilla
Utilizan un nmero fijo de operandos
Su codificacin en bits es bastante sistemtica
decodificacin ms fcil
Son autocontenidas
Contienen toda la informacin necesaria
para su ejecucin
Su interpretacin no depende de su
posicin en el programa o en la memoria
Son independientes
No requieren de la informacin de otras
instrucciones para ejecutarse
De transferencia de informacin
Transferencia de control
Aritmticas
Lgicas
Comparacin
Desplazamiento
Acceso a bits individuales
De entrada/salida
Miscelneas
Lenguaje mquina
Formatos de instruccin mquina
Cada instruccin debe contener la siguiente
informacin
Operacin a realizar
Direccin de los operandos
Direccin del resultado
Direccin de la siguiente instruccin
Modo de representacin de los operandos
Un formato es un conjunto de bits que
contiene dicha informacin
Lenguaje mquina
Los formatos se dividen en campos
Cadenas de bits contiguos
Tipos bsicos de campos
Cdigo de operacin
Indica la operacin a realizar
Direccin (uno o varios)
Indica la direccin de un dato, un resultado
o una instruccin
Ensamblador
La solucin que se tom fue la siguiente: a cada accin que sea capaz de
realizar nuestra computadora, asociarle un nmero, que ser su cdigo de
operacin (opcode) . Por ejemplo, una calculadora programable simple
podra asignar los opcodes :
1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE
Ensamblador
Cuando abstraemos los opcodes y los sustituimos por una palabra que sea
una clave de su significado, a la cual comnmente se le conoce como
mnemnico , tenemos el concepto de Lenguaje Ensamblador . As,
podemos definir simplemente al Lenguaje Ensamblador de la siguiente
forma:
Ensamblador
Ensamblador
Una vez que hemos visto la evolucin de los lenguajes, cabe preguntarse: En
estos tiempos "modernos", para qu quiero el Lenguaje Ensamblador?
Velocidad
Eficiencia de tamao
Flexibilidad
Tiempo de programacin
Programas fuente grandes
Peligro de afectar recursos inesperadamente
Falta de portabilidad
Proceso de ensamblado
Proceso de ensamblado
TASM: Ensamblador
Se le llama ensamblador no slo al lenguaje; sino tambin al
programa que traduce el cdigo fuente escrito en ensamblador, a
cdigo objeto, equivalente a los opcodes en lenguaje de mquina.
En el caso de 8086 y familia, el ensamblador, sea TASM (Borland) o
MASM (Microsoft), se encarga de generar los archivos .OBJ que
representan el cdigo de mquina asociado al programa fuente en
ensamblador.
La sintaxis bsica para su uso es:
TASM <nombre del programa> {opciones}
En el nombre del programa, podemos omitir la extensin .ASM, que
es la que tenemos por defecto.
Proceso de ensamblado
Por ejemplo, para ensamblar el programa HOLA.ASM, basta la
siguiente lnea de comandos:
C> TASM HOLA
En las opciones se puede controlar el proceso de ensamblado, para
que genere informacin adicional o cambie su forma de operacin.
Las dos ms tiles para este curso sern:
/la
Genera un archivo, adicional al .OBJ, con extensin .LST, que muestra
un listado detallado del proceso de ensamblado. Entre otras cosas,
muestra la asociacin existente entre el cdigo fuente y los opcodes
generados.
Proceso de ensamblado
/zi
Almacena informacin de smbolos junto con el programa objeto, til
para que el depurador permita ejecutar el cdigo objeto en sincrona
con el cdigo fuente.
As, se recomienda que durante el desarrollo de un programa se
ejecute TASM con una lnea de comandos similar a la siguiente:
C> TASM HOLA /zi /la
Proceso de ensamblado
TLINK: Linker
Un archivo .OBJ, si bien contiene ya todo el cdigo de mquina, no
puede ser ejecutado todava por el sistema operativo, pues no
contiene informacin necesaria para el mismo, tal como la memoria
requerida. Esto se coloca en un encabezado, que es ledo por el
sistema para determinar cmo ejecutar el programa.
Por otro lado, cuando hacemos un programa en varios mdulos, no
solamente existe un cdigo objeto sino varios, que debemos combinar
o relacionar entre s.
Estos procesos son llevados a cabo por el TLINK; el cual toma como
entrada uno o varios archivos .OBJ y genera los archivos ya
ejecutables por el sistema, con extensin .COM o .EXE. Desde el
sistema operativo 4.0 se est buscando eliminar a los archivos .COM,
por sus limitaciones; por lo cual, en general no se trabaja con ellos en
este curso.
Proceso de ensamblado
Se ejecuta en forma similar al TASM, desde la lnea de comandos
("prompt"):
La sintaxis bsica para su uso es:
TLINK <nombre del programa o programas> {opciones}
Proceso de ensamblado
/v
Almacena informacin de smbolos junto con el programa ejecutable,
til para que el depurador permita ejecutar el cdigo objeto en
sincrona con el cdigo fuente. Cuidado: Esta opcin debe ponerse
en minsculas, estrictamente.
As, se recomienda que durante el desarrollo de un programa se
ejecute TLINK con una lnea de comandos similar a la siguiente:
Proceso de ensamblado
Otros puntos que intervienen en el proceso de ensamblado:
letra chica
Significado
Comandos, smbolos y parmetros a ser
usados como se muestra.
Todo aquello que debe ser
reemplazado por el usuario
Indican un parmetro opcional
Denota un parmetros que puede repetirse
varias veces
Separa dos valores mutuamente
excluyentes
Usada para ejemplos. Cdigo y lo que
aparece en pantalla.
desplazamiento[BP]
desplazamiento[BX]
[desplazamiento][BP]
[BP+desplazamiento]
[BP].desplazamiento
[BP]+desplazamiento
en cada caso la direccin efectiva es la suma del desplazamiento y el
contenido del registro.
mov
mov
mov
mov
ax,[BP]
al,[bx]
bx,12[bx]
bx,fred[bp]
desplazamiento[DI]
desplazamiento[SI]
[desplazamiento][DI]
[DI+desplazamiento]
[DI].desplazamiento
[DI]+desplazamiento
en cada caso la direccin efectiva es la suma del desplazamiento y el
contenido del registro.
mov
mov
mov
mov
ax,[si]
al,[di]
bx,12[di]
bx,fred[si]
desplazamiento[BP][SI]
desplazamiento[BX][DI]
desplazamiento[BX][SI]
desplazamiento[BP][DI]
[desplazamiento][BP][DI]
[BP+DI+desplazamiento]
[BP+DI].desplazamiento
[DI]+desplazamiento+[BP]
en cada caso la direccin efectiva es la suma del desplazamiento y el
contenido del registro.
mov
mov
mov
mov
ax,[BP][si]
al,[bx+di]
bx,12[bp+di]
bx,fred[bx][si]
date ja,01,84
mov
mov
ax,actual.dia
actual.aa, 85
-aritmticos
expresin1 * expresin2
expresin1 / expresin2
expresin1 MOD expresin2
expresin1 + expresin2
expresin1 - expresin2
+ expresin
- expresin
-de corrimiento
expresin1 SHR contador
expresin1 SHL contador
EQ expresin2
NE expresin2
LT expresin2
LE expresin2
GT expresin2
GE expresin2
- de bit
NOT expresin
expresin1 AND expresin2
expresin1 OR expresin2
expresin1 XOR expresin2
-de ndice
[expresin1] [expresin2]
cx,dgroup:1
mov
mov
mov
al, string[3]
string[last],al
cx,dgroup:[1]
; igual a mov
-de apuntador
tipo PTR expresin
tipo puede ser BYTE 1, WORD 2, DWORD 4, QWORD 8, TBYTE
10, NEAR 0FFFFh, FAR 0FFFEh. Ejemplos:
call FAR PTR subrout3
mov BYTE ptr [array], 1
add al, BYTE ptr [full_word]
-de nombre de campo
estructura.campo
ejemplos:
inc month.day
mov time.min,0
mov [bx].dest
CODE
SEGMENT
; Segmento de Cdigo
ASSUME CS:CODE, DS:DATA, SS:STACK
INICIO:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET SALUDO
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE
ENDS
END INICIO
6.- Las primeras dos instrucciones cargan la direccin del segmento de datos
en el registro DS. Estas instrucciones no son necesarias para los
segmentos de cdigo y stack puesto que la direccin del segmento de
cdigo siempre es cargado en el registro CS y la direccin de la declaracin
del stack segment es automticamente cargada en el registro SS.
7.- Las ltimas dos instrucciones del segmento CODE usa la funcin 4CH de
MS-DOS para regresar el control al sistema operativo. Existen muchas
otras formas de hacer esto, pero sta es la ms recomendada.
8.- La directiva END indica el final del cdigo fuente y especifica a START como
punto de arranque.