Файл: Основные правила составления программ на ассемблере.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.12.2023
Просмотров: 32
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
http://affon.narod.ru/Posobie.htm
ВВЕДЕНИЕ................................................................................................................................... 4
1.ОСНОВНЫЕ ПРАВИЛА СОСТАВЛЕНИЯ ПРОГРАММ НА АССЕМБЛЕРЕ........ 5
1.1. Коды команд....................................................................................................................... 5
1.2. Программная модель микропроцессорной системы....................................................... 6
1.3. Команды микропроцессора КР580ВМ80......................................................................... 9
2. КРОСС-СРЕДСТВА ОТЛАДКИ.......................................................................................... 13
2.1. Формат ассемблерной строки......................................................................................... 13
2.2. Директивы Ассемблера................................................................................................... 14
2.2. Режим ассемблирования.................................................................................................. 16
2.4. Режим симуляции прикладной программы................................................................... 16
3. УЧЕБНЫЙ МИКРОПРОЦЕССОРНЫЙ КОМПЛЕКТ (УМК).................................... 19
4. ЛАБОРАТОРНЫЕ РАБОТЫ............................................................................................... 22
4.1. Изучение правил составления ассемблерных программ и их отладки с помощью кросс-средств (Л.Р.1)................................................................................................................................................... 22
4.2. Изучение УМК и правил составления простых программ (Л.Р.2).............................. 23
ПРИЛОЖЕНИЕ 1. ПРОГРАММА ПЕРЕМНОЖЕНИЯ ДВУХ ОДНОБАЙТОВЫХ ЧИСЕЛ БЕЗ ЗНАКА....................................................................................................................................................... 32
ПРИЛОЖЕНИЕ 2. СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА КР580ВМ80......... 34
ВВЕДЕНИЕ
Применение микропроцессоров (МП) в радиотехнической аппаратуре переносит центр тяжести процесса проектирования на разработку прикладных программ, реализующих алгоритм функционирования аппаратуры с МП. Стоимость разработки программного продукта может составлять до 90% общей стоимости проекта.
В настоящее время программирование МП ведется на языке Ассемблера или языке высокого уровня. Собственно ассемблирование может выполняться вручную или с привлечением соответствующей программы. Ручное ассемблирование, т.е. перевод команд (операторов) в машинные коды, можно рекомендовать лишь на этапе начального обучения проектированию прикладных программ, так как
процесс этот трудоемок, а вероятность ошибок велика.
Язык Ассемблера относится к машинно-ориетированным языкам низкого уровня. Каждой команде языка Ассемблера соответствует, как правило, машинная команда. Каждый тип МП имеет свою систему команд и, следовательно, свой язык Ассемблера. Команды, адреса и данные записываются в виде буквенно-цифровых символов. Мнемонические обозначения команд обычно легко ассоциируются с реально выполняемыми действиями (в англоязычном написании). Практика показывает, что адаптация к языку Ассемблера происходит быстро. После составления нескольких простых программ мнемонические обозначения наиболее употребительных команд запоминаются. Написанная на Ассемблере программа переводится на машинный язык с помощью транслирующей программы, называемой также Ассемблер. При этом проводится проверка синтаксиса языка с указанием ошибок, которые необходимо исправить. Программирование на Ассемблере позволяет создавать максимально эффективные с точки зрения быстродействия и потребного объема памяти программы.
Существенное повышение производительности труда при проектировании прикладных программ дает использование языков высокого уровня, специально приспособленных для программирования МП. Являясь машинно-независимыми, они позволяют весь процесс получения программы в машинных кодах свести к трансляции (переводу) с одного представления в другое. С помощью специальной компилирующей программы производится трансляция с языка высокого уровня на язык Ассемблера и далее с помощью Ассемблера - в машинные коды. Каждому оператору языка высокого уровня соответствует 5 - 10 и более команд Ассемблера, что, очевидно, облегчает программирование. Поскольку трансляторы создаются для широкого круга программ, то, естественно, осуществляемый ими перевод не позволяет достичь той же эффективности, как при программировании на Ассемблере. Более того, окончательная отладка программы ведется обычно на Ассемблере. Из языков высокого уровня последнее время широко используется язык СИ.
Теоретические основы использования микропроцессорных устройств излагаются в курсе «Цифровые устройства и микропроцессоры». Практические навыки составления программ на Ассемблере отрабатываются студентами в процессе практических занятий и лабораторных работ. Лабораторные работы предусматривают создание программ на языке Ассемблера с последующей их отладкой.
Лабораторный практикум на кафедре РПУ организован в настоящее время в двух вариантах либо на базе «Учебных микропроцессорных комплектов» (УМК), либо программных средств отладки в дисплейном классе кафедры.
Целью данного учебного пособия является методическое обеспечение этих двух вариантов выполнения лабораторных работ.
1.ОСНОВНЫЕ ПРАВИЛА СОСТАВЛЕНИЯ ПРОГРАММ НА АССЕМБЛЕРЕ
1.1. Коды команд
Микропроцессор работает только с двоичными кодами. Среди совокупности этих кодов имеется определенная группа кодов, каждый из которых может «заставить» микропроцессор выполнить определенные действия (операции). Такой код часто называется кодом команды и, как правило, определяет одну команду из системы команд микропроцессора. Код любой команды представляется в запоминающем устройстве двоичным восьмиразрядным числом (байтом). Всего с помощью байта можно формировать 28 = 256 различных кодовых комбинаций. Почти столько же команд (244) имеет микропроцессор КР580ВМ80. Естественно, что запомнить 244 кода довольно трудно, и поэтому каждому коду ставится в соответствие мнемоническое название (мнемоника) команды, которое является сокращением от английских слов, описывающих ее действие. Мнемонический код команд позволяет легче запомнить их функции и значительно упрощает написание программ. Такой язык написания программ называется Ассемблером. После того, как программа написана на Ассемблере, ее необходимо снова перевести на язык, понятный микропроцессору, т. е. перевести в последовательность двоичных восьмиразрядных чисел. Перевод в последовательность двоичных цифр может происходить автоматически с помощью специальных программ-трансляторов (такие программы носят название «кросс-ассемблер» или «ассемблер») или вручную.
Для ручной трансляции можно использовать табл.1, в которой приведены все команды микропроцессора КР580ВМ80. С помощью этой таблицы можно легко и быстро сопоставить мнемонику команды с ее кодом . Код каждой команды приведен здесь в верхней горизонтальной строке (младшие разряды) и в крайнем левом столбце (старшие разряды) в шестнадцатеричной системе счисления. Например, команда STAX D имеет код 12Н, команда JZ ADR — код СА.
Таблица 1.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0 | NОР | | | | MOV B,B | MOV D,B | MOV H,B | MOV M,B | ADD B | SUB B | ANA B | DRA B | RNZ | RNC | RPO | RP | 0 |
1 | LXI B | LXI D | LXI H | LXI SP | MOV B,C | MOV D,C | MOV H,C | MOV M,C | ADD C | SUB C | ANA C | DRA C | POP B | POP D | POP H | POP RSW | 1 |
2 | STAX B | STAX D | SHLD | STA | MOV B,D | MOV D,D | MOV H,D | MOV M,D | ADD D | SUB D | ANA D | DRA D | JNZ | JNC | JPO | JP | 2 |
3 | INX B | INX D | INX H | INX SP | MOV B,E | MOV D,E | MOV H,E | MOV M,E | ADD E | SUB E | ANA E | DRA E | JMP | OUT | XTHL | D1 | 3 |
4 | INR B | INR D | INR H | INR М | MOV B,H | MOV D,H | MOV H,H | MOV M,H | ADD H | SUB H | ANA H | DRA H | CNZ | CNC | CPO | CP | 4 |
5 | DCR B | DCR D | DCR H | DCR М | MOV B,L | MOV D,L | MOV H,L | MOV M,L | ADD L | SUB L | ANA L | DRA L | PUSH B | PUSH D | PUSH H | PUSH PSW | 5 |
6 | MVI B | MVI D | MVI H | MVI М | MOV B,M | MOV D,M | MOV H,M | HTL | ADD M | SUB M | ANA M | DRA M | ADI | SUI | ANI | ORI | 6 |
7 | RLC | RAL | DAA | STC | MOV B,A | MOV D,A | MOV H,A | MOV M,A | ADD A | SUB A | ANA A | DRA A | RST 0 | RST 16 | RST 32 | RST 48 | 7 |
8 | | | | | MOV C,B | MOV E,B | MOV L,B | MOV A,B | ADC B | SBB B | XRA B | CMP B | RZ | RC | RPE | RM | 8 |
9 | DAD B | DAD D | DAD H | DAD SP | MOV C,C | MOV E,C | MOV L,C | MOV A,C | ADC C | SBB C | XRA C | CMP C | RET | | PCHL | SPHL | 9 |
A | LDAX B | LDAX D | LHLD | LDA | MOV C,D | MOV E,D | MOV L,D | MOV A,D | ADC D | SBB D | XRA D | CMP D | JZ | JC | JPE | JM | A |
B | DCX B | DCX D | DCX H | DCX SP | MOV C,E | MOV E,E | MOV L,E | MOV A,E | ADC E | SBB E | XRA E | CMP E | | IN | XCHG | EI | B |
C | INR C | INR E | INR L | INR A | MOV C,H | MOV E,H | MOV L,H | MOV A,H | ADC H | SBB H | XRA H | CMP H | CZ | CC | CPE | CM | C |
D | DCR C | DCR E | DCR L | DCR A | MOV C,L | MOV E,L | MOV L,L | MOV A,L | ADC L | SBB L | XRA L | CMP L | CALL | | | | D |
E | MVI C | MVI E | MVI L | MVI A | MOV C,M | MOV E,M | MOV L,M | MOV A,M | ADC M | SBB M | XRA M | CMP M | ACI | SBI | XRI | CPI | E |
F | RRC | RAR | CMA | CMC | MOV C,A | MOV E,A | MOV L,A | MOV A,A | ADC A | SBB A | XRA A | CMP A | RST 8 | RST 24 | RST 40 | RST 56 | F |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
1.2. Программная модель микропроцессорной системы
Система команд микропроцессора – это полный перечень элементарных действий, которые может выполнить микропроцессор. Управляемый командами микропроцессор выполняет очень простые действия, однако с помощью этих действий (команд) можно запрограммировать любую сложную операцию.
Проектировщику необходимо запомнить весь перечень команд и хорошо представлять действия, которые будет выполнять микропроцессор при их обработке.
Программная модель системы, построенной на базе микропроцессора серии КР580, состоит из следующих элементов:
программно-доступных регистров и триггеров разрешения прерывания;
программно-доступных восьмиразрядных ячеек памяти;
программно-доступных восьмиразрядных регистров.
Программно - доступные регистры микропроцессора – это регистры общего назначения, регистр указателя стека, регистр признаков и регистр счетчика команд. Разряды регистров нумеруются справа налево целыми числами, начиная с нуля.
Регистр общего назначения (РОН) — это один из шести восьмиразрядных регистров микропроцессора, обозначенных буквами В, С, D, Е, Н, L, или аккумулятор, обозначенный буквой А. Регистры В и С, D и Е, Н и L в некоторых командах рассматриваются как шестнадцатиразрядные регистры, называемые регистровыми парами. Регистры В, D и Н образуют старшие восемь разрядов регистровых пар, а регистры С, Е и L – младшие.
Регистр указатель стека (УC) — это шестнадцатиразрядный регистр, который содержит адрес вершины стека. Стек – это динамическая последовательная структура данных в ОЗУ, организованная таким образом, что очередная запись данных всегда осуществляется в вершину (начало) стека. Максимальный размер стека равен адресуемой емкости памяти. В вершину стека могут записываться только шестнадцатибитные данные. При записи данных в стек содержимое регистра указателя стека уменьшается на 2, а при считывании — увеличивается на 2.
Регистр признаков (F) — это восьмиразрядный регистр, содержащий признаки результата выполнения команды (рис. 1).
7 6 5 4 3 2 1 0 S Z O V O P 1 C Распределение признаков по разрядам | S– признак знака; Z – признак нуля; V – признак дополнительного переноса; P – признак четности; C – признак переноса. |
Рис.1. Регистр признаков
Признаки устанавливаются следующим образом:
- признак S — единица, если седьмой разряд результата равен единице, в противном случае — ноль;
-признак нуля Z — единица, если во всех разрядах результата ноли, в противном случае — ноль;
- признак дополнительного переноса V — единица при переносе из третьего разряда или при заеме в третий разряд результата, в противном случае — ноль;
- признак четности Р — единица, если результат в двоичном коде содержит четное количество единиц, в противном случае — ноль;
- признак переноса С — единица при переносе из седьмого разряда или при заеме в седьмой разряд результата, в противном случае — ноль.
Аккумулятор и регистр признаков образуют слово состоянияпроцессора, обозначенное буквами PSW. Аккумулятору соответствуют восемь старших разрядов, а регистру признаков — младшие.
Регистр счетчика команд(СК) — это шестнадцатиразрядный регистр, указывающий адрес следующей команды, которая должна быть выполнена микропроцессором.
Триггер разрешения прерывания используется для управления прерываниями микропроцессора. Если триггер установлен в единицу, то прерывание разрешается, если триггер установлен в ноль, то прерывание запрещается.
Программно-доступные восьмиразрядные ячейки памяти используются в качестве памяти микропроцессорной системы (МПС) . Разряды ячейки памяти нумеруются справа налево целыми числами, начиная с ноля. Максимальная емкость памяти, реализуемой запоминающим устройством, равна 65 536 байт.
Программно-доступные восьмиразрядные регистры используются для ввода и вывода. Максимальное число регистров для ввода данных составляет 256, для вывода данных — столько же.
Команды микропроцессора используют только те элементы данных, обработка которых осуществляется непосредственно микропроцессором, т. е. восьми- и шестнадцатибитовые. Восьмибитовые данные — это восемь бит (один байт), которые хранятся в РОН или ячейке памяти и обрабатываются микропроцессором как одно целое.
Шестнадцатибитовые данные — это 16 бит (два байта) данных, которые могут храниться в шестнадцатиразрядном регистре или в двух последовательных ячейках памяти и обрабатываются микропроцессором как одно целое, причем в памяти старшие восемь бит записываются по адресу на единицу большему, чем адрес младших. При адресации шестнадцатибитовых данных указывается адрес младшей ячейки памяти, содержащей эти данные.