Универсальный байтовый буфер


Главная / ЭКВМ / Техническая информация / Функции

5. Универсальный байтовый буфер

 

5.1. Описание

5.1.1. Универсальный байтовый буфер представляет собой внутреннюю структуру данных ЭВМ длиной 256 байт. Универсальный байтовый буфер предназначен для преобразования данных.

 

5.2. Регистры универсального байтового буфера

 

5.2.1. Индексный регистр 0. Задает смещение относительно начала буфера. Может принимать значения от 0 до 255. Имеет доступ по записи и чтению.

 

5.2.2. Индексный регистр 1. Задает смещение относительно начала буфера. Может принимать значения от 0 до 255. Имеет доступ по записи и чтению.

 

5.3. Функции универсального байтового буфера

 

5.3.1. Программирование индексного регистра 0 (R9030)

Запись и чтение значений индексного регистра 0 производится при обращении к регистру памяти с адресом 9030.

При выполнении команды записи значение регистра X стека преобразуются в целое число, ограничиваются до 255 и записывается в индексный регистр.

При выполнении команды чтения стек поднимается, значение из индексного регистра заносится в регистр X стека.

 

5.3.2. Программирование индексного регистра 1 (R9031)

Запись и чтение значений индексного регистра 1 производится при обращении к регистру памяти с адресом 9031. Функция выполняется аналогично п. 5.3.1.

 

5.3.3. Запись и чтение данных по индексному регистру 0 (R9032)

Операция записи и чтения данных по индексному регистру 0 выполняется при обращении к регистру памяти с адресом 9032. При записи содержимое регистра X стека преобразуется в целое, ограничивается до 255 и записывается в байтовый буфер в ячейку, смещенную относительно начала на число байт, находящееся в индексном регистре 0.

При чтении стек поднимается, содержимое этой ячейки записывается в регистр X стека.

 

5.3.4. Запись и чтение данных по индексному регистру 1 (R9033)

Операция записи и чтения данных по индексному регистру 1 выполняется при обращении к регистру памяти с адресом 9033. Функция выполняется аналогично п. 5.3.3, в качестве смещения используется число, находящееся в индексном регистре 1.

 

5.3.5. Запись и чтение данных по индексному регистру 1 с автоинкрементом (R9034)

Операция записи и чтения данных по индексному регистру 1 с автоинкрементом индекса выполняется при обращении к регистру памяти с адресом 9034. Функция выполняется аналогично п. 5.3.4, после чего производится автоматическое увеличение содержимого индексного регистра 1 на единицу. При достижении максимального значения, содержимое индексного регистра 1 обнуляется.

 

5.3.6. Преобразование числа с естественной или плавающей запятой в строку символов (R9035)

Операция производится при выполнении команды записи в регистр памяти с адресом 9035. Значение выводимого числа задается в регистре X стека. Число преобразуется в строку символов с естественной или плавающей запятой аналогично п. 2.3.17, полученная строка последовательно заносится в байтовый буфер. Форма вывода определяется автоматически в зависимости от значения числа.

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

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.

 

5.3.7. Преобразование числа в строку символов в форматированном виде (R9036)

Операция производится при выполнении команды записи в регистр памяти с адресом 9036. Значение выводимого числа задается в регистре X стека, в регистре Y - количество цифр в целой части числа (от 1 до 8), в регистре Z - количество цифр в дробной части (от 0 до 8).

Выводимое число преобразуется в строку символов аналогично п. 2.3.18. Вывод строки в универсальный байтовый буфер производится аналогично п. 5.3.6.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.

 

5.3.8. Преобразование числа в последовательность байтов во внутреннем формате ЭВМ и обратно (R9037)

Операция преобразования производится при выполнении команды записи в регистр памяти с адресом 9037. Число задается в регистре X стека.

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

Последовательность байт представляет число в форме с плавающей запятой (см. табл. 2). Первый байт принимает нулевое значение, если число положительное, или значение 80h, если число отрицательное. Байты со второго по седьмой содержат информацию о двенадцати цифрах мантиссы в упакованном двоично-десятичном формате. Мантисса принимает значения от 1,00000000000 до 9,99999999999.

Каждый байт мантиссы содержит информацию о двух цифрах - по одной в тетраде (4 бита). Подразумевается, что десятичная запятая мантиссы всегда расположена после первой цифры. Старшая тетрада второго байта содержит информацию о разряде единиц и может принимать значения от 1 до 9. Младшая тетрада второго байта и тетрады остальных байтов могут принимать значения от 0 до 9.

Восьмой байт хранит информацию о порядке числа в двоичном дополнительном коде. Порядок может принимать значения от минус 99 до 99, что соответствует значениям восьмого байта в дополнительном коде от 9Dh до 63h.

Исключение составляет число ноль, мантисса и порядок которого имеют нулевые значение.

Таблица 2

Байт Значение Примечание
1 Знак 0 - положительное, 80h - отрицательное
2-7 Мантисса от 1,00000000000 до 9,99999999999 или 0 (BCD формат)
8 Порядок от минус 99 (9Dh) до 99 (63h)

В табл. 3 представлены числа и соответствующая последовательность байт.

Таблица 3

Число Представление на экране калькулятора Последовательность байт
0
" 0                  "
00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
1
" 1                  "
00h, 10h, 00h, 00h, 00h, 00h, 00h, 00h
минус 1
"-1                  "
80h, 10h, 00h, 00h, 00h, 00h, 00h, 00h
0,5
" 5             -01"
00h, 50h, 00h, 00h, 00h, 00h, 00h, 0FFh
минус 0,5
"-5             -01"
80h, 50h, 00h, 00h, 00h, 00h, 00h, 0FFh
1,61803398875
" 1,618034     "
00h, 16h, 18h, 03h, 39h, 88h, 75h, 00h
1,41421356237
" 1,4142136    "
00h, 14h, 14h, 21h, 35h, 62h, 37h, 00h
137,03604
" 137,03604    "
00h, 13h, 70h, 36h, 04h, 00h, 00h, 02h
6,02296·1023
" 6,02296    23"
00h, 60h, 22h, 96h, 00h, 00h, 00h, 17h
1,05443·10-27
" 1,05443   -27"
00h, 10h, 54h, 43h, 00h, 00h, 00h, 0E5h

Обратное преобразование производится при выполнении команды чтения из регистра памяти с адресом 9037. При этом восемь байтов из универсального байтового буфера, начиная с ячейки, смещенной относительно начала на число, находящееся в индексном регистре 0, преобразуются в число. Стек поднимается, полученное число записывается в регистр X стека. Если формат преобразуемой последовательности байтов не соответствует числу, в регистр X стека заносится нулевое значение.

 

5.3.9. Преобразование числа в последовательность байтов в формате FLOAT и обратно (R9038)

Операция преобразования производится при выполнении команды записи в регистр памяти с адресом 9038. Число задается в регистре X стека.

Функция преобразует число в последовательность байт в формате FLOAT (4 байта) и выводит в байтовый буфер, начиная с ячейки, смещенной относительно начала на число, находящееся в индексном регистре 0.

Формат FLOAT представляет числа в форме с плавающей запятой (см. табл. 4). Байты записываются в порядке младший-старший (т.е. первым идёт последний байт мантиссы, последним – байт содержащий бит знака).

Таблица 4

Биты числа Значение Примечание
31 Знак 0-положительное число, 1-отрицательное число
30-23* Порядок Двоичный порядок смещен на 127. Порядок числа 1 равен 7Fh
22-0 Мантисса Старший бит мантиссы не передается. Подразумевается, что он всегда равен 1
* Примечание: размеры битовых полей не кратны байтам. Младший бит двоичного порядка находится в одном байте со старшими битами мантиссы.

В табл. 5 представлены числа и соответствующая последовательность байт.

Таблица 5

Десятичное число Последовательность байт
0 00h, 00h, 00h, 00h
1 00h, 00h, 80h, 3Fh
минус 1 00h, 00h, 80h, 0BFh
2 00h, 00h, 00h, 40h
минус 2 00h, 00h, 00h, 0C0h
3 00h, 00h, 40h, 40h
минус 3 00h, 00h, 40h, 0C0h
4 00h, 00h, 80h, 40h
минус 4 00h, 00h, 80h, 0C0h
0,5 00h, 00h, 00h, 3Fh
минус 0,5 00h, 00h, 00h, 0BFh

Обратное преобразование производится при выполнении команды чтения из регистра памяти с адресом 9038. При этом четыре байта из универсального байтового буфера, начиная с ячейки, смещенной относительно начала на число, находящееся в индексном регистре 0, преобразуются из формата FLOAT в число. Стек поднимается, полученное число записывается в регистр X стека. Если формат преобразуемой последовательности байтов не соответствует числу, в регистр X стека заносится нулевое значение.

 

5.3.10. Преобразование кода команды из памяти программ в мнемонику (R9039)

Операция производится при выполнении команды записи в регистр памяти с адресом 9039. В регистре X стека задается адрес команды в памяти программ (от 0 до 9999). Функция преобразует код команды в строку символов, соответствующих мнемонике команды в латинской транскрипции.

При проведении преобразования учитывается контекст, то есть окружение данной команды в памяти программ ЭВМ, в зависимости от которого интерпретируется код команды.

Вывод строки в универсальный байтовый буфер производится аналогично п. 5.3.6.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.



НПП "СЕМИКО" (383) 271-01-25 (многоканальный)