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

UptoLike

; НАЧАТЬ С ПЕРВОГО ЭЛЕМЕНТА
MOV #1,R4; ИНИЦИАЛИЗАЦИЯ СЧЕТЧИКА
MOV #VECT1,R3 ; ИНИЦИАЛИЗАЦИЯ УКАЗАТЕЛЯ
L2: ; ВЫВОД НОМЕРА ЭЛЕМЕНТА
MOV R4, R0
JSR PC, PUTNUM
; ВЫВОД ЗНАЧЕНИЯ ЭЛЕМЕНТА
MOV (R3)+, R0
JSR PC, PUTBIN
INC R4 ; МОДИФИКАЦИЯ НОМЕРА ЭЛЕМЕНТА
CMP R4, #20 ; ВЫВЕДЕН НЕ ПОСЛЕДНИЙ ЭЛЕМЕНТ?
BLE L2 ; ЕСЛИ НЕТ, ТО ПРОДОЛЖИТЬ
.EXIT ; ВЫЙТИ В ОС
; ПП ВВОДА ВЕКТОРА ПО АДРЕСУ R0. В R1 НОМЕР ВЕКТОРА
GETVECT:
; СОХРАНЕНИЕ РЕГИСТРОВ ДЛЯ ИСПОЛЬЗОВАНИЯ
; В КАЧЕСТВЕ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ
MOV R2, -(SP)
MOV R3, -(SP)
; ТЕПЕРЬ: 6(SP) - АДРЕС ВЕКТОРА, 8.(SP) - НОМЕР ВЕКТОРА
; ЗАПРОС ВЕКТОРА
.PRINT #QVECT
; ФОРМИРОВАНИЕ И ВЫВОД СИМВОЛА - НОМЕРА ВЕКТОРА
MOVB #’0, R0
ADD 8.(SP), R0 ; СДЕЛАТЬ СИМВОЛ ИЗ ЧИСЛА
.TTYOUT
.PRINT #NEWLINE
MOV #1,R2 ; ИНИЦИАЛИЗАЦИЯ СЧЕТЧИКА ЭЛЕМЕНТОВ
MOV 6(SP), R3 ; ИНИЦИАЛИЗАЦИЯ УКАЗАТЕЛЯ ВЕКТОРА
LGVEC: .PRINT #QELEM
MOV R2, R0
JSR PC, PUTNUM
JSR PC, GETBIN
MOV R0, (R3)+
CMP R2, #20.
BLE LGVEC
MOV (SP)+, R3
MOV (SP)+, R2
RTS PC
; ПП ВВОДА ДВОИЧНОГО ЧИСЛА В R0
GETBIN: CLR R1 ; ОЧИСТИТЬ МЕСТО ФОРМИРОВАНИЯ ЧИСЛА
; ЦИКЛ ВВОДА ЦИФР ЧИСЛА (БЕЗ КОНТРОЛЯ)
L3: .TTYIN
CMPB R0, #CR ; КОНЕЦ СТРОКИ?
BEQ L4 ; ДА, ИДТИ НА ЗАВЕРШЕНИЕ
ROR R0 ; ВЫДВИНУТЬ 0/1 ИЗ БАЙТА СИМВОЛА
ROL R1 ; ДОПИСАТЬ БИТ СЛЕВА К ЧИСЛУ В R1
BR L3 ; ПРОДОЛЖИТЬ