🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #1814

Re: [ASM] [PIC16F84a][HEX->DEC] Konwersja liczby na dziesiątki i jednostki

#1814
From: -=RapidHail=-
Date: Sun, 18 May 2008 13:05
46 lines
3254 bytes
Użytkownik "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl> napisał w wiadomości 
news:g0p6r0$7fi$2@inews.gazeta.pl...

>  Bez znajomości instrukcji (ja robię na x86) trudno mi będzie to 
> powiedzieć, ale przyglądając się trochę kodowi według mnie działa on tak:
> 1. odejmij od danej liczby 10
> 2. jak wynik ujemny, należy 10 dodać z powrotem, reszta jest liczbą 
> jedności
> 3. Jak wynik nieujemny, zwiększ liczbę dziesiątek o 1 i skacz do 1.
>
>  Czyli metoda "na piechotę" by z tego wyszła. Czy PICi mają instrukcje 
> "wyższego poziomu", takie jak mnożenie i dzielenie? Z ciekawości pytam.

No właśnie nie jest to metoda na piechotę. Znaczy co ja przez to rozumiem: 
odejmowanie dziesiątek i sprawdzenie ile razy została odjęta. Posiadają 
tylko 35 instrukcji, nie ma mnożenia i dzielenia. A w kodzie główną uwagę 
należy skierować na przesunięcia cykliczne (takie moje zdanie).

Jeżeli będzie chcęć rozgryzienia to podaję instrukcję użyte w kodzie:
movlw - wpisanie na akumulator (WRERG)
movwf - wpisanie do rejestru
clrf - czyszczenie rejestru (o zadanym adresie)
rlf - przesuwanie cykliczne w lewo zawartości rejestru o podanym adresie ze 
znacznikiem C, a wiec:
RLF REG,1
przed rozkazem: REG = 1110 0110, znacznik C=0
po rozkazie:    REG = 1100 1100, C=1

RLF REG,1
przed rozkazem: REG = 1110 0110, znacznik C=1
po rozkazie:    REG = 1100 1101, C=1

Bit C wrejestrze STATUS to znacznik przeniesienia (aktywne "1") lub pożyczki 
(aktywne "0"): 1 - wystąpiło przeniesienie z najbardziej znaczącego bitu 
wyniku, 0 - nie wystąpiło.
btfss - testowanie bitu w rejestrze o adresie f (tutaj bit C w rejestrze 
STATUS), jeżeli jest ustawiony to pomijja kolejną instrukcję
addwf - dodanie WREG do rejestru i zapisanie wyniku w rejestrze (1 po 
przecinku)
decfsz - dekremenctuj rejestr o zadanym adresie, jeżeli po dekrementacji 
będzie 0 to pomija następny rozkaz
movf dana,0 - przesłanie rejestru do WREG (0 po przecinku), jeśli 1 to na 
odwrót z WREG do rejestru
subwf f,d - odejmowanie od rejestru f rejestru WREG i zapisanie wyniku w 
WREG (d=0)
movwf f - przesłanie zawartości WREG do rejestru f. 
Technical Details
Message-ID: <g0p9jb$del$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail
References: <g0nrgn$s3s$1@news.onet.pl> <g0p6r0$7fi$2@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail
From: "-=RapidHail=-" <dyskus@usun.to.epf.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: [ASM] [PIC16F84a][HEX->DEC] Konwersja liczby na
 dziesiątki i jednostki
Date: Sun, 18 May 2008 15:05:46 +0200
Organization: Onet.pl
Lines: 48
Message-ID: <g0p9jb$del$1@news.onet.pl>
References: <g0nrgn$s3s$1@news.onet.pl> <g0p6r0$7fi$2@inews.gazeta.pl>
NNTP-Posting-Host: cjk122.neoplus.adsl.tpnet.pl
X-Trace: news.onet.pl 1211115947 13781 83.31.60.122 (18 May 2008 13:05:47 GMT)
X-Complaints-To: usenet@news.onet.pl
NNTP-Posting-Date: Sun, 18 May 2008 13:05:47 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.4133
X-Sender: OL1CEebFB1rHNBo1S4yTJQ==
X-RFC2646: Format=Flowed; Response
X-Newsreader: Microsoft Outlook Express 6.00.3790.3959
X-Priority: 3
X-MSMail-Priority: Normal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit