8 bit atmega assembler multiplikation

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
PCP-Lasse
Inlägg: 44
Blev medlem: 3 maj 2010, 20:19:56
Ort: Nyköping

8 bit atmega assembler multiplikation

Inlägg av PCP-Lasse »

MUL klarar bara postiva tal, men jag måste multiplicera negativa tal.
Så här har jag löst det och det fungerar, men jag tycker att det inte ser så elegant ut, och undrar om det finns något smidigare sätt:
I r21 ligger ett positivt tal, i r18 ett tal som varierar mellan negativt och positivt.
resultatet hamnar i r24:r25 för vidare bearbetning som ni slipper se :)


tst r18 //testar för +/-
brpl positiv

neg r18 //talet är tydligen negativt, och jag gör det positivt för att kunna multiplicera
mul r18,r21

ldi r18,0xff //gör resultatet negativt genom att bilda två-komplementet, dvs invertera talet och addera 1
eor r0,r18 //inverterar
eor r1,r18 //inverterar
mov r24,r0 //kopierar till registerparet r24:r25 som går att använda med adiw
mov r25,r1
adiw r24,1 //tvåkomplementet av multiplikationsresultatet klart

rjmp mulfin


positiv: //inga konstigheter - multiplicera och lägg in r24:r25
mul r18,r21
mov r24,r0
mov r25,r1

mulfin:
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1355
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: 8 bit atmega assembler multiplikation

Inlägg av baron3d »

Varför ?

Kod: Markera allt

ldi r18,0xff
eor r0,r18 //inverterar
eor r1,r18 //inverterar
och inte ?

Kod: Markera allt

com r0 //inverterar
com r1 //inverterar
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: 8 bit atmega assembler multiplikation

Inlägg av sodjan »

Använd code-taggarna så går det att läsa också.

Just 8x8 multiplikationer hör väl annars till de vanligaste
operationerns och det borde finnas massor av exempel.
En Google på "signed multiplication AVR 8 x 8" gav t.ex :
http://avr.15.forumer.com/a/how-to-mult ... t1111.html
http://www.atmel.com/dyn/resources/prod ... oc1631.pdf
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: 8 bit atmega assembler multiplikation

Inlägg av blueint »

Har för mig man gör om talen till 2-komplement och sedan multiplicerar dom. På det sättet ska man visst slippa krånglet med negativa specialfall.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: 8 bit atmega assembler multiplikation

Inlägg av bearing »

Här finns länk till zip-fil med exempelkod som hör till AVR201 som sodjan länkade till ovan:
http://atmel.com/dyn/products/app_notes ... ily_id=607
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: 8 bit atmega assembler multiplikation

Inlägg av Swech »

Ett bättre sätt är ju att ta MULS Multiply Signed istället :wink:

Swech
PCP-Lasse
Inlägg: 44
Blev medlem: 3 maj 2010, 20:19:56
Ort: Nyköping

Re: 8 bit atmega assembler multiplikation

Inlägg av PCP-Lasse »

Swech, det är säkert jättebra om man har en sån processor.

sodjan: Åh, kodtaggar. Det ska jag använda hädanefter. Och tack för länkarna.

baron3d : För att jag fick för mig att 1-komplement inte var samma sak. :)


Tack, tack.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: 8 bit atmega assembler multiplikation

Inlägg av Swech »

Då får du berätta vilken processor du har
för vad jag vet så alla Atmel som har MUL i instruktionsuppsättningen har även MULS
Har inte stött på någon som endast har MUL

Swech
PCP-Lasse
Inlägg: 44
Blev medlem: 3 maj 2010, 20:19:56
Ort: Nyköping

Re: 8 bit atmega assembler multiplikation

Inlägg av PCP-Lasse »

Swech, jag har sällan varit så glad över att ha haft helt fel. :)

Det står inte ett ord om MULS i den asm userguide vi fick av skolan, har sökt genom dokumentet. Allt annat står med. :shock:
Men åh, mitt liv blev mycket lättare. TACK!!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: 8 bit atmega assembler multiplikation

Inlägg av sodjan »

> Det står inte ett ord om MULS i den asm userguide vi fick av skolan,...

Ja men för jösse namn...
Du använder däl inte *det* som dokumentation !?
PCP-Lasse
Inlägg: 44
Blev medlem: 3 maj 2010, 20:19:56
Ort: Nyköping

Re: 8 bit atmega assembler multiplikation

Inlägg av PCP-Lasse »

Inte nu längre. Men ska man på något telepatiskt sätt veta att ett dokument från atmel tillhandahållet från ett universitet är värdelöst?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: 8 bit atmega assembler multiplikation

Inlägg av sodjan »

Nu sa du inte att det var ett Atmel dokument och inte heller *vilket* dokument det är.
Det fanns ingen anledning att anta annat än att det var något som skolan hade snott ihop.
Om du inte vill ha missförstånd så får du vara tydligare helt enkelt.
PCP-Lasse
Inlägg: 44
Blev medlem: 3 maj 2010, 20:19:56
Ort: Nyköping

Re: 8 bit atmega assembler multiplikation

Inlägg av PCP-Lasse »

Jag ska vara tydligare, men du kan också testa att vara lite trevligare. :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: 8 bit atmega assembler multiplikation

Inlägg av sodjan »

OK, you've got a deal... :-)
Skriv svar