13.07.2015 Views

Soluciones de los ejercicios sobre instrucciones y direccionamiento

Soluciones de los ejercicios sobre instrucciones y direccionamiento

Soluciones de los ejercicios sobre instrucciones y direccionamiento

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

8<strong>Soluciones</strong> <strong>de</strong> <strong>los</strong> <strong>ejercicios</strong> <strong>sobre</strong> <strong>instrucciones</strong> y <strong>direccionamiento</strong>a. <strong>de</strong>splazamiento: correspon<strong>de</strong> a lo que tradicionalmente se llama <strong>direccionamiento</strong> directo, oabsoluto. Como la dirección está fijada en la instrucción, se pue<strong>de</strong> usar para almacenar o acce<strong>de</strong>r aoperandos cuya dirección se asigna estáticamente (dirección relativa fijada en tiempo <strong>de</strong> traducción,y dirección absoluta en tiempo <strong>de</strong> carga)b. base: la dirección efectiva está contenida en el registro, es <strong>de</strong>cir, es un modo indirecto a registro.Operandos cuya dirección se asigna dinámicamente (dirección calculada en tiempo <strong>de</strong> ejecución)c. base + <strong>de</strong>splazamiento: pue<strong>de</strong> usarse para acce<strong>de</strong>r a un elemento <strong>de</strong>ntro <strong>de</strong> un array; el<strong>de</strong>splazamiento contendría la dirección <strong>de</strong>l primer elemento <strong>de</strong>l array, y en el registro <strong>de</strong> base (queen este caso actúa como un índice) se introduciría la dirección <strong>de</strong>l elemento calculada relativamenteal comienzo <strong>de</strong>l array. O bien, y similarmente, para acce<strong>de</strong>r a un elemento <strong>de</strong>ntro <strong>de</strong> una estructura<strong>de</strong> registro (record)d. (factor×índice) + <strong>de</strong>splazamiento: para acce<strong>de</strong>r por su número a un elemento <strong>de</strong> un array queempieza en la dirección dada por el <strong>de</strong>splazamiento. El registro <strong>de</strong> índice contendrá el número <strong>de</strong>elemento, y se usará el factor <strong>de</strong> escala a<strong>de</strong>cuado según que <strong>los</strong> elementos <strong>de</strong>l array sean <strong>de</strong> 1, 2, 4 u8 bytese. base + índice + <strong>de</strong>splazamiento: pue<strong>de</strong> servir para acce<strong>de</strong>r a un campo <strong>de</strong> un registro <strong>de</strong>ntro <strong>de</strong> unarray <strong>de</strong> registros; por ejemplo, base es la dirección <strong>de</strong> comienzo <strong>de</strong>l array, índice es el número <strong>de</strong>lelemento (registro) multiplicado por el número <strong>de</strong> bytes <strong>de</strong> cada elemento, y <strong>de</strong>splazamiento es loque hay que sumar para acce<strong>de</strong>r al campo. O también, para accesos a arrays bidimensionales.f. base + (factor×índice) + <strong>de</strong>splazamiento: para accesos más eficientes a arrays bidimensionalescuando <strong>los</strong> elementos son <strong>de</strong> 2, 4 u 8 bytes9La fórmula a aplicar es: base + (factor×índice) + <strong>de</strong>splazamiento. Sólo tenemos que <strong>de</strong>scodificar el byteSIB para ver qué registros actúan como base e índice y cuál es el factor:(SIB) = H’8A = B’10001010, es <strong>de</strong>cir:factor <strong>de</strong> escala = B’10 (4)índice = B’001 (EBX)base = B’010 (ECX)Por tanto:DE = (ECX) + 4×(EBX) + (<strong>de</strong>splaz.)Aplicando <strong>los</strong> valores dados y operando en <strong>de</strong>cimal:DE = 255 + 4×15 + 10 = D’3256

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!