Kalkulator 3-cyfrowy. Może komuś się przyda na poprawce.
Kod:
; kalkulator 3-cyfrowy by Marek Misztal
ljmp start
org 100H
start:
lcall lcd_clr
; liczba setek (0-9) pierwszej liczby
lcall wait_key
mov R0,A ; zapis liczby setek do R0 !!!!!!
lcall write_hex ; wyświetlanie setek
; liczba dziesiatek (0-9) pierwszej liczby
lcall wait_key
mov R1,A ; liczba dziesiątek do R1
swap A
mov R2,A
; liczba jednosci (0-9) pierwszej liczby
lcall wait_key
mov R3,A ; zapis liczby jedności do R3
add A,R2 ; dodanie przesuniętej liczby dziesiątek do liczby jedności
lcall write_hex ; wyswietlanie reszty
mov B,#10
mov A,R1
mul AB
add A,R3
mov R1,A ; dziesiątki i jedności dla liczby pierwszej (HEX) w R1 !!!!!
mov A,#'+'
lcall write_data
; liczba setek (0-9) drugiej liczby
lcall wait_key
mov R2,A ; zapis liczby setek do R2 !!!!!
lcall write_hex ; wyświetlanie setek
; liczba dziesiatek (0-9) drugiej liczby
lcall wait_key
mov R3,A
swap A
mov R4,A
; liczba jednosci (0-9) drugiej liczby
lcall wait_key
mov R5,A
add A,R4
lcall write_hex ; wyswietlanie reszty
mov B,#10
mov A,R3
mul AB
add A,R5
mov R3,A ; dziesiątki i jedności dla liczby drugiej (HEX) w R3 !!!!!
mov A,#'='
lcall write_data
mov A,R1
add A,R3 ; dodanie dziesiątek i jednosci w hex
; sprawdzanie czy liczba dziesiątek z jednościami >99
mov R3,#0
mov B,#100
div AB
jz azero
mov R3,#1 ; jeśli większa - wstaw do R3 'przeniesienie'
azero:
mov R1,B ; reszta z dzielenia przez 100 do R1
mov A,R0
add A,R2 ; dodanie setek
add A,R3 ; dodanie ewentualnego przeniesienia
acall write_bcd ; wyświetlenie setek
mov A,R1
acall write_bcd ; wyświetlenie dziesiątek i jedności
sjmp $
write_bcd:
mov B,#10
div AB
swap A
add A,B
lcall write_hex
ret
oraz wersja z blokadą klawiszy dających wartość A,B,C,D,E,F:
Kod:
; kalkulator 3-cyfrowy by Marek Misztal
ljmp start
org 100H
start:
lcall lcd_clr
cyfr1:
; liczba setek (0-9) pierwszej liczby
lcall wait_key
mov R0,A ; zapis liczby setek do R0 !!!!!!
mov B,#10
div AB
jnz cyfr1
mov A,R0
lcall write_hex ; wyświetlanie setek
cyfr2:
; liczba dziesiatek (0-9) pierwszej liczby
lcall wait_key
mov R1,A ; liczba dziesiątek do R1
mov B,#10
div AB
jnz cyfr2
mov A,R1
swap A
mov R2,A
cyfr3:
; liczba jednosci (0-9) pierwszej liczby
lcall wait_key
mov R3,A ; zapis liczby jedności do R3
mov B,#10
div AB
jnz cyfr3
mov A,R3
add A,R2 ; dodanie przesuniętej liczby dziesiątek do liczby jedności
lcall write_hex ; wyswietlanie reszty
mov B,#10
mov A,R1
mul AB
add A,R3
mov R1,A ; dziesiątki i jedności dla liczby pierwszej (HEX) w R1 !!!!!
mov A,#'+'
lcall write_data
cyfr4:
; liczba setek (0-9) drugiej liczby
lcall wait_key
mov R2,A ; zapis liczby setek do R2 !!!!!
mov B,#10
div AB
jnz cyfr4
mov A,R2
lcall write_hex ; wyświetlanie setek
cyfr5:
; liczba dziesiatek (0-9) drugiej liczby
lcall wait_key
mov R3,A
mov B,#10
div AB
jnz cyfr5
mov A,R3
swap A
mov R4,A
cyfr6:
; liczba jednosci (0-9) drugiej liczby
lcall wait_key
mov R5,A
mov B,#10
div AB
jnz cyfr6
mov A,R5
add A,R4
lcall write_hex ; wyswietlanie reszty
mov B,#10
mov A,R3
mul AB
add A,R5
mov R3,A ; dziesiątki i jedności dla liczby drugiej (HEX) w R3 !!!!!
mov A,#'='
lcall write_data
mov A,R1
add A,R3 ; dodanie dziesiątek i jednosci w hex
; sprawdzanie czy liczba dziesiątek z jednościami >99
mov R3,#0
mov B,#100
div AB
jz azero
mov R3,#1 ; jeśli większa – wstaw do R3 'przeniesienie'
azero:
mov R1,B ; reszta z dzielenia przez 100 do R1
mov A,R0
add A,R2 ; dodanie setek
add A,R3 ; dodanie ewentualnego przeniesienia, jeśli suma dziesiątek >=10
acall write_bcd ; wyświetlenie setek
mov A,R1
acall write_bcd ; wyświetlenie dziesiątek i jedności
sjmp $
write_bcd:
mov B,#10
div AB
swap A
add A,B
lcall write_hex
ret
Wyszukiwarka
Podobne podstrony:
kalkulator cyfrowy[ATMEGA8] Cyfrowy termometr i kalkulatorFUNKCJA CHŁODZENIE SILNIKA (FRIC) (ZESPOLONE Z KALKULATOREMPodstawy Cyfrowego Przetwarzania SygnalówFotografia cyfrowa w kryminalistyce aspekty techniczno prawnekalkulacja konferencji wzórarkusz kalkulacyjny 4 wzorzecFotografia cyfrowa Ćwiczenia praktycznePierwsze kroki w cyfrówce cz404 Arkusz kalkulacyjnySyllabus do Modułu AM4 Arkusze kalkulacyjne, poziom zaawansowany wersja 1 0 6T03 Arkusz kalkulacyjny od podstaw cz 3 4 godzprzetwarzanie obraz w cyfrowych w praktyceWyklad e cyfrowa 4więcej podobnych podstron