Sida 1 av 1
8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 13:47:56
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:
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 14:03:32
av baron3d
Varför ?
Kod: Markera allt
ldi r18,0xff
eor r0,r18 //inverterar
eor r1,r18 //inverterar
och inte ?
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 14:03:47
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
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 14:11:08
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.
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 14:21:26
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
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 14:28:25
av Swech
Ett bättre sätt är ju att ta MULS Multiply Signed istället
Swech
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 15:15:42
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.
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 15:53:50
av blueint
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 16:40:17
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
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 18:24:17
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.
Men åh, mitt liv blev mycket lättare. TACK!!
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 19:56:05
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 !?
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 20:31:12
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?
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 20:34:00
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.
Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 20:40:19
av PCP-Lasse
Jag ska vara tydligare, men du kan också testa att vara lite trevligare.

Re: 8 bit atmega assembler multiplikation
Postat: 26 juni 2010, 22:43:13
av sodjan
OK, you've got a deal...
