Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La sintaxis es la siguiente
Nombre de la instrucción Operando 1, Operando 2, Operando 3, Operando 4, ...
El nombre de la instrucción está formada por 2 o 3 letras, los operandos pueden ser
registros, constantes o direcciones de memoria. La cantidad de operandos dependerá de
la instrucción.
Por ejemplo:
MOV AL, [1000]
Esta instrucción indica que se copie el valor de la porción de la memoria que esté en la
ubicación 1000 (En hexadecimal) a la parte baja del registro AX (AL). Cuando un operando
es un valor de una dirección de memoria, ésta dirección se escribe entre corchetes,
recordar que el operando 1 es el destino y el operando 2 es el origen. Y cuando es una
constante dependerá del ensamblador, en el caso del debug (Un programa que sirve para
crear y editar aplicaciones que viene con el DOS) se interpretarán como hexadecimales, en
los siguientes ejemplos se interpretará que las constantes son números hexadecimales.
También se puede tomar un valor de la memoria apuntado por un registro, por ejemplo:
MOV AL, [DI]
DI está apuntado al valor que está en la memoria que será copiado al registro AL. El
nombre MOV viene de la palabra move, que es una palabra del ingles que significa mover.
Justamente la instrucción mencionada significa, mover el valor apuntado por DI a AL.
También se puede copiar el valor de un registro a otro
MOV AL, BL
En este caso se copia el valor de BL a AL
Igualmente se puede copiar el valor de la parte baja de un registro a la parte alta de otro
registro
MOV CH, DL
Así como también operar con las partes altas
MOV AH, DH
Inclusive se puede copiar el valor de un registro a una dirección de memoria
MOV [1000], AL
Igualmente apuntada la dirección de memoria a DI
MOV [DI], AL
Y también con los registros completos (Solamente completos en el procesador 8086)
MOV AX, DX
También trabajar con los registros completos para todos los procesadores de 32 bits
MOV EBX, EDX
En éste caso mueve la totalidad del registro DX a la totalidad del registro BX, en éste caso
se está trabajando con los registros en forma extendida (32 bits), pero hay que tener
precaución ya que el procesador 8086 no interpretará correctamente ésta instrucción (El
procesador 8086 es obsoleto por ésta desventaja y otras más, por ejemplo sólo puede
direccionar 1 MB), además el debug no puede interpretar ésta instrucción.
No se puede realizar lo siguiente porque no se pueden pasar valores en la memoria sin la
intervención de un registro, además no se ha especificado el tamaño
MOV [1000], [2000]
Igualmente no se puede hacer lo siguiente
MOV [DI], [1000]
Así como también lo siguiente
MOV [DI], [SI]
Sin embargo lo siguiente es correcto
MOV [1000], AX
Pero no lo siguiente porque no se está especificando el tamaño
MOV [SI], 1F
Lo correcto sería lo siguiente
Si se quiere transferir un byte
MOV byte [SI], 1F
Si se quiere transferir una palabra (16 bits)
MOV word [SI], 1F
Si se quiere transferir una doble palabra (32 bits)
MOV dword [SI], 1F
Instrucciones del leguaje ensamblador
Las instrucciones que se encargan de mover datos en relación con la memoria se pueden
categorizar por tareas específicas:
· Las que transfieren datos de un registro a otro o entre la memoria y los registros.
Mov AX, 3
Mov DS, AX
Adicional a la instrucción “mov”, existen otras que operan bajo circunstancias diferentes
con el mismo propósito, la instrucción “xchg” intercambia el contenido de la fuente con el
destino.
Otra instrucción útil es “xlat” (traslate), se utiliza comúnmente al trabjar con tablas o
arreglos, esta instrucción reemplaza el valor de AL por un nuevo valor tomado de la tabla
que se compone de un conjunto de localidades contiguas en memoria, y supone que el
registro BX contiene la dirección del primer elemento de la tabla.
En resumen:
Administración de la pila
La pila es usada automáticamente por las instrucciones “call”, “int”, “ret” y “iret”, par
guardar o restaurar la dirección de retorno antes de ejecutar las rutinas indicadas por
dichas instrucciones. Otros servicios que presta es para pasar parámetros entre rutinas, o
bien de un lenguaje de alto nivel al ensamblador, la pila se manipula mediante las
instrucciones “push” (empuja o almacena en la pila) y “pop” (extrae o saca de la pila).
Otro ejemplo, las instrucciones “push ax”, “push bx” almacenan en la pila los valores de
los registros AX y BX, para después sacarlos de la pila con las instrucciones “pop ax”, “pop
bx”.
Existen otros prefijos como REPE (repite hasta encontrar la igualdad) o REPZ (repite hasta
que el valor sea cero), REPNE (repite mientras el valor no sea igual)o REPNZ (repite
mientras el valor no sea cero) usados en combinación con las instrucciones “cmp”
(comparar) y “scas” (escanerar-cadena).
Referencia:
http://datateca.unad.edu.co/contenidos/309696/ECBTI_MPyMC_V_02/leccin__14_instru
cciones_bsicas_en_assembler.html