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

Instrucción MOV

MO D O S DE DIR E CCIO NA MI ENTO

I N S T I T U TO T E C N O LÓ G I C O D E V E R AC R U Z
Introducción
¿QUÉ E S UNA INS T R UCCIÓ N?
T IPO S D E O PE R ANDOS
CI CLO S DE UNA I NS T R UCCI ÓN
¿Qué es una instrucción?
Una instrucción es un enunciado que se vuelve ejecutable cuando se
ensambla un programa. El ensamblador traduce las instrucciones en
bytes de lenguaje máquina, para que la CPU los cargue y los lleve a
cabo en tiempo de ejecución. Una instrucción contiene cuatro partes
básicas:
• Etiqueta (opcional).
• Nemónico de instrucción (requerido).
• Operando(s) (por lo general, son requeridos).
• Comentario (opcional).
• Una etiqueta es un identificador que actúa como marcador de
posición para las instrucciones y los datos. Representa la dirección de
esa instrucción.
• Un nemónico de instrucción es una palabra corta que identifica a una
instrucción.
• Un operando puede ser un registro, un operando de memoria, una
expresión constante o un puerto de E/S. La instrucción puede tener
de cero a tres operandos.

[etiqueta:] nemónico operando(s) [;comentario]


SINTAXIS BÁSICA
Tipos de operando(s)
• Un operando de memoria se
Ejemplo Tipo de operando
especifica mediante el nombre
de una variable o mediante uno 96
Constante (valor
o más registros que contengan inmediato)
la dirección de una variable. 2+4 Expresión constante

• El nombre de una variable indica AX Registro


la dirección de ésta, e instruye a
cuenta Memoria
la computadora para que haga
referencia al contenido de la
memoria en la dirección dada.
Ciclo de ejecución de instrucciones

• La CU busca la instrucción en
Decodificación • Si la instrucción utiliza un
Ejecución
la cola de instrucciones e operando de entrada
incrementa el apuntador de • La CU decodifica la función de ubicado en memoria, la CU • La ALU ejecuta la
instrucciones (IP) la instrucción para determinar utiliza una operación de instrucción, utilizando los
lo que ésta debe hacer. lectura para obtener el registros con nombre y los
operando y copiarlo en los registros internos como
registros internos. operandos, y envía el
resultado a los registros con
Búsqueda de nombre y a la memoria.
Búsqueda
operandos
Instrucción MOV
P R O PÓ SITO
SINTA XIS
D E SCR IPCIÓN
R E ST R ICCIO NE S
MOV
PR O PÓ SITO SI NTA XIS

Transfiere datos MOV destino, origen

D E SCR IPCI ÓN

La instrucción MOV copia datos de un operando de origen a un


operando de destino. Esta instrucción, conocida como transferencia de
datos, se utiliza en casi todos los programas. Su formato básico
muestra que el primero operando es el destino y el segundo es el
origen. Transfiere bytes o palabras de datos entre registros, o entre
registros y la memoria.
MOV
R E ST R ICCIO NE S

Ejemplos Descripción
MOV AX, AL Ambos operandos (origen y destino) deben ser
del mismo tamaño.
MOV [13], [4] Ambos operandos (origen y destino) no
pueden ser operandos de memoria.
MOV ES, 16 Un valor inmediato no puede moverse a un
registro de segmento.
MOV 23, j El destino debe permitir el almacenamiento.
MOV CS,AX CS e IP no pueden ser operandos de destino.
MOV
INDICADOR ES PR O CE S A DOR ES

El registro de banderas no se ve La instrucción MOV transfiere


afectado por la mayoría de las bytes o palabras de datos entre
instrucciones de transferencia de registros, o entre registros y la
datos. memoria en los microprocesadores
del 8086 al 80286
MOV
E J E MPLO S

Instrucción general Instrucción ejemplo


MOV reg, reg MOV AX,BX
MOV mem, reg MOV numero,AL
MOV reg, mem MOV AX,pi
MOV mem, dato MOV var,44H
MOV reg, dato MOV AX,500H
MOV seg-reg, reg MOV DS,AX
MOV reg, seg-reg MOV BX,ES
MOV seg-reg, mem MOV ES,datosExtra
MOV mem, seg-reg MOV datos,DS
El modelo de programación de los
microprocesadores Intel, del 8086
hasta el Pentium 4.
Observaciones:
• 1. Los registros sombreados sólo
existen en los microprocesadores
del 80386 hasta el Pentium 4.
• 2. Los registros FS y GS no tienen
nombres especiales.
Modos de
Direccionamiento
D E FINICIÓ N
Definición
Los modos de direccionamiento son las diferentes formas en que se
especifica un operando.

ANTES DE EMPEZAR

Como la instrucción MOV es muy común y flexible, proporciona una


base para la explicación de los modos de direccionamiento de datos.
Lo importante es entender cuando utilizarlos y que significa cada uno
de ellos, todos los modos de direccionamiento se pueden utilizar con
cualquiera de las instrucciones.
Direccionamiento inmediato
CA R ACT E R ÍSTI CA S Lenguaje Tamaño Operación
ensamblador
• Los datos inmediatos son datos MOV BL,44 8 bits Copia el 44 decimal
constantes. (2CH) en BL.
MOV AX,44H 16 bits Copia el 0044H en
• El operando es un valor constante AX.
indicado en la propia instrucción.
MOV SI,0 16 bits Copia el 0000H en
• Solo puede usarse como operando SI.
fuente (origen). MOV CH,100 8 bits Copia el 100
decimal (64H) en
• El otro operando (destino) puede CH.
ser un registro o una posición de MOV 8 bits Copia el 11001110
memoria. CL,11001110B binario en CL.
Direccionamiento inmediato
A NT E S D E E J E CUTA R D E S P UÉ S D E E J E CUTA R

Registros Registros

AX ****h AX 0044h

BX ****h BX ****h

CX ****h CX 64**h

DX ****h DX ****h

MOV AX,44H
MOV CH,100
Direccionamiento inmediato
.MODEL TINY ;selecciona el modelo de un solo segmento

0000 .CODE ;inicio del segmento de código

.STARTUP ;inicio del programa

0100 B8 0000 MOV AX,0 ;coloca el 0000H en AX

0103 BB 0000 MOV BX,0 ;coloca el 0000H en BX

0106 B9 0000 MOV CX,0 ;coloca el 0000H en CX

0109 8B F0 MOV SI,AX ;copia AX en SI

010B 8B F8 MOV DI,AX ;copia AX en DI

010D 8B E8 MOV BP,AX ;copia AX en BP

.EXIT ;salida al DOS

END ;fin del programa


Direccionamiento de registros
CA R ACT E R ÍSTI CA S Lenguaje Tamaño Operación
ensamblador
• Transfiere una copia de un byte o MOV AL,BL 8 bits Copia BL en AL.
palabra (2 byte) del registro de
origen, o el contenido de una MOV CH,CL 8 bits Copia CL en CH.
posición de memoria al registro de MOV AX,CX 16 bits Copia CX en AX.
destino o posición de memoria. MOV SP,BP 16 bits Copia BP en SP.
• El operando puede ser un registro MOV DS,AX 16 bits Copia AX en DS.
o un elemento de memoria. MOV SI,DI 16 bits Copia DI en SI.

• Es importante que las MOV BX,ES 16 bits Copia ES en BX.


instrucciones utilicen registros del MOV CS,AX -- No se permite.
mismo tamaño.
Direccionamiento de registros
A NT E S D E E J E CUTA R D E S P UÉ S D E E J E CUTA R

Registros Registros

AX **44H AX 4444h

BX 76AFH BX 1234H

CX 1234H CX 1234H

DX ****h DX ****h

MOV BX,CX
MOV AH,AL
Direccionamiento directo
CA R ACT E R ÍSTI CA S

• Se aplica a una instrucción MOV entre una posición de memoria (ubicada


dentro del segmento de datos) y el registro AL, AX o EAX.
• Por lo general es de 3 bytes.
E J E MPLO :
MOV AL,DATOS o MOV AL,DS:[1234H] o MOV AL,[1234H]
Carga AL en base a la posición de memoria del segmento de datos DATOS
(1234H). La posición de memoria DATOS es una posición de memoria
simbólica, y 1234H es la posición hexadecimal actual.
Direccionamiento directo
La operación de la instrucción MOV AL,[1234H] o MOV AL,DATOS cuando DS = 1000H

Registros Memoria

AX **8AH 44H 11235H

BX 76AFH 8AH 11234H

CX 1234H 87H 11233H

DX ****h **h 11232H

MOV AL,DATOS
Direccionamiento por desplazamiento
CA R ACT E R ÍSTI CA S

• Es casi idéntico al direccionamiento directo, excepto que la instrucción es de


cuatro bytes en vez de tres.
• En cualquier caso, la dirección se forma mediante la suma del
desplazamiento a la dirección de segmento de datos predeterminada o a
una dirección de segmento alternativa.
EJEMPLO: MOV CL,DS:[1234H]
Se compara con la operación de la instrucción MOV AL,DS:[1234] ambas
realizan básicamente la misma operación con la excepción del registro de
destino (CL en vez de AL).
Direccionamiento por desplazamiento
Lenguaje ensamblador Tamaño Operación
MOV CH,PERRO 8 bits Copia en CH el contenido tipo byte de la
posición de memoria PERRO del segmento de
datos.
MOV CH,DS:[1000H]* 8 bits Copia en CH el contenido tipo byte de la
dirección de memoria 1000H del segmento
de datos.
MOV DATOS1,EAX 32 bits Copia EAX en la posición de memoria
DATOS1 del segmento de datos.
MOV DATOS7,BP 16 bits Copia BP en la posición de memoria DATOS7
del segmento de datos.
Direccionamiento indirecto de registros
CA R ACT E R ÍSTI CA S

• Permite que se direccionen datos en cualquier posición de memoria, a


través de una dirección de desplazamiento que se guarde en
cualquiera de los siguientes registros: BP, BX, DI y SI.
• El segmento de datos se utiliza de manera predeterminada con el
direccionamiento indirecto de registros o con cualquier otro modo de
direccionamiento que utilice a BX, DI o SI para direccionar memoria.
• Si el registro BP direcciona memoria, se utiliza el segmento de pila
de manera predeterminada.
Direccionamiento indirecto de registros
Lenguaje ensamblador Tamaño Operación
MOV CX,[BX] 16 bits Copia en CX el contenido tipo palabra de
la posición de memoria del segmento de
datos direccionado por BX.
MOV [DI],BH 8 bits Copia BH en la posición de memoria del
segmento de datos direccionado por DI.
MOV [BP],DL 8 bits Copia DL en la posición de memoria del
segmento de pila direccionado por BP.
MOV [DI],[BX] -- La transferencia de memoria a memoria no
se permite excepto con instrucciones tipo
cadena.
Direccionamiento indirecto de registros
A NT E S D E E J E CUTA R D E S P UÉ S D E E J E CUTA R

Registros Memoria Registros Memoria

AX ****H 44H 02003 AX 3412H 10H 02003

BX 1000H 6AH 02002 BX 1000H 6AH 02002

CX ****H 34H 02001 CX ****H 34H 02001

DI 1003H 12H 02000 DI 1003H 12H 02000

MOV AX,[BX] si DS = 0100H


MOV [DI],BH
Direccionamiento de base mas índice
CA R ACT E R ÍSTI CA S

• Es similar al direccionamiento indirecto, ya que direcciona los datos


de la memoria en forma indirecta.
• Este tipo de direccionamiento utiliza un registro base (BP o BX) y un
registro índice (DI o SI) para direccionar la memoria de forma
indirecta.
• El registro base guarda la posición inicial de un arreglo de memoria, el
registro índice guarda la posición relativa de un elemento en el
arreglo.
Direccionamiento de base mas índice
Lenguaje ensamblador Tamaño Operación
MOV CX,[BX+DI] 16 bits Copia en CX el contenido tipo palabra de
la posición de memoria del segmento de
datos direccionado por BX más DI.
MOV CH,[BP+SI] 8 bits Copia en CH el contenido tipo byte de la
posición de memoria del segmento de datos
direccionado por BP más SI.
MOV [BX+SI],SP 16 bits Copia SP en la posición de memoria del
segmento de datos direccionado por BX más
SI.
MOV [BP+DI],AH 8 bits Copia AH en la posición de memoria del
segmento de datos direccionado por BP más
DI.
Direccionamiento de base mas índice
A NT E S D E E J E CUTA R D E S P UÉ S D E E J E CUTA R

Registros Memoria Registros Memoria

AX 3412H 44H 02013 AX 3412h 44H 02013

BX 1000H 6AH 02012 BX 1000H 6AH 02012

DX ****H ABH 02011 DX AB03H ABH 02011

DI 0010H 03H 02010 DI 0010h 03H 02010

MOV DX,[BX+DI] ;BX = 1000H, DI = 0010H y DS = 0100H


Esta instrucción transfiere una copia de la palabra de la posición 02010H hacia el registro DX.

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