Sie sind auf Seite 1von 14

MODOS DE

DIRECCIONAMIENTO
TIENE 12 MODOS DE DIRECCIONAMIENTO BSICOS. ESTOS PUEDEN
CLASIFICARSE EN 5 GRUPOS:
DIRECCIONAMIENTOS ACCESANDO DATO INMEDIATO Y REGISTRO DE
DATOS (MODOS INMEDIATO Y DE REGISTRO).
DIRECCIONAMIENTO ACCESANDO DATOS EN MEMORIA (MODO MEMORIA)
DIRECCIONAMIENTO ACEZANDO PUERTOS E/S. (MODO E/S)
DIRECCIONAMIENTO RELATIVO
DIRECCIONAMIENTO IMPLCITO.

CONDICIONES Y COMPARADORES

OPERACIONES LGICAS

DIRECCIONAMIENTO ACCESANDO DATO Y


REGISTRO INMEDIATO
Direccionamiento de registro.
Especifica el operando fuente y el operando destino. Los registros deben ser del
mismo tamao.
ej. MOV DX, CX
MOV CL, DL.

Direccionamiento inmediato.

Un dato de 8 o 16 bits se especifica como parte de la instruccin. p.ej. MOV CL, 03H.
Aqu el operando fuente est en modo inmediato y el destino en modo registro.

DIRECCIONAMIENTO ACCESANDO DATOS


EN MEMORIA
Direccionamiento directo.

La direccin efectiva (EA) de 16 bits se toma directamente del campo de


desplazamiento de la instruccin. El desplazamiento se coloca en la localidad
siguiente al cdigo de operacin. Esta EA o desplazamiento es la distancia de
la localidad de memoria al valor actual en el segmento de datos (DS) en el cual
el dato est colocado. Ej. MOV CX, START. START puede definirse como una
localidad de memoria usando las pseudoinstrucciones DB o DW.
Direccionamiento de registro indirecto.

La direccin efectiva EA est especificada en un registro apuntador o un


registro ndice. El apuntador puede ser el registro base BX o el apuntador base
BP; el registro ndice puede ser el Indice Fuente (SI) o el Indice Destino (DI).
Ej. MOV (DI),BX.

Direccionamiento base

EA se obtiene sumando un desplazamiento (8 bits con signo o 16 bits sin signo) a los contenidos de BX o BP.
Los segmentos usados son DS y SS. Cuando la memoria es accesada, la direccin fsica de 20 bits es calculada
de BX y DS, por otra parte, cuando la pila es Accesada, la direccin es calculada de BP y SS. Ej. MOV AL, START
(BX). el operando fuente est en modo base, y la EA se obtiene sumando los valores de START y BX.
Direccionamiento indexado.

EA se calcula sumando un desplazamiento (8 o 16 bits) a los contenidos de SI o DI. Ej. MOV BH,START (SI).

Direccionamento base indexado.

EA se calcula sumando un registro base (BX o BP), un registro ndice (DI o SI), y un desplazamiento (8 o 16
bits).
Ej. MOV ALPHA (SI)(BX),CL.
Este direccionamiento proporciona una forma conveniente para direccionar un arreglo localizado en la pila.
Direccionamiento (cadena?)

Este modo usa registros ndice. La cadena de instrucciones automticamente asume que SI apunta al primer
byte o palabra del operando destino. Los contenidos de SI y DI son incrementados automticamente (poniendo
a 0 DF mediante la instruccin CLD) o decrementados (poniendo a 1 DF mediante la instruccin STD) para
apuntar al siguiente byte o palabra. El segmento del operando fuente es DS y puede ser encimado.
El segmento del operando destino debe ser ES y no puede ser encimado. Ej. MOVS BYTE.

DIRECCIONAMIENTO ACCESANDO
PUERTOS (E/S)
Hay dos tipos de direccionamiento usando puertos: directo e indirecto.En el modo
directo, el nmero de puerto es el operando inmediato de 8 bits, lo cual permite
accesar puertos numerados del 0 al 255. Ej. OUT 05H,AL.
En el modo indirecto, el nmero de puerto se toma de DX, permitiendo as 64K
puertos de 8 bits o 32K puertos de 16 bits.
Las transferencias E/S de 8 y 16 bits deben hacerse va AX y AL, respectivamente.

DIRECCIONAMIENTO RELATIVO.

En este modo el operando se especifica como un desplazamiento de 8 bits con


signo, relativo al PC. Ej. JNC START. Si C=0, entonces el PC se carga con PC+el
valor de START.

. DIRECCIONAMIENTO IMPLICITO.

Las instrucciones que usan esta modo no tienen operandos. Ej. CLC.

CONDICIONES Y COMPARADORES
Los operadores de comparacin o tambin conocido como operadores relacionales,
sirven para tomar decisiones mediante comparaciones, y por su mayora van
complementadas con las estructuras condicionales y sentencia de control de flujo.
Cuando se evala una condicin en los operadores de comparacin, el resultado
que se obtiene puede ser 1 (equivalente a verdadero) o 0 (equivalente a falso).
Este resultado provocar que se ejecute el cdigo del bloque if o el del bloque else,
segn corresponda.
A continuacin un listado de los posibles operadores de comparacin en C y su
significado.

Operadores de Comparacin
Operador

Significado

<

estrictamente menor que

>

estrictamente mayor que

<=

menor o igual que

>=

mayor o igual que

==

igual a

!=

distinto de

EL RESULTADO DE CUALQUIER EVALUACIN DE ESTE TIPO ES UN VALOR CIERTO (TRUE) O FALSO (FALSE). LA
MAYORA DE LOS LENGUAJES TIENE ALGN TIPO PREDEFINIDO PARA REPRESENTAR ESTOS VALORES (BOOLEAN,
BOOL, ETC.); SIN EMBARGO EN C, SE TOMA COMO FALSO EL VALOR 0, Y COMO VERDADERO CUALQUIER OTRO
VALOR DISTINTO DE 0, AUNQUE NORMALMENTE SE USA 1. ESTO NOS PERMITE UTILIZAR CONDICIONES SIN
OPERADOR:
FLOAT DIVISION(INT DIVIDENDO, INT DIVISOR)
{
IF (DIVISOR) {
RETURN DIVIDENDO / DIVISOR;
} ELSE {
PRINTF ("NO SE PUEDE DIVIDIR POR CERO\N");
RETURN 0;
}
}

La estructura condicional if else

En la gran mayora de los programas ser necesario tomar decisiones sobre qu acciones realizar. Esas decisiones pueden depender de los
datos que introduzca el usuario, de si se ha producido algn error o de cualquier otra cosa.
La estructura condicional if else es la que nos permite tomar ese tipo de decisiones. Traducida literalmente del ingls, se la podra llamar la
estructura sisi no, es decir, si se cumple la condicin, haz esto, y si no, haz esto otro.
Un ejemplo sencillo sera el siguiente (no se trata de un programa completo, sino tan slo una porcin de cdigo):
if (edad < 18){
printf("No eres mayor de edad.\n");
}else {
printf("Eres mayor de edad.\n");
}

El bloque del else es opcional. Si no se lo encuentra, slo se realizar la accin correspondiente al bloque if.
Este cdigo de ejemplo dice que si edad es menor que 18 se imprimir No eres mayor de edad.\n, mientras que en caso
contrario se imprimir Eres mayor de edad.\n.
Como se ve en el ejemplo, la estructura de un condicional es bastante simple:
if (condicin) {
sentencias_si_verdadero;
} else {
sentencias_si_falso;
}
Cuando la condicin sea verdadera, se ejecutarn las sentencias dentro del primer bloque de cdigo, cuando la condicin sea
falsa, se ejecutarn las sentencias del segundo bloque de cdigo.
La indentacin (los espacios al comienzo de las lneas) no es necesaria, pero ayuda a la claridad del cdigo. La utilizacin de
las llaves {} es obligatoria cuando se quiere utilizar ms de una instruccin por bloque, y optativa cuando slo se quiere
escribir una instruccin. Por claridad, sin embargo, es recomendable utilizarlas an cuando slo vaya a haber una instruccin.

OPERACIONES LGICAS
Los operadores lgicos son usados para unir y evaluar varias comparaciones,
combinando los posibles valores de estas, ellos producen un resultado booleano, y
sus operandos son tambin valores lgicos o asimilables a ellos (los valores
numricos son asimilados a cierto o falso segn su valor sea cero o distinto de cero
respectivamente).
Operador

Simbolo

Ejemplo

Resultado

Y (AND)

&&

a && b

True si ambos a y b
son verdadero

O (OR)

||

a || b

True si a o b son
verdadero
True si a es
verdadero o b es
verdadero, pero no
ambos

O EXCLUSIVO (XOR)

XOR

a ^b

NEGACION (NOT)

!a

True si a no es

Operador Y lgico tambin denominado por su nombre en ingls (generalmente en maysculas)


AND lgico. Devuelve un valor lgico true (1) si ambos operando son ciertos. En caso contrario el
resultado es false (0).
expr1 && expr2
Operador O lgico tambin denominado por su nombre en ingls (generalmente en maysculas)
OR lgico. Devuelve un valor lgico true (1) si al menos un operando es ciertos. Devuelve false
(0) cuando ambas condiciones son falsas.
expr1 || expr2
Operador No lgico Este operador es denominado tambin negacin lgica y se representa en el
texto escrito por la palabra inglesa NOT (otros lenguajes utilizan directamente esta palabra para
representar el operador en el cdigo), esta expresin es convertido a tipo bool, con lo que solo
puede ser uno de los valores cierto/falso. A continuacin el operador cambia su valor: Si es
cierto es convertido a falso y viceversa.
!expr1

Operador Y lgico tambin denominado por su nombre en ingls (generalmente en maysculas) AND lgico.
Devuelve un valor lgico true (1) si ambos operando son ciertos. En caso contrario el resultado es false (0).
expr1 && expr2
Operador O lgico tambin denominado por su nombre en ingls (generalmente en maysculas) OR lgico.
Devuelve un valor lgico true (1) si al menos un operando es ciertos. Devuelve false (0) cuando ambas
condiciones son falsas.
expr1 || expr2
Operador No lgico Este operador es denominado tambin negacin lgica y se representa en el texto escrito
por la palabra inglesa NOT (otros lenguajes utilizan directamente esta palabra para representar el operador en
el cdigo), esta expresin es convertido a tipo bool, con lo que solo puede ser uno de los valores cierto/falso. A
continuacin el operador cambia su valor: Si es cierto es convertido a falso y viceversa.
!expr1

Das könnte Ihnen auch gefallen