ЮТ-88/ЮТ-УМ 03-89/ЮТ-88 в роли калькулятора

Материал из Emuverse
Версия от 11:15, 11 января 2008; Panther (обсуждение | вклад) (http://retro.h1.ru/UT88/CPU/Calc.php)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Источник: http://retro.h1.ru/UT88/CPU/Calc.php

Продолжаем публикацию материалов по персональному компьютеру «ЮТ-88». Тем, кто уже собрал первый модуль и хотел бы использовать его в деле, предлагаем библиотечку математических программ, которую можно использовать для школьных занятий. В процессе освоения компьютера, думаем, вам пригодится и «Словарь программиста». Он поможет вам ориентироваться в сложной терминологии, на которую так щедра литература о компьютерах и программировании. Тем же, кто решил, как следует разобраться в принципах работы отдельных узлов микроЭВМ, советуем заглянуть в справочную подборку "Микросхемы для «ЮТ-88». Там подробно рассказано, как устроена и работает каждая из них.

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

Занимает она всего 2 Кбайта ОЗУ. Для работы программы используются ячейки памяти с адресами С361— C37F. В них заносятся исходные данные, промежуточные вычисления и окончательный результат. Исходные данные записываются в форме однобайтных и двухбайтных чисел с фиксированной запятой в прямом коде. Знак числа записывается в старшем разряде. Если в нем записан «0», то число положительное, а если «1»— отрицательное. У двухбайтного числа в 15-м разряде записывается бит знака, а в 14-м — бит переполнения. Диапазон представления чисел однобайтных от FFH до 7FH или от —127 до + 127, а двухбайтных — от BFFFH до 3FFFH (от −16 383 до +16 383).

Для чисел с плавающей запятой используются трехбайтные числа. Первый их байт определяет порядок, второй и третий — мантиссу. Двоичное число, представляемое в формате с плавающей запятой, можно вычислить по формуле:

D= (-1)s * 2e (-1)p * f
  • гдеР — значение знакового бита порядка,
  • S—бит знака (если S=0— число положительное, а если S= 1 — отрицательное),
  • е — значение порядка,
  • f—значение мантиссы.

Порядок показывает число двоичных позиций, на которые нужно сдвинуть мантиссу, чтобы число в ячейках памяти было представлено в форме нормализованного числа, которое меньше единицы, с первым значащим разрядом после запятой. Если знак порядка «0», то мантисса сдвигается влево, а если знак порядка «1», то вправо. Диапазон представления чисел в этом случае составляет от 10-355до 1035.

Подпрограммы библиотеки делятся на основные и обслуживающие. Знакомство с библиотекой мы начнем с последних.

Нормализация мантиссы

Первая обслуживающая подпрограмма—нормализация мантиссы. Трехбайтное число из ячеек памяти С371Н, С372Н, С373Н извлекается и нормализуется путем поразрядного сдвига мантиссы. При этом сдвиг мантиссы на 1 бит вправо сопровождается увеличением порядка на единицу, а сдвиг мантиссы на 1 бит влево — уменьшением порядка на единицу. В результате нормализации в исходные ячейки памяти записывается число, у которого 14-й разряд мантиссы равен нулю, а 13-й—единице. Пусковой адрес подпрограммы 092DH.

Нормирование двух чисел

Вторая обслуживающая подпрограмма производит относительное нормирование двух чисел. Это требуется, например, для сложения чисел в формате с плавающей запятой, когда необходимо, чтобы числа имели равные порядки. Подпрограмма извлекает из ячеек памяти С371Н, С372Н, С373Н первое число, а из ячеек памяти С374Н, С375Н, С376Н второе и сравнивает их порядки по абсолютному значению. Больший порядок записывается вместо меньшего, а число с меньшим порядком сдвигается вправо без округления на величину, равную разности этих порядков. Пусковой адрес подпрограммы 0877Н.

Третья обслуживающая подпрограмма предназначена для передачи трехбайтного числа из памяти в регистры А — В — С. Начальный адрес трехбайтного числа должен находиться в регистровой паре HL. Пусковой адрес 0А8СН.

Четвертая обслуживающая подпрограмма пересылает из регистров А — В — С три байта в ОЗУ по начальному адресу в регистровой паре HL. Пусковой адрес 0А92Н.

Теперь расскажем о подпрограммах арифметических операций.

Сложение чисел

  1. Сложение однобайтных чисел со знаком. Слагаемые находятся по адресам С371Н и С374Н, результат размещается в ячейке ОЗУ С374Н. Пусковой адрес 0849Н.
  2. Сложение двухбайтных чисел со знаком. Слагаемые находятся по адресам С372Н, С373Н (первое слагаемое) и по адресам С375Н и С376Н, сумма размещается в ячейки ОЗУ С375Н и С376Н. Пусковой адрес
  3. Сложение трехбайтных чисел с плавающей запятой. Первое слагаемое заносится в ячейки С371Н, С372Н, С373Н, а второе слагаемое в ячейки С374Н, С375Н, С376Н, результат сложения помещается в ячейки с адресами С374Н, С375Н, С376Н. Пусковой адрес 0987Н.

Умножение чисел

  1. Умножение двухбайтных чисел со знаком. Сомножители находятся в памяти по адресам С372Н, С373Н и С375Н, С376Н. Произведение заносится в ячейки С375Н, С376Н. Пусковой адрес 0994Н.
  2. Умножение трехбайтных чисел с плавающей запятой. Сомножители заносятся в ячейки памяти С371Н, С372Н и С373Н, а также С374Н, С375Н и С376Н. Произведение находится в ячейках С374Н, С375Н и С376Н. Пусковой адрес 09ЕСН.

Деление чисел

  1. Деление двухбайтных чисел с фиксированной запятой. Делимое и делитель находятся в памяти по адресам С375Н, С376Н, С372Н, С373Н. Частное в ячейках С375Н и С376Н. Пусковой адрес 09F9H. # Деление чисел с плавающей запятой. Делимое находится в адресах С374Н, С375Н, С376Н, делитель в адресах С371Н, С372Н, С373Н. Частное заносится в адреса С374Н, С375Н, С376Н. Пусковой адрес 0A6FH.

Показательная функция

Показатель степени заносится в ячейку С364, а основание степени в ячейки памяти С371Н, С372Н, С373Н. Результат записывается в ячейки памяти С374Н, С375Н, С376Н. Пусковой адрес 0В08Н.

Логарифмическая функция (натуральный логарифм)

Аргумент заносится в ячейки ОЗУ С361Н. С362Н, С363Н, а значение функции записывается в ячейки ОЗУ С368Н, С369Н, С36АН. Пусковой адрес 0В6ВН.

Тригонометрические функции

  1. SIN X (0<Х<^/4). Аргумент заносится в ячейки ОЗУ С361Н, С362Н, С363Н, а значение функции С355Н, С366Н, С367Н. Пусковой адрес 0С87Н.
  2. COS X (0<Х< я/,). Аргумент заносится в ячейки ОЗУ С361Н, С362Н, С363Н, а значение функции С365Н, С366Н, С367Н. Пусковой адрес 0D32Н.
  3. TG Х (0<Х<Д/4). Аргумент заносится в ячейки ОЗУ С361Н, С362Н, С363Н, а значение функции в ячейки С374Н, С375Н, С376Н. Пусковой адрес 0Е47Н.
  4. CTGX (0<Х<Д/4). Аргумент заносится в ячейки ОЗУ С361Н, С362Н, С363Н, а значение функции заносится по адресам С374Н, С375Н, С376Н. Пусковой адрес 0F61H.
  5. ARC TG X (0<Х<1). Аргумент заносится в ячейки ОЗУ С361Н, С362Н, С363Н, а значение функции С365Н, С366Н, С367Н. Пусковой адрес 0Е75Н.
  6. ARC SIN X, (—1<Х<$1). Аргумент заносится в ячейки ОЗУ С361Н, С362Н, С363Н, а значение функции С365Н, С366Н, С367Н. Пусковой адрес 0D47H.
  7. ARC COS X (-1<Х<1). Аргумент заносится в ячейки ОЗУ С361Н, С362Н, С363Н, а значение функции в ячейки С365Н, С366Н, С367Н. Пусковой адрес 0Е40Н.
  8. ARC CTG (0<Х<1). Аргумент заносится в ячейки ОЗУ С361Н, С362Н, С363Н, а значение функции в ячейки ОЗУ С365Н, С366Н, С367Н. Пусковой адрес 0F8FH.
Схема подключения ПЗУ

Листинг библиотечки перепишите в микросхему ПЗУ.

Отсканировано с журнала «ЮТ для умелых рук» № 3 1989 г.
Отредактировано Лесных Ю. И. 1999 г.


Материалы