Article View: pl.comp.lang.asm
Article #1814Re: [ASM] [PIC16F84a][HEX->DEC] Konwersja liczby na dziesiątki i jednostki
From: -=RapidHail=-
Date: Sun, 18 May 2008 13:05
Date: Sun, 18 May 2008 13:05
46 lines
3254 bytes
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-mailReferences:
<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