 
        
        - •Лабораторная работа №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.


 
			

 :
:




 ет
ет