Представление программы

Исходный текст программы разрабатывается на основе её алгоритма. Команды исходного текста пишутся сначала в форме мнемокодов. Например, простейшая программа 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: