En un capitulo anterior hablamos de la memoria de acceso aleatorio, o RAM, siendo esta la memoria principal de una computadora. Las aplicaciones son cargadas y ejecutadas en la memoria RAM. Los modos de direccionamiento asignan memoria RAM en porciones que pueden ser referenciadas individualmente para que la unidad central de procesamiento, o CPU, pueda determinar qué ubicación de memoria está siendo utilizada por una instrucción de la máquina. En pocas palabra en la memoria RAM se cargan la serie de datos que estamos manejando, el CPU los manda llamar cuando este los ocupa, según sea el caso y/o asigna una direccion para saber ubicar el dato necesario para una operación y saber con que registro operar.
Existen varios modos de direccionamiento, los mas comunes son:
Direccionamiento implícito
Depende solamente de la instrucción, es decir, la instrucción no lleva parámetros.
Particularmente en instrucciones que no accesan memoria, o bien que tienen una forma específica de accesarla.
Ejemplos: PUSHF, POPF, NOP
Modo registro
Usa solamente registros como operandos
Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye dentro del EU del CPU)
Ejemplo:
MOV AX, BX
Modo inmediato
Tiene dos operandos: un registro y una constante que se usa por su valor.
El valor constante no se tiene que buscar en memoria, pues se esta indicando en la instrucción.
Ejemplo:
MOV AH, 9
Modo directo
Uno de los operandos involucra una localidad específica de memoria. El valor constante se tiene que buscar en memoria, en la localidad especificada. 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 que calcular.
Ejemplo:
MOV AH, [0000]
MOV AH, Variable
Estas dos instrucciones serían equivalentes, si Variable está, por ejemplo, en la localidad 0 de memoria. En la forma primitiva del lenguaje de máquina, como el primer ejemplo, se tiene que indicar “mover a AH el contenido (indicado por los corchetes), de la localidad 0 de los datos (lo de los datos es implícito). El lenguaje Ensamblador, sin embargo, nos permite la abstracción del uso de variables, pero como una variable tiene una localidad determinada en memoria, para el procesador funciona igual. La única diferencia consiste en que el programador no tiene que preocuparse por la dirección, ese manejo lo hace automáticamente el Ensamblador.
Modo indirecto
Se usan los registros SI, DI como apuntadores. El operando indica una localidad de memoria, cuya dirección (sólo la parte desplazamiento) está en SI o DI. Es más lento que los anteriores, pues tiene que “calcular” la localidad
Ejemplos:
MOV AL, [SI]
MOV BL, ES:[SI] ; Aquí se dice que se usa un “segment override”, donde se indica que en vez de usar el segmento de datos por defecto, se use en su lugar como referencia el segmento extra.
Comentarios
Publicar un comentario