Jak rozłożyć bajt na 8 bitów i zapisać je do tablicy w Bascomie?

rozłożenie liczby na bity





Poprzedni Następny
Wiadomość
Spis treści
From: <piano2_at_nospam_poczta.onet.pl>
Subject: rozłożenie liczby na bity
Date: 30 Oct 2001 22:09:50 +0100


Witam wszystkich

czy wiecie może jak w bascomie (ostatecznie w assemblerze)
rozłożyć bajt na poszczególne 8 bitów i wpisać je np. do tablicy ?


Bogdan

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Jacek Bogusz" <jacek.bogusz_at_nospam_ep.com.pl>
Subject: Re: rozłożenie liczby na bity
Date: Tue, 30 Oct 2001 23:25:44 +0100


Użytkownik <piano2_at_nospam_poczta.onet.pl> napisał w wiadomości > Witam wszystkich

czy wiecie może jak w bascomie (ostatecznie w assemblerze)
rozłożyć bajt na poszczególne 8 bitów i wpisać je np. do tablicy ?

Cześć! Jeśli chodzi o assembler MCS51, to jest bardzo proste. Robisz
instrukcję przesunięcia w prawo lub w lewo przez carry i badasz stan flagi
C. Może to wyglądać jak poniżej:
MOV A,bajt
MOV B,#8 ;8 badanych bitów
Loop:
RLC A
JC akcja_dla_1
AJMP akcja_dla_0
DJNZ B,Loop ;powtórz 8 razy

W Basicu jest ten sam algorytm, tylko troszkę inaczej. Otoż przesunięcie w
lewo odpowiada podzieleniu liczby przez 2. Czyli dzielisz liczbe w petli
przez 2 i badasz reszte z dzielenia. Jeśli jest 0, to "0", jeśli 0,5 to "1"

Dim B as byte, i as byte, BS as string[8]

BS = ''
B = liczba_do_zamiany
For i = 1 to 8
if ((B - 2*(B MOD 2))<>0) then BS = BS+'1' else BS = BS+'0'
B = B MOD 2
Next i

Chyba nic nie pokopalem w tym Basicu.... ;)))
Jacek



Poprzedni Następny
Wiadomość
Spis treści
From: Ireneusz Niemczyk <i.niemczyk_at_nospam_multispedytor.com.pl>
Subject: Re: =?iso-8859-2?Q?roz=B3o=BFenie?= liczby na bity
Date: Wed, 31 Oct 2001 10:47:59 +0100


Cześć! Jeśli chodzi o assembler MCS51, to jest bardzo proste. Robisz
instrukcję przesunięcia w prawo lub w lewo przez carry i badasz stan flagi
C. Może to wyglądać jak poniżej:
MOV A,bajt
MOV B,#8 ;8 badanych bitów
Loop:
RLC A
JC akcja_dla_1
AJMP akcja_dla_0
DJNZ B,Loop ;powtórz 8 razy

A nie prościej załadować dają do obszaru adresowanego bitowo i testować ? (np:
jb acc.0,labbel albo jb 20.4,labbel chyba nie bardzo rozumiem sens przykładu.

A może chodzi o umieszczenie 8 bitów bajtu w kolejnych bitach np: zerowych
kolejnych ośmiu bajtów ?

--
PZD, Irek.N.



Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Lewandowski" <locust_at_nospam_poczta.onet.pl>
Subject: Re: rozłożenie liczby na bity
Date: Wed, 31 Oct 2001 15:13:13 +0100



----- Original Message -----
From: <piano2_at_nospam_poczta.onet.pl>
Newsgroups: pl.misc.elektronika
Sent: Tuesday, October 30, 2001 10:09 PM
Subject: rozłożenie liczby na bity


Witam wszystkich

czy wiecie może jak w bascomie (ostatecznie w assemblerze)
rozłożyć bajt na poszczególne 8 bitów i wpisać je np. do tablicy ?

[posłałem to przez pomyłkę autorowi wątku na priv - sorry]

do czego to doszło... ostatecznie w assemblerze...
Tak na pierwszy rzut klawiatury (może nie być optymalne, może nie działać,
wymyślam na bieżąco):

mov a,bajt_do_rozlozenia
mov b,#08h
mov R0,#adrestablicy
loop:
rrc a
push acc
clr a
rlc a
mov _at_nospam_r0,a
pop acc
inc r0
djnz b,loop

Marek Lewandowski ICQ UIN: 10139051
uyh0_at_nospam_rz.uni-karlsruhe.de
http://locust.republika.pl