Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C
3. El lenguaje ensamblador, o assembler (en
inglés assembly language y la abreviación
asm), es un lenguaje de programación de
bajo nivel. Consiste en un conjunto de
mnemónicos que representan instrucciones
básicas para los computadores,
microprocesadores, microcontroladores y
otros circuitos integrados programables.
DEFINICON
4. El código escrito en lenguaje ensamblador posee una
cierta dificultad de ser entendido ya que su estructura
se acerca al lenguaje máquina, es decir, es un
lenguaje de bajo nivel.
El lenguaje ensamblador es difícilmente portable, es
decir, un código escrito para un microprocesador,
puede necesitar ser modificado, para poder ser usado
en otra máquina distinta.
CARACTERISTICAS
5. Los programas hechos por un programador experto en lenguaje
ensamblador son generalmente mucho más rápidos y consumen
menos recursos del sistema (memoria RAM y ROM) que el programa
equivalente compilado desde un lenguaje de alto nivel.
Con el lenguaje ensamblador se tiene un control muy preciso de las
tareas realizadas por un microprocesador por lo que se pueden crear
segmentos de código difíciles y/o muy ineficientes de programar en
un lenguaje de alto nivel,
También se puede controlar el tiempo en que tarda una rutina en
ejecutarse, e impedir que se interrumpa durante su ejecución.
CARACTERISTICAS
6. Ventajas
1. Velocidad. Como trabaja directamente con el microprocesador al
ejecutar un programa, pues como este lenguaje es el mas cercano a la
máquina la computadora lo procesa mas rápido.
2. Eficiencia de tamaño. Un programa en ensamblador no ocupa mucho
espacio en memoria porque no tiene que cargar librerías y demás como
son los lenguajes de alto nivel
3. Flexibilidad. Es flexible porque todo lo que puede hacerse con una
máquina, puede hacerse en el lenguaje ensamblador de esta máquina;
los lenguajes de alto nivel tienen en una u otra forma limitantes para
explotar al máximo los recursos de la máquina.
7. Desventajas
Tiempo de programación .- Como es un lenguaje de bajo nivel requiere
más instrucciones para realizar el mismo proceso,
Programas fuente grandes .- Por las mismas razones que aumenta
el tiempo, crecen los programas fuentes;
Peligro de afectar recursos inesperadamente .- Que todo error que
podamos cometer, o todo riesgo que podamos tener, podemos afectar los
recursos de la máquina
Falta de portabilidad.- Porque para cada máquina existe un lenguaje
ensamblador; por ello, evidentemente no es una selección apropiada de
lenguaje cuando deseamos codificar en una máquina
8. INSTRUCCIONES
add: suma
adc: suma con acarreo
daa: ajuste decimal para
la suma
sub: resta
sbb: resta con acarreo
negativo
aas: ajuste ascii para la
resta
das: ajuste decimal para
la resta
mul: multiplicación
imul: multiplicación entera
aam: ajuste ASCII para la
multiplicación
div: división
idiv: división entera
aad: ajuste ascii para la
división
Instrucción Aritmética
9. AND: Con esta instrucción se lleva a cabo la operación “y” lógica de los operando.
OR: Lleva a cabo, bit por bit, la disyunción inclusiva lógica de los operandos.
XOR: Su función es efectuar bit por bit la disyunción exclusiva lógica de los dos
operandos.
TEST: Realiza una conjunción, bit por bit, de los operandos pero a diferencia de
AND
NEG: Esta instrucción genera el complemento a 2 del operando destino y lo
almacena en este mismo operando.
NOT: Lleva a cabo la negación bit por bit del operando destino.
Instrucción de Lógica
10. MOV: Transferencia de datos entre celdas de memoria,
registros y acumulador.
MOVS: Mover cadenas de bytes o palabras desde la
fuente, direccionada por SI, hasta el destino direccionado
por DI.
Instrucción de Transferencia
Son utilizadas para mover los contenidos de
los operandos. Cada instrucción se puede usar
con diferentes modos de Direccionamiento.
11. LODS: Toma la cadena que se encuentre en la dirección especificada por
SI, la carga al registro AL(o AX) y suma o resta 1(según el estado de DF)
a SI si la transferencia es de bytes o 2 si transferencia es de palabras.
LAHF: Permite verificar el estado de las banderas durante la ejecución de
nuestro programa.
LDS: El operando fuente debe ser una palabra doble en memoria.
LEA: El operando fuente debe estar ubicado en memoria, y se coloca su
desplazamiento en el registro índice o apuntador especificado en destino.
LES: El operando fuente debe ser un operando en memoria de palabra
doble.
Instrucción Carga
12. PUSH fuente Primero se decremento en 2 el registro SP y después se
transfiere una palabra desde el operando fuente a la pila.
POP destino Esta instrucción transfiere una palabra desde una
localidad de la pila, cuya dirección está dada por el SP, al operando
destino. Una vez hecho esto, se incrementa en dos el registro SP.
PUSHF fuente Primero se decremento en dos el SP y después se
transfiere el registro de banderas a la localidad de la pila indicada por
el SP.
POPF destino Esta instrucción transfiere bits de la palabra que se
encuentra en la parte superior de la pila hacia el registro de banderas.
Instrucción de Pila
13. REGISTROS
Los registros del procesador se emplean para controlar
instrucciones en ejecución, manejar direccionamiento
de memoria y proporcionar dependiendo del microprocesador
que se emplee.
Registros de segmento
Registros de apuntadores de instrucciones
Registros apuntadores
Registros de propósitos generales
Registro índice
Registro de bandera.
14. Registros de segmento
Registro CS
Registro DS
Registro SS
Registro ES
Registro FS y GS
Un registro de segmento se utiliza para alinear en un límite
de párrafo o dicho de otra forma codifica la dirección de inicio
de cada segmento y su dirección en un registro de segmento
supone cuatro bits 0 a su derecha.
15. Registros Apuntadores
El registro SP
El registro BP
Los registros apuntadores están
asociados con el registro SS y permiten
al procesador acensar datos en el
segmento de pila los registros
apuntadores son dos:
16. Registros de uso Generar
El registro AX
El registro BX
El Registro Cx
El Registro DX
Los registros de propósitos generales AX, BX, CX y DX son
los caballos de batalla o las herramientas del sistema. Son los
únicos en el sentido de que se puede direccionarlos como
una palabra o como una parte de un byte
17. Registros de Indice
Registro SI
Registro DI
Registro de bandera
El Registro DX
Los registros SI y DI están disponibles para
direccionamientos indexados y para sumas y restas. Que
son las operaciones de punta.
18.
19. ;Programa HOLA MUNDO
DATOS SEGMENT
MENSAJE DB "HOLA MUNDO$"
DATOS ENDS
PILA SEGMENT STACK "STACK"
DB 200 DUP(0)
PILA ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO,DSATOS,SSILA
PRINCIPAL PROC
MOV AX,DATOS
MOV DS,AX
MOV AH,9
MOV DX,OFFSET MENSAJE
INT 21H
MOV AH,4CH
INT 21H
PRINCIPAL ENDP
CODIGO ENDS
END PRINCIPAL