Escolar Documentos
Profissional Documentos
Cultura Documentos
lenguaje ensamblador
Lenguaje mquina
El ordenador slo entiende un lenguaje muy
restringido y de bajo nivel llamado lenguaje
mquina
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 :
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:
Una vez que hemos visto la evolucin de los lenguajes, cabe preguntarse: En
estos tiempos "modernos", para qu quiero el Lenguaje Ensamblador?
/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:
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"):
/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:
- TD: Depuracin
Notacin Significado
Negritas Comandos, smbolos y parmetros a ser
usados como se muestra.
Itlicas 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
letra chica Usada para ejemplos. Cdigo y lo que
aparece en pantalla.
Lenguaje ensamblador. 1era parte
Cada programa en lenguaje ensamblador es creado a partir de un archivo
fuente de cdigo ensamblador. Estos son archivos de texto que contienen
todas las declaraciones de datos e instrucciones que componen al programa
y que se agrupan en reas o secciones, cada una con un propsito
especial. Las sentencias en ensamblador tienen la siguiente sintaxis:
END [expresin]
ASSUME registrosegmento:nombre,,,
ASSUME NOTHING
nombre:
nombre STRUC
campos
nombre ENDS
Lenguaje ensamblador. 2nda parte
CONJUNTO DE INSTRUCCIONES.
mov ax,9
mov al,c
mov bx,65535/3
Lenguaje ensamblador. 2nda parte
Relocalizables.- Por medio de un smbolo asociado a una direccin de
memoria y que puede ser usado tambin para llamados.
help DB OPCIONES,13,10
F1 DB F1 salva pantalla,13,10
.
.
.
F10 DB F10 exit,13,10,$
DISTANCIA = $-help
Lenguaje ensamblador. 2nda parte
Registros.- Cuando se hace referencia a cualquiera de los registros de
propsito general, apuntadores, ndices, o de segmento.
desplazamiento[BP]
desplazamiento[BX]
[desplazamiento][BP]
[BP+desplazamiento]
[BP].desplazamiento
[BP]+desplazamiento
mov ax,[BP]
mov al,[bx]
mov bx,12[bx]
mov bx,fred[bp]
Lenguaje ensamblador. 2nda parte
Indexado.- Un operador indexado representa una direccin de memoria
relativa a uno de los registros ndice (SI o DI). Su sintaxis es:
desplazamiento[DI]
desplazamiento[SI]
[desplazamiento][DI]
[DI+desplazamiento]
[DI].desplazamiento
[DI]+desplazamiento
mov ax,[si]
mov al,[di]
mov bx,12[di]
mov bx,fred[si]
Lenguaje ensamblador. 2nda parte
Base-indexados.- Un operador base-indexado representa una direccin de
memoria relativa a la combinacin de los registros de base e ndice. Su
sintaxis es:
desplazamiento[BP][SI]
desplazamiento[BX][DI]
desplazamiento[BX][SI]
desplazamiento[BP][DI]
[desplazamiento][BP][DI]
[BP+DI+desplazamiento]
[BP+DI].desplazamiento
[DI]+desplazamiento+[BP]
mov ax,[BP][si]
mov al,[bx+di]
mov bx,12[bp+di]
mov bx,fred[bx][si]
Lenguaje ensamblador. 2nda parte
Estructuras.- Su sintaxis es variable.campo. variable es el nombre con
que se declar la estructura, y campo es el nombre del campo dentro de la
estructura.
date STRUC
mes DW ?
dia DW ?
aa DW ?
date ENDS
mov ax,actual.dia
mov actual.aa, 85
Lenguaje ensamblador. 2nda parte
Operadores y expresiones.- Se cuenta con los siguientes operadores:
-aritmticos
expresin1 * expresin2
expresin1 / expresin2
expresin1 MOD expresin2
expresin1 + expresin2
expresin1 - expresin2
+ expresin
- expresin
-de corrimiento
expresin1 SHR contador
expresin1 SHL contador
Lenguaje ensamblador. 2nda parte
-relacionales
expresin1 EQ expresin2
expresin1 NE expresin2
expresin1 LT expresin2
expresin1 LE expresin2
expresin1 GT expresin2
expresin1 GE expresin2
- de bit
NOT expresin
expresin1 AND expresin2
expresin1 OR expresin2
expresin1 XOR expresin2
-de ndice
[expresin1] [expresin2]
Lenguaje ensamblador. 2nda parte
ejemplos:
mov al, string[3]
mov string[last],al
mov cx,dgroup:[1] ; igual a mov cx,dgroup:1
-de apuntador
tipo PTR expresin
ejemplos:
inc month.day
mov time.min,0
mov [bx].dest
Lenguaje ensamblador. 2nda parte
-de propsito especial.
OFFSET expresin.- Regresa el desplazamiento del operando
mov bx, OFFSET dgroup:array
mov bx, offset subrout3
; HOLA.ASM
; Programa clsico de ejemplo. Despliega una leyenda en pantalla.
STACK SEGMENT STACK ; Segmento de pila
DW 64 DUP (?) ; Define espacio en la pila
STACK ENDS
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.