UNIVERSIDAD NACIONAL DE TRUJILLO.
DIRECCIONAMIENTO DE MEMORIA E
INSTRUCCIONES DE ASSEMBLER
César Arellano Salazar.
ARQUITECTURA Y ORGANIZACIÓN Docente Regular UNT.
DE COMPUTADORAS.
INGENIERIA DE SISTEMAS - V CICLO. SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
La dirección de segmento se almacena en el
registro de segmento (DS, ES, SS o CS)
RAM DE EL registro de segmento se multiplica por 16 antes
de utilizarse para obtener la dirección real.
256Mbytes
El registro de segmentación siempre se usa para
referenciar a memoria.
La base se almacena en el registro base (BX o BP).
DATO 005FD60 El índice se almacena en el registro índice (SI o DI).
Cualquiera de estas dos cantidades, la suma de las
[0320] dos o ninguna, pueden utilizarse para calcular la
005FA40 dirección real, pero no pueden sumarse dos bases o
dos índices.
0000 0000 0000 0000 0000 0000 0000
Dirección de memoria en binario SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
La instrucción MOV, realiza el movimiento de
MOV DESTINO , FUENTE una fuente a un destino, la fuente puede ser
un valor numérico, el valor de un registro o
una posición de memoria; el destino puede
ser un registro interno o una posición de
memoria.
El tamaño del dato a mover, (la cantidad de
bytes a mover) dependerá del registro que
aparece en la instrucción.
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
Modo inmediato
MOV REGISTRO , VALOR
· Tiene dos operandos: un registro y una
constante que se usa por su valor.
MOV AX , 03AF · El valor constante no se tiene que buscar en
memoria, pues ya se obtuvo al hacer el “fetch” de
la instrucción.
MOV BH , 4A
MOV DL , F0
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
Modo REGISTRO
MOV REGISTRO , REGISTRO
· Usa solamente registros como operandos
· Es el más rápido, pues minimiza los recursos
MOV AX , CX necesarios (toda la información fluye dentro del
EU del CPU)
MOV BH , AL
MOV EAX , EDX
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
Modo DIRECTO
MOV REGISTRO , [ VALOR ]
Uno de los operandos involucra una localidad
específica de memoria
MOV AX , [ 0160 ] El valor constante se tiene que buscar en
memoria, en la localidad especificada.
MOV BH , [ 0340 ]
Es más lento que los anteriores, pero es el más
rápido para ir a memoria, pues ya “sabe” la
localidad, la toma de la instrucción y no la tiene
Accede siempre al segmento de datos que calcular.
al desplazamiento indicado por el
valor dentro de los corchetes SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
Modo INDIRECTO
MOV REGISTRO , [ REG INDI ] Se usan los registros SI, DI como apuntadores
El operando indica una localidad de memoria,
MOV AX , [ DI ] cuya dirección (sólo la parte desplazamiento)
está en SI o DI.
Puede usar el registro base BX en remplazo de
MOV BH , [ SI ] SI o DI.
Accede siempre al segmento de datos
al desplazamiento indicado por el
registro índice SI o DI SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
Modo BASADO + INDICE
MOV REGISTRO , [ BX ó BP+ BX o BP indica una localidad base de la
RegIndice] memoria
MOV AX , [ BX+DI ] A partir de BX o BP, se puede tener un
desplazamiento variable y uno constante:
[ BX+SI ] ó [ BX+345 ] ó [ BX+ DI + 0900 ]
MOV BH , [ BP+SI ] [ BP+SI ] ó [ BP+345 ] ó [ BP+ DI + 0900 ]
Cuando usa BX accede al segmento de datos
Cuando usa BP accede al segmento de pila
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
Basado: Basado-indexado :
Directo:
MOV CX, [BX+30h] MOV AX, [BX+DI]
MOV AX, [2000h]
MOV AX, [BP+45h] MOV AX, [BX+SI]
MOV DX, [BX+0A30h] MOV DX,[BP+DI]
Indirecto:
MOV AX, [BP+4E90h] MOV DX,[BP+SI]
MOV AX, [BX]
Indexado: Basado-indexado con desplazamiento:
MOV CX, [DI]
MOV AX, [SI+40h] MOV AX, [BX+DI + 3Eh]
MOV AX, [SI]
MOV CX, [DI+25h] MOV AX, [BX+DI + 3B09h]
MOV AX, [SI+0566h]
SESIÓN Nº03
MOV AX, [DI+45EEh]
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
MODOS DE DIRECCIONAMIENTO
Modo IMPLICITO DE PILA
PUSH AX
Depende solamente de la instrucción, es decir,
la instrucción no lleva parámetros.
Byte 2
Usa el registro puntero de pila SP.
[SP] Byte 1
La apilación decrementa en 2 el valor de SP
SEGMENTO
POP BX DE PILA La desapilación incrementa en 2 el valor de SP
Cuando usa BX accede al segmento de datos
Cuando usa BP accede al segmento de pila
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
EJEMPLOS DE DIRECCIONAMIENTO
RAM SEG : DESPLA
DS = 6FA0 AX = 0203 BX = 3578 [FFFF]
27 [ 0408 ] DS : 0408
MOV AX , [ 0400 ]
4A [ 0401 ]
04 [ 0400 ] DS : 0400
DS = 06FA0 AX = 4A04 BX = 3578
SEGMENTO
DE DATOS
MOV BH , [ 0408 ] [0000] 006FA40
006FA00 DS x 10h
DS = 06FA0 AX = 0203 BX = 2778
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
EJEMPLOS DE DIRECCIONAMIENTO
DS = 6FA0 SI = 0000 DI = 000A RAM SEG : DESPLA
AX = 0203 BX = 0600 CX = 0000 [FFFF]
7B [ 060A ] DS : 060A
MOV CX , [ BX + SI ]
FF [ 0601 ]
36 [ 0600 ] DS : 0600
AX = 0203 BX = 0600 CX = FF36
SEGMENTO
MOV AL , [ BX + DI ] [0000]
DE DATOS
006FA00 DS x 10h
AX = 027B BX = 0600 CX = FF36
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
EJEMPLOS DE DIRECCIONAMIENTO
SS = 5FA0 SI = 0001 DI = 0008 BP = 0200 RAM SEG : DESPLA
AX = FFFF BX = 5679 CX = 2222 [FFFF.]
59
5C [ 0208 ] SS : 0208
MOV CH , [ BP + SI ]
06 [ 0201 ]
08 [ 0200 ] SS : 0200
AX = FFFF BX = 5679 CX = 0622
SEGMENTO
MOV BX , [ BP + DI ] [0000]
DE PILA
005FA00 SS x 10h
AX = FFFF BX = 595C CX = FF36
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
INSTRUCCIONES DE ASSEMBLER
INSTRUCCIONES DE
TRANSFERENCIA DE DATOS.
Estas instrucciones mueven
datos de una parte a otra del
sistema; desde y hacia la
memoria principal, de y a los
registros de datos, puertos de
E/S y registros de
segmentación.
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
INSTRUCCIONES DE ASSEMBLER
INSTRUCCIONES DE CONTROL
DE BUCLES.
Éstas posibilitan el grupo de
control más elemental de
nuestros programas. Un bucle es
un bloque de código que se
ejecuta varias veces. Hay 4 tipos
de bucles básicos: Bucles sin fin,
Bucles por conteo, Bucles hasta Y
Bucles mientras
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
INSTRUCCIONES DE ASSEMBLER
INSTRUCCIONES DE TRANSFERENCIA
CONDICIONAL DE CONTOL.
CMP REG1,REG2
Se comparan dos registros en el
orden establecido.
JA DESPLAZMIENTO
Salta al desplazamiento
indicado si REG1 > REG2
(encima es mayor, debajo es
menor)
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
INSTRUCCIONES DE ASSEMBLER
Instrucciones para comparar
dos enteros con signo
Instrucciones usadas según
el estado de las banderas
(registro flag)
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
INSTRUCCIONES DE ASSEMBLER
INSTRUCCIONES ARITMETICAS
Instrucciones de
multiplicación y división
Instrucciones de adición y
substracción
SESIÓN Nº03
DIRECCIONAMIENTO DE MEMORIA E INSTRUCCIONES ASSEMBLER
INSTRUCCIONES DE ASSEMBLER
INSTRUCCIONES
DE OPERACIONES
LOGICAS
Instrucciones lógicas que
aplican bit a bit en un registro
Instrucciones de Desplazamiento y Rotación
SESIÓN Nº03