«Персональный компьютер укнц» №1 1995 год - страница 8

«Персональный компьютер укнц» №1 1995 год


Скачать 0.83 Mb.
Название «Персональный компьютер укнц» №1 1995 год
страница 8/8
Тип Документы
rykovodstvo.ru > Руководство ремонт > Документы
1   2   3   4   5   6   7   8

Список областей завершается терминальной областью, начинающейся с адреса 77772. Это связано с тем, что подпрограмма выделения памяти фиксирует конец списка, как только адрес очередной области станет отрицательным.

Если потребуется распределять память непосредственно из ПП, то это можно сделать, используя следующие вызовы:

CALL @#176132 — Выделяет память: в R0 — нужное число байтов (если в R0 число меньше нуля, то выделяется максимальная свободная память). На выходе: R0 — объем свободной памяти в байтах (если он меньше запрашиваемого, то память не выделена, кроме случая выделения максимальной памяти), R1 — адрес начала области данных.

CALL @#176300 — Освобождает память, выделенную ранее. Вход: в R0— число освобождаемых байтов, R1—адрес начала области данных, если R1 меньше нуля, то освобождается вся память (значения R0 и R1 должны совпадать с соответствующими значениями при выделении памяти, кроме случая очистки всей памяти). Выход: при ошибке устанавливается знаковый бит, при нормальном завершении знаковый бит очищен.

Имеется также другой способ обращения к подпрограммам, использующим массив параметров (сюда относятся подпрограммы обслуживания дисковода, магнитофона, кассет ПЗУ, памяти ПП): в ОЗУ ЦП с некоторого адреса (можно и в SEL-ОЗУ) записывается необходимый массив параметров, затем его адрес в ОЗУ ЦП заносится по адресу 23200, после чего выполняется одно из следующих действий:

INC @#7062 вызов непосредственно программы в ПЗУ

CALL @#125030

или

INC @#7062 вызов обработчика, используя диспетчер процессов

TRAP 0

Код статуса завершения операции возвращается, как обычно, в первом байте массива параметров.

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

С. Клоков, Д. Ланин,

г. Омск
СуперБейсик для УКНЦ
Факт двухпроцессорности УКНЦ ни для кого не секрет, но вот способы «сознательного» использования периферийного процессора (ПП) для большинства — тайна за семью печатями. Такова, увы, особенность документации к компьютеру. Впрочем, возможности ПП там (а также в журнале «Персональный компьютер УКНЦ» №1.94) описаны достаточно хорошо, но вот связь ПП и ЦП...

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

Немного дополнительных сведений и примеров. Драйвер организует канал связи с адресами (восьмеричными) 450, 452, 454, 456, 176666. Ячейка 450 содержит 1, если ПП готов к приему следующей команды, и 0, если не готов. Ячейка 452 содержит код последней нажатой или отжатой клавиши в формате ПП (см. документацию к УКНЦ). Ячейки 454 и 456 содержат адрес и данные, 176666 и служат для передачи команд драйверу.

Список команд таков:
POKE &O176666,7 инициализация драйвера
POKE &O454,адрес занесение слова в ОЗУ ПП по указанному адресу

POKE &O456,данные

POKE &O176666,1
POKE &O454,адрес чтение слова из ОЗУ ПП по указанному адресу в

POKE &O176666,2 ячейку 456

Z=PEEK(&O456)
POKE &O454,адрес запуск подпрограммы в машинных кодах с ука-

POKE &O176666,3 занного адреса в ОЗУ ПП
POKE &O454,длительность воспроизведение звука

POKE &O456,частота

POKE &O176666,4
POKE &O454,позиция печать символа с кодом ASCII до 255 в позиции от 0 до 39 в

POKE &O456,код служебных строках (при строка=5 — в верхней, при

POKE &O176666,строка строка=6 — в нижней)
Перед подачей любой команды, кроме первой, необходимо проверять готовность.

Драйвер занимает около 0,5 Кб памяти. С помощью СуперБейсика можно, не зная ассемблера, включать в программы звуковые эффекты, изменять начертание символов и т.п. В нашей школе №64 он быстро завоевал популярность и послужил инструментом для создания многих интересных программ.

Автор предлагает обсудить некоторые особенности устройства Бейсик-интерпретатора УКНЦ, рассчитывая, что это будет полезно для читателей как с практической точки зрения (исправление ошибок), так и с точки зрения углубления своих знаний по теории хранения и преобразования информации в ЭВМ.
Е.А. Еремин
Об алгоритмах перевода целых чисел в некоторые системы счисления, реализованные в BASIC-интерпретаторе УКНЦ
Как известно, при работе с компьютером используется несколько систем счисления: входные и выходные данные обычно представляются в привычной человеку десятичной форме, а при хранении в памяти ЭВМ применяется технически более удобный двоичный способ записи. Что бы ни говорили и ни писали о ненужности двоичной системы для рядового пользователя, а у него то и дело возникает необходимость представить, как выглядит число в двоичной или кратных ей более компактных восьмеричной или шестнадцатеричной системах. На мой взгляд, в обучении это еще более актуально, ибо объяснить те или иные принципы работы компьютера в десятичной системе иногда просто невозможно. (Кто не согласен, пусть задумается, для примера, над вопросом: почему за ячейкой памяти с адресом 32767 следует ячейка — 32768 и какой вообще смысл имеет отрицательный адрес ОЗУ?!)

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

В данной заметке подробно рассмотрены алгоритмы перевода целых чисел в двоичную, восьмеричную и шестнадцатеричную форму, реализованные в сетевой вильнюсской версии Бейсика школьного компьютера УКНЦ. Причин такому выбору несколько. Во-первых, в трех этих однотипных алгоритмах автор Бейсик-интерпретатора (или его несколько авторов — фамилии почему-то до сих пор нигде не встречались) умудрился сделать две ошибки, в результате которых функция перевода в шестнадцатеричную форму HEX$() практически неработоспособна, а функция BIN$() «не может справиться» с большим аргументом. Во-вторых, задача вывода числа в каждой из обсуждаемых форм является классической задачей программирования, и почему бы учителю (да и его наиболее способным ученикам) не посмотреть, как она решается? В-третьих, несмотря на очевидные преимущества компьютера IBM, многим школам приходится пока работать именно на более дешевом отечественном УКНЦ...

Итак, вспомнив народную мудрость «Не боги горшки обжигают», начнем обсуждение.

Обратимся к распечатке небольшого участка Бейсика УКНЦ, «посвященного» функциям OCT$(), BIN$() и HEX$() для перевода целого 16-битного числа в восьмеричную, двоичную и шестнадцатеричную системы счисления. Отметим, что результатом всех трех функций является текстовая строка с соответствующим представлением исходного числа.

Рассмотрение будем вести на примере наиболее сложной функции HEX$(); все остальные легко разобрать самостоятельно по аналогии.

Обратимся к адресу 42232, где находится первая команда алгоритма: в регистр микропроцессора R5 заносится константа 4 — количество шестнадцатеричных цифр в представлении 16-битного числа (напомним, что каждая цифра объединяет по 4 бита). Далее следует вызов подпрограммы 43330, которая в строковом пространстве выделяет указанное в R5 количество байт для результата и в случае нехватки памяти прерывает дальнейшее выполнение программы сообщением об ошибке. Избавим читателя от не существенных для алгоритма перевода подробностей работы подпрограммы. Отметим только, что при успешном ее завершении в регистре R1 возвращается адрес первого свободного байта в строковой области ОЗУ, т.е. выделенный нам участок имеет меньшие адреса.

После резервирования памяти командой 42242 из стека извлекается аргумент функции — число, которое следует переводить в HEX-представление. Значение R1 следующей командой запоминается в стек.

И вот, наконец, начинается собственно процесс перевода. Команды 42246—42250 уменьшают на единицу R5 и в случае отрицательного результата осуществляют переход на ошибку. Несложные рассуждения показывают, что эта проверка излишняя, так как получить из 2-байтного R0 более 4 ненулевых шестнадцатеричных цифр в принципе невозможно. Следующий этап — выделение очередной (младшей) цифры в регистре R2 путем сброса старших 12 бит командой очистки битов BIC. Полученное таким способом число в интервале от 0 до 15 анализируется и преобразуется в символ с помощью команд 42260—42274: если значение превышает 9, то формируются латинские заглавные буквы А—F, в противном случае сложением с константой 60 в R2 получается цифра 0—9. Попутно заметим, что если в команде 42266 использовать для сложения не 67, а 7, то можно обойтись без перехода в 42272.

После метки L2630 находится команда записи сформированного символа в строковую область, причем подчеркнем, что адрес в R1 предварительно уменьшается. При таком способе формирования итоговая строка формируется как бы «задом наперед» и старшая цифра в тексте получится первой, а младшая — последней.

Команды 42302—42312 производят подготовку к выделению следующей цифры — выполняют сдвиг числа в R0 на 4 бита вправо. При этом младшие 4 уже использованных бита теряются, а старшие обнуляются. Обратите внимание на одну деталь: самый старший (знаковый) бит очищается особым образом, так как операция ASR сохраняет его значение.

А теперь внимание! Если результат сдвигов ненулевой, т.е. еще остались невыведенные шестнадцатеричные цифры, по команде 42314 следует переход... на метку L2630. При таком алгоритме сформированная ранее самая младшая цифра снова заносится в итоговую строку и цикл повторяется, пока R0 не обратится в ноль. В результате ответ состоит полностью из одинаковых цифр, причем только последняя будет всегда правильной. Теперь понятно, почему так странно работает функция HEX$()? Для исправления ошибки достаточно изменить адрес перехода на 42246: тогда из R0 будет выделена новая цифра и процесс пойдет правильно.

После выхода из цикла по R0=0 команда 42316 вычисляет фактическую длину результирующей текстовой строки (вспомним, что в «нижнем этаже» стека хранился адрес до начала перевода), а следующая команда заносит полученную длину в стек «этажом выше». Затем происходит переход на дальнейшую обработку результата.

Совершенно аналогично, только еще проще, работают функции OCT$() и BIN$(): дело в том, что в двоичном и восьмеричном представлении нет никаких других символов, кроме цифр. Предлагаем читателю самостоятельно разобрать приведенный текст программы по аналогии.

Обратим внимание на еще одну интересную деталь — на максимальное количество символов в текстовом результате. Для OCT$() их 6, что, конечно, правильно. Для BIN$() их затребовано 16 (см. команду 42160). Это было бы так, если бы 16 было десятичным числом. Но на самом деле значение констант в распечатке приведено в восьмеричной системе. Итак, резервируется место не под 16, а под 14 двоичных цифр! А что будет, если их получится больше? Проверили? Правильно, появилось сообщение «Кончилась память строк». Сработало ограничение в 42176, которое при отсутствии ошибки в программе интерпретатора сработать не могло.

Так работают алгоритмы перевода целых чисел в различные системы счисления в Бейсике УКНЦ. В заключение приведем исправления, которые устраняют замеченные ошибки:

АДРЕС

СТАРОЕ СОДЕРЖИМОЕ

НОВОЕ СОДЕРЖИМОЕ

ПРИМЕЧАНИЕ

42162

16

20

функция BIN$()

42314

1371

1354

функция HEX$()

Примечание. Все значения в таблице даны в восьмеричной системе.
(судя по всему – не хватает не менее 2-х первых строк (первой идет подпрограмма @OCT) и куска в конце ...)
216 jsr pc,43330 [выделить]

MOV (SP),R0 ;42112 11600 аргумент в R0

MOV R1,-(SP) ;42114 10146 запомнить адрес

L2622: DEC R5 ;42116 5305 уменьшить счетчик

BMI L2621 ;42120 100525 переход по минусу на ошибку

MOV R0,R2 ;42122 10002

L3247: BIC #L1564,R2 ;42124 42702,177770 очередная цифра

АDD #L4,R2 ;42130 62702,60

MOVB R2,-(R1) ;42134 110241 запомнить символ

CLC ;42136 241 подготовка

ROR R0 ;42140 6000 к выделению

ASR R0 ;42142 6200 следующей

ASR R0 ;42144 6200 цифры

ВNE L2622 ;42146 1363 если не 0 - продолжить

SUB R1,(SP) ;42150 160116 вычислить длину

MOV R1,L113(SP) ;42152 10166,2 и запомнить

BR L2442 ;42156 511 br 42402
;@BIN$

L2220: MOV #L403,R5 ;42160 12705,16 ??? 14 байт в рез. строке

JSR PC,L2620 ;42164 4767,1140 jsr pc,43330 [выделить]

MOV (SP),R0 ;42170 11600 аргумент в R0

MOV R1,-(SP) ;42172 10146 запомнить адрес

L2623: DEC R5 ;42174 5305 уменьшить счетчик

BMI L2621 ;42176 100476 по минусу на ошибку

MOV R0,R2 ;42200 10002

BIC #L472,R2 ;42202 42702,177776 очередная цифра

ADD #L4,R2 ;42206 62702,60

MOVB R2,-(R1) ;42212 110241 запомнить символ

CLC ;42214 241 подготовка к выделению

ROR R0 ;42216 6000 следующей цифры

BNE L2623 ;42220 1365 если не 0 - продолжить

SUB R1,(SP) ;42222 160116 вычислить длину

MOV R1,L113(SP) ;42224 10166,2 и запомнить

BR L2442 ;42230 464 br 42402
;@HEX

MOV #L114,R5 ;42232 12705,4 4 байта в рез. строке

JSR PC,L2620 ;42236 4767,1066 jsr pc,43330 [выделить]

MOV (SP),R0 ;42242 11600 аргумент в R0

MOV R1,-(SP) ;42244 10146 запомнить адрес

DEC R5 ;42246 5305 уменьшить счетчик

BMI L2621 ;42250 100451 переход по минусу на ошибку

MOV R0,R2 ;42252 10002

BIC #L2624,R2 ;42254 42702,177760 очередная цифра

CMP R2,#L2625 ;42260 20227,11 сравнить с 9

BLE L2626 ;42264 3403 меньше 9 - цифра

ADD #L2627,R2 ;42266 62702,67 +67 (A-F)

BR L2630 ;42272 402

L2626: ADD #L4,R2 ;42274 62702,60 +60 (0-9)

L2630: MOVB R2,-(R1) ;42300 110241 запомнить символ

CLC ;42302 241 подготовка

ROR R0 ;42304 6000 к выделению

ASR R0 ;42306 6200

ASR R0 ;42310 6200 следующей цифры

ASR R0 ;42312 6200

BNE L2630 ;42314 1371 ??? нужен переход на 42246

SUB R1,(SP) ;42316 160116 вычислить длину

MOV R1,L113(SP) ;42320 10166,2 и запомнить

BR L2442 ;42324 426 br 42402

MOV R1,L113(SP) ;42320 10166,2 и запомнить

BR L2442 ;42324 426 br 42402


1 В данной статье, публикация которой начата в предыдущем номере журнала, сохранена сквозная нумерация таблиц и рисунков. — Прим. ред.
1   2   3   4   5   6   7   8

Похожие:

«Персональный компьютер укнц» №1 1995 год icon Ru Персональный компьютер, или "Азбука pc" для начинающих http
Олимпиады и контрольно-измерительные материалы по информатике и ит олимпиадная информатика
«Персональный компьютер укнц» №1 1995 год icon Инструкция по самостоятельной установке почтового сертификата на...
Если срок действия Вашего почтового сертификата подходит к концу, необходимо выполнить следующие действия для его перевыпуска
«Персональный компьютер укнц» №1 1995 год icon Инструкция по самостоятельной установке почтового сертификата на...
Когда срок действия Вашего почтового сертификата подходит к концу, необходимо выполнить следующие действия для его перевыпуска
«Персональный компьютер укнц» №1 1995 год icon Требования к продукции
Персональный компьютер Lenovo ThinkCentre Tiny M700 I5 6400T 4Gb 500gb 7200 Intel hd nodvd wi-Fi usb kb&Mouse dos (10HY003tru) или...
«Персональный компьютер укнц» №1 1995 год icon Назначение
Контроллер srtr d предназначен для использования в составе терминала платежных или иных систем имеющих в своем составе персональный...
«Персональный компьютер укнц» №1 1995 год icon Руководство обучающегося в системе дистанционного обучения персональный...
Руководство предназначено для обучающихся в системе дистанционного обучения «Персональный учитель 0», работающих с программой доступа...
«Персональный компьютер укнц» №1 1995 год icon «Радиационный фон и методы его измерения»
Оборудование: компьютер, интерактивная доска, проектор, типовой персональный дозиметр, презентации, раздаточный материал (Основные...
«Персональный компьютер укнц» №1 1995 год icon Книга raznprogram xls
Для работы с ней надо иметь персональный компьютер типа не ниже Pentium II с операционной системой не ниже Windows 98, оснащенный...
«Персональный компьютер укнц» №1 1995 год icon Руководство и персональный состав педагогических работников
Уровень образования (впо, спо, среднее общее образование), наименование оо, квалификация по диплому, год окончания)
«Персональный компьютер укнц» №1 1995 год icon Цели урока
Марс на базе Нато произошла авария, из-за которой был поврежден компьютер-помощник. Путешественник «А» связывается с командным центром...
«Персональный компьютер укнц» №1 1995 год icon Методическое пособие содержит дидактические и методические материалы...
«Партнерство в образовании» и Windows Server 2003, организации и работы в коллективе службы технической поддержки. Этот курс по настройке...
«Персональный компьютер укнц» №1 1995 год icon Инструкция по охране труда для работников ниу вшэ санкт-Петербург...
Работник ниу вшэ – Санкт – Петербург (далее по тексту Филиал) допускается к самостоятельной работе на персональных электронно вычислительных...
«Персональный компьютер укнц» №1 1995 год icon Компьютер и дети. Компьютер друг или враг?
Показать возможность использования компьютера в учебной деятельности и в домашних условиях
«Персональный компьютер укнц» №1 1995 год icon Предметный указатель к тому 1, 1995 содержание тома 1, 1995
Разработка прогрессивных технологических процессов и оборудования пере­настраиваемых многоассортиментных производств синтетических...
«Персональный компьютер укнц» №1 1995 год icon Карманный персональный компьютер (кпк)
Программа Outlook 2002 может содержаться на компакт-диске с ActiveSync. Если у вас нет программы Outlook, установите программу Microsoft...
«Персональный компьютер укнц» №1 1995 год icon Папка учителя по самообразованию
Образование (название учебного заведения и год окончания) высшее, Аркалыкский педагогический институт Им. И. Алтынсарина, 1995 г

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск