Инструкция из набора инструкций Intel 8085, которая является данными SBI (немедленное вычитание с заимствованием). Эта инструкция говорит: «Содержимое второго байта инструкции и содержимое флага CY вычитаются из аккумулятора. Результат помещается в аккумулятор».
Или
(А) <-- (А) -(байт 2) - (CY)
При этом что делает second byte
или byte mean
?
Также в инструкции STA addr (Сохранить непосредственный адрес), в которой говорится: «Содержимое аккумулятора перемещается в ячейку памяти, адрес которой указан в байте 2 и байте 3 инструкции». Что значит byte 2
и что byte 3
значит?
Инструкции состоят из переменного количества «слов», и эти слова состоят из битов. В случае с архитектурой 8085 у вас могут быть инструкции длиной в одно, два или три слова, и каждое слово имеет длину 8 бит. Эти биты разделены на поля в зависимости от вашего набора инструкций. Какие поля существуют и что эти поля означают, обычно зависит от контекста на основе значения одного поля, которое всегда имеет одно и то же значение. Обычно это поле называется «кодом операции». Вы должны подробно прочитать по крайней мере главу 8 связанного PDF-файла, чтобы получить полное представление.
В случае инструкций, которые работают с регистрами и сохраняют свои результаты в регистре, исходный и целевой регистры должны быть идентифицированы в некоторых полях инструкции. В случае инструкции, которая добавляет константу в регистр и сохраняет результат в регистре, регистры по-прежнему должны быть идентифицированы, но константа также должна быть закодирована в инструкции в своем собственном поле. В архитектурах набора команд термин «немедленный» часто используется для обозначения «постоянного значения». В случае инструкций, которые считывают или записывают в память, местоположение в памяти может быть закодировано внутри инструкции.
Это основная идея, надеюсь, это поможет. Для справки в будущем хорошим поисковым термином для таких вопросов является «Архитектура набора инструкций» для вашего процессора.
Редактировать Re: STA 4200
Инструкция STA описана на странице 3-61 (стр. 117) этого руководства по программированию на языке ассемблера для процессоров 8080/8085. Три байта:
STA — это инструкция «Прямое сохранение аккумулятора», и она копирует значение аккумулятора в память по 16-битному адресу, состоящему из байтов 2 и 3.
Очевидно, у вас есть 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 ", до тех пор, пока они не дадут четких, простых для понимания ответов на этот и связанные с ним вопросы.
Сухайл Гупта
Олин Латроп
Аль Кепп
Кортук