- •1 Введение
- •3 Вида мп:
- •Структурная схема трех-магистральной микроЭвм
- •2 Структурная схема мп
- •Регистры мп:
- •Устройство управления (уу)
- •Работа управляющего автомата. Цикл и такт
- •Работа первичного автомата
- •3 Способы адресации. Форматы команд
- •Форматы команд
- •Формирование кода команды на примере команд пересылки
- •Система команд
- •4 Ассемблер в системе команд 8-разрядного мп
- •5 Организация шин микроЭвм
- •Системный контроллер вк 28, вк 38
- •Генератор тактовых импульсов (гти)
- •6 Организация интерфейса ввода-вывода
- •Программируемый параллельный адаптер (ппа) ик 55
- •7 Контроллер прямого доступа в память (кпдп) (dma) ик 57
- •2 Типа работы:
- •8 Программируемый контроллер прерывания (пкп) вн 59
- •9 Программный интервальный таймер
4 Ассемблер в системе команд 8-разрядного мп
Ассемблер – машинно-ориентированный язык программирования, относящийся к среднему уровню.
Уровни языков программирования:
1 уровень – программирование в машинных кодах
2 уровень – мнемоника в системе команд для конкретного МП (ориентировано на устройство). Позволяет осуществить быстродействующие и компактные программы.
3 уровень – удобство написания. Размещение на любой машине. Проигрывается в быстродействии и размере занимаемой памяти.
Исходный модуль |
|
Ассемблер |
|
Объектный модуль |
|
|
Ассемблер является транслятором. Необходимо для него задать начальный адрес.
Типы ассемблера
Резидентный – команда транслятора записывает в память отлаживаемой машине. Недостаток – необходимо знать точно устройство.
Кросс – ассемблер – программа отлаживается на другой инструментальной машине. Инструментальная машина, как правило, более мощная. Отладка происходит на конкретной машине. Недостаток – необходимо знать оба устройства: отлаживаемую и инструментальную машину.
Макроассемблер – ассемблер, работающий с макроопределениями (это набор программ вычисления Sin и Cos)
Метаассемблер – многоассемблерный язык программирования.
По виду функционирования ассемблер бывает:
Онопроходные – процесс ассемблирования идет в 1 этап. Программы занимают мало места, но не работают для программ, в которых участвуют ссылки вперед – переход к метке, которую еще не определил транслятор.
Многопроходные – сначала составляется таблица переходов (меток), а затем идет трансляция.
Требования к полям записи команд на ассемблере
Любая программа выполняется в следующем формате:
Адрес |
Код команды |
метка |
Символическое кодирование |
Комментарий |
|
Мнемо-ника |
операнды |
||||
Адрес ячейки коман-ды в 16-ном коде |
Команды в порядке байтов команды (по мере воз-растания) в 16-ной системе |
Признак метки : возможна символьная и цифровая.Количест-во символов опреде-ляется свойством транслятора. Начина-ется с символа. Не должна совпадать с мнемоникой, не долж-на повторяться. Раз-мер определяется транслятором |
Берется из систе-мы кома-нд. Поле мнемоники и опе-рандов должны отде-ляться пробе-лом. |
Источник и приемник отделяются за-пятой. Справа от запятой – источник, слева - приемник. могут входить име-на регистров, парных регистров, дан-ные, адреса в любой системе счис-ления: B, Q, D, H. Если не поставле-но никакой буквы – транслятор при-нимает число в десятичной системе. Могут быть занесены арифмети-ческие, логические выражения, символы из ASCII, текущее значение РС. Заканчивается точкой с запятой. |
Пояс-нение на любом языке |
Пример: Инициализация ППА, зажигания светодиода, подключенного к порту В.
Адрес управляющего слова режима работы: 87h.
Признак задания режима работы D7=1.
Порт В должен быть настроен на режим 0 (D2=0), на вывод (D1=0).
Остальные разряды в данном случае безразличны.
Адрес порта В, к одному из разрядов которого присоединен светодиод, – 85h.
Адрес |
Машинный код |
Метка |
Мнемокод |
Комментарий |
0800 |
3E 80 |
|
MVI A, 80h |
; формат УСРР занесем в А |
0802 |
D3 87 |
|
OUT 87h |
; и выведем из А в регистр УСРР |
0804 |
3E FF |
|
MVI A, FF |
; «1» на все разряды А |
0806 |
D3 85 |
|
OUT 85h |
; и выведем это в ПВ, диод зажжется |
0808 |
76 |
|
HLT |
; останов программы |
Пример – задача – перемещение массива информации из одной части памяти в другую. Запись в ПЗУ. В ОЗУ – загрузочная команда.
25 элементов массива. 2510 = 1916
- старый массив; - новый массив
1400 – начальный адрес ячейки памяти, с которой начинается программа.
BC – задание адресов начального массива; DE – конечного массива.
L – счетчик регистров.
Адрес |
Код команды |
Метка |
Символическое кодирование |
Комментарий |
|
Мнемоника |
Операнды |
||||
1400 |
01 00 08 |
BEGIN |
LXI |
B, 0800H; |
Загрузка начального адреса старого массива в парный регистр ВС (по имени старшего регистра пары) |
1403 |
11 00 09 |
|
LXI |
D, 0900H; |
Загрузка начального адреса нового массива в RP DE |
1406 |
2E19 |
|
MVI |
L, 25; |
Организация счетчика массива |
1408 |
0A |
CYCLE |
LDAX |
B; |
Загрузка аккумулятора элементом старого массива данных через парный регистр ВС |
1409 |
12 |
|
STAX |
D; |
Выгрузка значения аккумулятора в область нового массива по адресу, хранящемуся в DE |
140A |
03 |
|
INX |
B; |
Увеличение на 1 RP BC |
140B |
13 |
|
INX |
D; |
Увеличение на 1 RP DE |
140C |
2D |
|
DCR |
L; |
Уменьшение на 1 счетчика |
140D |
C2 08 14 |
|
JNZ |
CYCLE; |
Передача управления «если не 0» |
1410 |
76 |
|
HLT |
|
|