; KONEC ZAPOLNENIIA HUINEI
LXI H, BUF1
LXI B, dlinaBuf1
L2: MOV E, M
INX H
SHLD UkCht
LHLD SUMm
DAD D
SHLD SUMm
JNC L3
LHLD SUMs
INX H
SHLD SUMs
L3: LHLD UkCht
DCX B
MOV A, B
ORA C
JNZ L2
end
17. Программируемый ввода данных и запись в буфер BUF, размером DIM.
first_address equ 1000h
defseg d_seg, start = first_address, class=data
seg d_seg
BUF1: ds 100h
defseg io_seg,start=80h,class=IOspace
seg io_seg
addrport ds 1h
defseg c_seg, start = 0000h, class=code
seg c_seg
LXI H, BUF1
L2: IN addrport
CPI 00h
JZ L1
MOV M, A
JMP L2
L1:
End
17. Программируемый ввода данных и запись в буфер BUF, размером DIM.
(с КВИТИРОВАНИЕМ!!)
first_address equ 1000h
defseg d_seg, start = first_address, class=data
seg d_seg
BUF1: ds 100h
defseg io_seg,start=80h,class=IOspace
seg io_seg
addrport ds 1h
FlagPort ds 1h
defseg c_seg, start = 0000h, class=code
seg c_seg
LXI H, BUF1
L2:
IN FlagPort; KVITIROVANIE!!!
XRI 00100000b
OUT FlagPort
IN FlagPort
ANI 00100000b
JZ L2
IN addrport
CPI 00h
JZ L1
MOV M, A
JMP L2
L1:
End
18. Программируемый вывод данных из буфера BUF до появления кода 00, или конца цикла. Вывод данных производится из буфера BUFF, размер буфера N = 80h.
first_address equ 1000h
defseg d_seg, start = first_address, class=data
seg d_seg
BUF1: ds 80h
defseg io_seg,start=80h,class=IOspace
seg io_seg
addrport ds 1h
defseg c_seg, start = 0000h, class=code
seg c_seg
LXI H, BUF1
MVI B, 80h
L2: OUT addrport
CPI 00h
JZ L1
MOV M, A
DCR B
JZ L1
JMP L2
L1:
End
19. Генератор импульсов формирует запросы прерывания.
ППОП производит запись коды 01, 02, 03, …, 80h в память, начиная с адреса ADR0.
Использовать вход прерывания RST7.5.
first_address equ 1000h
dlinaSteka equ 32
dlinaBuf1 equ 80h
defseg d_seg, start = first_address, class=data
seg d_seg
BUF1 ds dlinaBuf1
defseg stack_seg, start=2000h-dlinaSteka, class= data
seg stack_seg
ds dlinaSteka
defseg rst_75, start=3Ch, class= code
seg rst_75
JMP rst75
defseg Main_seg, start = 100h, class = Code
seg Main_seg
MAIN: LXI SP,2000h
MVI A, 00001011b; maska prerivani9
SIM
EI
L1: JMP L1
defseg c_seg, start = 0000h, class=code
seg c_seg
JMP MAIN
rst75:
PUSH PSW
PUSH H
PUSH B
MVI B, dlinaBuf1
LXI H, BUF1
MVI C, 01h
L2: MOV M, C
INR C
INX H
DCR B
JNZ L2
POP B
POP H
POP PSW
RET
end
20. Рассмотрим ввод по прерыванию байтовых данных, поступающих на вход порта A прибора 8155. Принятые данные записываются в буфер BUF1, размером 80 байт. После заполнения буфера выставить флаг, запретить ввод и передать управление на обработку.
first_address equ 1000h
dlinaSteka equ 32
dlinaBuf1 equ 80h
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.