Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;działanie (2+a)^3+(1+b)^3-(c+2*(a+8)*3)*b/4-6-17
- ;----------------------------------------------------------------------------------------------------------------
- jmp start
- db a ; rezerwacja a
- db 00 ; adres 00
- db 10 ; adres 10
- ;----------------------------------------------------------------------------------------------------------------
- ; ----- Hardware Timer ------------------------------------------------------------------------------------------
- org a ;przejscie do zapisywania w komorce o adresie a
- nop
- nop
- nop
- nop
- nop
- iret
- ;----------------------------------------------------------------------------------------------------------------
- ; ----- Keyboard Handler ----------------------------------------------------------------------------------------
- org 10 ; przejscie do zapisywania w 10
- cmp dl, 0 ; dl==0, jeśli tak to obliczenia, jeśli nie wczytanie liczb
- jz oblicz ; jesli ==0 to obliczenia
- CLI ;
- push al ; AL na stos
- pushf ;
- in 08 ; keypad
- ;-------Game Output----------------------------------------------------------------------------------------------
- out 01
- out 05
- ;-------Game Output----------------------------------------------------------------------------------------------
- sub al, 30 ; na równe obliczenia -30 do każdej wczytanej liczby
- add cl, 1 ; alokacja pamięci, adresowanie od [06] do [08]
- mov [cl], al ; wrzucanie liczby do alokacji pamięci
- nop
- nop
- nop
- nop
- nop
- popf
- pop al ; AL ze stosu
- dec dl ; dekrementacja DL, aż do 0 i koniec pętli
- STI ;
- iret ; powrot z przerwania
- ; -----KONIEC OPERACJI powrót do do reszty programu--------------------------------------------------------------
- ;------PROGRAM START---------------------------------------------------------------------------------------------
- start:
- ;-------Game Output Start----------------------------------------------------------------------------------------
- mov al, 24
- out 01 ;światła
- mov al, 10
- out 05 ;karuzela
- ;-------Game Output----------------------------------------------------------------------------------------------
- ;-------Wartości początkowe--------------------------------------------------------------------------------------
- mov dl, 3 ; 3 liczby do wczytania
- mov cl, 05 ; od [05] początek zapisywania liczb
- in 00
- cmp al, 38 ; porowuje czy wcisniety klawisz to 3, PRZERWANIE
- jz loop ; jesli wcisnieta 3 to leci do pętli
- call c0 ; jesli nie to konczy program
- ;------PROGRAM START END-----------------------------------------------------------------------------------------
- ;----- Idle Loop-------------------------------------------------------------------------------------------------
- loop: ;oczekiwanie na dane z keypada
- STI ; Set (I) flag
- out 08 ;
- idle:
- nop ;
- nop
- nop
- jmp idle ;pętla nieskończoności, dopóki kliknięcie na keypad
- ;----- Koniec pętli----------------------------------------------------------------------------------------------
- ;------OBLICZENIE DZIAŁANIA GŁÓWNEGO-----------------------------------------------------------------------------
- oblicz:
- ;------WARTOŚCI Z TABLICY----------------------------------------------------------------------------------------
- mov al, [06]
- add al, 2
- mov bl, [07]
- inc bl
- mov cl, [08]
- call 68
- jmp koniec
- ;------wywołanie procedury do obliczeń---------------------------------------------------------------------------
- org 68
- ;------(2+a)^3---------------------------------------------------------------------------------------------------
- push al
- pop dl
- mul al, dl
- mul al, dl
- ;-------Game Output----------------------------------------------------------------------------------------------
- out 01
- out 05
- ;-------Game Output----------------------------------------------------------------------------------------------
- ;------(1+b)^3---------------------------------------------------------------------------------------------------
- push bl
- pop dl
- mul bl, dl
- mul bl, dl
- add al, bl
- ;------(2+a)^3+(1+b)^3-------------------------------------------------------------------------------------------
- ;-------Game Output----------------------------------------------------------------------------------------------
- out 01
- out 05
- ;-------Game Output----------------------------------------------------------------------------------------------
- push al ;WYNIK PIERWSZEJ CZĘSCI NA STOSIE!----------------------------------------
- mov al, [06]
- add al, 8 ;(a+8)
- mul al, 3 ;(a+8)*3
- mul al, 2 ;(2*(a+8)*3)
- add al, cl ;(c+2*(a+8)*3)
- ;-------Game Output----------------------------------------------------------------------------------------------
- out 01
- out 05
- ;-------Game Output----------------------------------------------------------------------------------------------
- mov dl, [07]
- div dl, 4
- mul al, dl ;(c+2*(a+8)*3)*b/4
- pop bl
- sub bl, al ;(2+a)^3+(1+b)^3-(c+2*(a+8)*3)*b/4
- push bl
- pop al
- sub al, 6
- add al, ef ;-17
- push al
- pop bl ;wynik działania w BL!
- iret
- ;------PROCEDURA KOŃCA PROGRAMU----------------------------------------------------------------------------------
- koniec:
- call c0
- org c0
- ;-----DEFINITYWNY KONIEC PROGRAMU--------------------------------------------------------------------------------
- ;-------Game Output----------------------------------------------------------------------------------------------
- mov al, 90
- out 01
- mov al, f9
- add al, 6
- out 05
- ;-------Game Output----------------------------------------------------------------------------------------------
- end
- ;----------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement