Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчетК580.doc
Скачиваний:
8
Добавлен:
16.04.2015
Размер:
624 Кб
Скачать
☆

5.6. Программа 6

Программа позволяет "очистить" (обнулить) заданную область памяти.

На Рис. 3 представлен один из возможных алгоритмов программы "обнуления".

Рис. 2

Перед выполнением программы содержимое ячеек памяти с адресами от Н=000 L=011 до H=000 L=040 ненулевое, поскольку память использовалась в предыдущих программах и не была обнулена.

Текст программы представлен в Таблице 8.

Таблица 8

Адреса

Команды

Мнемоника

Комментарии команд

L=000

227

SUB A

; Обнуление A

001

041

LXI H

; Загрузка начального адреса в указатель памяти

002

011

B2

; мл. байт адреса

003

000

B3

; ст. байт адреса

004

167

MOV M,A

; Обнуление ячейки памяти, адресуемой регистровой парой HL

005

043

INX H

; Формирование адреса следующей ячейки памяти

006

303

JMP

; Безусловный переход по адресу

007

004

B2

; мл. байт адреса

010

000

B3

; ст. байт адреса

При выполнении программы в автоматическом режиме она начинает обнулять ячейки памяти, начиная с 011, доходит до конца памяти и начинает обнулять ячейки, в которых записано начало программы. Обнулив ячейку 004 (в которой находится команда обнуления), она фактически заменяет ее пустой командой, и обнуление прекращается.

5.7. Программа 7

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

Текст программы приведен в Таблице 9.

Таблица 9

Адреса

Команды

Мнемоника

Комментарии команд

H=100 L=200

166

HLT

; Останов

При вводе с клавиатуры команды JMP B2,B3 (код команды 303, 200, 100) в режиме отладки происходит запись в счетчик команд адреса 100 200, при выполнении командыHLTв режиме чтения программы из памяти происходит останов программы.

5.8. Программа 8

Программа позволяет проверить действия всех команд условных переходов.

Текст программы представлен в Таблице 10.

Таблица 10

Адрес

Команда

Мнемоника

Комментарии

000

061

LXISP

; Инициализация указателя стека

001

200

В2

002

000

В3

003

361

POPPSW

; Извлечение из стека слова состояния программы

004

3х2

х

; х=0..7; одна из команд условного перехода

005

000

В2

006

000

В3

007

166

HLT

; Останов

Перед выполнением программы в памяти по адресу H=000 L=200 записано число 002, соответствующее нулевому значению всех флагов в регистре признаков, а по адресу H=000 L=004 - число 302, определяющее код команды условного перехода по ненулевому результату JNZ.

При выполнении программы в пошаговом режиме осуществляется её циклическое выполнение, т.к. выполняется условие перехода (нулевое значение флага Zозначает ненулевой результат).

При изменении данных по адресу H=000 L=200 на число 102 регистр признаков содержит ненулевой бит знака, значения всех остальных флагов равны нулю. В результате такого изменения программа будет выполняться циклически, т.к. по прежнему выполняется условие перехода – ненулевой результат.

Если изменить содержимое ячейки с адресом H=000 L=004 на число 312, программа не будет выполняться циклически, поскольку соответствующее команде JZ(код 312) условие перехода по нулевому результату не выполняется.

Были проверены действия команд условных переходов для каждого из четырех контролируемых признаков результата (нуль, перенос, четность и знак). Переход по признаку межтетрадного переноса АС невозможен.

Коды команд условных переходов и варианты содержимого регистра признаков результата представлены в Таблице 11.

Таблица 11

Команда

Данные по адресу L=004

Данные по адресу L=200

флаги признаков результата

(коды команд условного перехода)

(содержимое регистра признаков)

s z ac p cy

НСУ

322

002

0 0 0 0 0

СУ

332

003

0 0 0 0 1

P0

342

002

0 0 0 0 0

PE

352

006

0 0 0 1 0

P

362

002

0 0 0 0 0

M

372

202

1 0 0 0 0

Диаграммы, иллюстрирующие действие команд условного перехода по признаку нулевого и ненулевого результата JZиJNZ, представлены на Рис. 4 и Рис. 5 соответственно.

Рис. 3 Рис. 4

Замещение в программе команд условного перехода, записанных по адресу L=004, командами условного вызова и командами условного возврата возможно, если указывать в команде условного вызова адрес подпрограммы или если программа является подпрограммой программы более высокого уровня.