Ensamblador - Rotacion de bits

   
Vista:

Rotacion de bits

Publicado por Diego (3 intervenciones) el 29/08/2014 00:46:09
Buenas noches, tengo un problema que me da un dolor de cabeza.
Y dice así:
Escribir una subrutina ROTARIZ que haga una rotación hacia la izquierda de los bits de un byte almacenado en la
memoria del microprocesador. Dicho byte y el número de posiciones a rotar deben pasarse por valor desde el programa
principal a la subrutina a través de registros.

4)Entendí más omenos bien la parte del pasaje de parametros, pero logro saber bien como es que rotaría los bits, ya que solo trabaja en parte alta y baja({BX} bh bl), ambas de 2 bits cada una. Aunque quizás me equivoque en lo que estoy afirmando.


Planeaba hacer algo así como apilar numeros y luego desapilarlos.
Pero lo veo un poco complicado además este ejercicio tiene que servir para otros 2 de ahí mi preocupación.
8)Usando la subrutina ROTARIZ del ejercicio 4, escriba una subrutina ROTARDER que haga una rotación hacia la
derecha de un byte almacenado en la memoria del microprocesador. Dicho byte y el número de posiciones a rotar
deben pasarse por valor desde el programa principal a la subrutina a través de registros.

9) Escriba la subrutina ROTARDER del ejercicio anterior, pero sin usar la subrutina ROTARIZ. Compare que ventajas
tiene cada una de las soluciones.
Adjunto el set de instrucciones que nos dieron para trabajar en toda la cursada.


part1
part_2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Rotacion de bits

Publicado por Pico (50 intervenciones) el 29/08/2014 10:07:47
Bh y bl son de ocho bits cada uno.

¿El problema es cómo rotar bits sin instrucciones de rotación de bits?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rotacion de bits

Publicado por Diego (3 intervenciones) el 29/08/2014 15:42:52
Gracias por aclarrme lo del tamaño, yo tampoco entendí muy bien ya que nosé si se refiere a hacer un intercambio entre la parte alta y baja o a rotar los bits dentro de alguna de las dos partes.

Ej:
1- 15b3 h; 15 3b h ^ 51 b3 h
2- 15b3 h; b3 15 h

Si es el 1° caso, no tengo mucha ideade como hacerlo, en el 2° podría usar ua instruccion de rotar, que creo que si existe aunque no esté en las instrucciones que nos dieron, o podría usar un auxiliar para guardar un contenido y luego reemplazar todo.

Si podés orientarme un poco más te lo agradecería, ya que quiero resolverlo sin importar el modo en que se interprete el enunciado.

Escribir una subrutina ROTARIZ que haga una rotación hacia la izquierda de los bits de un byte almacenado en la
memoria del microprocesador. Dicho byte y el número de posiciones a rotar deben pasarse por valor desde el programa
principal a la subrutina a través de registros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rotacion de bits

Publicado por Pico (50 intervenciones) el 29/08/2014 17:20:23
Un procesador x86 sí tiene instruccones de rotación, las tiene hasta un z80, pero el emulador msx88 no parece que las tenga. Como de lo que se trata es de aprender a programar, habrá que hacer rotaciones sin usar la instrucción de rotación.

Con una rotación se puede intercambiar la parte alta y baja de un registro rotando la mitad del número de bits del registro, claro. Si es de 16 bits, con una rotación de 8 se intercambian las dos partes.

Con las instrucciones que tienes habrá que hacerlo usando el and. Con él puedes meter en un vector de bytes cada uno de los bits de un número y luego formar otro empezando a contar por un puesto del vector distinto de 0.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rotacion de bits

Publicado por Diego (3 intervenciones) el 31/08/2014 18:17:28
Te agradezco mucho la ayuda, luego de leerlo otra vez biendo otra forma, en clase pregunté como podría ser y me dijeron que simplemente era hacer una rotación de la representación en biinario del número.

Ya pude resolverlo y lo vimos en clase.
Nuevamente, gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar