Псевдокоманды и методика их использования для создания программ



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

В процессе выполнения лабораторных работ используется 6 типов псевдокоманд. Это следующие команды:

EQU – команда присвоения численного значения символьной переменной.

ORG – команда установки значения счетчика адресов программы Ассемблер.

DC.B – команда записи в память МК численного однобайтового значения.

DC.W – команда записи в память МК численного двухбайтового значения.

DS.B – команда резервирования ячеек памяти ОЗУ (в однобайтовом формате)

DS.W– команда резервирования ячеек памяти ОЗУ (для двухбайтового слова)

ПсевдокомандаEQU присваивает численное значение любого формата некоторой символьной переменной. Эта переменная может быть адресом в программе, или может быть константой данных, которую в программе записывают в символьном виде. Важно только понять, что команда EQU позволяет лишь соотнести назначенное численное значение с каким-либо символьным именем. Никаких команд собственно для МК она не формирует. Однако, если далее в программе упомянуть имя, то вместо него при ассемблировании будет подставлено назначенное численное значение.

Псевдокоманда ORGустанавливает значение внутреннего счетчика адресов программы Ассемблер. Не следует путать этот внутренний счетчик с программным счетчиком PC в центральном процессоре МК. Внутренний счетчик использует программа трансляции для размещения кодов команд для МК памяти МК.

Псевдокоманда DC.B предназначена для занесения в память МК численного однобайтового значения (Byte). Следует заметить, что при отладке программы на реальном физическом МК эту псевдокоманду следует использовать только для занесения значений в постоянную память. При отладке на программном симуляторе Вы также можете с помощью этой псевдокоманды заносить эталонные значения для тестирования программы в ОЗУ МК.

Псевдокоманда DC.W предназначена для занесения в память МК численного двухбайтового значения (Word). Для этой команды действуют абсолютно все правила синтаксиса, что и для псевдокоманды DC.B.При отладке программы на реальном физическом МК эту псевдокоманду следует использовать только для занесения значений в постоянную память. При отладке на программном симуляторе Вы можете с помощью этой псевдокоманды заносить эталонные значения для тестирования программы в ОЗУ МК.

Псевдокоманда DS.B предназначена для резервирования ячеек памяти в ОЗУ МК в однобайтовом формате. Псевдокоманда предназначена в основном для создания переменных в ОЗУ МК (имени переменной ставится в соответствие адрес) илидля создания массива с переменными данными.

Псевдокоманда DS.Wпредназначена для резервирования ячеек памяти в ОЗУ МК в двухбайтовом формате.Для этой команды действуют абсолютно все правила синтаксиса, что и для псевдокоманды DS.B.

Пример использования псевдокоманд.

RomStartEQU $E000 ; Romstartприсвоено значение $E000, которое используется только

; компилятором при переводе программы в машинный код(начальный адрес ПЗУ для МК

; HCS908QG8)

RamStartEQU $0060 ; Ramstartприсвоенозначение $0060 (начальный адрес ОЗУ для МК
; HCS908QG8)

VALUE1EQU $90 ; VALUE1 присвоенозначение $90

VALUE1EQU $A135 ; VALUE2 присвоенозначение $A135

ORG RamStart           ; команда ORG задает начальный адрес программы в памяти МК.

; Начиная с адреса RamStart (значение $0060) будут располагаться переменные данные

PER1DS.B1 ; однобайтовой переменной PER1 выделена 1 ячейка памяти (физический адрес
; переменной $0060)

MASS1DS.B10 ; массиву однобайтовых переменных MASS1 выделено 10 ячеек памяти
; (начальный адрес массива $0061, конечный адрес $006A)

PER2DS.W1 ; двухбайтовой переменной PER2выделено 2 ячейки памяти (адрес
; переменной $006B (старший байт)и $006С (младший байт))

MASS2DS.W7 ; массиву двухбайтовых переменных MASS2выделено 14 ячеек памяти
; (начальный адрес массива $006D, конечный адрес $007A)

ORG RomStart           ; команда ORG задает начальный адрес программы в памяти МК.

; Начиная с адреса RomStart (значение $E000) будут располагаться константы или программа

CONST1:         DС.B$23 ;однобайтовая константа$23запишется в ячейку памяти ПЗУ  по ;адресу $E000

MASS_CONST1: DС.B$47, $5A, $9C, $18 ; 4однобайтовых констант запишутся в ячейки памяти ;ПЗУ по адресам $E001, $E002, $E003, $E004

CONST2:         DС.W$1532 ;двухбайтовая константа $1532запишется в ячейку памяти ПЗУ по ;адресам $E005 (значение $15), $E006 (значение $32)

MASS_CONST2:DС.W$1369, $A4BA, $C5F3 ;3двухбайтовых константы запишутся в ячейки ;памяти ПЗУ (начальный адрес $E007, конечный адрес $E00C)

ORG RomStart+$40 ; команда ORG задает начальный адрес программы в памяти МК.

; Начиная с адреса $E040будет располагаться программа

;Начало программы

MAIN:

LDA#VALUE1 ;загрузить в аккумулятор число $90

Система команд

Система команд CPU08 включает 91 инструкций:

Длина кода команды в байтах определяется типом инструкции и способом адресации. Команды CPU08 могут иметь однобайтовый, двухбайтовый, трехбайтовый и четырехбайтовый формат. Однобайтовыми командами в соответствие с теорией являются команды с неявной адресацией(INH) и с индексной адресацией без смещения (IX). В двухбайтовом формате представлены команды с непосредственной (IMM), прямой (DIR) и индексной с однобайтовым смещением (IX1) адресацией. Трехбайтовый формат имеют команды с прямой расширенной адресацией (EXT), индексной со смещением в два байта адресацией (IX2) и адресацией по указателю стека со смещением в один байт (SP1). Четырехбайтовыми командами являются только команды с адресацией по указателю стека со смещением в два байта (SP2).

Множество команд делится на 6 традиционных групп, каждая из которых рассмотрена ниже. Распределение команд по группам приведено в табл.1.1.

 

Табл.1.1. Распределение команд ассемблера CPU08 по типовым группам.


Дата добавления: 2018-04-04; просмотров: 537; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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