; === PROJEKT MNOZENIE ARYTMETYCZNE 1 === ; = liczby calkowite ze znakiem z testowaniem flag Z i C = .include "m32def.inc" .org 0x0000 I_O: ; konfiguracja portow I/O ldi R16, 0xFF ; laduj do rejestru R16 wartosc FF (wartości 1111_1111) out DDRA, R16 ; port A ustawiony w tryb wyjsciowy Zmienne: ldi R16, 200 ; laduj do rejestru R16 zmienna 200 ldi R17, -10 ; laduj do rejestru R17 zmienna -10 Start: mulsu R17, R16 ; pomnoz wartosci R17 ze znakiem (s –sign) przez R16 bez ; znaku (u-unsign), wynik bedzie umieszczony w parze rejestrow R1 i R0, nop ; znacznik Z bedzie ustawiony jezeli wynik operacji daje wartosc rowna 0, ; znacznik C bedzie ustawiony, jezeli bit nr 15 w parze R1:R0 jest ustawiony, rjmp Start ; = KONIEC = ; === PROJEKT MNOZENIE ULAMKOW 1 === ; = ze znakiem razy bez znaku (mnozenie mieszane) = .include "m32def.inc" .org 0x0000 I_O: ; konfiguracja portow I/O ldi R16, 0xFF out DDRA, R16 ; port A ustawiony w tryb wyjsciowy Zmienne: ; etykieta poczatku programu glownego ldi R16, q7(-0.125) ; laduj do rejestru R16 ulamek ze znakiem ldi R17, q7(0.5) ; laduj do rejestru R17 ulamek bez znaku Start: fmulsu R16, R17 ; pomnoz zmienna R16 ze znakiem minus (s) przez R17 bez znaku (u), wynik w parze rejestrów R1 i R0 ; znacznik C informuje o wyniku mnozenia nop ; aby odczytac zmienna nalezy zsumowac wagi bitow ktore po operacji zostaly ustawione ,np.: ; -1+0,5+0,25+0,125+0,0625= - 0,0625 rjmp Start ; = KONIEC = ; == PROJEKT MNOZENIE I DZIELENIE LOGICZNE 1 == .include "m32def.inc" .org 0x0000 I_O: ; konfiguracja portow I/O ldi R16, 0xFF out DDRA, R16 ; port A ustawiony w tryb wyjsciowy Zmienne: ldi R19, 50 ; laduj rejestr R19 zmienna 50 Start: ; etykieta poczatku programu glownego lsl R19 ; logiczne przesuwanie w lewo (mnozenie zawartosci rejestru R19 razy 2) out PORTA, R19 nop rjmp Start ; praca uC w petli nieskonczonej ; = KONIEC = ; == PROJEKT MNOZENIE I DZIELENIE LOGICZNE 2 == .include "m32def.inc" ; PA0 = D0 ;…. podlacz wszystkie diody ; PA7 = D7 .org 0x0000 I_O: ; konfiguracja portow I/O ldi R16, 0xFF out DDRA, R16 ; port A ustawiony w tryb wyjsciowy ldi R21, 1 ; laduj do rejestru R21 zmienna 1 sec ; ustaw flage C Start: ; etykieta poczatku programu glownego rol R21 ; logiczne przesuwanie w lewo w celu pomnozenia zawartosci rejestru R21 razy 2 out PORTA, R21 nop rjmp Start ; praca uC w petli nieskonczonej ; = KONIEC = Delay: ldi R23, 0x05 Petla_A: ldi R24, 0x03 Petla_B: ldi R25, 0x02 Petla_C: dec R25 brne Petla_C dec R24 brne Petla_B dec R23 brne Petla_A nop