UTNianos

Versión completa: Final arquitectura assembler??
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Tengo un par de dudas de cara al final de arquitectura, lo primero es sobre assembler: me lei el cuadernillo pero después me fije los finales y lo que habia sobre assembler no tenia idea de como responderlo:
Por ejemplo:

Para la línea de código presentada a continuación
AB55:0103 mov AH,[0333]
• Si la siguiente instrucción a la descripta se aloja en la dirección fisica AB656 Cual es el tamaño de la instrucción y cuantos bytes le corresponden al codigo de operación?
repuesta: El tamaño es de 3 bytes y el código de operación mide 1 byte

((((de dónde saco la respuestaaa????))))

-----------------------------------------------------------------------------------
Para la línea de código presentada a continuación
AB55:0103 mov ax, [0333]

• Calcular las direcciones efectivas: de la instrucción y del operando, suponiendo que CS = DS.

((((esta no la contestó ni el que subió el final resuelto :P))))

----------------------------------------------------------------------------------

Haber si alguien me puede dar una mano, o si tienen más ejercicios de este tipo de finales que me los pasenn!!

Por último quería ver si saben que onda el final ahora en febrero.... se pone muy jodidooo???.... o es más o menos lo mismo que en otras fechass???
Para la línea de código presentada a continuación
AB55:0103 mov AH,[0333]
• Si la siguiente instrucción a la descripta se aloja en la dirección fisica AB656 Cual es el tamaño de la instrucción y cuantos bytes le corresponden al codigo de operación?
repuesta: El tamaño es de 3 bytes y el código de operación mide 1 byte

parte de RTA: Fijate que haces la suma de (AB55 y le agregas un 0, pues es base * 10 (en base 16, que es agregar un cero) ===> base(AB550) + desplazamiento(0103) = direccion efectiva
AB550
0103
--------
AB653

Y si la siguiente esta en AB656 la diferecia es de 3 con respecto a AB553
El codigo de operacion debo averiguar... :???:

#############################################################################################
Para la línea de código presentada a continuación
AB55:0103 mov ax, [0333]

• Calcular las direcciones efectivas: de la instrucción y del operando, suponiendo que CS = DS.

direccion efectiva: Teniendo en cuenta lo anterior...
Sumamos AB550 (no nos olvidamos del cero) con 0333 y listo!!!!!!! :P
AB883
POrque se le pone un Cero a la base del segmento???????
Chaito escribió:POrque se le pone un Cero a la base del segmento???????

En modo real la dirección de la base de cualquier segmento es múltiplo de 16, es por eso que cuando escribimos estas direcciones en hexa todas terminan en 0 y por lo tanto se puede "omitir" el último digito para ahorrarse así 4 bits. Cuando tenemos que calcular la dir efectiva es necesario agragar ese 0 que está implícito, sino sale toda la cuenta chueca
=P


Edit:

Ya que estoy aprovecho para ver si alguien me puede ayudar con esta duda.
En el libro de Angulo dice que las direcciones virtuales son de 46 bits, 14 de selector y 32 de desplazamiento, sin embargo en un final resuelto (vaya uno a saber por quien) vi que decía que la dir era de 48 bits (o sea le suma los dos bits de privilegio) y si mal no recuerdo creo haber visto también en el libro de Stallings que decía lo mismo (48 bits). ¿Alguien sabe cual es la posta?¿?
Emiliano escribió:Para la línea de código presentada a continuación
AB55:0103 mov AH,[0333]
• Si la siguiente instrucción a la descripta se aloja en la dirección fisica AB656 Cual es el tamaño de la instrucción y cuantos bytes le corresponden al codigo de operación?
repuesta: El tamaño es de 3 bytes y el código de operación mide 1 byte

parte de RTA: Fijate que haces la suma de (AB55 y le agregas un 0, pues es base * 10 (en base 16, que es agregar un cero) ===> base(AB550) + desplazamiento(0103) = direccion efectiva
AB550
0103
--------
AB653

Y si la siguiente esta en AB656 la diferecia es de 3 con respecto a AB553
El codigo de operacion debo averiguar... :???:

#############################################################################################
Para la línea de código presentada a continuación
AB55:0103 mov ax, [0333]

• Calcular las direcciones efectivas: de la instrucción y del operando, suponiendo que CS = DS.

direccion efectiva: Teniendo en cuenta lo anterior...
Sumamos AB550 (no nos olvidamos del cero) con 0333 y listo!!!!!!! :P
AB883

Gracias chee!!! pero te hago una consulta, de donde se aprende eso... osea en el cuadernillo de reconocimiento interno de la PC esta todo esto?? o me lo tendria que haber enseñado mi profesor??
Chaito escribió:POrque se le pone un Cero a la base del segmento???????

Tenes que leerte el Angulo.
Sugerencia, leete la pag 151 Modos de funcionamiento
y de ahi salta la 167 (y leela no? ;) )
Y de ahi salta a la 177
Ahi "Angulo" te explica como son los modos

En concreto es que la direccion efectiva en modo real se calcula asi:
Dir efect = RS (reg de segm) x 16 + desplazamiento

eso de multiplicar x 16 por la magia del hexadecimal es como agregarle un cero.
(pag 177)

Saludos!
URLs de referencia