Программа.
Как видно, в этом случае программа значительно сократилась. Автор «Е97» реализовал некоторый набор полезных подпрограмм. Эти подпрограммы размещаются в ПЗУ, которое начинается с адреса 4000(16). Среди этих программ особо стоит выделить те, которые позволяют работать с клавиатурой и дисплеем, т.е. организовывать ввод-вывод данных. Перечислим их: 1. Вывод целого числа (подпрограмма \Уп1е1п1е§ег). Адрес начала — 4068. В К1 — выводимое число, в КЗ — адрес области памяти, свободной от программы и данных (организация буфера — для хранения промежуточных значений). Содержимое регистров КО—КЗ сохраняется. 2. Вывод строки на дисплей (подпрограмма \Уп1е81пп§). Адрес начала — 4078. В К2 — число символов в выводимой строке, в КЗ — йдрес начала строки. Содержимое регистров КО, К1 сохраняется, а К2, КЗ — нет. 3. Вывод символа на дисплей (подпрограмма Ои18уш). Адрес начала — 4088. В КО — выводимый символ. Содержимое КО—КЗ сохраняется. 4. Ввод символа с эхо-печатью (подпрограмма 1п8ушЕ). Адрес начала — 40РА. В КО — вводимый символ, содержимое регистров К1—КЗ сохраняется. 5. Ввод целого числа (подпрограмма 1при1_1п1е§ег). Адрес начала — 4108. В К1 — введенное число, все другие регистры сохраняются. 6. Вывод логического значения (подпрограмма \Уп1еВоо1еап). Адрес начала — 40С4. При К1 = 0 выводится РАЬ8Е, иначе — ТК11Е. В К1 — значение. КО, К1 сохраняются, а К2, КЗ — нет. 7. Вывод текста, находящегося после вызова подпрограммы (п/п \Уп1еРа$81пщ>). Адрес начала — 40БС. КО, К1 — сохраняются, а К2, КЗ — нет. 8. Вывод целого числа (второй вариант подпрограммы, описание отсутствует в авторском изложении «Е97» — п/п Ке\у\Уп1е1п1е§ег). Адрес начала — 4152. В К1 — выводимое число; КО = 0 — выравнивание выводимого числа по левому краю, во всех других случаях — по правому. Содержимое регистров КО—КЗ сохраняется. Рассмотрим пример, где организуется ввод данных с клавиатуры и результат выводится на экран. Пример 12. Вычислить значение выражения и= х3у— у2%+ 12хуъ организовав ввод данных с клавиатуры и вывод результатов на экран. При решении необходимо позаботиться о распределении памяти с учетом того, что некоторые регистры, а также часть ОЗУ используется подпрограммами ввода- вывода. План решения: 1. Ввод х, у, х. 2. Р: = х2. 3. Я: = 12г. 4. Я: = Р+ Я. 5.Я: =Ях. в.8~у1. 7. Я: = Я -5. 8. [/: =у Я. 9. Вывод а 10. Стоп. Распределение памяти. Значения х, у, г после ввода разместим в памяти по последовательным адресам 80 — 84(16). Регистры К1, К2 будем использовать для хранения величин Р, Я, 5. Значение Vполучим в К1. Кроме того, некоторые регистры будут использованы стандартными подпрограммами (см. выше). Указатель стека установим для удобства на последний адрес ОЗУ — РЕ(16). Тесты: \) х = 1, у = 2, г = 3; и = 62; 2) х = —1, у = —2, г = ~3; и = —58.
|