что означают байт 2 и байт 3?

Инструкция из набора инструкций Intel 8085, которая является данными SBI (немедленное вычитание с заимствованием). Эта инструкция говорит: «Содержимое второго байта инструкции и содержимое флага CY вычитаются из аккумулятора. Результат помещается в аккумулятор».

Или

(А) <-- (А) -(байт 2) - (CY)

При этом что делает second byteили byte mean?

Также в инструкции STA addr (Сохранить непосредственный адрес), в которой говорится: «Содержимое аккумулятора перемещается в ячейку памяти, адрес которой указан в байте 2 и байте 3 инструкции». Что значит byte 2и что byte 3значит?

Если это неправильное место для публикации этого вопроса, пожалуйста, укажите соответствующее
Мне кажется полностью подходящим.
На самом деле это тема программирования, и я бы переместил ее в stackoverflow.
Сборка на процессоре настолько близка к прошивке, что я не уверен, что различие ценно. Несколько вопросов на границе для нас допустимы, если они остаются техническими и на них можно получить хорошие ответы. Нам же всем приходится читать какие-то сборки, чтобы делать прошивки, что тут плохого. Я хотел бы услышать другие точки зрения, если кто-то не согласен с этим мнением.

Ответы (4)

Инструкции состоят из переменного количества «слов», и эти слова состоят из битов. В случае с архитектурой 8085 у вас могут быть инструкции длиной в одно, два или три слова, и каждое слово имеет длину 8 бит. Эти биты разделены на поля в зависимости от вашего набора инструкций. Какие поля существуют и что эти поля означают, обычно зависит от контекста на основе значения одного поля, которое всегда имеет одно и то же значение. Обычно это поле называется «кодом операции». Вы должны подробно прочитать по крайней мере главу 8 связанного PDF-файла, чтобы получить полное представление.

В случае инструкций, которые работают с регистрами и сохраняют свои результаты в регистре, исходный и целевой регистры должны быть идентифицированы в некоторых полях инструкции. В случае инструкции, которая добавляет константу в регистр и сохраняет результат в регистре, регистры по-прежнему должны быть идентифицированы, но константа также должна быть закодирована в инструкции в своем собственном поле. В архитектурах набора команд термин «немедленный» часто используется для обозначения «постоянного значения». В случае инструкций, которые считывают или записывают в память, местоположение в памяти может быть закодировано внутри инструкции.

Это основная идея, надеюсь, это поможет. Для справки в будущем хорошим поисковым термином для таких вопросов является «Архитектура набора инструкций» для вашего процессора.


Редактировать Re: STA 4200

Инструкция STA описана на странице 3-61 (стр. 117) этого руководства по программированию на языке ассемблера для процессоров 8080/8085. Три байта:

  • Байт 1 = код операции (00110010)
  • Байт 2 = младший байт адреса
  • Байт 3 = старший байт адреса

STA — это инструкция «Прямое сохранение аккумулятора», и она копирует значение аккумулятора в память по 16-битному адресу, состоящему из байтов 2 и 3.

не могли бы вы объяснить STA 4200, в котором хранится содержимое аккумулятора на 4200, с точки зрения байта 2 и байта 3 . Я понимаю, что инструкция имеет длину 3 байта, а код операции — STA, но я не понимаю два других поля, которые составляют байт 2 и байт 3.
@SuhailGupta, посмотри третью главу на трамме.li/i8080/ …

Очевидно, у вас есть 2-байтовые и 3-байтовые инструкции. В этих случаях первый байт, по-видимому, является кодом операции. Инструкция SBI имеет только один байт данных за пределами кода операции, поэтому байт данных является вторым байтом инструкции. Точно так же адрес, с которым работает инструкция STA, находится во втором и третьем байтах инструкции, причем первый байт предположительно является кодом операции.

Обратите внимание, что это все предположения из того, что вы сказали, и смутные воспоминания о наборе инструкций x86. Я не искал ничего, чтобы подтвердить это. Это твоя работа.

Второй байт предположительно содержит значение, которое нужно вычесть из значения в аккумуляторе.

Второй и третий байты, о которых вы спрашиваете в связи с инструкцией STA, содержат адрес — 16-битное значение, которое должно быть указано как два 8-битных байта.

Изучение некоторого собранного кода с использованием этих инструкций должно помочь.

Давайте посмотрим на фрагмент машинного кода: (Это из stoned-b , но большинство исполняемых кодов для многих процессоров выглядят одинаково).

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

В большинстве компьютеров «байт» означает одну адресуемую единицу памяти, содержащую 8 байтов.

Этот пример показывает, что значение байта «BB» хранится в ячейке 1000:0148, значение байта «00» хранится в ячейке 1000:0149, байт «02» хранится в ячейке 1000:014A, байт «33» сохраняется в 1000:014B и так далее.

Программы хранятся в памяти. Некоторые процессоры имеют инструкции переменной длины — как вы можете видеть в этом примере, первая инструкция занимает 3 байта, следующие инструкции занимают 2 байта каждая, а последняя инструкция требует только 1 байт.

«Байт 1» первой инструкции в этом примере — «BB», «байт 2» — «00», а «байт 3» — «02».

«Байт 1» следующей инструкции в этом примере — «33», «байт 2» — «C9», и у него нет «байта 3».

Наборы инструкций переменной длины, такие как 8085 и тот, что в этом примере, обычно кодируют код операции и формат инструкции в первом байте. Изучив только первый байт, ЦП может декодировать, сколько байтов составляет вся инструкция, и какую функцию выполняет эта инструкция, а также «значение» следующих байтов.

Я надеюсь, что вы и другие будете продолжать улучшать книги по ассемблеру , такие как книга " x86 Assembly ", до тех пор, пока они не дадут четких, простых для понимания ответов на этот и связанные с ним вопросы.