Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
labrabmo-peresilki.doc
Скачиваний:
25
Добавлен:
10.02.2015
Размер:
1.54 Mб
Скачать

1.4 Типы данных

Язык ассемблера позволяет использовать только те типы данных, обработка которых осуществляется непосредственно микропроцессором, то есть восьмибитовые и шестнадцати битовые данные.

Восьмибитовые данные– это один байт данных, которые могут храниться в регистрах А, Н, Х, регистре признаков или ячейках памяти и обрабатываться микропроцессором как одно целое.

Восьмибитовые данные могут интерпретироваться микропроцессором по-разному:

  • как двоичное целое со знаком. Диапазон изменения данных в этом случае от -7F7F. Таким способом микропроцессор интерпретирует данные, полученные в результате выполнения арифметических операций;

  • как двоичное целое без знака. Диапазон изменения данных в этом случае 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 с префиксом #.

Выполняемые микроконтроллером команды делятся на группы команд пересылки, арифметических и логических операций, сдвигов, битовых операций и установки признаков, управления программой и процессором. В данной работе изучается выполнение команд пересылки с различными способами адресации операндов.

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