Sei sulla pagina 1di 28

Modos de

Direccionamiento de la
Memoria de Programa

Modos de Direccionamiento de la Memoria


de Programa

Intra-segmento Directo
Intra-segmento Indirecto.
Inter-segmento Directo.
Inter-segmento Indirecto.

Direccionamiento Intra-Segmento Directo

Desplazamiento
en la instruccin

EA de
salto

IP
EA=IPnuevo + desplazamiento

Ejemplo1:
1000:0104 EB06
JMP 010C
Ejemplo 2:
1000:0104 E92D11 JMP 1234

Direccionamiento Intra-Segmento Directo


Ejemplo 3:
2000:1007
Ejemplo 4:
2000:100B

EBF8
E9F2F0

JMP 1001
JMP 0100

JMP NEXT ;salta a etiqueta NEXT


JMP SHORT NEXT ;salto de 8 bits entre +127
y -128 a NEXT
JMP NEAR NEXT ;salto de 16 bits a NEXT

Direccionamiento Intra-Segmento Indirecto


La direccin efectiva EA del salto es el contenido
de un registro o localidad de memoria que se
accesa usando direccionamiento de datos.
IP EA
2000:1007 FF263412 JMP [1234];
DS:1234=1002
IP 1002
Ejemplos:
JMP BX
JMP [BX]
JMP WORD PTR [DI]
JMP WORD PTR [SI]

Direccionamiento Inter-Segmento Directo

Instruccin
Desplazamiento

Segmento

Registro CS

Registro IP

Direccionamiento Inter-Segmento Directo


Ejemplos:
1000:1007 EA34120020 JMP 2000:1234
JMP FAR NEXT

Direccionamiento Inter-Segmento Indirecto


Aqui IP y CS se cargan con el contenido de dos
palabras consecutivas residentes en la memoria
de datos. Estas dos palabras contienen la
direccin del salto lejano (FAR). Se excluye el
modo de direccionamientoMemoria
de datos
por registro y
de Datos
el inmediato.
Instruccin define
Modo de direccionamiento de datos

Desplazamiento
IP
Segmento CS

Direccionamiento Inter-Segmento Indirecto


Ejemplos
JMP FAR PTR [DI]
JMP FAR PTR [BX]
CALL FAR PTR [BX]

Direccionamiento Inter-Segmento Indirecto


Ejemplo de un salto largo.

Implantar en segmento de datos el valor de IP y CS para


salto largo. Use comando E del debug.

DS:0200
DS:0201
DS:0202
DS:0203

NOP
MOV
JMP
NOP

=
=
=
=

00H ; valor de IP
05H
00H ; valor de CS
20H

SI,0200H
FAR PTR[SI] ; salto largo

Instrucciones de salto del uP 8086


Directiva

Alcance

Modo de
direccionamiento

Especificado
por

SHORT

Intra-segment
Inmediato
+127/-128 bytes
IP IP + offset

Palabra

NEAR PTR

Intra-segment
IP Address

Inmediato
Registro
Memoria

Palabra
Palabra
Palabra

FAR PTR

Inter-segment
IP Address
CS Segment

Inmediato
Memoria

Palabra Doble
Palabra Doble

Instrucciones de salto del uP 8086


Instruccin

Ejemplo

Significado

JMP

JMP FAR PTR[BX] IP [BX], CS [BX+2]

JNZ

JNZ ETIQ1

If (ZF=0) entonces IP offset de ETIQ1

JE JZ

JE ETIQ2

If (ZF=1) entonces IP offset of ETIQ2

JC

JC ETIQ3

If (CF=1) entonces IP offset de


ETIQ3

Salto Incondicional JMP


OPERANDO
SHORT-ETIQUETA
NEAR-ETIQUETA
FAR-ETIQUETA
memptr16
regptr16
memptr32
regptr32

Salto Condicional Jcc


Nemnico

Formato

Operacin

Banderas
afectadas

Jcc

JCC operando

Si cc es
verdadero,
entonces salta a
direccin
especificada por
operando, sino
contina con la
prxima
instruccin

Ninguna

Salto Condicional Jcc


Las instrucciones de salto condicionales son
saltos cortos en el 8086 hasta el 80286, esto
limita el salto al intervalo +127 bytes y -128
bytes, desde la localidad que sigue a la
instruccin de salto.
Con el 80386 los saltos condicionales pueden
ser cortos (short) y cercanos (near). Esto
permite ejecutar saltos condicionales a
cualquier localidad dentro del segmento de
cdigo actual.
Estas instrucciones basan las acciones de
salto en las banderas de estado siguientes:
Signo (S), Cero (Z), Acarreo (C), Paridad (P) y
Sobrecarga (O). Si la condicin es verdadera
ejecuta el salto a la etiqueta indicada en la
instruccin. Si la condicin es falsa, ejecuta la
prxima instruccin en la secuencia normal
de instrucciones.

Instrucciones de salto Condicionales

Instruccin de salto Incondicional JMP


Hay tres tipos de saltos incondicionales: saltos cortos
(SHORT), saltos cercanos (NEAR) y saltos lejanos
(FAR)
Nemnico

Formato

Operacin

Banderas
afectadas

JMP

JMP operando

Salta a la
direccin
especificada por
operando

Ninguna

Comparaciones
Cuando se comparan nmeros con
signo use: JG, JL, JGE, JLE, JE Y JNE.
Los trminos greater than y less
than se refieren a nmeros con
signo.
Cuando se comparan nmeros sin
signo use: JA, JB, JAE, JBE, JE Y JNE.
Los trminos above y below se
refieren a nmeros sin signo.

Instruccin de Comparacin CMP :


La instruccin de comparacin se usa
para comparar dos nmeros. Uno de
los nmeros puede residir en
memoria.
Esta instruccin resta el operando
fuente del operando destino y
acondiciona las banderas de acuerdo
con el resultado de la resta.
El resultado de la resta no queda
registrado en ninguna parte.

Instruccin de Comparacin CMP :

Nemnico

Formato

Operacin

Banderas
afectadas

CMP

CMP D,S

D-S
Acondiciona
banderas

CF, AF, OF, PF, SF,


ZF

CMP
Instruccin Ejemplo
CMP

Condiciones

CMP AX,BX If (AX = BX) then ZF 1 and CF 0


If (AX < BX) then ZF 0 and CF 1
If (AX > BX) then ZF 0 and CF 0

Instruccin de Comparacin CMP :


Operando Destino

Operando Fuente

registro

registro

registro

memoria

memoria

registro

registro

inmediato

memoria

inmediato

acumulador

inmediato

Instruccin de Comparacin CMP :


Ejemplo:
Instruccin

ZF

SF

CF

AF

OF

PF

Estado Inicial

MOV AX, 1234H

MOV BX, 0ABCDH

CMP AX, BX

Notacin usada por Debug para las banderas


Bandera

Significado

Encendido

Apagado

OF

sobrecarga

OV

NV

DF

direccin

DN

UP

IF

interrupcn

EI

DI

SF

signo

NG

PL

ZF

cero

ZR

NZ

AF

acarreo auxiliar

AC

NA

PF

paridad

PE

PO

CF

acarreo

CY

NC

La instruccin LOOP
La Instruccin LOOP es una
combinacion de las instrucciones
DEC y JNZ.
Ejecuta un salto a la direccion
asociada con la instruccion LOOP.
El nmero de veces que salta es
igual al nmero almacenado en el
registro CX.

Las instrucciones LOOP


Instruccin

Ejemplo

Significado

LOOP

LOOP ETIQ1

If (CX0) then IP offset ETIQ1

LOOPZ
LOOPE

LOOPZ ETIQ2

If (CX0 ZF=1) then IP offset ETIQ2

LOOPNZ
LOOPNE

LOOPNZ ETIQ3

If (CX0 ZF=0) then IP offset ETIQ3

Estructura Repeat-Until
; Repetir hasta que CX = 0
MOV CX, CNT
otra_vez: NOP
NOP
LOOP otra_vez
-

DEBUG: ejemplo
MOV AL, 3
MOV CX,6
BUCLE: NOP
NOP
DEC AL ; AL=0 afecta bandera ZF
NOP
LOOPNZ BUCLE
NOP

Potrebbero piacerti anche