FAQ | Points | Add... | Recent posts | Search | Register | Log in


Projekt w asemblerze, obliczanie iloczynu. AVR


Post new topic  Reply to topic      Main Page -> Forum Index -> Beginner Science -> Projekt w asemblerze, obliczanie iloczynu. AVR
Author
Message
tojaula
Poziom 4
Poziom 4


Joined: 23 Oct 2003
Posts: 8

Post#1 Post from the author of the topic 23 Nov 2004 18:37   

Projekt w asemblerze AVR


Witam wszystkich.
Mam pewien projekt do zrobienia i w sumie nie wiem jak sie do tego zabrac. Temat zadania brzmi: procedury obliczania iloczynu liczb n-bitowych w formacie 8x8, 16x8, 16x16 w asemblerze AVR. Czy moglibyscie mnie nakierowac, od czego mam zaczac? Najlepiej gdyby ktoś spróbował mi wytłumaczyć problem. Dzięki z góry.
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 23 Nov 2004 18:37   





Back to top
   
Paweł Es.
Poziom 25
Poziom 25


Joined: 14 Sep 2004
Posts: 7099
Location: Warszawa

Post#2 23 Nov 2004 19:52   

Re: Projekt w asemblerze AVR


Masz napisać procedury mnożenia liczb:

1 bajtowej przez 1 bajtową (8x8) wynik będzie 16 bitowy (2 bajty)

2 bajtowej przez 1 bajtową (16x8) wynik będzie 24 bitowy 3 bajty

2 bajtowej przez 2 bajtową (16x16) wynik będzie 32 bitowy (4 bajty)

Procedura przebiega tak w kodzie naturalnym binarnym:

1. Przygotowujesz rejestr wyniku o długości równej sumie ilości bitów
operandów
2. Zerujesz go

3. Jeżeli jeden z operandów jest równy 0 to KONIEC

3. Zapisujesz dłuższy operand lub wybrany jeżeli są równe w rejestrze
pomocniczym o długości wyniku.

TU SIĘ ZACZYNA PĘTLA:

4. Badasz najniższy bit krótszego operandu

5. jeżeli jest równy zero to idź do punktu 7

6. Dodajesz dłuższy operand do wyniku

7. przesuwasz bitowo dłuższy operand w lewo (mnożenie przez 2)

8. Przesuwasz krótszy operand w prawo (dzielenie przez 2)

9. Jeżeli po przesunięciu w pkt. 8 wyszło zero to KONIEC

10. Idż do punktu 4.

Badanie można robić przez mnożenie logiczne operandu przez 1.
Jeżeli robimy badanie przez testowanie wskaźnika przeniesienia
to trzeba wprowadzić dodatkowy licznik bitów a przesunięcie z pkt. 9
trzeba robić w pkt. 4 wtedy w pkt. 9 badasz czy zbadano wszystkie bity testując licznik bitów.

Przykład w Paskalu dla 8x8

Code:


Var
wynik:word;
pom:word {mnożna }
a,b:byte; {mnożnik}

Read(a);
Read(b);

pom:=a;

begin
Wynik:=0;

repeat

  if (b and 1<>0) then wynik:=wynik+pom;
  pom:=pom shl 1; {Przesuniecie o jeden bit w lewo }
  b:=b shr 1; {Przesuniecie o jeden bit w prawo}

until b=0;

Write(wynik);
end.


Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Beginner Science -> Projekt w asemblerze, obliczanie iloczynu. AVR
Page 1 of 1
Similar topics
Projekt w ASEMBLERZE, transkoder siedmio segmentowy (3)
Kanoniczna postać sumy i iloczynu (2)
Mały projekt + AVR, problem :( (3)

Page generation time: 0.065 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed