Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР1_121.doc
Скачиваний:
1
Добавлен:
20.11.2018
Размер:
114.18 Кб
Скачать

1.2.Cовершенствование программы rotate1

Программа ROTATE1 выполняет в цикле 8 сдвигов аккумулятора влево через перенос ( RLC A) и затем последовательно 4 сдвига вправо не затрагивая перенос (RR A). Симулятор ADSIM представляет, например( в исходном состоянии, до входа в цикл), [A]=3Ch. Для анализа сдвига вправо(RR A) или влево( RLC A) необходимо предварительное вычисление содержимого А которое будет получено после выполнения сдвига. Произвести подобное предварительное вычисление для байта, представленного в шестнадцатеричном коде, достаточно затруднительно и требует заполнения табл. 2 (для анализа действий RLC A) и табл.4 (для RR A). Отмеченный недостаток можно устранить путем вывода [A] (после очередного сдвига) в один из 4 портов вывода P0, P1, P2 или P3. В окне ввода-вывода байт информации представлен в восьмибитном формате (двоичная система) и дублируется двумя символами Н-кода, что позволяет производить анализ сдвигов без построения табл.2 и 4. Заметим, что в исходном тексте программы ROTATE1 задействована 1 команда RLC A и 4 раза RR A. Результат сдвига RLC A следует переслать в порт Р0, а сдвинутые значения А последовательно пересылать в Р0, Р1, Р2 и Р3. Усовершенствованному варианту программы присвоим имя ROTATE2.

Из папки misc(c:\aduc\code\845\misc) открыть с помощью блокнота исходный файл rotate1.asm. Сохранить его в папку misc под именем rotate2.asm и внести в исходный текст необходимые изменения. Получить файлы rotate2.lst и rotate2.hex. Проанализировать программу rotate2 на ADSIM в пошаговом режиме. Обратить особое внимание на тот факт, что выполнение очередной команды («клик кнопки Single step») переводит курсор на следующую команду, которая будет выполнена на следующем шаге.

1.3Анализ работы. Программы rotate2 на adsim c использованием точек останова

Из последнего предложения предыдущего раздела (раздел 1.2) следует, что результат очередного сдвига А в восьмибитном формате (двоичном коде) наблюдается в окне порта вывода, в случае, если точкой останова выбран адрес команды следующей за командой вывода.

При необходимости контроля правильности работы фрагментов разработанных программ, целесообразно введение в процесс отладки точек останова. HEX-файл отлаживаемой программы ROTATE2 загружается в ADSIM, в результате чего в окне Program Disassembly появляется содержимое ПП в виде листинга. Левой клавишей мыши «кликают» адрес, где требуется установка точки останова (Breakpoint), что сопровождается выделением строки с выбранным адресом. Установка Breakpoint производится «кликом» кнопки Toggle(чека, клин)Breakpoint, расположенной над столбцом Address.

Адреса в которых установлены точки останова, заключаются в квадратные скобки.

Программа с точками останова запускается кнопкой Execute Program (четвертая кнопка слева в верхнем ряду(кнопка с синим треугольником в виде стрелки)). Программа выполняется с запускаемого адреса и останавливается на ближайшей точке останова. Выполнение продолжается после нового запуска.

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

Снятие точки останова производится следующим образом. «Кликом» выделяется адрес со снимаемой точкой останова и далее «клик» кнопки Toggle Breakpoint убирает квадратные скобки с выделенного адреса (снимает точку останова).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]