- •Общие сведения о микропроцессорах, основные определения и классификация
- •Общая структурная схема микропроцессора
- •Два подхода в построении уу микропроцессора
- •Структурная схема мп со схемной логикой управления
- •Принцип микропрограммного управления. Структурная схема мп на основе программируемой логики управления
- •Типовая структурная схема мпс с мультиплексируемой шиной адресов и данных
- •Управление памятью и внешними устройствами
- •Структура микропроцессора к1821вм85а
- •Блок регистров мп к1821вм85а
- •Блок управления мп к1821вм85а
- •Синхронизация и последовательность действий мп к1821вм85а
- •Система прерываний
- •Последовательный ввод-вывод
- •Система команд мп к1821вм85а
- •Пример выполнения программы
- •Приемы программирования микропроцессоров
- •Язык Ассемблера
- •Программирование последовательных участков алгоритма
- •Программирование циклических вычислительных процессов
- •Составление программ, содержащих подпрограммы
- •Общие сведения об интерфейсных схемах
- •Шинные формирователи
- •Буферные регистры
- •Параллельные периферийные адаптеры (ппа)
Язык Ассемблера
Программа на языке Ассемблера представляется в виде последовательности предложений, каждое из которых занимает отдельную строку и содержит четыре фиксированных поля: поле метки, поле команды, поле операнда и поле комментариев.
Поле метки. Если предложение снабжается именем, то оно записывается в поле метки. Имя состоит из последовательности заглавных букв латинского алфавита и цифр. Начинается имя с буквы, содержит не более пяти символов и заканчивается двоеточием (например, 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 тактовый период).