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

Importancia del Lenguaje Ensamblador

La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente


con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este,
tiene la ventaja de que en l se puede realizar cualquier tipo de programas que en los
lenguajes de alto nivel no lo pueden realizar. Otro punto sera que los programas en
ensamblador ocupan menos espacio en memoria.
Sintaxis
El lenguaje ensamblador x86 tiene 2 vertientes diferentes en cuanto a su sintaxis de
programacin: sintaxis Intel, usada en sus inicios para la documentacin de la plataforma x86,
y sintaxis AT&T .
1
La sintaxis Intel es la dominante en la plataforma Windows, mientras que
en Unix/Linux ambas son utilizadas aunque GCC solo soportaba la sintaxis AT&T en sus
primeras versiones.
La sintxis de AT&T es poco ms o menos como la de Intel, en el sentido de que no cambia los
nombres de los cdigos de operacin ni de los registros, pero tiene algunas diferencias
chocantes a primera vista:
Los nombres de los cdigos de operacin (opcodes) llevan una letra al final que indica
el tamao de los operandos. Aunque algunas veces se puede inferir el tamao de los
operandos de ellos mismos, resulta una buena prctica aadir esta letra al final. El
sufijo (la letra en cuestin) es b si queremos indicar operandos tamao byte, w para
tipo word, etc...
En las instrucciones tales como mov, que llevan un operando origen y otro destino, el
orden en el que se colocan tras el cdigo de operacin es el inverso a la sintxis Intel.
En sta, primero se coloca el destino y luego el origen. En la sintxis AT&T se coloca
primero el operando de origen y luego el de destino. Las instrucciones que tienen ms
de un operando de origen no tienen los operandos invertidos, al menos en
arquitectura i386. Esto tambin ocurre con las instrucciones de punto flotante debido
a como las genera el compilador de C.
Los operandos inmediatos van precedidos por el smbolo $ en AT&T, mientras que no
llevan delimitadores en la sintxis Intel.
Los nombres de los registros van precedidos por el smbolo %, mientras que no van
delimitados en la sintxis Intel.
Los operandos de los saltos absolutos cortos van precedidos por el smbolo emph*,
mientras que no van delimitados en la sintxis Intel.
Los saltos largos se forman indicando section,offset, mientras que en la sintxis Intel se
forman indicando section:offset. Adems, las instrucciones para salto largo se
llaman ljmp y lcall, y la de retorno largo se llama lret, en lugar de sus correspondientes
en sintxis Intel, que son call far, jmp far y ret far.
Por ltimo, en principio se espera que un programa escrito en lenguaje de ensamble
en Unix tenga una sola seccin (una seccin viene a ser como un segmento. Aunque no
sea exacto, se puede considerar as.).

Diferencias entre Lenguaje Ensamblador y Lenguaje Maquina


ENSAMBLADOR MAQUINA
El siguiente lenguaje de programacin de
"ms alto" nivel es el lenguaje ensamblador,
que se trata de cdigo mquina cuyos
cdigos de instrucciones han sido
reemplazados por comandos ms intuitivos.
Por ejemplo, el comando para colocar el valor
97 en un registro de la memoria es llamado
AL (en cdigo mquina sera "10110000
01100001"), y en lenguaje ensamblador sera
"MOV AL, 97", que sigue siendo un comando
crptico pero es mucho ms sencillo de leer.
Aunque sigue siendo ineficiente escribirlo y
requiere que el programador trate
directamente con el hardware de la
computadora, es un lenguaje de nivel ms
alto que el de cdigo mquina porque es ms
abstracto, es decir, est ms cerca del
programador.
Un lenguaje de bajo nivel es aquel que se
encuentra cerca de los conceptos bsicos del
hardware de la computadora. El lenguaje de
ms bajo nivel es el cdigo mquina, que el
hardware entiende directamente y que no
requiere interpretacin o traduccin. El
cdigo mquina est compuesto
completamente por cadenas de nmeros
binarios: los famosos ceros y unos. Si bien
puede hacer todo lo que cualquier otro
lenguaje puede lograr (de hecho el resto de
los lenguajes deben ser traducidos a cdigo
mquina por el intrprete), no est diseado
para cumplir con las necesidades del
programador y requiere un conocimiento
profundo del procesador y de los dispositivos
de la computadora, adems de que es casi
imposible que un humano pueda leerlo.

Ventajas y desventajas del Lenguaje Ensamblador
Ventajas
Como trabaja directamente con el microprocesador al ejecutar un programa, pues
como este lenguaje es el ms cercano a la mquina la computadora lo procesa ms
rpido.
Eficiencia de tamao: Un programa en ensamblador no ocupa mucho espacio en
memoria porque no tiene que cargan libreras y dems como son los lenguajes de alto
nivel
Flexibilidad: Es flexible porque todo lo que puede hacerse con una mquina, puede
hacerse en el lenguaje ensamblador de esta mquina; los lenguajes de alto nivel tienen
en una u otra forma limitante para explotar al mximo los recursos de la mquina. O
sea que en lenguaje ensamblador se pueden hacer tareas especficas que en un
lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que
no se lo permite
Desventajas
Tiempo de programacin: Como es un lenguaje de bajo nivel requiere ms
instrucciones para realizar el mismo proceso, en comparacin con un lenguaje de alto
nivel. Por otro lado, requiere de ms cuidado por parte del programador, pues es
propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin.

Programas fuente grandes: Por las mismas razones que aumenta el tiempo, crecen los
programas fuentes; simplemente requerimos ms instrucciones primitivas para
describir procesos equivalentes. Esto es una desventaja porque dificulta
el mantenimiento de los programas, y nuevamente reduce la productividad de los
programadores.

Peligro de afectar recursos inesperadamente: Que todo error que podamos cometer, o
todo riesgo que podamos tener, podemos afectar los recursos de la mquina,
programar en este lenguaje lo ms comn que pueda pasar es que la mquina se


bloquee o se reinicialice. Porque con este lenguaje es perfectamente posible (y
sencillo) realizar secuencias de instrucciones invlidas, que normalmente no aparecen
al usar un lenguaje de alto nivel.

Falta de portabilidad: Porque para cada mquina existe un lenguaje ensamblador; por
ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos
codificar en una mquina y luego llevar los programas a otros sistemas operativos
o modelos de computadoras.

Compiladores para Ensamblador
ASM
NASM
MASM/MASM32
FASM
NASAM
TASAM
EMU8086
MPASM
MPLINK
MPLIB
MIPS
SPARC
HP PA-RISC
SOAP


Registros de Propsito General
Los registros de propsito general AX, BX, CX y DX son los caballos de batalla del sistema. Son
nicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un
byte. El ltimo byte de la izquierda es la parte alta, y el ltimo byte de la derecha es la parte
baja. Por ejemplo, el registro CX consta de una parte CH (alta) y una parte Cl (baja), y usted
puede referirse a cualquier parte por su nombre.

Registro AX: El registro AX, el acumulador principal, es utilizado para operaciones que implican
entrada/salida y la mayor parte de la aritmtica. Por ejemplo, las instrucciones para
multiplicar, dividir y traducir suponen el uso del AX. Tambin, algunas operaciones generan
cdigo ms eficiente si se refieren al AX en lugar de a los otros registros.
Registro BX: El BX es conocido como el registro base ya que es el nico registro de propsito
general que puede ser ndice para direccionamiento indexado. Tambin es comn emplear el
BX para clculos.
Registro CX: El CX es conocido como el registro contador. Puede contener un valor para
controlar el nmero de veces que un ciclo se repite o un valor para corrimiento de bits, hacia la
derecha o hacia la izquierda. El CX tambin es usado para muchos clculos.
Registro DX: El DX es conocido como el registro de datos. Algunas operaciones de
entrada/salida requieren uso, y las operaciones de multiplicacin y divisin con cifras grandes
suponen al DX y al AX trabajando juntos.

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