¿Qué significa el byte 2 y el byte 3?

Una instrucción del conjunto de instrucciones de Intel 8085 que son datos SBI (restar inmediato con préstamo). Esta instrucción dice "El contenido del segundo byte de la instrucción y el contenido de la bandera CY se restan del acumulador. El resultado se coloca en el acumulador".

O

(A) <-- (A) -(byte 2) - (CY)

En esto ¿qué hace second byteo byte mean?

También en la instrucción STA addr (Almacenar dirección inmediata) que dice "El contenido del acumulador se mueve a la ubicación de memoria cuya dirección se especifica en el byte 2 y el byte 3 de la instrucción". ¿Qué significa byte 2y byte 3?

Si este es un lugar incorrecto para publicar esta pregunta, indíquelo en el lugar apropiado.
Me parece completamente apropiado.
Este es en realidad un tema de programación y lo movería a stackoverflow.
El ensamblaje en un procesador está tan cerca del firmware que no estoy seguro de que la distinción sea valiosa. Algunas preguntas en el límite para nosotros están bien siempre y cuando sigan siendo técnicas y puedan obtener buenas respuestas. Todos tenemos que leer algún ensamblaje para hacer el firmware, ¿cuál es el daño aquí? Me gustaría escuchar otros puntos de vista si alguien no está de acuerdo con esta opinión.

Respuestas (4)

Las instrucciones se componen de un número variable de "palabras" y esas palabras se componen de bits. En el caso de la arquitectura 8085 , puede tener instrucciones de una, dos o tres palabras, y cada palabra es de 8 bits. Esos bits se dividen en campos según su conjunto de instrucciones. Qué campos hay y qué significan esos campos suele ser sensible al contexto en función del valor de un campo que siempre tiene el mismo significado. Por lo general, este campo se denomina "código de operación". Debe leer en detalle al menos el capítulo 8 del pdf vinculado para obtener una comprensión completa.

En el caso de instrucciones que operan sobre registros y almacenan sus resultados en un registro, es necesario identificar los registros de origen y de destino en algunos campos de la instrucción. En el caso de una instrucción que agrega una constante a un registro y almacena el resultado en un registro, aún es necesario identificar los registros, pero también es necesario codificar la constante en la instrucción en su propio campo. En las arquitecturas de conjuntos de instrucciones, el término "inmediato" se usa a menudo para referirse a un "valor constante". En el caso de instrucciones que leen o escriben en la memoria, es posible que la ubicación en la memoria deba codificarse dentro de la instrucción.

Esa es la idea básica, espero que esto ayude. Para referencia futura, un buen término de búsqueda para preguntas como esta es "Arquitectura del conjunto de instrucciones" para su procesador.


Editar Re: STA 4200

La instrucción STA se describe en la página 3-61 (pág. 117) de esta guía de programación en lenguaje ensamblador para procesadores 8080/8085. Los tres bytes son:

  • Byte 1 = Código de operación (00110010)
  • Byte 2 = Byte de dirección baja
  • Byte 3 = Byte de dirección alta

STA es la instrucción "Almacenar acumulador directo", y lo que hace es copiar el valor del acumulador en la memoria en la dirección de 16 bits compuesta por los bytes 2 y 3.

¿Puede explicar STA 4200 que almacena el contenido del acumulador en 4200, escriba los términos byte 2 y byte 3 ? Entiendo que la instrucción tiene una longitud de 3 bytes y el código de operación es STA, pero no entiendo los otros dos campos que forman el byte 2 y el byte 3
@SuhailGupta echa un vistazo al capítulo tres de tramm.li/i8080/…

Aparentemente tiene instrucciones de 2 bytes y 3 bytes. El primer byte es aparentemente el código de operación en estos casos. La instrucción SBI solo tiene un byte de datos más allá del código de operación, por lo que el byte de datos es el segundo byte de la instrucción. De manera similar, la dirección en la que opera la instrucción STA está en el segundo y tercer byte de la instrucción, siendo presumiblemente el primer byte el código de operación.

Tenga en cuenta que todo esto es especulación de lo que dijo y vagos recuerdos del conjunto de instrucciones x86. No he buscado nada para confirmarlo. Ese es tu trabajo.

El segundo byte presumiblemente contiene el valor que se restará del valor en el acumulador.

El segundo y tercer byte sobre los que pregunta en relación con la instrucción STA contienen una dirección, un valor de 16 bits que debe especificarse como dos bytes de 8 bits.

Examinar algún código ensamblado usando esas instrucciones debería ayudar.

Veamos un fragmento de código de máquina: (Esto es de stoned-b , pero la mayoría del código ejecutable para muchos procesadores se ve similar).

...
1000:0148 BB0002        MOV     BX,0200
1000:014B 33C9          XOR     CX,CX
1000:014D 8BD1          MOV     DX,CX
1000:014F 41            INC     CX
...

En la mayoría de las computadoras, "byte" significa una única unidad de memoria direccionable que contiene 8 bytes.

Este ejemplo muestra que el valor de byte "BB" se almacena en la ubicación 1000:0148, el valor de byte "00" se almacena en 1000:0149, el byte "02" se almacena en 1000:014A, el byte "33" se almacena en 1000:014B, y así sucesivamente.

Los programas se almacenan en la memoria. Algunos procesadores tienen instrucciones de longitud variable; como puede ver en este ejemplo, la primera instrucción ocupa 3 bytes, las siguientes instrucciones ocupan 2 bytes cada una y la última instrucción requiere solo 1 byte.

El "byte 1" de la primera instrucción en este ejemplo es "BB", el "byte 2" es "00" y el "byte 3" es "02".

El "byte 1" de la siguiente instrucción en este ejemplo es "33", el "byte 2" es "C9" y no tiene un "byte 3".

Los conjuntos de instrucciones de longitud variable, como el 8085 y el de este ejemplo, normalmente codifican el código de operación y el formato de la instrucción en el primer byte. Al examinar solo el primer byte, la CPU puede decodificar cuántos bytes tiene la instrucción completa, qué función hace esta instrucción y el "significado" de los siguientes bytes.

Espero que usted y otros sigan mejorando los libros de lenguaje ensamblador , como el libro " x86 Assembly ", hasta que brinden respuestas claras y fáciles de entender a esta y otras preguntas relacionadas.