Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_kuznetsov_1.doc
Скачиваний:
7
Добавлен:
26.11.2019
Размер:
945.15 Кб
Скачать

4 Ассемблер в системе команд 8-разрядного мп

Ассемблер – машинно-ориентированный язык программирования, относящийся к среднему уровню.

Уровни языков программирования:

1 уровень – программирование в машинных кодах

2 уровень – мнемоника в системе команд для конкретного МП (ориентировано на устройство). Позволяет осуществить быстродействующие и компактные программы.

3 уровень – удобство написания. Размещение на любой машине. Проигрывается в быстродействии и размере занимаемой памяти.

Исходный модуль

Ассемблер

Объектный модуль

Ассемблер является транслятором. Необходимо для него задать начальный адрес.

Типы ассемблера

  1. Резидентный – команда транслятора записывает в память отлаживаемой машине. Недостаток – необходимо знать точно устройство.

  2. Кросс – ассемблер – программа отлаживается на другой инструментальной машине. Инструментальная машина, как правило, более мощная. Отладка происходит на конкретной машине. Недостаток – необходимо знать оба устройства: отлаживаемую и инструментальную машину.

  3. Макроассемблер – ассемблер, работающий с макроопределениями (это набор программ вычисления Sin и Cos)

  4. Метаассемблер – многоассемблерный язык программирования.

По виду функционирования ассемблер бывает:

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

  2. Многопроходные – сначала составляется таблица переходов (меток), а затем идет трансляция.

Требования к полям записи команд на ассемблере

Любая программа выполняется в следующем формате:

Адрес

Код команды

метка

Символическое кодирование

Комментарий

Мнемо-ника

операнды

Адрес ячейки коман-ды в 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]