Piszę program w Avr asembler. Program jest prosty, ale robie jakiś błąd, którego nie widzę. Czy ktoś mogłby to sprawdzić?
Zmienne V,H,T od 0 do 99
;Wynik=V+100*(H+100*T) ;pomocniczy rejestr R30 .def A1 = R16; A1 mlodszy bajt zmiennej A .def A2 = R17; A2 starszy bajt zmiennej A .def A3 = R18; .def B1 = R19; B1 mlodszy bajt zmiennej B .def B2 = R20; B2 starszy bajt zmiennej B .def B3 = R21; .def T = R25; .def H = R26; .def V = R27; .def MSB = R2 .equ ccc = $45
zmienne: ldi T,23 ldi H,36 ldi V,47 ldi R30,100 oblicz_adres: mul T,R30; mov A1,R0 mov A2,R1
mov B2,0 add A1,H adc A2,B2 mul A1,R30 mov B1,R0 mov B2,R1 mul A2,R30 mov A1,R0 mov A2,R1
ldi R29,0 add A1,B2 adc R23,R27 cpi R23,0 breq skok ldi R29,1 add A2,R29 skok: add B1,V
;Wynik znajduje się w A2 - najstarszy bajt; A1 - mlodszy, B1 - najmlodszy koniec: rjmp koniec
Efekt jest taki, ze cos przeklamuje. Moze ktos znajdzie chwilke zeby to sprawdzic, bo nie mam wprawy w takich dzialaniach. Dzialanie jest takie Wynik=V+100*(H+100*T) a wynik musi byc w trzech rejestrach.
pozdrawiam, dArek