Функциональная организация микро-ЭВМ и микроконтроллеров. Часть 1: PDP-11. Негода В.Н - 27 стр.

UptoLike

Ниже приводится простейшая программа, которая выполняет действия:
- ввод в двоичном виде двух числовых векторов длиной по 20 элементов в
массивы VECT1 и VECT2; разрядность чисел - не более 16;
- формирование по месту VECT1 суммы векторов по правилам
VECT1[i] += VECT[i];
- вывод полученного массива в двоичном виде, размещая на каждой строке
по одному числу и нумеруя элементы дисятичными числами.
Считается, что входные данные вводятся правильно и их контроль не тре-
буется. Текст примера набран прописными буквами в соответствии с тем, что
терминалы российских аналогов PDP-11 обычно поддерживают только пропис-
ные символы.
.MCALL .EXIT, .TTYIN, .TTYOUT, .PRINT
; ПАМЯТЬ ДЛЯ ВЕКТОРОВ
VECT1: .BLKW 20.
VECT2: .BLKW 20.
; ТЕКСТЫ ЗАПРОСОВ
QVECT: .ASCII /ВВОДИТЕ ВЕКТОР/<200>
QELEM: .ASCII /ЭЛЕМЕНТ /<200>
HRESULT: .ASCIZ /РЕЗУЛЬТАТ/
NEWLINE: .ASCIZ // ; ПУСТАЯ СТРОКА ДЛЯ ПЕРЕХОДА НА НОВУЮ СТРОКУ
; С ПОМОЩЬЮ .PRINT
CR = 15; КОД СИМВОЛАВОЗВРАТ КАРЕТКИ
LF = 12; КОД СИМВОЛАПЕРЕВОД СТРОКИ
.EVEN ; ВЫРАВНИВАЕМ ПО ЧЕТНОМУ АДРЕСУ
; СЧИТАЕМ, ЧТО В ЛЮБОЙ ПОДПРОГРАММЕ R0 И R1 МОГУТ
; БЫТЬ ИСПОЛЬЗОВАНЫ БЕЗ СОХРАНЕНИЯ
; ОСНОВНАЯ ПРОГРАММА
START: ; ВВОД ВЕКТОРОВ
; НОМЕР ВЕКТОРА И АДРЕС ПЕРЕДАЮТСЯ В GETVECT ЧЕРЕЗ СТЕК
MOV #1, -(SP)
MOV #VECT1, -(SP)
JSR PC, GETVECT
CMP (SP)+, (SP)+ ; SP += 4 ДЛЯ ОСВОБОЖДЕНИЯ
; ПАМЯТИ ПАРАМЕТРОВ ПП
MOV #2, -(SP)
MOV #VECT2, -(SP)
JSR PC, GETVECT
CMP (SP)+, (SP)+
; ПОЛУЧЕНИЕ СУММЫ
MOV #VECT1, R0 ; БАЗОВЫЙ АДРЕС
MOV #VECT2, R1
MOV #20., R2
L1:ADD(R1)+, (R0)+
SOB R2, L1
; ВЫВОД РЕЗУЛЬТАТА
.PRINT #HRESULT