Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект, часть 4 (05.10.10), чистовик.doc
Скачиваний:
28
Добавлен:
29.04.2019
Размер:
15.45 Mб
Скачать

Язык Ассемблера

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

Поле метки. Если предложение снабжается именем, то оно записывается в поле метки. Имя состоит из последовательности заглавных букв латинского алфавита и цифр. Начинается имя с буквы, содержит не более пяти символов и заканчивается двоеточием (например, M1:). Обычно именами снабжаются предложения, на которые производится условный либо безусловный переход.

Поле команды. В этом поле записывается мнемоническое обозначение кода операции, приводимое в системе команд МП.

Поле операнда. В этом поле приводятся участвующие в операции числа (непосредственные данные), указания об источниках и приемниках операндов. В предложениях условных и безусловных переходов в поле операнда указывается имя (метка) предложения, на которое осуществляется переход.

Числовые данные могут представляться в различных системах счисления. Для указания выбранной для представления числа системы счисления после шестнадцатеричного числа ставится символ H (если шестнадцатеричное число начинается с букв A, …, F, то перед числом ставится цифра 0), после десятичного числа можно ставить символ D (либо не записывать никакого символа), восьмеричное число заканчивается символом Q, двоичное – символом B. Например, пусть требуется загрузить в пару регистров H-L число A195(16). Указанное действие на языке Ассемблера описывается следующим предложением:

Метка

Команда

Операнд

Комментарий

M2:

LXI

H, 0A195H

; загрузка пары регистров H-L

В качестве операндов могут быть указаны счетчик команд идентификатором PC и двухбайтовое содержимое регистра-аккумулятора вместе с регистром флажков – идентификатором PSW. В командах ввода (IN) и вывода (OUT) в поле операнда указывается номер (адрес) устройства, с которым МП обменивается данными.

При наличии двух операндов они разделяются запятой. Обозначения операндов отделяются от мнемоники одним или двумя пробелами.

Поле комментариев. Это поле может содержать любой пояснительный текст, который облегчает чтение программ. Перед комментарием ставится символ ";" (точка с запятой). Приведенная в комментарии запись нужна лишь программисту, при трансляции она игнорируется ассемблером.

Программирование последовательных участков алгоритма

При программировании последовательных участков алгоритма команды условных и безусловных переходов не используются. В этом случае команды программы размещаются в ячейках памяти с последовательно нарастающими адресами. Поле метки может отсутствовать.

Пример 1 – Требуется принять число из ячейки памяти (ЯП) по адресу 0B00 H, проинвертировать его и записать результат в ЯП по адресу 0B01 H. Начальный адрес программы 0800 H.

Схема алгоритма решения задачи представлена на рисунке 15.

Рисунок 15 – Схема алгоритма инвертирования содержимого ЯП

Для записи программы в память микро ЭВМ (МПС) необходимо перевести мнемокоды команд в машинные коды (ручная трансляция). Команды в программе могут быть одно-, двух- или трехбайтные и должны занимать в памяти соответственно один, два или три адреса. Запись программ удобно проводить в компактной форме. В программе указывается начальный адрес каждой команды и при этом понимается, что в зависимости от длины команды в памяти будут занимать от одной до трех последовательных ячеек.

Программа инвертирования содержимого ЯП на языке Ассемблера при использовании прямой адресации представлена в таблице 7.

Таблица 7 – Программа инвертирования содержимого ЯП на языке Ассемблера

при использовании прямой адресации

Адрес

Метка

Команда

Операнд

Машинный код

Комментарий

0800

LDA

0B00 H

3A 00 0B

; чтение числа из памяти

0803

CMA

2F

; инвертирование числа

0804

STA

0B01 H

32 01 0B

; запись числа в память

0807

HLT

76

; останов

Программа инвертирования содержимого ЯП на языке Ассемблера при использовании косвенной регистровой адресации представлена в таблице 8.

Таблица 8 – Программа инвертирования содержимого ЯП на языке Ассемблера

при использовании косвенной регистровой адресации

Адрес

Метка

Команда

Операнд

Машинный код

Комментарий

0800

LXI

H,0B00H

21 00 0B

; запись в пару регистров

; H-L адреса числа

0803

MOV

A,M

7E

; чтение числа из памяти

0804

CMA

2F

; инвертирование числа

0805

INX

H

23

; увеличение на 1 адреса

; числа

0806

MOV

M,A

77

; запись числа в память

0807

HLT

76

; останов

Две программы решения задачи равноценны по требуемой емкости памяти. Однако программа в таблице 7 обеспечивает более высокое быстродействие, так как выполняется за 37 тактовых периодов сигнала синхронизации (программа в таблице 8 выполняется за 41 тактовый период).