[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