Регистры, данные и команды пересылки данных
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

           

Цель работы

 

Изучение регистров общего назначения (РОН) и команд пересылки данных.

 

Постановка задачи

 

1. Занести число из столбца «Число 1» таблицы 7 и строки, соответствующей заданному варианту, в регистр R 24;

2. Занести число из столбца «Число 2» таблицы 7 и строки, соответствующей заданному варианту, в в регистр R 25;

3. Занести число из столбца «Число 3» таблицы 7 и строки, соответствующей заданному варианту, в регистровую пару X(R 26:27);

4. Занести число из столбца «Число 4» таблицы 7 и строки, соответствующей заданному варианту, в в регистр в регистровую пару Y(R 28:29);

5. Занести содержимое регистровой пары X в оперативную память, младшую часть регистровой памяти занести по адресу $0070, старшую – по адресу $0071.

6. Занести содержимое регистровой пары Y в оперативную память, младшую часть регистровой памяти занести по адресу $0080, старшую – по адресу $0081.

7. Обменять числа, хранящиеся в регистрах R 24 и R 25 после выполнения пунктов 1 и 2, между собой, 3-мя разными способами;

8. Обменять числа, хранящиеся в регистровых парах X и Y после выполнения пунктов 3 и 4, между собой, 3-мя разными способами;

9. Обменять между собой содержимое четырех ячеек оперативной памяти: содержимое ячейки памяти с адресом $0070 поменять с содержимым ячейки $0080, а содержимое ячейки памяти с адресом $0071 поменять с содержимым ячейки памяти с адресом $0081.

 

Таблица 7

Номер варианта Число 1 Число 2 Число 3 Число 4
1 38 45 4F5A 8765
2 56 48 6BCF 7654
3 54 42 0123 6543
4 48 54 1234 5432
5 89 52 2345 4321
6 58 59 3456 3210
7 55 12 4567 210F
8 98 25 5678 10FE
9 48 34 6789 0FED
10 54 48 789A 2468
11 75 56 89AB 468A
12 25 67 9ABC 68AC
13 26 62 ABCD 8ACE
14 53 78 BCDE ACE8
15 24 83 CDEF CE86
16 15 94 DEF0 E864
17 81 71 EF01 8642
18 11 54 F012 1357
19 15 82 FEDC 3579
20 45 8 EDCB 579B
21 52 3 DCBA 79BD
22 57 54 CBA9 9BDE
23 64 58 BA98 BDE1
24 54 64 A987 DE13
25 68 67 9876 E135

 

Содержание отчета

Отчет по лабораторной работе должен содержать номер, название, цель лабораторной работы, задание на лабораторную работу, текст программы на языке ассемблера.

Лабораторная работа №2. Арифметические команды

           

Цель работы

Изучение арифметических команд и получение навыка работы с ними.

 

Постановка задачи

Занести числа в память:

a = ;

b = ;

c = N;

d = N - 1;

e = ;

Для вариантов 1 – 10:

f = ;

Для вариантов после 10:

f = .

 

N – номер варианта по списку группы или выданный преподавателем.

 

Произвести операции над числами a,b,c,d,e,f  по вариантам, заданным в таблице 8.

Таблица 8

Номер варианта Выражение Номер варианта Выражение
1 15
2 16
3 17
4 18
5 19
6 20
7 21
8 22
9 23
10 24
11 25
12 26
13   27
14 28

 

Содержание отчета

 

Отчет по лабораторной работе должен содержать номер, название, цель лабораторной работы, задание на лабораторную работу, текст программы на языке ассемблера.

 

Лабораторная работа №3. Логические команды и команды манипулирования битами

           

Цель работы

Изучение логических команд и команд манипулирования битами и получение навыка работы с ними.

 

Постановка задачи

Занести числа в память:

a = N +100;

b =  ;

c = N+60;

d = N+125.

N – номер варианта по списку группы или выданный преподавателем.

Произвести операции над числами a,b,c,d следующие задания:

  1. Подсчитать количество ненулевых бит в числе,
  2. Подсчитать количество нулевых бит в числе,
  3. Подсчитать количество четных единиц в байте,
  4. Подсчитать количество нечетных единиц в байте,
  5. Подсчитать количество четных нулей в байте,
  6. Подсчитать количество нечетных нулей в байте.

  

Содержание отчета

 

Отчет по лабораторной работе должен содержать номер, название, цель лабораторной работы, задание на лабораторную работу, текст программы на языке ассемблера.


Литература

1. Балакина Е.П., Воробьёва Л.Н., Гречишников В.А. Интегрирование программных модулей ассемблера в среде DELPHI. Методические указания к лабораторным работам по дисциплине «Машино-Ориентированные Языки». – М.: МИИТ, 2009. –56 с.

2. Хусаинов Р.З., Садов В.Б. Программирование микроконтроллеров ATmega8535: методические указания к выполнению лабораторных работ.– Челябинск, 2009.– 123с.

3. http://www.gaw.ru/html.cgi/txt/doc/micros/avr/asm/start.htm


Приложение 1

 

Таблица 9. Арифметические и логические команды

 

Мнемоника Операнды Описание Операция Флаги Кол-во циклов
ADD Rd , Rr 0≤ d≤31, 0≤r≤31 Сложить без переноса Rd Rd + Rr Z, C, N, V, H 1
ADC Rd.Rr 0≤d≤31 , 0≤ r ≤31 Сложить с переносом Rd Rd + Rr+ С Z, C, N, V, H 1
ADIW Rd,K dE{24,26,28,30} 0≤ K ≤63 Сложить непосредственное значение со словом Rdh:Rdl Rdh:Rdl+ К Z, C, N, V 2
SUB Rd,Rr 0≤d≤31 , 0≤ r ≤31 Вычесть без заема Rd Rd – Rr Z, C, N, V, H 1
SUBI Rd, К 16≤d≤31 0≤K≤255 Вычесть непосредственное значение Rd Rd – К Z, C, N, V, H 1
SBC Rd, Rr 0≤d≤31 , 0≤ r ≤31 Вычесть с заемом Rd ß Rd-Rr-C Z, C, N, V, H 1
SBCI Rd, К 16≤d≤32 , 0≤ K ≤255 Вычесть непосредственное значение с заемом Rd ß Rd-K-C Z, C, N, V, H 1
SBIW Rd, К dE{24,26,28,30} О ≤ К ≤ бЗ Вычесть непосредственное значение из слова Rdh:Rdl ß Rdh:Rdl-K Z, C, N, V 2
AND Rd, Rr 0≤d≤31 , 0≤r≤31 Выполнить логическое AND Rd ß Rd • Rr Z, N, V 1
ANDI Rd, К 16<d<31 0<k≤255 Выполнить логическое AND Rd ß Rd • К Z, N, V 1
OR Rd, Rr 0≤d≥31 , 0≤ r ≤31 Выполнить логическое OR Rd ß Rd v Rr Z, N, V 1
ORI Rd , К 16≤d≤31, 0≤ K ≤255 Выполнить логическое OR с непосредственным значением Rd ß Rd v К Z, N, V 1
EOR Rd, Rr 0≤d≤31 , 0≤г≤31 Выполнить исключающее OR Rd ß Rd Rr Z, N, V 1
СОМ Rd 0≤d≤31 Выполнить дополнение до единицы Rd ß SFF-Rd Z, C, N, V 1
NEG Rd 0≤d≤31 Выполнить дополнение до двух Rd ß S00 - Rd Z, C, N, V, H 1
SBR Rd , К 16≤d≤31, 0≤K≤255 Установить биты в регистре Rd ß Rd v К Z, N,V 1
CBR Rd , К 16≤ d ≤31 O ≤ K ≤255 Очистить биты в регистре Rd ß Rd • (SFF - К ) Z, N, V 1
INC Rd 0≤d≤31 Инкрементировать Rd ß Rd + 1 Z, N,V 1
DEC Rd 0≤d≤31 Декрементировать Rd ß Rd - 1 Z, N,V 1
TST Rd 0≤r≤31 Проверить на ноль или минус Rd ß Rd.Rd Z, N, V 1
CLR Rd 0≤d≤31 Очистить регистр Rd ß Rd Å Rd Z, N, V 1
SER Rd 16≤d≤31 Установить все биты регистра Rd ß S FF нет 1
MUL Rd,Rr 0≤d≤31 , 0≤ r ≤31 Беззнаковое умножение целых чисел R1:R0 ß Rd*Rr Z,C 2
MULS Rd,Rr 16≤d≤31 , 16≤r≤31 Умножение целых чисел с учётом знака R1:R0 ß Rd*Rr Z,C 2
MULSU Rd,Rr 16≤ d ≤23, 16≤ r ≤23 Целочисленное умножение числа со знаком на число без знака R1:R0 ß Rd*Rr Z,C 2
FMUL Rd,Rr 16≤d≤23 , 16≤ r ≤23 Беззнаковое умножение дробных чисел R1:R0 ß (Rd*Rr)<<1 Z,C 2
FMULS Rd,Rr 16≤d≤23 , 16≤ r ≤23 Умножение дробных чисел с учётом знака R1:R0 ß (Rd*Rr)<<1 Z,C 2
FMULSU Rd,Rr 16≤d≤23 , 16≤ r ≤23 Умножение дробного числа со знаком на дробное число без знака R1:R0 ß (Rd*Rr)<<1 Z,C 2
CP Rd, Rr 0≤d≤31 , 0≤ r ≤31 Сравнить Rd - Rr Z, C, N, V, H 1
CPC Rd, Rr 0≤d≤31 , 0≤r≤31 Сравнить с учетом переноса Rd-Rr-C Z, C, N, V, H 1
CPI Rd, К 16≤d≤31 , 0≤K≤255 Сравнить с константой Rd-K Z, C, N, V, H 1

 

Таблица 10. Команды сдвигов и операций с битами

Мнемоника Операнды Описание Операция Флаги Кол-во циклов
LSL Rd 0≤d≤31 Логически сдвинуть влево Rd(n+1) ß Rd(n), Rd(0) ß 0, Cß Rd(7) Z,C,N,V,H 1
LSR Rd 0≤d≤31 Логически сдвинуть вправо Rd(n) ß Rd(n+1), Rd(7) ß 0, C ß Rd(0) Z,C,N,V 1
ROL Rd 0≤d≤31 Сдвинуть влево через перенос Rd(0) ß C, Rd(n+1) ß Rd(n), C ß Rd (7) Z,C,N,V,H 1
ROR Rd 0≤d≤31 Сдвинуть вправо через перенос Rd(7) ß C, Rd(n) ß Rd(n+1), C ß Rd (0) Z,C,N,V 1
ASR Rd 0≤d≤31 Арифметически сдвинуть вправо Rd(n) ß Rd(n+1), n=0...6, Rd(0) ß C Z,C,N,V 1
SWAP Rd 0≤d≤31 Поменять нибблы местами Rd (3...0) <–> Rd (7...4) Нет 1
BSET s 0≤s≤7 Установить флаг SREG ( s ) ß 1 SREG(s) 1
BCLR s 0≤ s ≤7 Очистить флаг SREG(s) ß 0 SREG(s) 1
SBI P,b O≤P≤31, 0≤b≤7 Установить бит в регистр I/O l/0(P,b) ß 1 Нет 2
CBI P , b 0≤ P ≤31, 0≤ b ≤7 Очистить бит в регистре I/O l/0(P,b) ß 0 Нет 2
BST Rd,b 0≤d≤31, 0≤b≤7 Переписать бит из регистра во флаг Т Т ß Rd(b) Т 1
BLD Rd,b 0≤ d ≤31, 0≤b≤7 Загрузить Т флаг в бит регистра Rd(b) ß Т Нет 1
SEC Установить флаг переноса С ß 1 С 1
CLC Очистить флаг переноса С ß 0 С 1
SEN Установить флаг отрицательного значения N ß 1 N 1
CLN Очистить флаг отрицательного значения N ß 0 N 1
SEZ Установить флаг нулевого значения Z ß 1 Z 1
CLZ Очистить флаг нулевого значения Z ß 0 Z 1
SEI Установить флаг глобального прерывания I ß 1 I 1
CLI Очистить флаг гло­бального прерывания I ß 0 I 1
SES Установить флаг знака S ß 1 S 1
CLS Очистить флаг знака S ß 0 S 1
SEV Установить флаг переполнения V ß 1 V 1
CLV Очистить флаг переполнения   V ß 0 V 1
SET Установить флаг Т T ß 1 T 1
CLT Очистить флаг Т Т ß 0 T 1
SEH Установить флаг полу переноса Н ß 1 Н 1
CLH Очистить флаг полу переноса Н ß 0 Н 1
NOP Выполнить холостую команду     Нет 1
SLEEP Установить режим SLEEP   Нет 1
WDR Сбросить сторожевой таймер   Нет 1

 

Таблица 11. Команды пересылки данных

  Мнемоника Операнды Описание Операция Флаги Кол-во циклов
ELPM Расширенная загрузка из памяти программ в регистр RO R0 ß (Z+RAMPZ) Нет 3
MOV Rd,Rr 0≤d≤31, 0≤ r ≤31 Копировать регистр Rd ß Rr Нет 1
LDI Rd , k 16≤ d ≤31,0≤ k ≤255 Загрузить непосредственное значение Rd ß K Нет 1
LDS Rd , k 0≤d≤31 0≤k≤65535 Загрузить из ОЗУ Rd ß ( k ) Нет 3
LD Rd,X  0≤d≤31 Загрузить косвенно Rd ß (X) Нет 2
LD Rd , X +  0≤d≤31 Загрузить косвенно с постинкрементом Rd ß (X), X ß X+1 Нет 2
LD Rd , X - 0≤d≤31 Загрузить косвенно с преддекрементом X ß X-1, Rd ß (X) Нет 2
LD Rd , Y  0≤ d ≤31 Загрузить косвенно Rd ß ( Y ), Нет 2
LD Rd,Y+ 0≤ d ≤31 Загрузить косвенно с постинкрементом Rd ß (Y), Y ß Y+1 Нет 2
LD Rd , Y  0≤ d ≤31 Загрузить косвенно с преддекрементом Y ß Y-1, Rd ß (Y) Нет 2
LDD Rd,Y+q  0≤d≤31 , 0≤ q ≤63 Загрузить косвенно со смещением Rd ß (Y+q) Нет 2
LD Rd , Z 0≤d≤31 Загрузить косвенно Rd ß ( Z ) Нет 2
LD Rd,Z+ 0≤ d ≤31 Загрузить косвенно с постинкрементом Rd ß (Z), Z ß Z+1 Нет 2
LD Rd ,- Z 0≤ d ≤31 Загрузить косвенно с преддекрементом Z ß Z-1, Rd ß (Z) Нет 2
LDD Rd,Z+q 0≤ d ≤31, 0≤ q ≤31 Загрузить косвенно со смещением Rd ß (Z+q) Нет 2
STS k,Rr 0≤d≤31 , 0≤k≤65535 Загрузить непосредственно в ОЗУ ( k ) ß Rr Нет 3
ST X,Rr  0≤r≤31 Записать косвенно (X) ß Rr Нет 2
ST X+,Rr 0≤ r ≤31 Записать косвенно с постинкрементом (X) ß Rr, X ß X+ 1 Нет 2
ST -X,Rr 0≤r≤31 Записать косвенно с преддекрементом X ß X-1, (X) ß Rr Нет 2
ST Y,Rr 0≤r≤31 Записать косвенно ( Y ) ß Rr Нет 2
ST Y+,Rr  0≤r≤31 Записать косвенно с постинкрементом (Y) ß Rr, Y ß Y+ 1 Нет 2
STD Y+q,Rr 0≤r≤31 , 0≤ q ≤63 Записать косвенно со смещением (Y+q) ß Rr Нет 2
ST Z,Rr 0≤ r ≤31 Записать косвенно ( Z ) ß Rr Нет 2
ST Z+,Rr 0≤r≤31 Записать косвенно с постинкрементом (Z) ß Rr, Z ß Z+ 1 Нет 2
ST -Z,Rr 0≤ r ≤31 Записать косвенно с преддекрементом Z ß Z-1, (Z) ß Rr Нет 2
STD Z+q,Rr  0≤r≤31 , 0≤ q ≤63 Записать косвенно со смещением (Z+q) ß Rr Нет 2
LPM Загрузить байт из памяти программ R 0 ß ( Z ) Нет 3
IN Rd,P  0≤d≤31 , 0≤ P ≤63 Загрузить данные из порта I/O в регистр Rd ß P Нет 1
OUT P,Rr 0≤r≤31 , 0≤ P ≤63 Записать данные из регистра в порт I/O P ß Rr Нет 1
PUSH Rr 0≤r≤31 Сохранить регистр в стеке STACK ß Rr Нет 2
POP Rr 0≤r≤31 Загрузить в регистр из стека Rr ß STACK Нет 2

 

Таблица 12. Команды переходов

  Мнемоника Операнды Описание Операция Флаги Кол-во циклов
RJMP k -2K<k<2K Перейти относительно PC ß PC + k + 1 Нет 2
LJMP Перейти косвенно PC ß Z Нет 2
JMP k 0<k<4M Перейти PC ß k Нет 3
RCALL k -2K≤k≤2K Вызвать подпрограмму относительно PC ß PC + k + 1 Нет 3
ICALL Вызвать подпрограмму косвенно PC ß Z Нет 3
CALL k 0≤k≤64K Выполнить длинный вызов подпрограммы PC ß k Нет 4
RET Вернуться из подпрограммы PC ß STACK Нет 4
RETI Вернуться из прерывания PC ß STACK I 4
CPSE Rd,Rr  0≤d≤31, 0≤ r ≤31 Сравнить и пропустить, если равно If Rd=Rr then PC ß PC + 2 (or 3) Нет ½/3
SBRC Rr,b  0≤r≤31 , 0≤ b ≤7 Пропустить, если бит в регистре очищен if Rr(b)=0 then PC ß PC + 2 (or 3) Нет ½/3
SBRS Rr,b 0≤r≤31 , 0≤ b ≤7 Пропустить, если бит в регистре установлен If Rr(b)=1 then PC ß PC + 2 (or 3) Нет ½/3
SBIC P,b  0≤P≤31 , 0≤ b ≤7 Пропустить, если бит в регистре I/O очищен if l/O P(b)=0 then PC ß PC + 2 (or 3) Нет ½/3
SBIS P,b 0≤r≤31 , 0≤ b ≤7 Пропустить, если бит в регистре I/O установлен If l/O P(b)=1 then PC ß PC + 2 (or 3) Нет ½/3
BRBS s,k 0≤ s ≤7, -64≤k≤+63 Перейти, если бит в регистре статуса установлен if SREG(s)=1 then PC ß PC + k + 1 Нет ½
BRBC s,k 0≤ s ≤7, -64≤ k ≤+63 Перейти, если бит в регистре статуса очищен if SREG(s)=0 then PC ß PC + k + 1 Нет ½
BREQ k -64≤k≤+63 Перейти, если равно if Rd=Rr (Z=1) then PC ß PC + k + 1 Нет ½
BRNE k -64≤k≤+63 Перейти, если не равно if Rd ¹ Rr(Z=0) then PC< ß PC+ k+ 1 Нет ½
BRCS k -64 £ k £ +63 Перейти, если флаг переноса установлен if C=1 then PC ß PC + k + 1 Нет 1/2
BRCC k -64≤k≤+63 Перейти, если флаг переноса очищен if C=0 then PC ß PC + k + 1 Нет 1/2
BRSH K -64≤k≤+63 Перейти, если равно или больше (без знака) if Rd<Rr(C=0) then PC ß PC+ k+ 1 Нет 1/2
BRLO k -64≤k≤+63 Перейти, если меньше (без знака) if Rd<Rr (C=1) then PC ß PC + k + 1 Нет 1/2
BRMI    k -64≤k≤+63 Перейти, если минус if N=1 then PC ß PC + k + 1 Нет 1/2
BRPL k -64≤k≤+63 Перейти, если плюс if N=0 then PC ß PC + k + 1  Нет 1/2
BRGE k -64≤k≤+63 Перейти, если больше или равно (с учетом знака) if Rd>Rr (N Å V=0) then PC ß PC + k + 1 Нет 1/2
BRLT k -64≤k≤+63 Перейти, если меньше чем (со знаком) if Rd<Rr (N Å V=1)then PC ß PC + k+ 1 Нет 1/2
BRHS K -64≤k≤+63 Перейти, если флаг полупереноса установлен if H=1 then PC ß PC + k + 1 Нет 1/2
BRHC k -64≤k≤+63 Перейти, если флаг полупереноса очищен if H=0 then PC ß PC + k + 1 Нет 1/2
BRTS k -64≤k≤+63 Перейти, если флаг Т установлен if T=1 then PC ß PC + k + 1 Нет 1/2
BRTC k -64≤k≤+63 Перейти, если флаг Т очищен if T=0 then PC ß pc + k + 1 Нет 1/2
BRVS k -64≤k≤+63 Перейти, если флаг переполнения установлен if V=1 then PC ß PC + k + 1 Нет 1/2
BRVC k -64≤k≤+63 Перейти, если флаг переполнения очищен if V=0 then PC ß PC + k + 1 Нет 1/2
BRIE k -64≤k≤+63 Перейти, если глобальное прерывание разрешено if I=1 then PC ß PC + k + 1 Нет 1/2
BRID k -64k £ k £ +63 Перейти, если глобальное прерывание запрещено if I=0 then PC ß PC + k + 1 Нет 1/2

https://otvet.mail.ru/question/184778171


[1] См приложение




Дата: 2018-12-28, просмотров: 239.