Almacene más de 4 bits de datos en un bus de 8 bits

-2

No tengo antecedentes eléctricos, pero ayer, después de ver algunos videos en youtube sobre una computadora vieja de 8 bits, tengo algunas dudas sobre cómo funcionan. La computadora de 8 bits tiene datos de bus de 8 bits que contienen 4 códigos de operación y 4 datos. Mi pregunta es, ¿es posible saltar a la dirección > 15 ? Debido a que solo limita los datos de 4 bits, que es 1111 = 15 (máx.)

    
pregunta Felix Angga

3 respuestas

1

No hay ningún requisito de que las instrucciones estén limitadas a una sola palabra (de cualquier ancho de bus) en cualquier arquitectura de computadora.

Casi todos los procesadores comerciales de 8 bits tienen instrucciones de 1, 2 o 3 bytes (a veces incluso más), según los operandos que requiera. Por ejemplo, una instrucción de salto absoluto normalmente tendría un código de operación de 8 bits y una dirección de destino literal de 16 bits, para un total de 3 bytes.

La lógica de la CPU que obtiene las instrucciones de la memoria sabe cuánto dura cada instrucción (es decir, cuántos bytes más se pueden obtener, si corresponde) después de mirar el código de operación en el primer byte.

    
respondido por el Dave Tweed
0

Depende totalmente de la arquitectura. El video que viste fue probablemente solo para fines educativos y podría no permitir saltar a las direcciones > 15.

En un procesador típico, lo que sucede es que hay varios códigos de operación de salto. Un código de operación de salto puede permitir saltar hacia adelante o hacia atrás solo un cierto rango. En su ejemplo, el rango de salto se codificaría en el campo de datos de 4 bits. Este es un direccionamiento relativo, y el destino del salto es relativo al contador del programa actual.

Se usaría otro código de operación para una dirección de salto absoluta. En este caso, los cuatro bits de datos contendrían la dirección absoluta a la que saltar. Esto solo permitiría saltar dentro de un rango de direcciones de 16 bytes.

Opcode [3: 0] dirección [3: 0]

Si su rango de direcciones es mayor, entonces el Byte que sigue al Opcode / data Byte se usa para codificar direcciones de destino de salto absoluto adicionales dentro de un rango de direcciones de 12 bits, como por ejemplo:

Opcode [3: 0] dirección [11: 8]
dirección [7: 0]

Tal esquema de codificación de dos bytes requerirá dos ciclos para ejecutarse en comparación con el ciclo para el salto relativo mencionado anteriormente.

Un tercer método sería el registro directo de direcciones. En este caso, la dirección de destino del salto se almacena en un registro ALU. El código de operación de salto luego especifica qué registro contiene la dirección de destino.

Opcode [3: 0] registerID [3: 0]

Hay otras formas de ampliar el rango de saltos, estas son las más comunes. Nuevamente, creo que el video que vio fue solo para fines educativos y no describe una arquitectura de microprocesador práctica, ya que el campo del código de operación suele ser mucho mayor que 4 bits para obtener un conjunto de instrucciones más útil y diverso.

    
respondido por el TimB
0

Al principio, parece imposible saltar a una dirección superior a 1111, ya que es el número más alto posible que cabe en el almacenamiento de 4 bits. Para llegar más lejos, necesita más bits, por lo que puede mover el código de operación a otro byte y así liberar cuatro bits adicionales que le brindan la posibilidad de llegar al 11111111, que es 255. Pero esto es probable que sepas.

Una forma de alcanzar direcciones más altas sería usar el complemento 2 minimizado al dividir los 4 bits en 2 pares, uno para exponente y otro para mantisa. Otros pares posibles son 3 + 1 o 1 + 3. Pero entonces no podrá dirigirse a algunos lugares, ya que el número total o las posibles direcciones aún son 16.

A continuación, podría considerar el uso de otras formas de representar números que el sistema posicional. Hay muchas.

Y lo más avanzado sería crear una computadora ternaria tal como lo hicieron los rusos en los años cincuenta.

    
respondido por el Jerzy Muszynski

Lea otras preguntas en las etiquetas