При выполнении программы в автоматическом режиме она начинает обнулять ячейки памяти, начиная с 011, доходит до конца памяти и начинает обнулять ячейки, в которых записано начало программы. Обнулив ячейку 004 (в которой находится команда обнуления), она заменяет ее пустой командой NOP, и обнуление прекращается.
Программа 7: Проверка действий команд условных переходов
Таблица №7
Адрес |
Команда |
Мнемоника |
Комментарии |
000 |
061 |
LXI SP |
Инициализация указателя стека |
001 |
200 |
В2 |
|
002 |
000 |
В3 |
|
003 |
361 |
POP PSW |
Извлечение из стека сл. сост. программы |
004 |
* |
* |
Код одной из 8 –ми команд условных |
005 |
000 |
В2 |
переходов . |
006 |
000 |
В3 |
|
007 |
166 |
HLT |
Останов |
200 |
** |
Байт ( состояние регистра признаков ) |
|
201 |
000 |
Байт ( содержимое аккумулятора) |
Перед выполнением программы в память по адресу 200 было записано число 002,что соответствует нулевому значению всех флагов, по адресу 004 – 302, что определяет код команды условного перехода по ненулевому результату. Поскольку это условие выполняется (флаг нулевого результата не установлен), то при пошаговом исполнении мы наблюдаем циклическое исполнение программы.
После этого в ячейку по адресу 200 записали значение 102, что соответствует установке флага Z (бит нуля). После повторного выполнения программы вместо циклического повторения программа перешла в состояние ОСТАНОВ. Переход jnz не состоялся, поскольку флаг Z был установлен.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.