Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org $c000
- REGBAS EQU $1000 * Стартовый адрес блока регистров
- TCNT EQU $0E *Счетчик (16-бит)
- TOC1 EQU $16 *OC1 регистр (16-бит)
- TFLG1 EQU $23
- OC1F EQU $80
- PPROG EQU $103b
- *Начало лаб1
- a equ 255
- b equ 255
- c equ 5
- d equ 3
- ldaa #a
- ldab #a
- mul * (a*a) -> a^2 == d
- staa resa * save result high part in resa
- stab resb * save result low part in resa
- clra * clear a
- ldaa #a
- mul * (resb * a)->1. low and first part of middle of result == (a*a*a)
- stab resQubeLow
- staa resQubeMid
- ldaa resa * load in A register high part of expression (a*a)
- ldab #a * load in B register
- mul * (resa * a) ->2. high and second part of middle of result ==
- staa resQubeHigh * save high part of result
- ldaa resQubeMid * load first part of middle of result
- aba * adding first and second middle part
- staa resQubeMid * complite Qube(a*a*a) expression
- ldaa resQubeLow
- ldab #b
- aba
- staa resQubeLow
- ldaa resQubeMid
- adca resBuf *resBuf equal Null
- staa resQubeMid * Step 1. resQubeHigh + resQubeMid + resQubeLow equal (a^3 + b)
- ldaa #d * load 2 expression (b - 2)
- staa resBuf
- ldaa #b
- suba resBuf
- staa resB_sub_2 * Step 2. resB_sub_2 equal paramTwo (a^3 + b)/param2 - (a+c)
- clra
- clrb
- ldab #a
- addd #c
- std resA_add_C * Step 3. resA_add_C equal paramThree (a^3+b)/(b-2) - param3
- clra
- ldab resB_sub_2
- xgdx
- clra
- ldab resQubeHigh
- idiv
- xgdx
- stab resQubeHigh
- xgdx
- tba
- ldab resQubeMid
- std resDivision
- clra
- ldab resB_sub_2
- xgdx
- ldd resDivision
- idiv
- xgdx
- stab resQubeMid
- xgdx
- tba
- ldab resQubeLow
- std resDivision
- clra
- ldab resB_sub_2
- xgdx
- ldd resDivision
- idiv
- xgdx
- stab resQubeLow
- ldaa resQubeMid
- ldab resQubeLow
- subd resA_add_C
- staa resQubeMid
- stab resQubeLow
- *Конец лаб1
- memory: STD XW
- LDY #$b600 *Очистка памяти(четных строк)
- LDAA #%00000110
- STAA PPROG
- STAB 0,Y
- LDAA #%00010111
- STAA PPROG
- JSR DLY10
- CLR PPROG
- LDY #$b610 *Очистка памяти(нечетных строк)
- LDAA #%00000110
- STAA PPROG
- STAB 0,Y
- LDAA #%00010111
- STAA PPROG
- JSR DLY10
- CLR PPROG
- *Запись остатка
- LDD XW
- LDY #$b600 *Адрес программируемого байта
- LDAA #%000100010 *Конфигурация регистра PPROG
- STAA $103B *Программирования регистра PPROG
- STD 0,Y *Запись байта по адресу программируемого байта
- LDAA #%00000011
- STAA $103B *Подача напряжения программирования
- JSR DLY10 *Вызов процедуры задержки на 10 мс
- CLR $103B * Выключение высокого напряжения программирования
- INITDELAY LDY #REGBAS Указатель на блок регистров
- LDAA #$80
- STAA TFLG1,Y
- RTS
- DLY10 JSR INITDELAY *Вызов процедуры инициализации
- LDD TCNT,Y
- ADDD #20000
- STD TOC1,Y
- LP1 BRCLR TFLG1,Y OC1F LP1
- RTS
- XW FCC "00"
- resa zmb 1
- resb zmb 1
- resBuf zmb 1
- resB_sub_2 zmb 2
- resA_add_C zmb 2
- resQubeLow zmb 1
- resQubeMid zmb 1
- resQubeHigh zmb 1
- resDivision zmb 2
Add Comment
Please, Sign In to add comment