- •Микроконтроллер mc68hc908gp32 регистровая структура, способы адресации, команды пересылки
- •Структура микроконтроллераMc68hc908gp32
- •1.1. Общая структура микроконтроллера 68hc908gp32.
- •1.2. Организация и адресация памяти
- •1.3 Регистровая модель
- •1.4 Типы данных
- •2. Способы адресации
- •2.1 Команды пересылки
- •3. Создание программы в среде проектированияWinIdEи её ассемблирование
- •3.1. Интегрированная средаWinIde
- •3.2. Структура ассемблерной строки и ассемблерной программы
- •Упражнения
- •Варианты заданий: Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Пример составления программы:
- •Список литературы:
1.4 Типы данных
Язык ассемблера позволяет использовать только те типы данных, обработка которых осуществляется непосредственно микропроцессором, то есть восьмибитовые и шестнадцати битовые данные.
Восьмибитовые данные– это один байт данных, которые могут храниться в регистрах А, Н, Х, регистре признаков или ячейках памяти и обрабатываться микропроцессором как одно целое.
Восьмибитовые данные могут интерпретироваться микропроцессором по-разному:
как двоичное целое со знаком. Диапазон изменения данных в этом случае от -7F7F. Таким способом микропроцессор интерпретирует данные, полученные в результате выполнения арифметических операций;
как двоичное целое без знака. Диапазон изменения данных в этом случае 0 FF. Так интерпретируются микропроцессором данные, полученные, например, в результате выполнения логических операций.
Как десятичное целое без знака, которое предполагается для выполнения операции, преобразовать в шестнадцатеричное. Диапазон изменения данных от 0 255.Запись таких чисел необходимо завершать символом "Т". Например, 89Т.
как двоично-десятичное число. Диапазон изменения данных в этом случае от 0 до 99. Такой способ используется после выполнения операции двоично-десятичной коррекции чисел.
как шестнадцатеричное число. Диапазон изменения данных в этом случае от 9А до FF. Запись шестнадцатеричных данных начинается со знака "$". Например,$А6.
Шестнадцати битовые данные – это два байта данных, которые могут храниться в индексном регистре, регистрах SP,PCили в двух последовательных ячейках памяти и обрабатываться микропроцессором как одно целое.
Шестнадцати битовые данные интерпретируются как двоичное число без знака в диапазоне от 0 FFFF. Шестнадцати битовые данные используются, главным образом, для адресации памяти.Запись шестнадцати битовых данных начинается со знака "$", например, $8000.
2. Способы адресации
Микроконтроллер выполняет набор операций над операндами, размещенными в регистрах A, Xи памяти. Команды имеют длину от 1 до 3 байтов: первый байт содержит код операции, второй и третий байты обеспечивают адресацию операнда. Для выборки операнда используются следующие способы адресации:
- регистровая(операнд располагается в регистреAилиX). Например, пересылка содержимого регистра АСС в регистр Х, выполняемая командойТАХ, имеет регистровый способ адресации;
- индексная(адресом операнда служит содержимое регистраH:X). Например, командаADD ,X - выполняющая сложение содержимого регистра АСС с содержимым ячейки памяти, адрес которой находится в индексном регистре Н:Х, имеет индексный способ адресации;
- индексная со смещением (адрес операнда образуется сложением содержимого регистраH:Xи 8- или 16-разрядного смещения, заданного во втором и третьем байте команды). Например, командаLDA $1,X- загружающая в аккумулятор АСС содержимое ячейки памяти, адрес которой равен (Н:Х)+1, имеет индексный способ адресации с однобайтовым смещением, а командаLDA $02FF,X- индексный способ адресации с двухбайтовым смещением;
- индексная с пост-инкрементом (используется только в командахMOV и CBEQ- адресом операнда служит содержимое регистраH:X, которое после выполнения команды автоматически увеличивается на 1). Например, командаMOV $68,X+, выполняющая запись данных из ячейки памяти с адресом 68 в ячейку памяти, адрес которой находится в индексном регистре Н:Х, и увеличивающая затем на 1 адрес в регистре Н:Х, имеет индексный способ адресации с пост-инкрементом;
- индексная со смещением и пост-инкрементом (используется только в командеCBEQ- адрес операнда образуется сложением содержимого регистраH:Xи 8-разрядного смещения, заданного во втором и третьем байтах команды, после выполнения команды содержимое регистраH:Xавтоматически увеличивается на 1). Например, командаCBEQ $89,X,m1- сравнивает содержимое аккумулятора с содержимым ячейки памяти, адрес которой равен (Н:Х)+8916и переходит к меткеm1 в случае их равенства. Адрес в регистре Н:Х увеличивается при этом на 1.
- индексная по указателю стека со смещением (адрес операнда образуется сложением содержимого регистраSPи 8- или 16-разрядного смещения, заданного во втором и третьем байте команды). Например, командаADD $80, SP, складывает содержимое аккумулятора с содержимым ячейки памяти, адрес которой равен (SP)+8016, и имеет индексную адресацию по указателю стека со смещением в один байт, а командаLDA $01FF,SP– загружает в аккумулятор содержимое ячейки памяти, адрес которой равен (SP)+01FF16, и имеет индексную адресацию по указателю стека со смещением в два байта;
- прямая(8- или 16-разрядный адрес операнда задается во втором и третьем байте команды). Например, командаАDD $01E1,выполняющая сложение содержимого АСС с содержимым ячейки памяти с адресом 01Е116, имеет прямой способ адресации;
- непосредственная(8-разрядный операнд задается во втором байте команды). Например, командаORA #$0A, выполняющая операцию поразрядного ИЛИ над содержимым АСС и шестнадцатеричным числом 0А с последующей записью результата в АСС соответственно, имеют непосредственный способ адресации;
- относительная(используется только в командах ветвления - адрес команды образуется сложением текущего содержимогоPC и заданного во втором байте команды 8-разрядного смещения, которое является числом со знаком). Например, командаBRA $005D обеспечивает безусловное ветвление к ячейке памяти, адрес которой равен (РС)+2+005D16.
При прямой адресации с 8-разрядным адресом обращение возможно только к 256 начальным позициям адресного пространства (см. рис.2), в котором располагаются регистры интерфейсных и периферийных модулей и часть ОЗУ. При индексной адресации смещение является числом без знака. Индексная адресация и прямая адресация с 16-разрядным адресом позволяют обращаться к любой позиции адресного пространства, однако при этом необходимо, чтобы значение адреса не превышало $FFFF. При относительной адресации возможен переход к командам, расположенным в пределах 127 позиций ниже или выше очередной команды программы.
В набор команд входят безадресные и одноадресные команды. Регистровая адресация задается указанием имени соответствующего регистра A, Xв мнемокоде команды, поэтому команды с такой адресацией являются безадресными. В одноадресных командах задается адрес используемого операнда или размещения результата. В таблицах после мнемокода этих команд указывается символ(opr), который при записи на языке Ассемблера заменяется символом, определяющим способ адресации:
$addr8 или$addr16 – 8- или 16-разрядное значение адреса в шестнадцатиричной форме при прямой адресации;
X– при индексной адресации;
X+- при индексной адресации с пост-инкрементом;
d8, Xилиd16, X– при индексной адресации со смещением (d8, d16 – 8- или 16-разрядное смещение);
d8, X+- при индексной адресации с пост-инкрементом и смещением (d8 – 8-разрядное смещение);
d8, SPилиd16, SP– при индексной адресации по указателю стека со смещением (d8, d16 – 8- или 16-разрядное смещение).
Адресуемый таким образом операнд, выбираемый из ячейки памяти, обозначается символом M.При непосредственной адресации символ(opr)заменяется на#Im- значение операнда Im с префиксом #.
Выполняемые микроконтроллером команды делятся на группы команд пересылки, арифметических и логических операций, сдвигов, битовых операций и установки признаков, управления программой и процессором. В данной работе изучается выполнение команд пересылки с различными способами адресации операндов.