Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ORG 800H
- LXI H,ZACH1
- RST 3
- CALL PIERW
- ZLYZNAK
- CALL ZNAK
- CALL LICZ
- CALL WYNIK
- PIERW
- LXI H,ZACH2
- RST 3
- RST 5 ;z klawy do D E
- MOV B,D ; D -> B
- MOV C,E ; E -> C
- RET
- ZNAK
- LXI H,ZACH3
- RST 3
- RST 2 ; znak do A
- RET
- DRUG
- LXI H,ZACH4
- RST 3
- RST 5 ;z klawy do D E
- LXI H,ZACH5
- RST 3
- XCHG ;zamiana D E z H L
- RET
- LICZ
- CPI 'n' ; A - 'n'
- JZ NEG ; if Flaga Z = 1
- CPI '+' ;Odjecie od A wart chara
- JZ DODAJ ;if Z = 1 then do
- CPI '-' ;Odjecie od A wart chara
- JZ ODEJMIJ ;if Z = 1 then do
- JMP ZLYZNAK
- HLT
- NEG
- LXI H,ZACH5
- RST 3
- MOV A,B ; B ->A
- CMA
- RST 4
- MOV A,C ; B ->A
- CMA
- RST 4
- HLT
- DODAJ
- CALL DRUG
- DAD B ; dodaj do H L pare B = B C
- JC PRZEPDOD ; if CY = 1 to skok
- CALL WYNIK
- ODEJMIJ
- CALL DRUG
- MOV A,C ; C -> A
- CMC ; CY <- 0
- SUB L ; A - L
- JC ODEJMIJPORZMLOD ; if CY = 1
- MOV E,A ; A - > E
- MOV A,B ; B -> A
- SUB H ; A - H
- JC ODEJMIJPORZSTAR ; if CY = 1
- MOV H,A ; A - > H
- MOV L,E ; E - > L
- CALL WYNIK ; skok do wynik
- ODEJMIJPORZMLOD
- CMC ; CY <- 0
- MOV E,A ; A -> E
- MOV A,B ;B -> A
- SUB H ;A - H
- JZ ZZMW ;jesli wynik 0 to negacja
- DCR A
- JC ODEJMIJPORZSTAR ; if CY = 1 to skok
- MOV H,A ;A -> H
- MOV L,E ; E - > L
- JM MINUS ; if S = 1 to skok
- CALL WYNIK
- ODEJMIJPORZSTAR
- CMC ; CY <- 0
- MOV A,L ; L -> A
- SUB C ; A - C
- MOV L,A ; A -> L
- MOV A,H ; H -> A
- SBB B ; A - B
- MOV H,A ; A -> H
- JMP MINUS ; if S = 1 to skok
- WYNIK
- MOV A,H ; H - > A
- RST 4 ; wydruk pary hex z A na monitro
- MOV A,L ; L - > A
- RST 4 ; wydruk pary hex z A na monitro
- HLT
- MINUS
- MVI A,'-' ; '-' - > A
- RST 1 ; wydruk znaku z A na monitor
- JMP WYNIK
- PRZEPDOD
- MVI A,'1' ; A <- '1'
- RST 1 ; wydruk znaku z A na monitor
- RET
- ZZMW
- MOV H,A ; A -> H
- MOV A,E ; E -> A
- CMA
- INR A ; konieczne zwiekszenie A o 1
- MOV L,A ; A -> L
- JMP MINUS
- ZACH1 DB 'kalkulator liczb hex',10,13,'@'
- ZACH2 DB 'podaj pierwsza liczbe',10,13,'@'
- ZACH3 DB 10,13,'podaj operator (+,-,n)',10,13,'@'
- ZACH4 DB 10,13,'podaj druga liczbe'10,13,'@'
- ZACH5 DB 10,13,'wynik wynosi:',10,13,'@'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement