- •Утверждено
- •1. 1. Краткое описание лабораторного макета
- •1. 3. Полноэкpанный pедактоp
- •1. 4. Резидентный ассемблер
- •1. 5. Сервисные подпрограммы
- •1. 6. Порядок выполнения работы
- •1. 7. Содержание отчета
- •Обработка данных микропроцессорными системами
- •2. 1. Способы адресации
- •2. 2. Варианты индивидуальных заданий
- •2. 3. Порядок выполнения работы
- •2. 4. Содержание отчета
- •Система ввода/вывода, формирование аналоговых сигналов
- •3. 1. Состав и основные функции устройств ввода/вывода
- •3. 2. Формирование аналоговых сигналов
- •3. 3. Порядок выполнения работы
- •3. 4. Содержание отчета
- •Аналого-цифровое преобразование сигналов
- •4. 1. Общие сведения
- •4. 2. Порядок выполнения работы
- •4. 3. Содержание отчета
- •5. 1. Структура системы прерываний и ее программирование
- •5. 2. Порядок выполнения работы
- •5. 3. Варианты индивидуальных заданий
- •5. 4. Содержание отчета
- •6. 1. Общие сведения
- •T2oe – бит разрешения формирования меандра на выводе р1.0.
- •6. 2. Порядок выполнения работы
- •6. 3. Содержание отчета
- •Режимы работы массива программируемых счетчиков
- •7. 1. Общие сведения
- •7. 2. Порядок выполнения работы
- •7. 3. Содержание отчета
- •Перечень команд ассемблера микроэвм семейства mcs51
- •Список команд, влияющих на флаги в регистре psw
- •Содержание
- •197376, С.-Петербург, ул. Проф. Попова, 5
7. 3. Содержание отчета
1. Тексты программ, измеренные длительности сигналов.
2. Объяснить причины возникновения погрешности при измерении периода и длительностей с помощью РСА.
3. Прокомментировать характер осциллограмм по пп. 3 – 5.
Приложение
Перечень команд ассемблера микроэвм семейства mcs51
Список условных обозначений
Rn – регистры общего назначения (n = 0, 1,…,7);
Ri – указатель косвенного адреса (регистры R0 или R1);
ad – адрес ячейки внутренней памяти данных (00H, 01H,…, 7FH);
adr16 – шестнадцатибитовый адрес (имя метки);
d – восьмибитовая константа;
d16 – шестнадцатибитовая константа;
bit – бит в резидентной памяти данных или в регистрах специальных функций;
rel – восьмибитовый адрес при переходе в пределах страницы (имя метки);
Тк – количество машинных циклов выполнения команды.
Список команд, влияющих на флаги в регистре psw
-
Команда
С
OV
AC
Команда
С
OV
AC
ADD
x
x
x
CLR C
0
–
–
ADDC
x
x
x
CPL C
x
–
–
SUBB
x
x
x
ANL C, bit
x
–
–
MUL
0
x
–
ANL C, /bit
x
–
–
DIV
0
x
–
ORL C, bit
x
–
–
DA
x
–
–
ORL C, /bit
x
–
–
RRC
x
–
–
MOV C, bit
x
–
–
RLC
x
–
–
CJNE
x
–
–
SETB C
1
–
–
–
–
–
–
С – флаг переноса, установка и сброс аппаратно и программно;
AC – флаг дополнительного переноса, установка и сброс аппаратно при выполнении команд сложения и вычитания;
OV – флаг переполнения, установка и сброс аппаратно;
«х» – содержимое флага устанавливается по результату выполнения команды;
«–» – команда не влияет на значение флага.
Команды передачи данных |
||||
MOV |
A,Rn |
A Rn |
Пересылка байта в ACC из регистра Rn (n=0..7) |
1 |
MOV |
A,ad |
A ad |
Пересылка байта в ACC из ячейки памяти ad внутреннего ОЗУ |
1 |
MOV |
A,@Ri |
A [Ri] |
Пересылка байта в ACC из ячейки памяти внутреннего ОЗУ, адрес которой находится в Ri (i=0,1) |
1 |
MOV |
A,#d8 |
A d8 |
Запись в АСС константы d8 |
1 |
MOV |
Rn,A |
Rn A |
Пересылка байта в регистр Rn (n=0..7) из ACC |
1 |
MOV |
Rn,ad |
Rn ad |
Пересылка байта в регистр Rn (n=0..7) из ячейки памяти ad внутреннего ОЗУ |
2 |
MOV |
Rn,#d8 |
Rn d8 |
Запись в регистр Rn (n=0..7) константы d8 |
1 |
MOV |
ad,A |
ad A |
Пересылка байта в ячейку памяти ad внутреннего ОЗУ из ACC |
1 |
MOV |
ad,Rn |
ad Rn |
Пересылка байта в ячейку памяти ad внутреннего ОЗУ из регистра Rn (n=0..7) |
2 |
MOV |
add,ads |
add ads |
Пересылка байта в ячейку памяти add внутреннего ОЗУ из ячейки памяти ads внутреннего ОЗУ |
2 |
MOV |
ad,@Ri |
ad [Ri] |
Пересылка байта в ячейку памяти ad внутреннего ОЗУ из ячейки памяти внутреннего ОЗУ, адрес которой находится в Ri (i=0,1) |
2 |
MOV |
ad,#d8 |
ad d8 |
Запись в ячейку памяти ad внутреннего ОЗУ константы d8 |
2 |
MOV |
@Ri,A |
[Ri] A |
Пересылка байта в ячейку памяти внутреннего ОЗУ, адрес которой находится в Ri (i=0,1), из АСС |
1 |
MOV |
@Ri,ad |
[Ri] ad |
Запись в ячейку памяти внутреннего ОЗУ, адрес которой находится в Ri (i=0,1), из ячейки памяти ad внутреннего ОЗУ |
2 |
MOV |
@Ri,#d8 |
[Ri] d8 |
Запись в ячейку памяти внутреннего ОЗУ, адрес которой находится в Ri (i=0,1), константы d8 |
1 |
MOV |
DPTR,#d16 |
DPTR d16 |
Запись в указатель DPTR константы d16 |
2 |
MOVC |
A,@A+DPTR |
A [A+DPTR] |
Пересылка в АСС байта из ячейки памяти программ, адрес которой равен ACC+DPTR |
2 |
MOVC |
A,@A+PC |
A [A+PC] |
Пересылка в АСС байта из ячейки памяти программ, адрес которой равен ACC+(текущее состояний программного счетчика PC) |
2 |
MOVX |
A,@Ri |
A [Ri] |
Пересылка в АСС байта из ячейки памяти внешнего ОЗУ, младший байт адреса которой находится в регистре Ri (i=0,1), старший – порт P2 |
2 |
MOVX |
A,@DPTR |
A [DPTR] |
Пересылка в АСС байта из ячейки памяти внешнего ОЗУ, адрес которой находится в регистре DPTR |
2 |
MOVX |
@Ri,A |
[Ri] A |
Пересылка байта в ячейку памяти внешнего ОЗУ, младший байт адреса которой находится в регистре Ri (i=0,1), старший – порт P2 из АСС |
2 |
MOVX |
@DPTR,A |
[DPTR] A |
Пересылка байта в ячейку памяти внешнего ОЗУ, адрес которой находится в регистре DPTR, из АСС |
2 |
PUSH |
ad |
[SP] ad |
Загрузка байта в стек из ячейки памяти ad внутреннего ОЗУ |
2 |
POP |
ad |
ad [SP] |
Извлечение из стека байта в ячейку памяти ad внутреннего ОЗУ |
2 |
XCH |
A,Rn |
A Rn |
Обмен содержимым АСС и регистра Rn (n=0..7) |
1 |
XCH |
A,ad |
A ad |
Обмен содержимым АСС и ячейкой памяти ad внутреннего ОЗУ |
1 |
XCH |
A,@Ri |
A [Ri] |
Обмен содержимым АСС и ячейкой памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) |
1 |
XCHD |
A,@Ri |
A(0..3) [Ri](0..3) |
Обмен содержимым младших трех бит АСС и младших трех бит ячейкой памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) |
1 |
SWAP |
A |
A(0..3) A(4..7) |
Обмен местами тетрад АСС |
|
Команды арифметических операций |
||||
ADD |
A,Rn |
A A+Rn |
Сложение АСС и содержимого регистра Rn (n=0..7) |
1 |
ADD |
A,ad |
A A+ad |
Сложение АСС и содержимого ячейки памяти ad внутреннего ОЗУ |
1 |
ADD |
A,@Ri |
A A+[Ri] |
Сложение АСС и содержимого ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) |
1 |
ADD |
A,#d8 |
A A+d8 |
Сложение АСС с константой d8 |
1 |
ADDC |
A,Rn |
A A+Rn+CY |
Сложение АСС и содержимого регистра Rn (n=0..7) с учетом переноса CY |
1 |
ADDC |
A,ad |
A A+ad+CY |
Сложение АСС и содержимого ячейки памяти ad внутреннего ОЗУ с учетом переноса CY |
1 |
ADDC |
A,@Ri |
A A+[Ri]+CY |
Сложение АСС и содержимого ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) с учетом переноса CY |
1 |
ADDC |
A,#d8 |
A A+d8+CY |
Сложение АСС с константой d8 с учетом переноса CY |
1 |
DA |
A |
|
Двоично-десятичная коррекция АСС |
1 |
SUBB |
A,Rn |
A A–Rn–CY |
Вычитание из АСС содержимого регистра Rn (n=0..7) с учетом переноса CY |
1 |
SUBB |
A,ad |
A A–ad–CY |
Вычитание из АСС содержимого ячейки памяти ad внутреннего ОЗУ с учетом переноса CY |
1 |
SUBB |
A,@Ri |
A A–[Ri]–CY |
Вычитание из АСС содержимого ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) с учетом переноса CY |
1 |
SUBB |
A,#d8 |
A A+d8+CY |
Вычитание из АСС константы d8 с учетом переноса CY |
1 |
INC |
A |
A A+1 |
Инкремент ACC |
1 |
INC |
Rn |
Rn Rn+1 |
Инкремент регистра Rn (n=0..7) |
1 |
INC |
ad |
ad ad+1 |
Инкремент содержимого ячейки памяти ad внутреннего ОЗУ |
1 |
INC |
@Ri |
[Ri] [Ri]+1 |
Инкремент содержимого ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) |
1 |
INC |
DPTR |
DPTR DPTR+1 |
Инкремент регистра DPTR |
2 |
DEC |
A |
A A+1 |
Декремент ACC |
1 |
DEC |
Rn |
Rn Rn+1 |
Декремент регистра Rn (n=0..7) |
1 |
DEC |
ad |
ad ad+1 |
Декремент содержимого ячейки памяти ad внутреннего ОЗУ |
1 |
DEC |
@Ri |
[Ri] [Ri]+1 |
Декремент содержимого ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) |
1 |
MUL |
AB |
(BA) AB |
Умножение АСС на регистр В. Старший байт результата помещается в регистр В, младший – в АСС |
4 |
DIV |
AB |
A A/B B остаток |
Деление АСС на регистр В. Частное помещается в АСС, остаток – в регистр В |
4 |
Команды логических операций |
||||
ANL |
A,Rn |
A ARn |
Логическое “И” АСС и содержимого регистра Rn (n=0..7) |
1 |
ANL |
A,ad |
A Aad |
Логическое “И” АСС и содержимого ячейки памяти ad внутреннего ОЗУ |
1 |
ANL |
A,@Ri |
A A [Ri] |
Логическое “И” АСС и содержимого ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) |
1 |
ANL |
A,#d8 |
A Ad8 |
Логическое “И” АСС и константы d8 |
1 |
ANL |
ad,A |
ad adA |
Логическое “И” содержимого ячейки памяти ad внутреннего ОЗУ и АСС |
1 |
ANL |
ad,#d8 |
ad add8 |
Логическое “И” содержимого ячейки памяти ad внутреннего ОЗУ и константы d8 |
2 |
ORL |
A,Rn |
A ARn |
Логическое “ИЛИ” АСС и содержимого регистра Rn (n=0..7) |
1 |
ORL |
A,ad |
A Aad |
Логическое “ИЛИ” АСС и содержимого ячейки памяти ad внутреннего ОЗУ |
1 |
ORL |
A,@Ri |
A A[Ri] |
Логическое “ИЛИ” АСС и содержимого ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) |
1 |
ORL |
A,#d8 |
A Ad8 |
Логическое “ИЛИ” АСС и константы d8 |
1 |
ORL |
ad,A |
ad adA |
Логическое “ИЛИ” содержимого ячейки памяти ad внутреннего ОЗУ и АСС |
1 |
ORL |
ad,#d8 |
ad add8 |
Логическое “ИЛИ” содержимого ячейки памяти ad внутреннего ОЗУ и константы d8 |
2 |
XRL |
A,Rn |
A ARn |
“Исключающее ИЛИ” АСС и содержимого регистра Rn (n=0..7) |
1 |
XRL |
A,ad |
A Aad |
“Исключающее ИЛИ” АСС и содержимого ячейки памяти ad внутреннего ОЗУ |
1 |
XRL |
A,@Ri |
A A[Ri] |
“Исключающее ИЛИ” АСС и содержимого ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) |
1 |
XRL |
A,#d8 |
A Ad8 |
“Исключающее ИЛИ” АСС и константы d8 |
1 |
XRL |
ad,A |
ad adA |
“Исключающее ИЛИ” содержимого ячейки памяти ad внутреннего ОЗУ и АСС |
1 |
XRL |
ad,#d8 |
ad add8 |
“Исключающее ИЛИ” содержимого ячейки памяти ad внутреннего ОЗУ и константы d8 |
2 |
CLR |
A |
A 0 |
Сброс АСС (запись 0 в АСС) |
1 |
CPL |
A |
A NOT(A) |
Инверсия всех бит АСС |
1 |
RL |
A |
|
Циклический сдвиг АСС влево |
1 |
RLC |
A |
|
Циклический сдвиг АСС влево через флаг переноса CY |
1 |
RR |
A |
|
Циклический сдвиг АСС вправо |
1 |
RRC |
A |
|
Циклический сдвиг АСС вправо через флаг переноса CY |
1 |
Команды операций с битами |
|||||||
CLR |
C |
CY 0 |
Сброс флага переноса CY |
1 |
|||
CLR |
bit |
bit 0 |
Сброс бита bit |
1 |
|||
SETB |
C |
CY 1 |
Установка флага переноса CY |
1 |
|||
SETB |
bit |
bit 1 |
Установка бита bit |
1 |
|||
CPL |
C |
CY NOT(CY) |
Инвертирование флага переноса CY |
1 |
|||
CPL |
bit |
bit NOT(bit) |
Инвертирование бита bit |
1 |
|||
ANL |
C,bit |
CY CYbit |
Логическое “И” флага переноса CY и бита bit |
2 |
|||
ANL |
C,/bit |
CY CYNOT(bit) |
Логическое “И” флага переноса CY и инверсного значения бита bit |
2 |
|||
ORL |
C,bit |
CY CYbit |
Логическое “ИЛИ” флага переноса CY и бита bit |
2 |
|||
ORL |
C,/bit |
CY CYNOT(bit) |
Логическое “ИЛИ” флага переноса CY и инверсного значения бита bit |
2 |
|||
MOV |
C,bit |
CY bit |
Пересылка в бит переноса CY бита bit |
1 |
|||
MOV |
bit,C |
bit CY |
Пересылка в бит bit бита переноса CY бита bit |
2 |
|||
Команды передачи управления |
|||||||
NOP |
|
PC PC+1 |
Холостая команда |
1 |
|||
JMP |
label |
PC label |
Безусловный переход на метку label |
2 |
|||
LJMP |
label |
|
Безусловный переход на метку label в полном объеме памяти программ |
2 |
|||
AJMP |
label |
|
Безусловный переход на метку label в пределах 2 Кбайт памяти программ |
2 |
|||
SJMP |
label |
|
Безусловный переход на метку label в пределах 256 байт памяти программ |
2 |
|||
JMP |
@A+DPTR |
PC (A+DPTR) |
Безусловный переход по адресу, определяемом как сумма ACC и DPTR |
2 |
|||
JZ |
label |
Переход на метку label, если АСС = 0, иначе – следующая команда |
2 |
||||
JNZ |
label |
Переход на метку label, если АСС ≠ 0, иначе – следующая команда |
2 |
||||
JC |
label |
Переход на метку label, если флаг переноса CY установлен (равен 1), иначе – следующая команда |
2 |
||||
JNC |
label |
Переход на метку label, если флаг переноса CY сброшен (равен 0), иначе – следующая команда |
2 |
||||
JB |
bit,label |
Переход на метку label, если бит bit установлен (равен 1), иначе – следующая команда |
2 |
||||
JNB |
bit,label |
Переход на метку label, если бит bit сброшен (равен 0), иначе – следующая команда |
2 |
||||
JBС |
bit,label |
Переход на метку label, если бит bit установлен (равен 1) с последующим его сбросом, иначе – следующая команда |
2 |
||||
DJNZ |
Rn,label |
Декремент регистра Rn (n=0..7) и переход на метку label, если он стал равен 0, иначе – следующая команда |
2 |
||||
DJNZ |
ad,label |
Декремент содержимого ячейки памяти ad внутреннего ОЗУ и переход на метку label, если оно стало равно 0, иначе – следующая команда |
2 |
||||
CJNE |
A,ad,label |
Переход на метку label, если АСС не равно содержимому ячейки памяти ad внутреннего ОЗУ, иначе – следующая команда |
2 |
||||
CJNE |
A,#d8,label |
Переход на метку label, если АСС не равно константе d8, иначе – следующая команда |
2 |
||||
CJNE |
Rn,#d8,label |
Переход на метку label, если содержимое регистра Rn (n=0..7) не равно константе d8, иначе – следующая команда |
2 |
||||
CJNE |
@Ri,#d8,label |
Переход на метку label, если содержимое ячейки памяти внутреннего ОЗУ, адрес которой находится в регистре Ri (i=0,1) не равно константе d8, иначе – следующая команда |
2 |
||||
CALL |
label |
Вызов подпрограммы, расположенной по адресу label |
2 |
||||
LCALL |
label |
Вызов подпрограммы, расположенной по адресу label в полном объеме памяти программ |
2 |
||||
ACALL |
label |
Вызов подпрограммы, расположенной по адресу label в пределах 2 Кбайт памяти программ |
2 |
||||
RET |
|
Возврат из подпрограммы |
2 |
||||
RETI |
|
Возврат из подпрограммы обработки прерываний |
2 |
||||
