[elektro] Micro Pascal kérdés

elight elight at gmail.hu
Tue Mar 3 08:53:25 CET 2020


Szia Tibi!

Elvileg C ben így van:
https://download.mikroe.com/documents/compilers/mikroc/pic/help/bitwise_operators.htm

és Pascalban is lehetnek hasonló műveletek...
https://download.mikroe.com/documents/compilers/mikropascal/pic/help/bitwise_operators.htm

Pontosabban:
"
_/Bit bit-váltó operátorok/_/
//
//A bináris operátorok shl és shr mozgatják a bal oldali operandus 
bitjeit a jobb operandus által meghatározott pozíciókkal balra vagy 
jobbra. A jobb oldali operandának pozitívnak és kevesebbnek kell lennie, 
mint 255.//
//
//A balra eltolás (shl) esetén a bal oldali legtöbb bit elvetésre kerül, 
és a jobb oldalon lévő „új” bitek nullákkal vannak ellátva. Így az alá 
nem írt operandus n pozícióval balra tolása egyenlő azzal, hogy 
megszorozzuk azt 2n-rel, ha az összes eldobott bit nulla. Ez igaz az 
aláírt operandusokra is, ha az összes elvetött bit megegyezik a jel 
bittel.//
//
/
/Jobbra váltáskor (shr) jobbra a legtöbb bitet eldobják, a bal oldalon 
lévő „felszabadult” bitekhez pedig nullákat kell rendelni (alá nem írt 
operandus esetén) vagy a jel bit értékét (aláírt operandus esetén). Az 
operandus n ponttal jobbra//to//lása //
//egyenlő azzal, ha azt 2n-el osztjuk.//
//"//
/tehát kicsit másképpen van és megy bele a nulla.

Végső esetben Shiftelés előtt egy bitmaszkolt IF-el
meg kell állapítani és el kell átmenetileg tárolni
az átvitel bitet. A következő bájtnál  pedig
hozzá kell adni.

Üdv István




2020-03-02 18:46 keltezéssel, ztibi írta:
> Sziasztok.
> Gondolom többen vannak itt, akik használnak(használtak) Micro Pascalt 
> PIC-hez.
>
> Bocsi a kezdő kérdésért.
> 2 db  byte tipusú változót (alsó, felső) szeretnék balra shiftelni 
> úgy, hogy az alsó 7. bitje bekerüljön a felső 0. bitjébe
> ezt csak trükközve lehet megtenni? mert  jobbról 0 kerül az alsó 
> bitbe, nem a C regiszter.
> 16F628-ba lenne
>
> var    alsó, felső :byte;
>
> alsó :=  shl alsó;
> felső := shl felső;
>
> itt hiányzik a felső 0-s bitjéből az alsó teteje
>
> Próbáltam ASM beszúrással, itt meg szintax hibával akad el:
>
> ASM
>  begin
>   RLF  alsó,1
>   RLF  felső,1
>  end;
>
> Mit írtam rosszul?
> köszi előre is



More information about the Elektro mailing list