Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТЧЁТ!!!!!!.doc
Скачиваний:
5
Добавлен:
29.09.2019
Размер:
1.3 Mб
Скачать
  1. Выполнение задания.

3.1. Условие задачи.

@55 := 35H + / 7DH

Если R6 + #46 = #35H

Или R7.2 = #0 , то: 29H := #135

5554 := 3DH3CH + @0072Hp

Иначе:

29H.1 := #0, 29H.5 := #1

Переводим исходные коды операндов в шестнадцатеричный вид, т.к. все адреса и данные вводятся в микроконтроллер в шестнадцатеричном виде. (Табл. 1)

Исходные коды операндов

Коды операндов в шестнадцатеричном виде

#46

#2EH

#0

#0H

@55

@37H

#135

#87H

55

37H

54

36H

#1

#1H

Табл. 1. Таблица кодов операндов программы в шестнадцатеричном виде;

3.2.Разработка алгоритма.

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

На рис.4 показана блок-схема алгоритма для варианта задания приведенного выше. Как видно алгоритм имеет разветвленную структуру. В зависимости от результата выполнения первых двух операций, выполнение дальнейших операций происходит по различным ветвям алгоритма.

Рис. 4. Блок-схема алгоритма.

3.3. Текст программы на языке Ассемблер.

Текст программы на языке АССЕМБЛЕР составлен в соответствии с блок-схемой показанной на рис.4.

LJMP STRT ;

Инициализация

STRT:

MOV PSW , 0# ;

Начальные условия

MOV A , R6 ;

ADD A , #46 ;

CLR C ;

SUBB A , #35H ;

JZ , B2 ;

MOV A , R7;

JB ACC.2 , B1 4

Выполнение условий

B2:

MOV A, 7DH ;

CPL A ;

XRL A , 35H ;

MOV R0 , #55 ;

MOV @R0 ,A ;

MOV 29H , #135 ;

SJMP , END ;

Невыполнение условий

B1:

MOV DPTR , # 0072H ;

CLR A ;

MOVC A , @(A+DPTR);

MOV R1 , A ;

MOV A , #1 ;

MOVC A , @(A+DPTR);

MOV R2 , A ;

CLR C ;

MOV A , R1 ;

ADD A , 3CH ;

MOV 54 , A ;

MOV A , R2 ;

ADD A , 3DH ;

MOV 55 , A ;

SETB 29.5H ;

CLR 29.1H ;

LJMP C100H ;

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

Адр

Код

Мет

Мнемокод

Комментарий

Стартовая точка программы

0000

02 00 30

LJMP STRT ;

Переход к началу программы

Инициализация

0030

75 D0 00

STRT:

MOV PSW , 0# ;

Выбор регистрового банка 0

Начальные условия

0033

EE

MOV A , R6 ;

Пересылка в аккумулятор из регистра R6

0034

24 2E

ADD A , #46 ;

Сложение аккумулятора с константой #2EH

0036

C3

CLR C ;

Сброс переноса

0037

94 35

SUBB A , #35H ;

Вычитание из аккумулятора константы #35H и займа

0039

60 04

JZ , B2 ;

Переход на B2, если аккумулятор равен нулю

003B

EF

MOV A , R7;

Пересылка в аккумулятор из регистра R7

003C

20 E1 0D

JB ACC.2 , B1

Переход на В1, если бит равен единице

Выполнение условий

003F

E5 7D

B2:

MOV A, 7DH ;

Пересылка в аккумулятор прямо-адресуемого байта 7DH

0041

F4

CPL A ;

Сброс аккумулятора

0042

65 35

XRL A , 35H ;

Исключающее ИЛИ аккумулятора и прямо-адресуемого байта 35H

0044

E8 37

MOV R0 , #55 ;

Загрузка в регистр константы #37H

0046

F6

MOV @R0 ,A ;

Пересылка в РПД из аккумулятора

0047

75 29 87

MOV 29H , #135 ;

Пересылка по прямому адресу 29H константы #87H

004A

80 1A

SJMP , END ;

Переход внутри страницы

Невыполнение условий

004C

90 00 72

B1:

MOV DPTR, # 0072H;

Загрузка указателя данных

004F

E4

CLR A ;

Сброс аккумулятора

0050

93

MOVC A , @(A+DPTR);

Пересылка в аккумулятор байта из ПП

0051

F9

MOV R1 , A ;

Пересылка в регистр R1 из аккумулятора

0052

74 01

MOV A , #1 ;

Загрузка в аккумулятор константы #1

0054

93

MOVC A , @(A+DPTR);

Пересылка в аккумулятор байта из ПП

0055

FA

MOV R2 , A ;

Пересылка в регистр R2 из аккумулятора

0056

C3

CLR C ;

Сброс переноса

0057

E9

MOV A , R1 ;

Пересылка в аккумулятор из регистра R1

0058

25 3C

ADD A , 3CH ;

Сложение аккумулятора с прямо-адресуемым байтом 3CH

005A

F5 36

MOV 54 , A ;

Пересылка по прямому адресу 36H аккумулятора

005C

EA

MOV A , R2 ;

Пересылка в аккумулятор из регистра R2

005D

25 3D

ADD A , 3DH ;

Сложение аккумулятора с прямо-адресуемым байтом 3DH

005F

F5 37

MOV 55 , A ;

Пересылка по прямому адресу 37H аккумулятора

0061

D2 4D

SETB 29.5H ;

Установка бита

0063

C2 49

CLR 29.1H ;

Сброс бита

0065

02 C1 00

END:

LJMP C100H ;

Конец программы

Табл.2. Таблица текста программы (листинг) в машинных кодах и параллельно на языке Ассемблер с комментариями для каждой операции.

После перевода производён ввод текста откомпилированной программы с пульта учебного МК в его память с помощью команд монитора. Необходимо помнить, что программа должна начинаться с адреса 0030Н.