Kalkulator 3 cyfrowy


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 kalkulator
FUNKCJA CHŁODZENIE SILNIKA (FRIC) (ZESPOLONE Z KALKULATOREM
Podstawy Cyfrowego Przetwarzania Sygnalów
Fotografia cyfrowa w kryminalistyce aspekty techniczno prawne
kalkulacja konferencji wzór
arkusz kalkulacyjny 4 wzorzec
Fotografia cyfrowa Ćwiczenia praktyczne
Pierwsze kroki w cyfrówce cz4
04 Arkusz kalkulacyjny
Syllabus do Modułu AM4 Arkusze kalkulacyjne, poziom zaawansowany wersja 1 0 6
T03 Arkusz kalkulacyjny od podstaw cz 3 4 godz
przetwarzanie obraz w cyfrowych w praktyce
Wyklad e cyfrowa 4

więcej podobnych podstron