- •Содержание
- •Переслать X байт по адресу y из порта z
- •Переслать X байт по адресу y в адрес z
- •Переслать X байт по адресу/в порт y из/в порт/память z
- •Организовать пдп пересылку X байт
- •Пример программы процессора со стековой организацией:
- •Пример программы процессора с аккумулятором:
- •Всякая каша
- •Билет 2
- •Билет 3
- •Билет 4
- •Билет 5
- •Лера скинула Билет 1
- •Билет 6
- •Билет 7
- •Билет 8
- •Билет 9
- •Билет 10
- •Сопроцессор
Переслать X байт по адресу y в адрес z
K580:
LXI H,Y ;H:L<-Y
LXI D,Z ;D:E<-Z
MVI C,X ;C<-X
NEXT:
MOV A,M ;A<-M[H:L]
STAX D ;M[D:E]<-A
INX H ;H:L=H:L+1
INX D ;D:E=D:E+1
DCR C ;C=C-1
MOV A,C ;A<-C
CMI 0 ;A?0
JNZ NEXT
K1810:
LDS SI,Y ;DS:SI<-Y
LES DI,Z ;ES:DI<-Z
MOV CX,X ;CX<-X (X-счетчик байт или слов)
REP MOVSB(W) ; ES:[DI]<-DS:[SI], SI+=1(+=2) , DI+=1(+=2)
Переслать X байт по адресу/в порт y из/в порт/память z
СПВВ:
MOVI CC, 000 01 00 0 0 s 00 0 ff b
; ff – 00-из порта в порт, 01-из памяти в порт, 10-из порта в память, 11-из памяти в память
; s – 0 источник GA(Y), 1 – источник GB(Z)
MOVI BC, X ;загрузить счетчик
MOVI GA,Y
MOVI GB,Z
XFER ;ПДП пересылка
NOP
HLT
Организовать пдп пересылку X байт
(aaaa – адрес ВУ ПДП, например 1000), nn – номер канала (00-0,01-1,10-2,11-3)
Память Y/порт:
К1810/K580(MOV=MVI, OUT a,r = OUT a):
MOV AL, 0000000b ;команда управления CR
OUT aaaa1000b,AL ;запись в регистр команд управления (CR)
MOV AL, 100ffnnb ;установка режима MR, ff – 01 запись в ОЗУ из порта, 10 – чтение из ОЗУ в порт
OUT aaaa1011b, AL ;запись в регистр режима
MOV AL, LO(Y)
OUT aaaa0nn0b,AL ;запись в BAR/CAR младшего значения Y
MOV AL,HI(Y)
OUT aaaa0nn0b,AL ;запись в BAR/CAR старшего значения Y
MOV AL, LO(X)
OUT aaaa0nn0b,AL ;запись в WCR/CWR младшего значения X
MOV AL,HI(X)
OUT aaaa0nn0b,AL ;запись в WCR/CWR старшего значения X
MOV AL,000001nnb ;установить запрос
OUT aaaa1001b ;запись в регистр запросов
Память Y=>Память Z:
К1810/K580(MOV=MVI, OUT a,r = OUT a):
MOV AL, 0100001b ;команда управления CR
;--- nn = 00 в первом случаи, n = 01 во втором, блок повторяется два раза ---
OUT aaaa1000b,AL ;запись в регистр команд управления (CR)
MOV AL, 100ffnnb ;установка режима MR, ff – 01 запись в ОЗУ из порта (при n=01), 10 – чтение из ОЗУ в порт (при n=00)
OUT aaaa1011b, AL ;запись в регистр режима
MOV AL, LO(Y или Z)
OUT aaaa0nn0b,AL ;запись в BAR/CAR младшего значения Y (n=00), Z(n=01)
MOV AL,HI(Y или Z)
OUT aaaa0nn0b,AL ;запись в BAR/CAR старшего значения Y или Z
MOV AL, LO(X)
OUT aaaa0nn0b,AL ;запись в WCR/CWR младшего значения X
MOV AL,HI(X)
OUT aaaa0nn0b,AL ;запись в WCR/CWR старшего значения X
;---- конец блока ---
MOV AL,000001nnb ;установить запрос, где n=00
OUT aaaa1001b ;запись в регистр запросов
Таймер
aaaaaa – адрес ВУ PIT, например 100000
nn – номер канала (00-0,01-1,10-2)
mmm – режим (000-0,001-1,Х10-2,Х11-3,100-4,101-5)
f – двух байтовая константа счета = CLK ГТИ /CLK требуемое (режим 2)
K580:
MVI AL, nn11mmm0b ;управляющее слово
OUT aaaaaa11b ;установка управляющего слова
MVI AL,LO(f) ;младшая часть счетчика
OUT aaaaaannb ;запись младшей части
MVI AL,HI(f) ;старшая часть счетчика
OUT aaaaaannb ;запись старшей части
K1810:
MOV AL, nn11mmm0b ;управляющее слово
OUT aaaaaa11b,AL ;установка управляющего слова
MOV AL,LO(f) ;младшая часть счетчика
OUT aaaaaannb,AL ;запись младшей части
MOV AL,HI(f) ;старшая часть счетчика
OUT aaaaaannb,AL ;запись старшей части
