UTNianos

Versión completa: [ARQUITECTURA][PEDIDO] Ejercicios de Assembler de Finales
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
A ver si alguien me puede guiar un poco con estos ejercicios de Assembler, son de distintos finales:

Ejercicio 1:

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?

Respuesta: El tamaño es de 3 bytes y el código de operación mide 1 byte

Por qué el tamaño de la instrucción es de 3 bytes, y por qué el código de la operación mide 1 byte?

Ejercicio 2:

Si una instrucción de salto JMP 15B, se aloja en el desplazamiento 150 del segmento de código cuantos bytes de código estará salteando cuando se ejecute?
Respuesta: 10 bytes

Como se resuelve??


Agradezco a quien pueda ayudarme, Saludos!!!
fernando1986 escribió:Ejercicio 1:

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?

Respuesta: El tamaño es de 3 bytes y el código de operación mide 1 byte

La dirección dirección efectiva (física) de la instrucción es: AB55*10 + 0103 => AB550 + 103 => AB653.

El tamaño de la intrucción estpa dado por la diferencia entre la dirección entre la instrucción anterior y la siguiente. Si la siguiente se aloja en AB656, la diferencia entre esa dirección y la anterior es: AB653-AB656 => 3bytes.

...el código de operación no me acuerdo :blush:


fernando1986 escribió:Ejercicio 2:

Si una instrucción de salto JMP 15B, se aloja en el desplazamiento 150 del segmento de código cuantos bytes de código estará salteando cuando se ejecute?
Respuesta: 10 bytes
Si la instrucción se encuentra en 150 y va a saltar (JMP => Jump) hasta 15B. Va a saltar en total (15B - 150) -1 registros. 15B-150-1=> B - 1 => A (en hexa) => 10 (en decimal).
Por qué a la diferencia se le resta 1? porque la cantidad de registros que salta es la diferencia, menos la posición en la que se encuentra.

Espero que sirva de algo.

Saludos.
Dandurff escribió:
fernando1986 escribió:Ejercicio 1:

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?

Respuesta: El tamaño es de 3 bytes y el código de operación mide 1 byte

La dirección dirección efectiva (física) de la instrucción es: AB55*10 + 0103 => AB550 + 103 => AB653.

El tamaño de la intrucción estpa dado por la diferencia entre la dirección entre la instrucción anterior y la siguiente. Si la siguiente se aloja en AB656, la diferencia entre esa dirección y la anterior es: AB653-AB656 => 3bytes.

Como bien explico Dandurff la instruccion completa ocupa 3 bytes , como la instruccion tiene un argumento de dos bytes [0333] , se deduce que el opcode es de 1 byte
( 3 bytes en total ) - ( 2 bytes que ocupa el argumento ) = ( 1 byte )
este byte que 'sobra' es ocupado por el opcode , no puede ocupar mas ( ni menos rofl )

En la cursada siempre consideramos al bus de datos de la ram es de 8 bits , de aca sale que una posicion de memoria almacena unicamente 1 byte ( si llega aser un bus de datos de 16 / 32 / 64 seria diferente ? )

Saludos!
hago una pregunta medio descolocada si me permiten.
el bus de datos de la ram es de 8 bits entonces cada direccion de memoria tiene la capacidad de 1 byte
entonces cuando hablan de procesadores de 32 bits o 64 bits se refieren a que el bus de datos es de esa cantidad de bits?? osea que una direccion de memoria contiene 4 o 8 bytes? me parece que dije cualquier cosa pero es una duda que me surgio a partir de lo que dijo aca arriba el compañero.
gracias y perdon si dije cualquier cosa
La ram puede tener un bus de datos de 16 bits tambien.
por eso , cuando hablas de bus de direcciones, debes indicar que son posiciones , no hables en bytes.
el ultimo final, el del 10/02/10 , habla de un chip de 256K x 16
eso quiere decir que tiene 256K posiciones y 16 bits de datos ( que son 2 bytes por cada posicion )

y si te piden cuantos bytes almacena esta memoria, debes responder 512 KBytes ( esto me parece que no lo piden nunca , para no marear )

aca esta el post donde se explica algo de esto:
http://www.utnianos.com.ar/ingenieria-en...tml#p43039
osea que esta ram de 256 KB x16 bits tiene un bus de direcciones de 18 bits porque 2^18 = 256 KB?? y cada direccion puede almacenar 2 bytes de informacion. por lo tanto la capacidad total de la memoria es 256 kb x 2 bytes = 512 KB esta bien asi??
pero de que hablan cuando dicen que un procesador es de 32 bits, 64 bits, de que son esos bits??
gracias por responder
Hernan,
tenes que tener cuidado , porque si decis
256KB , es como decir 256K x 8

No esta bien denominar 256KBy x 16
256K x 16 nos indica que son 256K posiciones x 16 bits ( 2 bytes )

Lee este post, que trato de aclarar algo al respecto
http://www.utnianos.com.ar/ingenieria-en...tml#p43258

Lo que mencionas que se precisan 18 bits para direccionar 256K posiciones, es correcto.

La capacidad total es 256 Kposiciones x 16 bits , es decir 256 Kposiciones x 2 Bytes = 512 KBytes
en este caso , como bien comprendiste , cada posicion almacena 2 Bytes.

Exitos!!
Cuenten como les fue.
Saludos.
disculpen mi ignorancia, pero no termino de entender, pq en el ejercicio de la instruccion, yo entiendo que ocupa 3 bytes y hasta ahi esta barbaro. pero quiero ver si me pueden aclarar algo... dicen que 0333 son dos bytes pq son 16 bits =0000 0011 0011 0011? y ahi si son 3 de instruccion - 2 de operando =1 de operacion
Si, 0333 son dos bytes.
En los ejercicios de assembler , no lo aclaran nunca , pero deberian indicar que el bus de datos es de 8 bits.
Que cada byte coupa una posicion de memoria distinta. O mejor dicho que cada posicion de memoria solo almacena un byte.
aprobe con 7!!!!! gracias por la ayuda!!!!
saludos
URLs de referencia