IN PB8155 ;ONLY FOR THE ACTIVATE INPUT FILE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
EI
WAITBUFFER:
LDA FLGZGR
ORA A
JNZ WAITBUFFER ;WAIT BUFFER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MVI A,00001111B ;MASK FROM ALL INTERRUPT
SIM
LXI H,BUF1
CALL KONSUM
LXI D,BUF2
MVI A,1
STA PASS1
LOOP1:
MOV A,M
ORA A
JZ ENDTEXT
19.1.
CALL CODING
STAX D
INX H
INX D
JMP LOOP1
ENDTEXT:
STAX D
LDA PASS1
ORA A
MVI A,0
STA PASS1
JZ HALT
PRODOLJ:
LXI H,BUF2
LXI D,BUF3
JMP LOOP1
;
HALT:
DI
LXI H,BUF3
CALL KONSUM
; OUTPUT FROM THE PORT B
LXI H,BUF2
MVI B,TEXTSIZE-1
LOOPOUT:
MOV A,M
OUT PA8355
INX H
DCR B
JNZ LOOPOUT
HLT
CODING:
;SUBROUTINE
CMA
RET
KONSUM: ;SUBROUTINE
RET
ENd
билет 24. Написать ППОП, которая читает
байт из порта 0FEh, инвертирующий биты B4, B3,
B1 и сохраняет результат в памяти по
адресу, находящемуся в ячейке POINT с
последующей модификацией этого адреса.
Вектор прерывания - RST6,5
SEG DATA
POINT DS2 ; резерв. 2 байта под адрес
записи
...
; RST6,5 - 6,5*8 = 34h:
JMP SUBR_65 ; запуск подпрограммы при
прирывании
...
; инициализация
LXI SP, STACK0 ; инициализация стека
MVI A, 00001101b ; RST6,5
SIM ; установка маски прерываний
EI ; разрешение обработки
прерываний
...
SUBR_65:
PUSH PSW ; сохранение в стек
содержимого регистров A и F
PUSH H ; сохранение в стек
содержимого регистровой пары HL
LHLD POINT ; загрузка адреса записи POINT
(константа) в HL
IN 0FEh ; чтение однобайтного (в
условии не сказано, значит пусть будет
однобайтного)) значения из порта 0FEh
XRI 00011010b ; инвертирование битов B1, B3 и B5
MOV M, A ; запись полученного значения
в ячейку с адресом из HL
INX H ; модификация адреса (HL) <- (HL)+1
SHLD POINT ; запись модифицированного
адреса обратно в POINT
POP PSW ; восстановление из стека
содержимого регистров A и F
POP H ; восстановление из стека
содержимого регистровой пары HL
EI ; разрешение обработки
прерываний
RET ; выход из подпрограммы
Вариант алгоритма кодирования/декодирования текста. Если биты B1 и B3 равны, то инвертировать В6, В0 , иначе инвертировать В0, В5,В7.
CODING:
ANI 00001010b ; Выделяем 1 и 3 биты
JPOPROG ; Переход в PROG если сумма 1 и 3 битов нечетна
MOVA,M ;Иначе запись в аккумулятор значения ячейки с адресом HL
XRI 01000001b ;Сложение с числом 01000001 по модулю 2 дает
RET;Дает инверсию 6 и 0 бита, ост. Остается без изменений
PROG: MOVA,M
XRI 10100001b ; Сложение с числом 10100001 по модулю 2 дает инверсию 0,5 и 7
RET ;битов , остальные остаются без изменений
KONSUM:
;
RET
END
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.