МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«Московский политехнический университет» (московский политех)
Факультет машиностроения
Кафедра «Автоматика и управление»
Лабораторная работа №2
По дисциплине «Проектирование микропроцессорных систем управления»
Группа |
204-251 |
Бригада |
2 |
Студенты |
Антоненко А.С. Сагитова Л.С. Сагитова Н.С. Ширяев В.А. |
|
|
Преподаватель |
Палагута К.А. |
Москва 2021 Лабораторная работа №2. Микроконтроллер mc68hc908gp32: команды обработки данных
Цель работы: изучение команд арифметических, логических и битовых операций, команд сравнения и сдвигов.
Теоретическое введение
Команды арифметических операций (табл.1) выполняют соответствующие действия над операндами, один из которых располагается в аккумуляторе A, где размещается затем результат. При операциях сложения и вычитания с учетом и без учета признака переноса C (команды ADC, ADD, SBC, SUB) второй операнд M адресуется любым способом, кроме относительного и индексного с постинкрементом. Команда двоично-десятичной коррекции DAA выполняется после команды ADD для получения правильного результата, если в качестве слагаемых использовались двоично-десятичные числа (две тетрады представляют два десятичных разряда числа).
Команда умножения MUL выполняется над 8-разрядными операндами без знака, расположенными в регистрах A, X, 16-разрядное произведение X:A размещается в этих же регистрах (старший байт в X, младший байт в A). Команда деления DIV использует в качестве делимого 16-разрядный операнд H:A (старший байт в H, младший байт в A), делитель находится в регистре X. Полученное 8-разрядное частное размещается в аккумуляторе, остаток – в регистре H.
При операциях инкремента, декремента (команды INC, INCA, INCX, DEC, DECA, DECX) и изменения знака (команды NEG, NEGA, NEGX) используются следующие способы адресации: индексная, индексная по указателю стека с 8-разрядным смещением или прямая с 8-разрядным адресом.
Команды AIX, AIS позволяют корректировать значение адреса, размещенного, а регистрах H:X или SP, путем сложения их содержимого с 8-разрядной константой, которая задается в виде непосредственного операнда Im. Этот операнд является числом со знаком (представляется в дополнительном коде).
Команды сравнения CMP, CPX выполняют вычитание операндов без записи результата, но с установкой значений признаков V, N, Z, C в соответствии с полученным результатом. Эти команды используют все возможные способы адресации операнда, кроме относительного и индексного с постинкрементом. Команда CPHX производит сравнение 16-разрядных операндов, одним из которых является содержимое индексного регистра H:X, а вторым – непосредственно заданный в команде двухбайтовый операнд Im или содержимое двух рядом расположенных ячеек памяти M:M+1. В последнем случае команда CPHX использует 8-разрядную прямую адресацию
Таблица 1. Команды арифметических и логических операций, сравнения и тестирования.
Мнемокод |
Команда |
Операция |
ADD (opr) |
Сложение |
A + M A |
ADC (opr) |
Сложение с переносом |
A + M + С A |
SUB (opr) |
Вычитание |
A - M A |
SBC (opr) |
Вычитание с заемом |
A - M - С A |
MUL |
Беззнаковое умножение |
A * X X : A |
DIV |
Беззнаковое деление |
H:A / X A, остаток H |
DAA |
Двоично-десятичная коррекция результата сложения |
|
INC (opr) |
Инкремент M |
M + 1 M |
INCA |
Инкремент A |
A + 1 A |
INCX |
Инкремент X |
X + 1 X |
DEC (opr) |
Декремент M |
M - 1 M |
DECA |
Декремент A |
A - 1 A |
DECX |
Декремент X |
X - 1 X |
NEG (opr) |
Изменение знака M |
0 - M M |
NEGA |
Изменение знака A |
0 - A A |
NEGX |
Изменение знака X |
0 - X X |
AIX #Im |
Сложение H:X с константой |
H:X + Im H:X |
AIS #Im |
Сложение SP с константой |
SP + Im SP |
CMP (opr) |
Сравнение A с M |
A - M, установка V,N,Z,C |
CPX (opr) |
Сравнение X с M |
X - M, установка V,N,Z,C |
CPHX (opr) |
Сравнение H:X c M:M+1 |
H:X - M:M+1, установка V,N,Z,C |
TST (opr) |
Тестирование M |
M - 0, установка N,Z |
TSTA |
Тестирование A |
A - 0, установка N,Z |
TSTX |
Тестирование X |
X - 0, установка N,Z |
AND (opr) |
Логическое И |
A M A |
OR (opr) |
Логическое ИЛИ |
A M A |
EOR (opr) |
Исключающее ИЛИ |
A M A |
COM (opr) |
Логическая инверсия M |
M M |
COMA |
Логическая инверсия A |
|
COMX |
Логическая инверсия X |
|
BIT (opr) |
Битовое тестирование |
A M, установка N,Z |
Команды тестирования TST, TSTA, TSTX устанавливают признаки N, Z в соответствии со значением выбираемого операнда. В команде TST можно использовать индексную, индексную по указателю стека с 8-разрядным смещением или прямую адресацию с 8-разрядным адресом.
Команды логических операций AND, ORA, EOR выполняют операции И, ИЛИ, Исключающее ИЛИ над разрядами содержимого аккумулятора A и адресуемого операнда (табл. 2.1). Команда битового тестирования BIT производит логическое умножение операндов (операция И) без записи результата, но с установкой признаков N, Z. При выполнении этих команд используются те же способы адресации, что и в командах сложения-вычитания. В командах логической инверсии COM, COMA, COMX используется только индексная, индексная по указателю стека с 8-разрядным смещением или прямая адресация с 8-разрядным адресом.
Команды сдвигов (табл.2) выполняют арифметические (команды ASL, ASLA, ASLX, ASR, ASRA, ASRX), логические (команды LSL, LSLA, LSLX, LSR, LSRA, LSRX) и циклические (команды ROL, ROLA, ROLX, ROR, RORA, RORX) сдвиги над операндами, расположенными в регистрах A, X или адресуемой ячейке памяти. При обращении к памяти используется индексная, индексная по указателю стека с 8-разрядным смещением или прямая адресация с 8-разрядным адресом. Команды ASL, ASLA, ASLX реализуют такие же операции, как и команды LSL, LSLA, LSLX.
Таблица 2. Команды сдвигов.
Мнемокод |
Команда |
Операция |
ASL, LSL (opr) ASLA, LSLA ASLX, LSLX |
Арифметический или логический сдвиг влево |
|
ASR (opr) ASRA ASRX |
Арифметический сдвиг вправо |
|
LSR (opr) LSRA LSRX |
Логический сдвиг вправо |
|
ROL (opr) ROLA ROLX |
Циклический сдвиг влево |
|
ROR (opr) RORA RORX |
Циклический сдвиг вправо |
|
Команды битовых операций BCLR, BSET (табл.3) устанавливают соответственно значение 0 или 1 для n-го бита в операнде, 8-разрядный адрес которого содержится во втором байте команды (8-разрядная прямая адресация). Номер бита n задается в команде. Команды CLC, CLI и SEC, SEI устанавливают значение 0 или 1 признаков C, I в регистре условий CCR. При этом команды CLI и SEI разрешают и запрещают обслуживание поступающих запросов прерывания.
Таблица 3. Команды битовых операций и установки признаков.
Мнемокод |
Команда |
Операция |
BCLR n, (opr) |
Установка значения бита bn = 0 |
0 bn |
BSET n, (opr) |
Установка значения бита bn = 1 |
1 bn |
CLC |
Установка признака C = 0 |
0 C |
CLI |
Установка признака I = 0 |
0 I |
SEC |
Установка признака C = 1 |
1 C |
SEI |
Установка признака I = 1 |
1 I |
При выполнении команд пересылки, арифметических и логических операций, сдвигов, битовых операций происходит изменение значений определенных признаков в регистре условий CCR. В табл.2.4 изменение этих признаков показано символами:
"+" - установка значения по результату операции,
"-" - значение остается неизменным,
0, 1 - установка соответствующих значений признаков,
“х” – принимает произвольное значение.
Таблица 4. Установка значений признаков при выполнении команд.
-
Команды
Признаки
V
N
I
N
Z
C
LDA, LDX, LDHX, STA, STX, STHX,
0
-
-
+
+
-
TST, TSTA, TSTX, AND, ORA, EOR, BIT,
INC, INCA, INCX, DEC, DECA,DECX
+
-
-
+
+
-
ADD, ADDC
+
+
-
+
+
+
SUB, SBC, NEG, NEGA, NEGX,
CMP, CPX, CPHX, ASL, ASLA, ASLX,
+
-
-
+
+
+
LSL, LSLA, LSLX, ASR, ASRA, ASRX,
ROL, ROLA, ROLX, ROR, RORA, RORX
LSR, LSRA, LSRX
+
-
-
0
+
+
CLR, CLRA, CLRX, CLRH
0
-
-
0
1
-
COM, COMA, COMX
0
-
-
+
+
1
MOV
+
-
-
+
+
-
MUL
-
0
-
-
-
0
DIV
-
-
-
+
+
-
DAA
x
-
-
+
+
+
CLC
-
-
-
-
-
0
CLI
-
-
0
-
-
-
SEC
-
-
-
-
-
1
SEI
-
-
1
-
-
-
SWI
-
-
1
-
-
-
RTI, TAP
+
+
+
+
+
+
BRCLR, BRSET
-
-
-
-
-
+
WAIT, STOP
-
-
0
-
-
-
Общее задание:
Записать по адресу $30 код $7C, по адресу $40 код $D4, по адресу $41 код $3E. Загрузить и выполнить программу. Ответить на вопрос: «Какой код в результате окажется по адресу $31 и что будет во флагах N и Z?»