Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2.1 Op - Basicas
2.1 Op - Basicas
AX: Acumulador
(AL:AH)
BX: Registro base
(BL:BH)
CX: Registro
contador (CL:CH)
DX: Registro de
datos (DL:DH)
Registros de segmento
(Solo se pueden usar para los usos mencionados a excepción de ES)
MOV es bastante flexible en el uso de sus operandos, siempre y cuando se observen las
siguientes reglas:
He aquí una lista de las variantes generales de MOV, excluyendo los registros de segmento:
Memoria a memoria: Una sola instrucción MOV no puede usarse para mover datos
directamente de una ubicación de memoria a otra. En vez de ello, puede mover el valor del
operando de origen a un registro, antes de mover su valor a un operando de memoria:
.data
var1 WORD ?
var2 WORD ?
.code
mov ax,var1
mov var2,ax
Si utilizamos MOV con arregloB como el operando de origen, moveremos de manera automática
el primer byte en el arreglo:
mov al,arregloB ; AL = 10h
Al encerrar una dirección efectiva entre corchetes, indicamos que la expresión se utiliza para
hacer referencia a una dirección de memoria para obtener su contenido. MASM no requiere los
corchetes, por lo que las siguientes instrucciones son equivalentes:
mov al, [arregloB+2]
mov al, arregloB+2
Las banderas Desbordamiento, Signo, Cero, Acarreo auxiliar y Paridad cambian de acuerdo al
valor del operando de destino. No afectan a la bandera Acarreo (lo cual es un poco
sorprendente).
2.3.6.2 Instrucción ADD
La instrucción ADD suma un operando de origen con uno de destino del mismo tamaño. La
sintaxis es:
ADD dest, origen
.data
var1 DWORD 10000h
var2 DWORD 20000h
.code
mov eax,var1 ; EAX = 10000h
add eax,var2 ; EAX = 30000h
Banderas Las banderas Acarreo, Cero, Signo, Desbordamiento, Acarreo auxiliar y Paridad
cambian de acuerdo con el valor del operando de destino.
.data
var1 DWORD 30000h
var2 DWORD 10000h
.code
mov eax, var1 ; EAX = 30000h
sub eax, var2 ; EAX = 20000h
Una manera sencilla de realizar una resta sin tener que crear nuevos circuitos digitales es negar
y después sumar. Por ejemplo, 4- 1 puede interpretarse como 4+ (-1). Para los números
negativos se utiliza la notación de complementos a dos, por lo que 1 se representa mediante
11111111:
Banderas: Las banderas Acarreo, Cero, Signo, Desbordamiento, Acarreo auxiliar y Paridad
cambian de acuerdo con el valor del operando de destino.
NEG reg
NEG mem
(Recuerde que para encontrar el complemento a dos de un número se invierten todos los bits
en el operando de destino y se le suma 1).
Banderas Las banderas Acarreo, Cero, Signo, Desbordamiento, Acarreo auxiliar y Paridad
cambian de acuerdo con el valor del operando de destino.
valR SDWORD ?
valX SDWORD 26
valY SDWORD 30
valZ SDWORD 40
Al traducir una expresión, evalúe cada término por separado y combine los términos al final.
Primero, negamos una copia de valX:
Después, valY se copia a un registro y se resta valZ: segundo término: (valY – valZ)
mov ebx,valY
sub ebx,valZ ; EBX = -10