MOV Instrucción de Transferencia de Datos (MOVER DATOS)
1) No se permite transferencias de memoria a memoria
2) Los datos tienen que ser del mismo tamaño
3) El destino no puede ser dato inmediato
4) Después de la transferencia, destino y fuente son iguales
5) No se permite transferencia inmediata a REG. SEG.
Diferentes
Opciones
a) MOV
REG2(8) , REG1(8)
b) MOV
REG2(16) , REG1(16)
c) MOV
REG(8) , DATO INM(8)
d) MOV REG(16) , DATO INM(16)
e) MOV
REG(8) , MEM(8)
f) MOV MEM(8) , REG(8)
g) MOV
REG(16) , MEM(16)
h) MOV
MEM(16) , REG(16)
i) MOV
MEM(8) , DATO INM(8)
j) MOV MEM(16) , DATO INM(16)
MOV BYTE PTR MEM(8), DI(8)
MOV WORD PTR MEM(16), DI(16)
Conceptos
de Stack
D.R. = (SS*10) + SPEl sistema de apilación utiliza la técnica LIFO(last in first out), el últi-mo en entrar, primero en salir.
SP apunta al último dato válido en el stack de memoria.
El limite inferior es el valor inicial que se le propone a SP
El stack de memoria es un rango de localidades de memoria que permite al programador apilar datos de byte en byte.
Solo puede manejar datos de 16 bits (palabra) y es un almacenamiento temporal.
PUSH: METERAL STACK DE MEMORIA
POP: EXTRAER DEL STACK DE MEMORIA
PUSHF: METER EL REG. DE BANDERAS
POPF: SACAR AL REG. DE BANDERAS
Instrucciones para operaciones de Suma
ADD
operando + operando = resultado en
destino fuente destino
ADC
operando + operando + cf = resultado en
destino fuente destino
Tanto los operandos como el resultado son manejados en hexadecimal. no se aplica para registros segmentos.
Destino y fuente son los operandos que manejaran las instrucciones de resta para realizar la operacion correspondiente. ambos operandos pueden ser de 8 o de 16 bits.
SUB
OPERANDO - OPERANDO = RESULTADO EN
DESTINO FUENTE DESTINO
SBB
OPERANDO - OPERANDO - CF = RESULTADO EN
DESTINO FUENTE DESTINO
tanto los operandos como el resultado son manejados en hexadecimal. no se aplica para registros segmentos.
Ajuste
Decimal
el ajuste decimal sirve para poder
cambiar el resultado hexadecimal que producen las instrucciones de suma y resta
a cantidades decimales (del 0 al 9), por ejemplo:Si sumamos las cantidades de 7 y 5, la instrucción ADD obtendrá el resultado de “0C“, pero si queremos cambiarlo a decimal, aplicamos una instrucción de ajuste decimal y lo que se obtiene es la cantidad de "12".
es opcional el ajuste decimal, si es que se desea un resultado decimal, ya que son independientes de las instrucciones aritmeticas. por eso se manejan en forma separada y simpre despues de las operacion aritmetica.
Ajuste
Decimal
Una clase de ajuste decimal es del tipo EMPAQUETADO que considera a cada
byte dividido en dos nibbles y cada nibble representa un valor numérico del 0 a
9.Solo se aplica este tipo de ajuste para las operaciones de suma y resta.
Los requerimientos para el ajuste decimal empaquetado son:
Uno de los operándos debe de ser registro “AL”, ya que el ajuste solo se maneja en BYTE, por lo tanto, al realizar la instrucción aritmética el operando destino debe ser “AL”, por ejemplo:
ADD AL,BL
Otro requisito es que los dos operándos tienen que ser dígitos numéricos (del 0 al 9). No se garantiza el ajuste si se aplican dígitos alfabéticos (del A al F), por ejemplo:
34 01 72 28 à SI
1F B8
DD 9E à NO
Instrucción
de Incremento
Esta instrucción toma al operando destino, que en un principio es fuente,
posteriormente le suma uno y finalmente el resultado obtenido lo regresa al
operando destino.
Instrucción
de Decremento
Esta instrucción toma al operando destino, que en un principio es fuente,
posteriormente le resta uno y finalmente el resultado obtenido lo regresa al
operando destino.
5 para el lab.
ResponderEliminar