Jakiś błąd

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

Reply to
dArek
Loading thread data ...

[...]

Ja tam nie wiem .. ale co bylo wczesniej w R23, i czy na pewno 0 ? BO to jest jego pierwsze wystapienie w programie ..

J.

Reply to
J.F.

To jest sumowanie 8 bitowej liczby do 16 bitowej z przeniesieniem. W B2 jest 8 bitowa liczba a R27=0 znaczy, ze starszy bajt jest zero. To tak jakby 16bitowa liczba tylko starszy bajt rowny zero - czyli 8 bitowa. :) namieszalem?

Reply to
dArek

Znalazłem szmatę. Temat zamknięty.

pozdrawiam, dArek

Reply to
dArek

napisz gdzie...

Reply to
invalid unparseable

Błąd polega na kolejności działania. Najpierw zrobiłem działania na starszym bajcie o poten na młodszym. Każdy wie, że robi się na odwrót. No ale pisałem to późnym wieczorem. Szukałem błędu a to nie sposób. Czasami warto napisać coś jeszcze raz. Wtedy szybciej się człowiek z tym upora. Operacje są ok, tylko ta kolejność była nie taka.

Reply to
dArek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.