Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LJMP START
- ORG 100H
- START:
- LCALL LCD_CLR
- LCALL WAIT_KEY; WCZYTYWANIE Z PLYTKI LICZB
- MOV R0,A ; PRZYPISANIE AKUMULATYORA DO R0
- LCALL WRITE_HEX ; WYPISANIE LICZBY
- LCALL WAIT_KEY
- MOV R1,A
- LCALL WRITE_HEX
- LCALL WAIT_KEY
- CJNE A,#10, ODEJM ; POROWNAJ A Z 10 (przycisk a z plytki) JEZELI ROWNE WYKONA DODAWANIE JESLI ROZNE SKOCZY DO ODEJMOWANIA
- MOV A,#'+' ;PRZYPISANIE DO AKUMUL. +
- LCALL WRITE_DATA
- MOV A,#'='
- LCALL WRITE_DATA
- MOV A,R0 ; PRZENIESIENIE R0 DO AKUMUL.
- ADD A,R1 ; DODAWANIE R1 Z AKUMULATOREM
- ACALL DO_BCD ; WYWOLANIE PODPROGRAMU
- LCALL WRITE_HEX
- LCALL WAIT_KEY
- CJNE A, #15, START
- LCALL LCD_CLR
- ODEJM:
- CJNE A, #11, MNOZ
- MOV A,#'-'
- LCALL WRITE_DATA
- MOV A,#'='
- LCALL WRITE_DATA
- MOV A,R0
- CLR C ; ZERUJE FLAGE BO DOMYSLNIE NA 1 (odejmowanie: liczby - c)
- SUBB A,R1 ; odejmuje
- ACALL DO_BCD
- LCALL WRITE_HEX
- LCALL WAIT_KEY
- CJNE A, #15, START ; CZYLI BYLE JAKI KLAWISZ URUCHOMI OD POCZATKU
- LCALL LCD_CLR
- SJMP $
- MNOZ:
- CJNE A,#12, DZIEL
- MOV A,#'*'
- LCALL WRITE_DATA
- MOV A,#'='
- LCALL WRITE_DATA
- MOV A,R0
- MOV B, R1
- MUL AB
- XCH A,B ;zamiana bajtow
- LCALL WRITE_HEX
- MOV A,B
- LCALL WRITE_HEX
- LCALL WAIT_KEY
- CJNE A, #15, START
- LCALL LCD_CLR
- SJMP $
- DZIEL:
- CJNE A, #13, START
- MOV A,#'/'
- LCALL WRITE_DATA
- MOV A,#'='
- LCALL WRITE_DATA
- MOV A,R0
- MOV B, R1
- DIV AB
- LCALL WRITE_HEX ; CZESC CALKOWITA DZIELENIA PRZENIESIONA DO AKUMULATORA
- MOV A,#'_'
- LCALL WRITE_DATA
- MOV A, B ; B RESZTA Z DZIELENIA PRZENIESIONA DO AKUMULATORA
- LCALL WRITE_HEX
- LCALL WAIT_KEY
- CJNE A, #15, DZIEL ; KONCZENIE DZIELENIA, TAK JEST DLA KAZDEJ OPERACJI
- LCALL LCD_CLR
- SJMP $
- DO_BCD:
- MOV B, #10
- DIV AB
- SWAP A
- ADD A,B
- RET
- SJMP $
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement