Программный раздел содержит наборы подпрограмм на языке ассемблера для микропроцессоров 8080 и 8085. Каждой подпрограмме предпосланы введение и комментарии; за каждой подпрограммой следует по крайней мере один пример ее использования. Введение содержит следующую информацию: назначение подпрограммы, процедуру ее выполнения, используемые регистры, время выполнения, размер памяти, необходимый для программы и ее данных, а также специальные случаи, входные и выходные условия.
Каждая подпрограмма сделана настолько общей, насколько это возможно.
Во всех подпрограммах был использован следующий метод передачи параметров:
Первый 8-разрядный параметр передается в аккумуляторе, второй 8-разрядный параметр- регистре В, а третий- в регистре С.
Первый 16-разрядный параметр передается в регистрах Н и L, при этом старший байт- в регистре Н. Второй 16-разрядный параметр передается в регистрах D и Е со старшим байтом в D.
Большее число параметров передается в стеке, прямо или косвенно. Считается, что вход в подпрограмму осуществляется с помощью команды CALL, которая помещает адрес возврата в вершину стека и, следовательно, выше параметров.
|
|
Для большинства коротких подпрограмм было определено время выполнения.
Приведенная здесь документация всегда содержит по крайней мере один типовой пример, показывающий приблизительное или максимальное время выполнения.
Приводятся следующие подпрограммы:
Преобразование кодов
* Преобразование двоичных данных в код BCD;
* Преобразование данных в коде BCD в двоичные;
* Преобразование двоичных данных в шестнадцатеричные в коде ASCII;
* Преобразование шестнадцатеричных данных в коде ASCII в двоичные;
* Преобразование двоичного числа в десятичное к коде ASCII;
* Преобразование десятичного числа в коде ASCII в двоичное;
* Трансляция строчных букв в прописные;
* Преобразование кода символа из системы ASCII в систему EBCDIC;
* Преобразование кода символа из системы EBCDIC в систему ASCII.
Работа с массивами и индексирование
* Заполнение памяти;
* Пересылка блоков;
* Индексирование двухмерного массива байтов;
* Индексирование двухмерного массива слов;
* Индексирование N- мерного массива;
Арифметические операции
* 16- разрядное вычитание;
* 16- разрядное умножение;
* 16- разрядное деление;
* 16- разрядное сравнение;
* Двоичное сложение с повышенной точностью;
* Двоичное вычитание с повышенной точностью;
* Двоичное умножение с повышенной точностью;
* Двоичное деление с повышенной точностью;
* Двоичное сравнение с повышенной точностью;
* Десятичное сложение с повышенной точностью;
|
|
* Десятичное вычитание с повышенной точностью;
* Десятичное умножение с повышенной точностью;
* Десятичное деление с повышенной точностью;
* Десятичное сравнение с повышенной точностью;
Работа с разрядами и сдвиги
* Установка разряда;
* Очистка разряда;
* Проверка разряда;
* Выделение поля разрядов;
* Запись поля разрядов;
* Арифметический сдвиг вправо с повышенной точностью;
* Логический сдвиг влево с повышенной точностью;
* Логический сдвиг вправо с повышенной точностью;
* Циклический сдвиг вправо с повышенной точностью;
* Циклический сдвиг влево с повышенной точностью;
Работа со строками
* Сравнение строк;
* Объединение строк;
* Поиск позиции подстроки;
* Копирование подстроки из строки;
* Удаление подстроки из строки;
* Вставка подстроки в строку;
Операции с массивами
* Суммирование 8-разрядного массива;
* Суммирование 16-разрядного массива;
* Поиск минимального элемента длиной 1 байт;
* Поиск максимального элемента длиной 1 байт;
* Двоичный поиск;
* Быстрая сортировка;
* Тест ОЗУ;
* Таблица переходов;
Ввод - вывод
* Чтение строки с терминала;
* Запись строки на устройство вывода;
* Проверка и генерация 16-разрядного кода контроля по избыточности;
* Диспетчер таблицы устройств ввода - вывода;
* Инициализация портов ввода - вывода;
* Задержка в миллисекундах;
Прерывания
* Небуферизованный ввод - вывод о прерываниям с использованием программируемого интерфейса связи 8251;
* Небуферизованный ввод - вывод о прерываниям с использованием программируемого параллельного интерфейса 8255;
* Буферизованный ввод - вывод о прерываниям с использованием программируемого интерфейса связи 8251;
* Часы реального времени и календарь