> 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.
MPLAB assembler: Lyckas inte "reservera" ett word.
Re: MPLAB assembler: Lyckas inte "reservera" ett word.
>> > 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.
>> 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.
Senast redigerad av stekern 24 oktober 2010, 14:47:57, redigerad totalt 1 gång.
Re: MPLAB assembler: Lyckas inte "reservera" ett word.
Rättning: PIC16-kretsar har inte någon barrel shifter.
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.Det blir en rotates, inte shifts.
- JimmyAndersson
- Inlägg: 26586
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Re: MPLAB assembler: Lyckas inte "reservera" ett word.
Då förstår jag.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.
Tack för hjälpen och alla tips.
