На рис.2, показана структурна схема программы, которая "заставляет" ячейку памяти считать в двоичном коде от 0 до 255 и затем повторять этот счет.
Сначала один регистр /в данном случае аккумулятор/ устанавливается в 0. Затем содержимое аккумулятора переписывается в ячейку памяти с адресом 8020 и увеличивается на 1. Далее запись в ячейку памяти повторяется снова. В табл.2, приводится листинг программы.
Рис.2. Структурная схема программы счета.
Программа начинается с адреса 8004 вместо 8000, так что потом можно добавить несколько команд в начале программы /в "Микролаб" 8000 - первая ячейка ОЗУ, следовательно, программа пользователя не может начинаться раньше этого адреса/. Первая команда - МVI А, 0.
Листинг программы счета таблица2.
Адрес | Содержимое | Метки | Команды | Комментарии |
ЗЕ | МVI А, 0 | Установка А в "0" | ||
LООР: | SТА 8020 | А— ячейка памяти | ||
80:09 | N0P | |||
800А | 3С | INK А | Прирастить А | |
800В | С3 | JMP LOOP | Переход к LООР | |
800С | ||||
800D |
Она загружает в аккумулятор нули. Следующая команда - SТА 8020 пересылает содержимое аккумулятора в ячейку памяти 8020. Код 32 в ячейке с адресом 8006 указывает, что это команда SТА. Когда процессор считывает этот код, он "понимает", что следующие два байта /адреса 8007 и 8008/ содержат адрес, по которому должно быть записано содержимое аккумулятора /в данном случае 8020/. Следует помнить, что байты адреса записываются в обратном порядке. Эта команда не изменяет содержимого аккумулятора, она просто копирует данные в ячейку памяти. За командой SТА идет команда NОР, чтобы зарезервировать место для последующего использования. Следующая команда - INR А, она увеличивает содержимое аккумулятора. Когда достигается максимальная величина счета /в двоичном коде -1111 1111, в шестнадцатеричном - FF или 255 - в десятичном/, содержимое аккумулятора сбрасывается и дальнейший счет идет с нуля. Это обычный режим работы двоичного счетчика.
|
|
Последняя команда - переход. Эта команда возвращает программу к команде SТА, адрес 8006.
Проведем эксперимент по выполнению описанной программы в шаговом режиме.
1. Введите в память "Микролаб" программу, приведенную в табл.2. Проверьте правильность ее записи в память.
2. Переключите тумблер режима в положение ШАГ.
3. Установите начальный адрес программы /8004/. На двух крайних
правых индикаторах появится команда МVI А /код ЗЕ/.
4. Нажмите кнопку ПУСК. Программа начала выполняться в шаговом режиме. Первая команда выполнена. Теперь на двух крайних правых индикаторах высвечено содержимое регистра признаков, а содержимое аккумулятора появилось на третьем и четвертом индикаторах, считая справа. На этих индикаторах видны нули, так как первая команда выполнена и в аккумулятор занесены нули.
|
|
5. Нажмите кнопку ПУСК. Выполнена команда SТА 8020. Содержимое аккумулятора не изменилось, в ячейке памяти 8020 должны появиться нули. Чтобы проверить содержимое этой ячейки, нажмите кнопки 8, 0, 2, О, а также кнопку УСТ.АД. На двух крайних правых индикаторах - нули. Это содержимое ячейки 8020. Набирая любой другой адрес, можно просмотреть любую ячейку памяти после каждого шага выполнения программы. Набирая соответствующие адреса, можно также просмотреть и содержимое регистров МП /см. табл.1/.
6. Нажмите кнопку ВОЗВР. Тем самым вы вернулись к выполнению вашей программы и выполнили следующую команду /NОР/. На индикаторах опять появилось содержимое регистра признаков и аккумулятора.
7. Нажмите кнопку ПУСК. Выполнена команда INR А. На индикаторе видна единица, что свидетельствует о приращении содержимого аккумулятора.
8. Проверьте содержимое ячейки 8020. В ней находятся нули, так как перепись единицы из аккумулятора в эту ячейку еще не произошла.
9... Нажав кнопку ВОЗВР., вернитесь к выполнению вашей программы.
10. Нажмите кнопку ПУСК, выполнится следующая команда /SТА 8020/, т.е. содержимое аккумулятора переписалось в ячейку 8020.
11. Проверьте содержимое ячейки 8020. Теперь там находится единица.
12. Нажав кнопку ВОЗВР. и далее нажимая кнопку ПУСК, выполните программу по шагам. Проследите, как меняется содержимое аккумулятора.