Основные правила составления программ на ассемблере 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные правила составления программ на ассемблере



МЕТОДИЧЕСКИЕ УКАЗАНИЯ

 ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ №3

«Система команд микропроцессора в эмуляторе

«Е MU КР580»»

для студентов специальности 09.02.01 Компьютерные системы и комплексы

 

 

2020

Цель работы:

1. Изучение правил записи прикладных программ с использованием директив Ассемблера,

2. Ознакомление с программами Ассемблера и симулятора

3. Приобретение навыков работы с кросс-средств отладки.

4. Изучение работы команд микропроцессора КР580ВМ80А

5. Знакомство с форматом команд и этапами их выполнения

 

Теоретическая часть

 

Основные правила составления программ на ассемблере

 

Коды команд

Микропроцессор работает только с двоичными кодами. Среди совокупности этих кодов имеется определенная группа кодов, каждый из которых может «заставить» микропроцессор выполнить определенные действия (операции). Такой код часто называется кодом команды и, как правило, определяет одну команду из системы команд микропроцессора. Код любой команды представляется в запоминающем устройстве двоичным восьмиразрядным числом (байтом). Всего с помощью байта можно формировать 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  

Кросс-средства отладки

Формат ассемблерной строки

 

Разработка и отладка микропроцессорных программ ведется с помощью различных отладочных средств: от оценочных учебных модулей до универсальных аппаратно-программных комплексов. Последнее время фирмами разработчиками МП поставляются аппаратно-программные комплексы, сопрягаемые с персональными компьютерами. Они содержат ряд программ и плату с МП, подключаемую к последовательному или параллельному порту ЭВМ (встречаются оба варианта). При этом реализуются следующие возможности:

- ассемблирование исходного файла;

- моделирование на программном уровне (симуляция) исходного файла;

- моделирование на аппаратном уровне (эмуляция) исходного файла.

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

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

 

Директивы Ассемблера

 

Директивы Ассемблера (или псевдокоманды) управляют работой транслятора и не переводятся в машинные коды. Используемый в лаборатории транслятор распознает 15 директив. В табл. 2 приведены правила записи некоторых наиболее употребительных директив. Метки, заключенные в квадратные скобки, необязательны. Все директивы могут иметь метки и комментарии.

 

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

 

Директива. END располагается на последней строке и указывает транслятору на завершение программы. В программе может быть только одна Директива. END.

 

Директива. EQU (эквивалентность) ставит в соответствие константам, адресам, регистрам и т.п. символические имена. В случае изменения, например, адресов достаточно отредактировать только директиву. ORG.

 

Директива. SET действует также как директива. EQU, однако в отличие от. EQU может употребляться в программе неоднократно, переопределяя значение символического имени. Это позволяет использовать одно и то же символическое имя в разных значениях.

 

 

Таблица 2

 

  Дирек-тива

Синтаксис

Пример

.ORG

.ORG <выражение>

.ORG h’800; Установить адрес h’800

END

.END

 

EQU

.EQU<имя>,<выражение>

.EQU POR, H’ 20; Уровень порога равен 32 вольтам

SET

.SET<имя>, <выражение>

.SET A_TAB, H’8D0; Начальный адрес таблицы 8D0

DB

.DB, <список выражений>

AT:.DB 23,h’ab,’stop’; В память заносятся 23, 16-ричное число ab и 4символа в КОИ 8. Метка АТ соответствует адресу числа 23.

DW

.DW, <список выражений>

.DW h’3de7,1999,’a’

RS

.RS, <выражение>

matrica:.RS 9; Резервирует 9 ячеек памяти для матрицы 3*3

           

 

Директива. DB резервирует ячейки памяти и помещает в них представленные выражения. В качестве выражения может присутствовать цепочка символов, заключенная в кавычки, например, ‘STOP’. На каждое выражение или символ отводится один байт.

Директива. DW действует аналогично директиве DB с той лишь разницей, что каждое выражение хранится в двух ячейках памяти и цепочки символов не допускаются.

Директива. RS только резервирует ячейки памяти, в качестве выражения обычно записывается просто число резервируемых ячеек. Часто эта директива обозначается как DS.

 

 

Режим ассемблирования

 

Вызов транслятора с языка Ассемблера осуществляется командой IASM 85< NAME >, где <NAME> - имя прикладной программы, написанной согласно изложенным выше правилам. Расширение asm можно не указывать. Ассемблирование выполняется сразу и выдается сообщение:

000XXX lines assembled - проассемблировано 000ХХХ строк,

0 Errors detected - ошибок нет.

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

(тип ошибки) in line xx column xx - в строке хх, колонке хх,

(тип ошибки) in line xx column xx - в строке хх, колонке хх,

000ХХХ lines assembled - проассемблировано 000ХХХ строк,

2 Errors detected- обнаружено 2 ошибки.(2 ошибки взято для примера).

В ходе ассемблирования создаются еще файл листинга с тем же именем и расширением lst иобъектный файлс расширением obj. Причем оба файла создаются как при отсутствии, так и при наличии ошибок. Места ошибок отмечаются в листинге символом ^. Ошибки в исходном файле исправляются в текстовом редакторе с повторным ассемблированием. Редактирование текста выполняется по правилам текстового редактора. Файл листинга кроме исходного текста содержит дополнительно номера строк, адреса ячеек памяти и содержимое этих ячеек, т.е. машинные коды (см. приложение 1).

Объектный файл в формате INTEL, который в реальных условиях с помощью программатора записывается в ПЗУ, в данном случае используется симулятором.

 

Практическая часть

Подготовка к работе

 

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

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

а) числа последовательно вводятся с внешнего устройства с адресом 2;

б) числа находятся в ОЗУ по выбранным адресам.

В обоих случаях предусмотрите вывод результата на внешнее устройство с адресом 3 и сохранение в ячейке ОЗУ

Запишите в шестнадцатеричной системе счисления вводимые числа и результат, а также содержимое используемых РОН, аккумулятора и регистра флагов по завершении программы. Рассмотрите два случая: сумма не превышает значения 255 и сумма превышает 255. Программу оформите.

 

Программа 1 (в мнемокодах)

Мнемокод Комментарий
LDA 0B00 Получить число из ячейки с адресом 0B00
CMA Инвертировать число
STA 0B01 Записать результат по адресу 0В01
HTL Прервать выполнение программы

При записи программ все числа представляются в шестнадцатеричной системе счисления.

Для записи программы в память необходимо перевести мнемокоды команд в машинные коды. Команды в программе могут быть одно–, двух– или трехбайтные и должны в памяти занимать соответственно один, два или три адреса.


Содержание отчета

Отчет должен содержать:

1. Результаты выполнения задания для домашней подготовки.

2. Результаты выполнения и проверки пунктов экспериментальной части.

 

 



МЕТОДИЧЕСКИЕ УКАЗАНИЯ

 ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ №3

«Система команд микропроцессора в эмуляторе

«Е MU КР580»»

для студентов специальности 09.02.01 Компьютерные системы и комплексы

 

 

2020

Цель работы:

1. Изучение правил записи прикладных программ с использованием директив Ассемблера,

2. Ознакомление с программами Ассемблера и симулятора

3. Приобретение навыков работы с кросс-средств отладки.

4. Изучение работы команд микропроцессора КР580ВМ80А

5. Знакомство с форматом команд и этапами их выполнения

 

Теоретическая часть

 

Основные правила составления программ на ассемблере

 

Коды команд

Микропроцессор работает только с двоичными кодами. Среди совокупности этих кодов имеется определенная группа кодов, каждый из которых может «заставить» микропроцессор выполнить определенные действия (операции). Такой код часто называется кодом команды и, как правило, определяет одну команду из системы команд микропроцессора. Код любой команды представляется в запоминающем устройстве двоичным восьмиразрядным числом (байтом). Всего с помощью байта можно формировать 28 = 256 различных кодо­вых комбинаций. Почти столько же команд (244) имеет микропроцессор КР580ВМ80. Естественно, что запомнить 244 кода довольно трудно, и поэтому каждому коду ставится в соответствие мнемоническое название (мнемоника) команды, которое является сокращением от английских слов, описывающих ее действие. Мнемонический код команд позволяет легче запомнить их функции и значительно упрощает написание программ. Такой язык написания программ называется Ассемблером. После того, как программа написана на Ассемблере, ее необходимо снова перевести на язык, понятный микро­процессору, т. е. перевести в последовательность двоичных восьмиразрядных чисел. Перевод в последовательность двоичных цифр может происходить автоматически с помощью специальных про­грамм-трансляторов (такие программы носят название «кросс-ассемблер» или «ассемблер») или вручную.

Для ручной трансляции можно использовать табл.1, в которой приведены все команды микропроцессора КР580ВМ80. С помощью этой таблицы можно легко и быстро сопоставить мнемонику команды с ее кодом. Код каждой команды приведен здесь в верхней горизонтальной строке (младшие раз­ряды) и в крайнем левом столбце (старшие разряды) в шестнадцатеричной системе счисления. Например, команда STAX D имеет код 12 Н, команда JZ ADR — код СА.


Таблица 1

 



Поделиться:


Последнее изменение этой страницы: 2020-10-24; просмотров: 177; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.161.153 (0.054 с.)