Мнемоническое представление команд

Ассемблер

Язык машинных кодов понятен процессору, но неудобен для работы программисту поскольку команды трудно запоминаются и читаются. Гораздо удобнее символьное представление команд, когда символы команды напоминают о её действиях, а двухбайтные операнды и адреса в командах пишутся в нормальном виде (начиная слева, от старших байт). Такая форма представления команд используется в языке Ассемблер. Символы, представляющие команды, называются мнемокодами. Характерной особенностью языка Ассемблер, определяющей его принадлежность в языкам нижнего уровня, является то, что каждой команде Ассемблера соответствует одна и только одна машинная команда.

Пример1.6

Адрес Число Мнемокод

0800 78 MOV A,B

MOV – сокращёние от MOVe (переместить). После пробела указываются операнды: сначала – операнд-приёмник (регистр A), а затем – операнд-источник (регистр B). Операнды разделяются друг от друга запятой.

Пример1.7

Адрес Число Мнемокод

0801 06 4С MVI B,4C

MVI – сокращёние от MOVe Immediate (переместить непосредственно). После пробела указываются операнды: сначала – операнд-приёмник (регистр B), а затем – операнд-источник (число 4C).

Пример1.8

Адрес Число Мнемокод

0803 D3 F0 OUT F0

OUT – сокращёние от OUTput (вывести). После пробела указывается операнд-приёмник через адрес порта вывода F0. Источник (выводимый байт) для команд вывода всегда находится в аккумуляторе, и поэтому сведений о нём в мнемокоде нет.

Пример1.9

Адрес Число Мнемокод

0805 32 01 0B STA 0B01

STA – сокращёние от STore A direct (записать аккумулятор прямым методом адресации). После пробела указывается операнд-приёмник через определение его адреса в памяти (0B01). Источник в команде такого типа всегда находится в аккумуляторе, и поэтому сведений о нём в мнемокоде нет.

Программист пишет программу из процессорных команд сначала в удобной для него форме – на языке Ассемблера. При этом ему не обязательно сразу определять конкретные адреса памяти для размещения своей программы и её данных. Можно указать их в виде переменных с присвоением специальных имён.

Пример1.10

Программа инвертирования чисел, в количестве Cnt_1, размещённых в последовательно расположенных ячейках памяти, начиная с адреса Adr_dat, может быть представлена на Ассемблере следующим образом

Метка Мнемокод Комментарий

Beg: LXI H,Adr_dat ;записать в HL число Adr_dat

MVI B,Cnt_1 ;записать в B число Cnt_1

M00: MOV A,M ; принять очередной байт из памяти в A

CMA ; проинвертировать биты байта в A

MOV M,A ; проинвертированный байт записать на место

INX H ; инкрементировать указатель ячеек в HL

DCR B ; декрементировать счётчик байтов в B

JNZ M00 ; проверить завершение счёта и перейти к M00

; когда счёт байтов не завершён

HLT ; когда счёт байтов завершён – останов

Затем программист решает какое место в памяти займут программа и её данные. После этого выполняется трансляция исходной программы – преобразование мнемокодов в соответствующие числовые коды команд, то есть преобразование ассемблерных команд в машинные команды.

Если выбраны Beg=0800, Adr_dat=0B00, Cnt_1=08, то оттранслированная программа будет иметь следующий вид

Адрес Число Метка Мнемокод Комментарий

0800 21 00 0B Beg: LXI H,0B00

0803 06 08 MVI B,08

0805 7E M00: MOV A,M

0806 2F CMA

0807 77 MOV M,A

0808 23 INX H

0809 05 DCR B

080A C2 05 08 JNZ M00

080D 76 HLT

Трансляция ассемблерной программы может быть выполнена программистом вручную при помощи справочных таблиц с мнемониками и кодами команд. Если в подготовке программ для процессора 8080, в качестве средства автоматизации программирования, применяется компьютер, то трансляция также может быть выполнена специальной компьютерной программой называемой транслятором Ассемблера или просто Ассемблером. Программист подготавливает исходный текст в таком виде, который требует транслятор. Программа Ассемблер предполагает определённый формат представления исходной программы, а также – наличие в исходном тексте программы дополнительных команд, управляющих процессом трансляции, но не транслируемых в выходной листинг (в отличие от мнемокодов). Они именуются директивами Ассемблера.