1) du¿o czytelniej,
2) du¿o ³adniej,
3) wygasza zera nieznacz±ce,
4) du¿o szybciej osi±gniête ... Napisz mi to samo dla hexa, oktala i bina ... bo ja tylko zmieniê format printfa !
Nie podniecaj siê assemblerem, chyba ¿e nie planujesz wracaæ do programu po 5 latach. Wtedy jeste¶ usprawiedliwiony.
Po kilku latach z assemblerami zrozumiesz co daje jêzyk wy¿szego poziomu. Ale bêdzie Ci ³atwiej, bo znasz assembler i bêdziesz sobie optymalizowa³ s³abe miejsca kompilatora.
Czyli idziesz prawid³ow± ¶cie¿k± :-)
Pozdrawiam,
Marek
J
Janko Muzykant
E, tam, nie problem ;)
clr f0 mov b, #0ah div ab mov r7, b mov b, #0ah div ab jnz konwersja31 setb f0 mov a, #0f0h konwersja31: add a, #30h acall wyslijdane xch a, b jnz konwersja32 jnb f0, konwersja32 mov a, #0f0h konwersja32: add a, #30h acall wyslijdane mov a, r7 add a, #30h acall wyslijdane
Przy okazji zwracam uwagę na sierotę - fo w psw - przydaje się jako znacznik ''na chwilę''...
No fakt, trzeba posiedzieć z pięć minut ;)
Zgadzam się jak najbardziej, ale są pewne ale...
1) program mi się nie wyrobi - rzeczy dzieją się równolegle podczas czekania na konwersję A/D. (przyspieszanie zegara nic nie zmieni bo znowu nie wyrobi mi się z peryferiami - czasy dostępu). Stąd 70 cykli do zagospodarowania na np. ową procedurkę.
2) dobrze mi z tym asemblerkiem - mam sporo procedur jeszcze po czasach, kiedy 51 miały okienka a o basicu na nie nikt nie słyszał... Naumiałem się wtedy i tak mi zostało. VisualBasica (dla dosa) też mam w miarę opanowanego (jak się skompiluje to nawet w miarę hula) ale jakoś _na_razie_ nie chce mi się zabrać za basica czy c na 51... może jak będzie wiecej roboty.
Poza tym problem zwykle tkwi w zmyślnym algorytmie - niezależnie od poziomu języka.
Mam nadzieję ;)
J
J.F.
Tak .. tylko ile printf zajmuje w kodzie ? A nie mowimy o pececie z 64MB RAM tylko czyms z kilkoma KB na program.
A raz napisane moze sluzyc w nastepnych programach.
I .. czy doliczyles czas poswiecony na nauke C :-)
J.
M
Marek
Zgoda, 1-2kB to mo¿e byæ ale i tu mo¿na sporo upro¶ciæ.
To by³ wspania³y, niepowtarzalny czas poznawania nowego i sp³aca siê do dzi¶ ... mam kilka takich sterowników, ¿e napisanie ich w assemblerze by³oby PRAKTYCZNIE niemo¿liwe. Pisanie w C zajê³o
1/2 roku, to ile trwa³oby w assemblerze ? 3 lata ? 5 ? A wprowadzanie pó¼niej zmian ... brrr ...
Pzdr,
Marek
J
J.F.
Tylko wiesz - przez czas poswiecony poznawaniu opcji control stringu printfa mozna sobie napisac pare procedurek w assemblerku i uzyskac zalozony wynik :-)
Przy dobrze prowadzonym projekcie i doswiadczeniu .. 1 rok ?
Pamietaj ze ocenia sie iz programista pisze rzedu 100 linijek dziennie :-)
Przy dobrze prowadzonym projekcie ..
ale za to przejscie na inny procesorek .. brr :-)
J.
E
entroper
Janko Muzykant napisa³ w wiadomo¶ci: ...
linie add a, #30h przeniesc do "wyslijdane". Co wygralem ?
btw - sztuka dla sztuki...
entrop3r
J
Janko Muzykant
Pomysł dobry ale wtedy... trzeba zrobić ''wyslijdane1'' :) (z procedury ''wyślijdane'' korzystają także inne dobra, którym akurat akumulator pasuje jaki jest).
A tak w ogóle myślałem o bcd, ale o ile sprawdza sie przy wartościach do
99 to przy trzech cyfrach procedura jest podobnie złożona. Chyba, że... konkursik trwa ;)
E
entroper
Janko Muzykant napisa³ w wiadomo¶ci: ...
otoz to. To byl po prostu przyklad "zamiatania pod dywan" - tutaj mozna ujac a gdzie indziej trzeba dodac, ale za to ladnie wyglada. Jestem wielkim (i coraz bardziej osamotnionym) zwolennikiem optymalizacji kodu (zostalo mi z czasow pamieci 2716), ale nie zawsze takie zabawy maja sens - jesli napisales program, ktory zajmuje 98% RAM-u, ROM-u i nie zostaje mu nic czasu na swobodne pobieganie w glownej petli, to Twoja radosc jest przedwczesna i za chwile okaze sie, ze musisz przechodzic na wiekszy procesor.
entrop3r
J
Janko Muzykant
Albo korzystać z ramu.. wyświetlacza lcd. Tyle dobra sie tam marnuje... ;)
J
J.F.
To robisz: wyslijcyfre: add a,#30h wyslijdane: .... ... ret
:-)
J.
J
Janko Muzykant
... ale wtedy będzie 2x acall i 1x ret a wtedy siwy dym i jasne capy ;) A znowuż acall - add a,#30h - ret jest trochę optymalizacją... na zaliczenie przedmiotu ;) No, chyba, że Atmel planuje wypuścić coś na 4 nogach z 64 bajtami romu...
W
Wojtek Kaniewski
wyslijdane1: add a,#48
wyslijdane: ...
i jesteś 4 bajty do przodu.
w.
R
RusH
"Marek" snipped-for-privacy@wp.pl wrote in news:buo6vc$bl8$ snipped-for-privacy@nemesis.news.tpi.pl:
programisci w Indiach pisza takie cos w 3-4 tygodnie, poprostu jestes leniwy :)
Pozdrawiam.
M
Marek
Tak, i jest siê skazanym do koñca ¿ycia na assembler :-) A ja w tej chwili swobodnie w miarê pos³ugujê siê kilkoma assemblerami, C, Pascalem, Delphi i jeszcze paroma innymi. I aplikacjê na Windows piszê sobie sam, nie jestem zale¿ny od programisty, ktory jak ognia boi siê mikrokontrolerów, a has³o "assembler" przyprawia go o zawrót g³owy :-)
No to policzmy ... 7000 linii w C51 (sterownik przemys³owy), razy ile ? 10 linii assemblera na jedn± liniê C chyba nie bêdzie przesad± ? No dobra ... 7 ....
7000 * 7 = 49 000 linii assemblera ... co by siê zgadza³o plus minus bo do 64kB zosta³o mi kilkaset bajtów ...
49 000 / 100 = 490 dni ... rok roboczy ma ich jakie¶ 240 ... czyli jednak 2 lata :-)
Ale napisanie takich algorytmow, jakie wycisn±³em z C51 (biblioteki procedur wykonawczych, biblioteki typów wyj¶æ, programy swobodnie konstruowane przez u¿ytkownika z procedur, wy¶wietlanie LCD, do¶æ ... nie zamierzam siê chwaliæ :-) ) by³oby w praktyce niemo¿liwe w assemblerze i musia³oby zaj±æ 3-4 lata.
Przy 40-50 000 linii w assemblerze, wystarczy ¿e g³ówny programista odejdzie i le¿ysz, czy Ci siê to podoba czy nie ...
Ano w³a¶nie, a ja swobodnie przesiadam siê z 51' na AVR, bo tu i tu i tak u¿ywam g³ównie C ... Choæ assemblerem nie gardzê, bo oczywi¶cie pozwala optymalizowaæ krytyczne punkty programu.
OK !!! Osi±gn±³em zamierzony efekt, czyli bujn± dyskusjê. EOT !!!
:-)
Pzdr,
Marek
M
Marek
U¿ytkownik "RusH" snipped-for-privacy@kiti.pulse.pdi.net> napisa³ w wiadomo¶ci news:Xns9478D5CBA657FRusHcomputersystems@193.110.122.80...
Zaskoczê Ciê ... tu siê zgadzam ... programi¶ci w Indiach pisz±:
"To by³ wspania³y, niepowtarzalny czas poznawania nowego i sp³aca siê do dzi¶ ... mam kilka takich sterowników, ¿e napisanie ich w assemblerze by³oby PRAKTYCZNIE niemo¿liwe. Pisanie w C zajê³o
1/2 roku, to ile trwa³oby w assemblerze ? 3 lata ? 5 ? A wprowadzanie pó¼niej zmian ... brrr ... "
rzeczywi¶cie przez 3-4 tygodnie :-)
Praw fizyki nie da siê zmieniæ: 370 kB tekstu programu, pisanego przez 4 tygodnie, 6 dni w tygodniu, 10 godzin dziennie ( to moja leniwa dawka) daje jeden znak co 2 sekundy ... hehehe
W ten sposób to mo¿na napisaæ statut Samoobrony, uzasadnienie n/t wy¿szo¶ci jednorêkich bandytów nad dwurêcznymi bandytami z SLD, reformê s³u¿by zdrowia w/g ³apiñskiego (celowo pisany z ma³ej litery), wyst±pienia Jolki i komentarze polityczne Olka.
Ale niestety sensownego programu to w ten sposób nie da siê pisaæ :-)
Pzdr,
Marek
Z
ziel
On Behalf Of Marek
Przepraszam, czy możesz mi wskazać jakiś sterownik przemysłowy zbudowny na '51? Oczywiscie pomijam tu sterowniki budowane na indywidualne zamówienia. Ale coś takiego budowanego seryjnie i używanego. No i oczywiście program pisany w Keil'u 51.
pzdr Artur
Z
ziel
On Behalf Of Marek
Sorki, ale czy jesteś najlepszy na świecie? Zdażało mi się pisać i po 600kB tekstu programu z minimalnymi komentarzami w ciągu miesiąca i to bynajmniej nie po 12 lub więcej godzin dzienie. a i tak po czasie znajdowałem o niebo lepsze rozwiązania, zajmujące
1/4 pamięci i wykonujące się pięć razy szybciej. Proszę, więcej pokory.
Oczywiście wiekszość napisałem wcześniej i wystarczyło tylko kopiowianie. Ale ... każde takie kopiowanie wymagało przemyślenia - wejść, wyjść, wspólnych zmiennych itd. A jestem w 100% pewny, że przynajmniej jest 1.000.000 lepszych niż ja.
pzdr Artur
J
JarekC
U¿ytkownik "Janko Muzykant" snipped-for-privacy@wp.pl napisa³ w wiadomo¶ci news:buot41$hbs$ snipped-for-privacy@korweta.task.gda.pl...
Po mojemu 1xacall i 1xret - bez dymu:-)
zamiast:
add a,#30h acall wyslijdane
jeno:
acall wyslijcyfre
Pozdrawiam Jarek
J
Janko Muzykant
A tośmy do tego już doszli wcześniej ;) Ale generalnie chodziło mi o inny algorytm a nie o skracanie...
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.