МПС
Директивы ассемблера (Лекция)
ПЛАН ЛЕКЦИИ 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). Таблица. Размещение
регистров специальных функций в пространстве 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 = + . |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||