Однообразное нажатие клавиши <F10> довольно скоро может утомить. Для этого вместо многократных нажатий <F10> мы нажали один раз клавишу <F1> — анимация. Программа начала выполняться непрерывно с модификацией соответствующих регистров и довольно скоро закончилась, выполнив команду HLT.
4) ЗАДАНИЕ НА САМОСТОЯТЕЛЬНОЕ ИССЛЕДОВАНИЕ
1. Наблюдая процесс выполнения программы в пошаговом режиме, мы записали последовательность изменения PC и связанные с ним изменения регистровой пары BC.
2. Наблюдая процесс выполнения программы в пошаговом режиме, обратили внимание на перемещения курсора в поле правее регистра PC.
3. Наблюдая процесс выполнения программы в пошаговом режиме, обратили внимание на перемещения курсора в поле правее регистровой пары BC.
4. Наблюдая процесс выполнения программы в пошаговом режиме, обратили внимание выполнение пары команд XTHL в теле внутреннего цик-ла.
5. Наблюдая процесс выполнения программы в пошаговом режиме, обратили внимание состояние флаговых регистров.
1.6. ИЗМЕРЕНИЕ ВРЕМЕНИ ЗАДЕРЖКИ:
Прикладное значение модуля Delay — программируемая задержка. Величину этой задержки необходимо проверить. Это делается путем счета числа тактов выполнения модуля с последующим умножением на длительность одного такта. Для разрешения работы программного счетчика циклов (фактически счетчик отладчика считает машинные такты) мы выполнили следующее:
1. Вернули программу в исходное состояние. Для этого :
• обратились в меню отладчика;
• выбрали раздел "RESET", затем нажали <Enter>;
• выбрали подраздел CPU и вновь <Enter>.
• Программный счетчик перешел в состояние PC = 0000h.
2)Разрешили программный счетчик циклов отладчика (см. метку 5 на рис. 6). Для этого : выбрали раздел "SET" в меню отладчика и нажали <Enter>; далее нашли подраздел "cYcle" и нажали <Enter>. Счетчик циклов активизировался и перешел в состояние 0.
1.6.1. ЗАПУСК ПРОГРАММЫ В РЕЖИМЕ АНИМАЦИИ:
Запуск программы в режиме анимации привел в действие счетчик отладчика, но не дал требуемого результата, потому что при выполнении команды HLT программный счетчик микропроцессора перестает изменяться, но счетчик циклов отладчика продолжает счет. Это приводит к неверному результату, зависящему от момента нажатия на клавишу <F1> для остановки режима анимации. Счетчик циклов отладчика необходимо остановить автоматически, как только завершится подпрограмма Delay. Для этого мы установили точку останова программы.
1.6.2. ЗАПУСК ПРОГРАММЫ С ТОЧКОЙ ОСТАНОВА:
Точки останова программы выполняли следующим образом:
• Выполнили сброс МП: RESET | CPU.
• С помощью клавиш <F4> и <F2> переместили курсор bkpt (в виде тре-угольника, острием к коду программы) по окну дизассемблированного кода программы вниз или вверх.
• Установив курсор bkpt на инструкции HLT, зафиксировали его положение нажатием клавиши <F3>. При этом вид курсора изменился. Зафиксированная точка bkpt изображается теперь как стрелочка в строке программы.
Запустив программу в режиме анимации <F1>. В поле Cycles мы получили время выполнения модуля в машинных тактах . Не забудьте про команду "RESET" для CPU и очистку счетчика Cycles!
Повторно ввели точку останова. Время программируемой задержки мы определили, умножив полученное значение счетчика циклов на 0.5 мкс (для Fclk = 2 МГц) и на 16. Это должно быть значение, близкое к 80 000 мкс.У нас получилось : 9930*0,5*16=79440.
1.6.3. ТОЧНОЕ ЗНАЧЕНИЕ ПРОГРАММНОЙ ЗАДЕРЖКИ:
Проверить точное значение задержки для рабочего варианта программы (длительность задержки равна 5 мс * (C)) можно, изменив значение регистра B в исходном тексте с 0dh на 0d9h.У нас получилось 10074*0,5*16=80592
1.7. РЕДАКТИРОВАНИЕ ТЕКСТА ПРОГРАММЫ
Для внесения указанных изменений в текст мы: 1. Вышли из отладчика — <Ctrl+C>, <Q>, <E>.
2. Перешли в окно с исходным текстом программы.
3. Выполнили в тексте модуля ex5_p0.A85 изменения и сохранили текст.
4. Произвели трансляцию модуля.
5. Осуществили компоновку модуля.
6. Запустили отладчик для повторного исполнения программы.
7. Установили точку останова (как описано ранее).
8. Активизировали и/или обнулили счетчик циклов и запустили модуль - <F1>.
1.7.1. ЗАДАНИЕ НА САМОСТОЯТЕЛЬНОЕ ИССЛЕДОВАНИЕ
1. Выполнили расчет точного значения программной задержки модуля. Вычислили полученную точность.
2. Повторили раздел 1.6.4, но для значения регистра C=5. Вычислили полученное значение задержки. Оценили точность формирования задержки.
3. Представили время задержки в виде выражения с параметрами (С) и (B).
4. Предложили варианты повышения точности программирования задержки.
5. Выполнили расчет и загрузили новые значения параметров ПП Delay для следующих значений временной задержки
Вариант |
Задержка (мкс) |
1 |
5 080 |
2 |
240 002 |
3 |
50 104 |
4 |
20 512 |
5 |
51 300 |
6 |
4654 |
7 |
63800 |
11. Как задается физическая граница файла исходного текста для ас- семблерных программ?
RAM EQU 0800H ; РАСПОЛОЖЕНИЕ ПАМЯТИ ТИПА RAM
ROM EQU 0000H ; РАСПОЛОЖЕНИЕ ПАМЯТИ ТИПА ROM
LEN_RAM EQU 0100H ; РАЗМЕР ПАМЯТИ ТИПА RAM
5. Укажите расположение файлов архивов лабораторной среды
e:\Мои программы\протеус\
c:\stdproVS\
13. Найти все вхождения в исходный текст строки с командой RET.
10
3. Укажите единицы измерения, использованные при вычислении дли- тельности функционирования ПП Delay.
Прикладное значение модуля Delay — программируемая задержка. Величину этой задержки необходимо проверить. Это делается путем счета числа тактов выполнения модуля с последующим умножением на длительность одного такта.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.