Способы адресации операндов
Команды процессора выполняют действия с операндами. Сначала они отыскивают исходные операнды, называемые операндами-источниками. Затем – выполняют операции с исходными операндами. И, наконец, отправляют полученный результат, называемый операнд-приемник, в определенную ячейку памяти, регистр процессора или порт интерфейса внешнего устройства. У любого операнда есть свой адрес хранения. Процессор имеет различные способы указания адресов операндов для отыскания операндов при чтении и для их размещения при записи. Всего микропроцессор 8080 имеет 5 способов адресации операндов, которые представлены в табл. 1.3.
Признаки результатов операций
При выполнении арифметических и логических операций с однобайтными двоичными операндами процессор имеет возможность не только получить байт результата в своем аккумуляторе, но и указать на некоторые признаки результата операции. Это реализовано через установку битов регистра признаков процессора. Его формат показан в табл. 1.4, а значения отдельных битов признаков – в табл. 1.5.
Биты регистра признаков устанавливаются командами арифметических, логических и сдвиговых операций. Они могут быть использованы другими командами в качестве объекта анализа или анализируемого условия. Анализировать состояния битов признаков могут команды условных переходов, условных вызовов подпрограмм или условных возвратов из подпрограмм. Кроме того, бит CY может принимать участие в арифметических, логических и сдвиговых операциях вместе с другими операндами.
Представление программы
Исходный текст программы разрабатывается на основе её алгоритма. Команды исходного текста пишутся сначала в форме мнемокодов. Например, простейшая программа 2.3, извлекающая число из ячейки памяти с адресом 0B00h, инвертирующую его и записывающая результат в память по адресу 0B01h.
; Программа 2.3. (в мнемокодах)
; Инвертирование однобайтного числа
;Входной параметр: M(0B00) – исходное число
;Выходной параметр: M(0B01) – результат инвертирования
.org 0800h ; Область программы
LDA 0B00h ; прочитать число из памяти с адресом 0B00 в ; аккумулятор процессора (A)
CMA ; инвертировать число в A
STA 0B01h ; записать число из A в память по адресу 0B01
RST 1 ; вернуться в монитор
;в микро-ЭВМ УМК-80 для возврата в монитор следует пользоваться ;командой RST 7.
.org 0B00h ;Область данных
.db 0E5h ;исходный байт
.db 00 ;результат
.end
Затем, для записи программы в оперативную память, необходимо перевести мнемокоды команд в машинные коды, то есть выполнить трансляцию программы. Так как команды в программе могут быть одно-, двух- или трёхбайтные, то они должны занимать соответственно одну, две или три ячейки памяти.
Программа 2.3 (размещение по адресам памяти)
Инвертирование однобайтного числа
Входной параметр: M(0B00) – исходное число
Выходной параметр: M(0B01) – результат инвертирования
Адрес Число Комментарий
0800 3A ;код команды LDA
0801 00 ;младший байт адреса команды LDA
0802 0B ;старший байт адреса команды LDA
0803 2F ;код команды CMA
0804 32 ;код команды STA
0805 01 ;младший байт адреса команды STA
0806 0B ;старший байт адреса команды STA
0807 CF ;код команды RST 1*
* в микро-ЭВМ УМК-80 для возврата в монитор следует пользоваться командой RST 7, имеющей код FF.
Запись многобайтных команд удобно производить в более компактной и удобной для анализа форме – одной строкой. В начале строки указывается адрес первого байта такой команды и при этом понимается, что, в зависимости от длины, байты команды в памяти будут занимать от одной до трёх последовательно расположенных ячеек.
; Программа 2.3 (в мнемокодах и кодах)
; Инвертирование однобайтного числа
;Входной параметр: M(0B00) – исходное число
;Выходной параметр: M(0B01) – результат инвертирования
.org 0800h ; Область программы
0800 3A 00 0B LDA 0B00h ;AßM(0B00)
0803 2F CMA ; инвертировать число в A
0804 32 01 0B STA 0B01h ;AàM(0B01)
0807 CF RST 1 ;возврат в Монитор
;в микро-ЭВМ УМК-80 для возврата в монитор следует пользоваться ;командой RST 7.
.org 0B00h ;Область данных
.db 0E5h ;исходный байт
.db 00 ;результат
.end
В программе 2.3 для определения операнда в памяти используется прямой метод адресации. В следующей программе 2.4 выполняются те же действия над исходным операндом, но для его определения в памяти применён уже косвенный метод адресации.
; Программа 2.4.
; Инвертирование однобайтного числа
;Входной параметр: M(0B00) – исходное число
;Выходной параметр: M(0B01) – результат инвертирования
.org 0800h ; Область программы
LXI H,0B00h ; HLß0B00
MOV A,M ; AßM(HL)
CMA ; инвертировать число в A
INX H ; HLßHL+1
MOV M,A ; AàM(HL)
RST 1 ; вернуться в монитор
;в микро-ЭВМ УМК-80 для возврата в монитор следует пользоваться ;командой RST 7.
.org 0B00h ;Область данных
.db 0E5h ;исходный байт
.db 00 ;результат
.end
Порядок выполнения работы