Sida 2 av 2

Re: MPLAB assembler: Lyckas inte "reservera" ett word.

Postat: 24 oktober 2010, 14:09:40
av sodjan
> PIC-kretsar har inte någon barrel shifter,

Fel.

> Visserligen kan man använda instruktionen som byter plats på nibbles för att snabbt shifta 4 steg,

Det blir en rotates, inte shifts.

> > En generell motod för att göra vadå ?
> Lösa problemet som presenterades i den första posten, såklart...

Nej, den har redan presenterats, ADFM=0 och enbart läsa ADRESH.

Re: MPLAB assembler: Lyckas inte "reservera" ett word.

Postat: 24 oktober 2010, 14:22:54
av stekern
>> > En generell motod för att göra vadå ?
>> Lösa problemet som presenterades i den första posten, såklart...

>Nej, den har redan presenterats, ADFM=0 och enbart läsa ADRESH.

Vad hakar du upp dig på?
Metoden jag presenterade löser också problemet, och mer generellt om det inte skulle råka röra sig om något som råkar gå att vänsterjustera.
En annan generell metod har visats av Icecap och bearing (rotera genom carry).
Ingen av lösningarna utesluter väl den andra?

bearing:
Jo, det är sant att det kanske inte är den mest effektiva metoden för just den där processorn.

Re: MPLAB assembler: Lyckas inte "reservera" ett word.

Postat: 24 oktober 2010, 14:26:17
av bearing
Rättning: PIC16-kretsar har inte någon barrel shifter.
Det blir en rotates, inte shifts.
Det krävs så klart även att den ena nibblen nollas genom t.ex andlw 0xF0 för att det ska motsvara skiftning 4 steg.

Re: MPLAB assembler: Lyckas inte "reservera" ett word.

Postat: 25 oktober 2010, 08:55:56
av JimmyAndersson
sodjan skrev:Korrekt, "RES 2" allokerar 2 st 8-bitars variabler... :-)

Dock ligger de alltid tillsammans så det är enkelt att t.ex göra
"my_array RES 20" för att få en 20 positionerns array/lista/buffert
som sedan kan loopas igenom med indexregistren eller liknande.
Startadressen till arraynen är då "my_array".

> Om du shifter LSB'n först och sedan MSB'n får du det så.

Exakt, och det är ju just därför som C-flaggan alls är med i shiften.
Då förstår jag.

Tack för hjälpen och alla tips. :tumupp: