Skocz do zawartości
danrok

[assembler] Problem Z Mnożeniem 16bitowym

Rekomendowane odpowiedzi

Witam,

programuję kalkulator na procesorze ATMEGA32 w assemblerze i mam pewien problem. Procesor ten jest 8bitowy, a musze wykonywać mnożenie 16bitowe. Ma ktoś jakiś pomysł jak to wykonać? Widziałem różne algorytmy, ale jest problem z ich implementacją, gdyż operacje wykonywane są na dwóch rejestrach.

Ktoś pomoże?:)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość <account_deleted>

Po pierwsze: czytamy dokumentację, najlepiej ze zrozumiieniem ;)

 

Przykład: <avr asm>

;z=x*y:;reg defs:.def xh=r17.def xl=r16.def yh=r19.def yl=r18.def zhh=r31.def zhl=r30.def zlh=r29.def zll=r28;clr result   clr zll   clr zlh   movv zhh:zhl,zlh:zll;16 by 16bit multiplication:   mul xl,yl   movw zlh:zll,r1:r0   mul xl,yh   add zlh,r0   adc zhl,r1   mul xh,yl   add zlh,r0   adc zhl,r1   mul xh,yh   add zhl,r0   adc zhh,r1;.undef regs
... chyba nic nie spieprzyłem - sprawdzisz sobie w symulatorze.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość <account_deleted>

he, he, w moich wypocinach są 2 błędy - movv zamiast movw, ale drugi? - ciekawe czy zauważyłeś...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Gość <account_deleted>

...no trafiłeś ;)

 

;reg defs:....def zero=r2;clr result   clr zhl   clr zhh;  movv zhh:zhl,zlh:zll ;<< to jest niepotrzebne;)   clr zero;16 by 16bit multiplication:   mul xl,yl   movw zlh:zll,r1:r0   mul xl,yh   add zlh,r0   adc zhl,r1   mul xh,yl   add zlh,r0   adc zhl,r1   adc zhh,zero; <<---- tego brakowało;)   mul xh,yh   add zhl,r0   adc zhh,r1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...