
- •Лабораторная работа №121
- •1.Анализ и совершенствование демонстрационных программ
- •1.1.Теоретический анализ работы программы rotate1
- •1.2.Cовершенствование программы rotate1
- •1.3Анализ работы. Программы rotate2 на adsim c использованием точек останова
- •2.Рассмотрение возможностей различных видов адресации
- •Раздел 2. Условие задачи1, рис.4, решение пунктов 2.1, 2.2, материалы по пункту 2.5. Вопросы по защите лабораторной работы
- •Вопросы по допуску к выполнению лабораторной работы
Лабораторная работа №121
1.Анализ и совершенствование демонстрационных программ
В папке misc1(c:\aduc\code\845\misc1) открыть с помощью блокнота исходный файл rotate.asm. Сохранить его в папку misc под именем rotate1.asm. По указанию преподавателя предельно упростить исходный файл до вида показанного на рис.1.
;ROTATE1.ASM
$MOD52 ; Use 8052 predefined Symbols
CSEG ;Начало сегмента кодов
; метка м н е м о н и к а ; комментарий
ORG 0000h ;0000h – адрес след.команды
MOV R2,#08H ;
MOV A,#3Ch ;
M1: RLC A ;
DJNZ R2,M1 ;
NOP ;
RR A ;
RR A ;
RR A ;
RR A ;
END
Рис.1. Исходный файл программы ROTATE1.ASM(язык ASSEMBLER)
Первые 5 команд программы ROTATE1.ASM образуют программную конструкцию «Простейший цикл» (см. рис.2). Записать программу из рис.1 в столбец В рис.2 и сопроводить команды, входящие в цикл комментариями (в терминах программной конструкции «Простейший цикл»).
В программе ROTATE1 основное действие цикла выполняется командой RLC A (сдвиг аккумулятора влево через перенос). Изобразить эту процедуру в табл.1, а также продемонстрировать действие RLC A в цикле путем заполнения 11 строк табл.2.
1.1.Теоретический анализ работы программы rotate1
Описание действия команды RLC A
Таблица 1
C |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
=[A] |
В строке 4 (см.рис.2) может находиться любая из множества команд (28 команд) входящих в группу «Команды передачи управления по условию» (см. табл.8.5, часть 1). Все они имеют блок-схему в виде ромбика (см.поле 4А на рис.2). В программе ROTATE1 проверку: «Циклы все?» осуществляет ко-
|
1 |
Установка начальных параметров цикла |
|
|
|
М |
2 |
Основное действие цикла |
|
М1: |
|
|
3 |
Установка параметров следующего цикла |
|
|
|
н |
4 |
Проверка: Циклы все? |
|
DJNZ R2, M1(rel) |
DEC R2, если NZ идти на М1, иначе NOP |
да |
5 |
|
NOP |
Выход из цикла |
а) блок- б)назначение в) программа г) комментарии
схема блоков
Рис.2.Программная конструкция «Простейший цикл»
для программы ROTATE1
манда DJNZ R2, rel (DEC R2(уменьшение R2 на единицу) и затем
PC<=[PC0+2]+rel^NZ). Если условие выполняется([R2]≠0, NZ=1), то
PC<=[PC0+2]+rel = М1, иначе ([R2]=0, NZ=0), PC<=[PC0+2]=адрес следующей команды. Таким образом выход из цикла происходит по нулю в R2, следовательно R2 является счетчиком циклов(т.е. в поле 1В, рис2, должна быть команда, задающая содержимое R2(число выполняемых циклов)).
Действие RLC A в цикле
Таблица 2
|
R2 |
|
C |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
[A] |
Исходное до цикла |
08h |
|
0 |
|
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
3Ch |
После 1 RLC A |
|
|
|
|
|
|
|
|
|
|
|
|
|
После 2 RLC A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
После 8 RLC A |
|
|
|
|
|
|
|
|
|
|
|
|
|
До выполнен. NOP |
|
|
|
|
|
|
|
|
|
|
|
|
|
Закончив все действия цикла, после команды NOP, программа (см.рис.1) выполняет 4 команды RR A. Изобразить эту процедуру в табл.3, а также продемонстрировать действие RR A путем заполнения 5 строк табл.4.
Описание действия команды RR A
Таблица 3
C |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
=[A] |
Иллюстрация действия четырех команд RR A
Таблица 4
|
|
C |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
[A] |
После NOP |
|
|
|
|
|
|
|
|
|
|
|
|
После 1 RR A |
|
|
|
|
|
|
|
|
|
|
|
|
После 2 RR A |
|
|
|
|
|
|
|
|
|
|
|
|
После 3 RR A |
|
|
|
|
|
|
|
|
|
|
|
|
После 4 RR A |
|
|
|
|
|
|
|
|
|
|
|
|
Исходный файл находится по адресу:
c:\aduc\code\845\misc\rotate1.asm.
Запустить программу ASSEMBLER ASM51 указанием пути: c:\aduc\asm51\
asm51.exe и ответить на запрос:
Source file drive and name[.asm]: c:\aduc\code\845\misc\rotate1.asm .
При отсутствии ошибок, на черном экране мелькает надпись:
ASSEMBLY COMPLETE, 0 ERRORS FOUND
ASM51 при успешном ассемблировании в папку misc добавляет файлы с именами ROTATE1.LST(листинг) и ROTATE1.HEX (загрузочный модуль).
Открыть файл ROTATE1.LST и ознакомиться с сообщением об ошибках. При наличии ошибок, внести исправления в исходный файл и повторить процесс ассемблирования. Открыть файл ROTATE1.HEX и познакомиться с его содержимым. Сопоставляя ROTATE1.LST и ROTATE1.HEX выделить в последнем коды команд и их адреса (см.также рис.22 в раздаточном материале «часть 2»).
Запустить симулятор ADSIM и проиграть в пошаговом режиме ROTATE1.HEX, сравнивая при этом полученные теоретические результаты (см.табл.2 и 4)с практическими данными, полученными на ADSIM.