|
В начало
Директивы ассемблера
(Лекция)
ПЛАН
ЛЕКЦИИ 1.
Директивы (псевдокоманды) ассемблера 2.
Регистры специальных функций i8051 3.
Регистр флагов (PSW) 4.
Команды арифметических операций 8051 5.
Команды операций с битами микроконтроллера 8051 6.
Команды операций с битами микроконтроллера 8051 1.
Директивы (псевдокоманды) ассемблера
Ассемблирующая программа
транслирует исходную программу в объектные коды. Хотя транслирующая программа
берет на себя многие из рутинных задач программиста, таких как присвоение
действительных адресов, преобразование чисел, присвоение действительных
значений символьным переменным и т.п., программист все же должен указать ей
некоторые параметры: начальный адрес прикладной программы, конец ассемблируемой
программы, форматы данных и т.п. Всю эту информацию программист вставляет в
исходный текст своей прикладной программы в виде псевдокоманд (директив)
ассемблера, которые только управляют процессом трансляции и не преобразуются в
коды объектной программы. Все директивы предваряются
точкой. Псевдокоманда .ORG 10h задает ассемблеру адрес ячейки памяти (10h), в
которой должна быть расположена следующая за ней команда прикладной программы. Псевдокомандой .EQU можно любому символическому имени, используемому в
программе, поставить в соответствие определенный операнд. Например, запись RED .EQU 13 приводит к тому, что в
процессе ассемблирования всюду, где встретится символическое имя RED, оно
будет заменено числом 13. Символические имена
операндов, переопределяемых в процессе исполнения программы, определяются псевдокомандой
.SET: ALFA .SET 3 ... ALFA .SET ALFA+1 Ассемблер МК51 позволяет
определить символическое имя как адрес внутренних (псевдокоманда .DATA), внешних (.XDATA) данных или адрес бита
(псевдокоманда .BIT). Например, директива ERROR-FLAG .BIT
25Н.З определяет символическое имя
ERROR _ FLAG как третий бит ячейки ОЗУ с адресом 25Н. Псевдокоманда .DB обеспечивает занесение в память программ константы, представляющей
собой байт. Псевдокомандой .END программист дает ассемблеру указание об окончании трансляции. В результате трансляции
должна быть получена карта памяти программ, где каждой ячейке памяти поставлен
в соответствие хранящийся в ней код. В соответствии с форматом
команд для представления их объектных кодов отводятся одна, две или три ячейки
памяти программ. В первой ячейке всегда располагается код операции, во второй
(а для МК51 и в третьей) — непосредственный операнд, адрес прямоадресуемого операнда
или смещение (для команд передачи управления МК51). Для команд LCALL и LJMP во
втором и третьем байтах объектного кода указывается адрес передачи управления
(во втором — старшая часть, в третьем — младшая). 2.
Регистры специальных функций i8051
К адресному пространству
памяти данных примыкает адресное пространство регистров специальных функций SFR (Special Function Register). Таблица 1 ‑ Размещение
регистров специальных функций в пространстве SFR
Примечание. Регистры, символ которых
отмечен знаком (*), допускают адресацию своих отдельных бит при использовании
команд из группы команд операций над битами. Адреса, по которым расположены эти регистры, приведены в
таблице. Отметим, что регистры занимают только часть 128-байтового
адресного пространства. Т.е. ячейки памяти с адресами 80H-0FFH,
которые не заняты регистрами, физически отсутствуют, на кристаллах
микроконтроллеров семейства 8051 при обращении к ним можно прочитать лишь код
команды возврата. Регистры специальных функций управляют работой блоков,
входящих в микроконтроллер. -
Регистры-защелки SFR параллельных портов Р0...Р3
- служат для ввода-вывода информации. -
Две регистровые пары с именами TH0, TL0 и ТН1, TL1
представляют собой регистры, двух программно-управляемых 16-битных
таймеров-счетчиков. -
Режимы таймеров-счетчиков задаются с использованием регистра TMOD, а
управление ими осуществляется с помощью регистра TCON. -
Для управления режимами энергопотребления микро-ЭВМ
используется регистр PCON. -
Регистры IP и IE управляют работой системы
прерываний микро-ЭВМ, -
регистры SBUF и SCON — работой приемопередатчика
последовательного порта. -
Регистр-указатель стека SP в микро-ЭВМ
рассматриваемого семейства — восьми битный. Он может адресовать любую область
внутренней памяти данных. У микро-ЭВМ семейства 8051 стек «растет вверх», т.е.
перед выполнением команды PUSH или CALL
содержимое SP инкрементируется, после чего производится запись информации
в стек. Соответственно при извлечении информации из стека регистр SP
декрементируется после извлечения информации. В процессе инициализации
микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP
заносится код 07Н. Это означает, что первый элемент стека будет располагаться в
ячейке памяти с адресом 08Н. -
Регистр-указатель данных DPTR чаще всего используют для
фиксации 16-битного адреса в операциях обращения к внешней памяти программ и данных.
С точки зрения программиста он может выступать как в виде одного 16-битного
регистра, так и в виде двух независимых регистров DPL и DPH -
Аккумулятор (АСС) является источником операнда и местом
фиксации результата при выполнении арифметических, логических операций и ряда
операций передачи данных. Кроме того, только с использованием аккумулятора
могут быть выполнены операции сдвигов, проверка на нуль, формирование флага паритета
и т.п. В распоряжении пользователя имеются 8 регистров общего назначения R0-R7
одного из четырёх возможных банков. При выполнении многих команд в АЛУ
формируется ряд признаков операции (флагов), которые фиксируются в регистре PSW. -
Регистр В используется как источник и как приемник при
операциях умножения и деления, обращение к нему, как к регистру SFR,
производится аналогично аккумулятору. -
При выполнении ряда команд в арифметико-логическом устройстве
(АЛУ) формируются признаки операций — флаги, которые фиксируются в регистре PSW. 3.
Регистр флагов (PSW)
4.
Команды арифметических операций 8051
В данную группу входят 24
команды, краткое описание которых приведено в таблице. Из нее следует, что
микро-ЭВМ выполняет достаточно широкий набор команд для организации обработки
целочисленных данных, включая команды умножения и деления. По результату выполнения
команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW,
структура которых приведена в таблице. Флаг С устанавливается при
переносе из разряда D7, т. е. в случае, если результат не помещается в
восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах
сложения и вычитания и служит для реализации десятичной арифметики. Этот признак
используется командой DA A. Флаг OV
устанавливается при переносе из разряда D6, т. е. в случае, если
результат не помещается в семь разрядов и восьмой не может быть интерпретирован
как знаковый. Этот признак служит для организации обработки чисел со знаком. 5.
Команды логических операций микроконтроллера
8051
В этой группе 25 команд, их
краткое описание приведено в таблице. Нетрудно видеть, что эти команды
позволяют выполнять операции над байтами: логическое И (^), логическое ИЛИ (V), исключающее ИЛИ ((+)), инверсию (NOT),
сброс в нулевое значение и сдвиг. 6.
Команды операций с битами микроконтроллера 8051
Группа состоит из 12 команд,
краткое описание которых приведено в таблице. Эти команды позволяют выполнять
операции над отдельными битами: сброс, установку, инверсию бита, а также
логические И (^) и ИЛИ (V). В качестве "логического" аккумулятора,
участвующего во всех операциях с двумя операндами, выступает признак переноса C (разряд
D7 PSW), в качестве операндов могут использоваться 128 бит
из резидентной памяти данных и регистры специальных функций, допускающие
адресацию отдельных бит. Примеры решения задач
1) Представленный код выполняет
арифметическую функцию … MOV A,
#X3 ; А = х3 SUBB A, #X2 ; А = А – х2 = х3 – х2 MOV B, A ;
В = А MOV A, #X1 ;
А = х1 MOV R0,
A ;R0 = А
= х1*(х3 – х2) Ответ: R0 = х1*(х3 – х2). 2)
После
выполнения приведенного кода аккумулятор содержит... MOV A,
#XXXXXXXXb AND A, #11111010b ;
A = XXXXX0X0b OR A, #00010010b ;
A = XXX1X010b XRL A, #01010000b ;
A = XX0X010b Ответ: A = XX0X010b. 3)
Приведенный
код выполняет булеву функцию Y=… Y .BIT P1.0 X .BIT P2.0 W .BIT P2.1 MOV C,W ; C
= W ANL C,X ; C
= CX = WX CPL C ; C
= = ORL C,/W ; C
= C + = + MOV Y,C ; Y
= C = + Ответ: Y = + . |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||