zapisze to matematycznie w postaci "bajtowej" gdzie jedna wielka litera to jeden bajt a 0 to jeden bajt tylko że równy zero X,Y / Z,A = 0W (wynik) + 0R (reszta) teraz reszta mnozona razy 256 czyli 0R * 256 = R0 R0 / Z,A = 0V i ostateczny wynik to W,V teraz lepiej to zapisałem ??? hehe
Zrób na przykład tak: jz SKOK ... ... ... SKOK: ljmp DZIEL .. ..
Przede wszystskim trzeba wiedzieć co to za procesor. Domyślam się że 8-bit - więc nie ma instrukcji do dzielenia 16-bit (pomijam jakieś 'super-wynalazki' z układem arytmetyki zmiennoprzecinkowej itp.) Trzeba napisać lub poznać podprogram który dzieli liczby 16 bitowe i według tego się kierować.
Nie, nie jest. DIV, to dzielenie liczb bez znaku, IDIV to dzielenie liczb ze znakiem.
Proponuję [url=http://www.dzyszla.aplus.pl/downloa... prostych kodów do nauki Assemblera
Np binarnie - dzieląc dany rejestr przez dwa i wyświetlanie 0 lub 1 w zależności od stanu rejestru, który przechowuje resztę z dzielenia.
W szkole uczą dzielenia ręcznego w formie tabelki. Z dzieleniem w formacie dwójkowym jest tak samo. Ma tylko jedno ogromne uproszczenie: W systemie dziesiętnym liczba w pobranym fragmencie może nam się zmieścić 0, 1, 2, 3... lub 9 razy i zostaje nam reszta. W przypadku dzielenia dwójkowego liczba może się zmieścić 0 lub 1 raz... i zostaje nam reszta...
Podziel liczbę przez 10. Część całkowita będzie dziesiątkami a reszta z dzielenia jednostkami.
Witam. Timer mikrokontrolera '51 taktowanego zegarem 11.059200 MHz zliczy w ciągu jednej sekundy 921600 impulsów. Ze względu na wielkość timera (2 bajty) może Kolega zliczać setne części sekundy - ustawić przerwanie co 9216 impulsów. Każde wywołanie przerwania zwiększy zmienną o 1, czyli mamy w niej wynik pomiaru z rozdzielczością 0,01 s. Rozwiązanie...
Witam. Program możesz napisać tak: 1.Potrzebujesz dodatkowej zmiennej w której będziesz przechowywal wyraz oraz zmiennej zliczającej długość wyrazu. 2. W pętli (ilość obrotów równa jest ilości znaków w zdaniu) wykonujesz: a) jesli aktualny znak jest równy spacji wyświetl wyraz i liczbę znaków oraz powróć do punktu 2 czyszcząc te dwie zmienne. b)dopisz...
Witam Na czwartek muszę przygotować listingi programów napisanych w asemblerze które wykonają poniższe działania: 1. Dane są liczby: A=0F1h, B=00011111b. Obliczyć binarnie A+B, A-B, B-A. Podać wynik w postaci binarnej i szesnastkowej. 2. Napisać program mnożenia x4 liczby umieszczonej w rejestrze R7 bez użycia instrukcji mul ab. 3. Napisać program obliczający...
Musisz dzielić przez 10 i resztę z dzielenia traktować po kolei jako jednostki, dziesiątki, setki, itd. Myślę, że podstawowe pytanie, to to, co to za asembler i jakie rozkazy zawiera.
sorka zapomniałem napisac, chodzi o AVRy...
Witam. By zapoznać się na dobre z AVR'ami rozpocząłem pisanie programu z procedurkami które później będe wykorzystywał. Jak zawsze, chcę by każda część programu była w 100% moja, żadnego kopiowania z innych źródeł. Niestety, napisanie jakiejś bardziej skomplikowanej procedurki od podstaw pochłania dużo czasu. O wiele prościej by było sięgnąć do jakiegoś...
Algorytmy mnożenia i dzielenia, a także innych działań są dokładnie opisane m.in. w książce Józefa Kalisza Podstawy elektroniki cyfrowej . Sporo algorytmów można znaleźć na stronach producentów mikrokontrolerów w działach aplikacje. Jeśli znasz choć trochę asembler '51, to na pewno dasz radę. Pozdrawiam.
Przy dzielenie przez dwa tracisz jeden bit znaczący stąd taki sam wynik otrzymasz przy liczbei x parzystej i niepraszystej na przykład dla x=10 i x=9 (10-3)/2=3 (9-3)/2=3
a czy jest wogule w asemblerze dzielenie przez inne liczby niż 2 i jej wielokrotności bo znalazłem min. ldi r16,30/3 ale tylko tą komenda
Możesz pomnożyć resztę przez 1000 a następnie znowu podzielić to przez dzielnik. 1 x 1000 = 1000 1000/16 = 62.5 Czyli otrzymasz 62 i 8 reszty. Można by pomnożyć przez 10000 uzyskując na koniec wynik 625 ale wtedy dzielenie przez większe liczby nie będzie działało bo reszta będzie duża i pomnożona przez 10000 nie zmieści się w 16-tu bitach.
Można to robić, ale chyba tylko w celach poznawczych. Tak naprawdę w programie i programowaniu szkoda na to czasu - tym może sie zająć kompilator a nam pozostaje wymyślić ładnie zapisywalny w kilku liniach algorytm (mówię o C). Mimo wszystko nie uważam, że asembler jest bezużyteczny - jest bardzo potrzebny, ale raczej do innych celów.
Witam muszę wykonać poniższe dzielenie w asemblerze a/(b*c) i nie wie jak to zrobić. Dla (b*c)/a wyglądałoby to tak: mov ax,b mov bx,c mul bx mov bx,a div bx Ale jak to będzie wyglądało dla a/(b*c) ?
Kto szuka http://www.piclist.com/techref/microchip...
Dzielenie jest łatwe w uproszczeniu, jeśli np. obie liczby mają jednakową ilość zer z prawej strony, to o tyle mozna je przesunąć w prawo. Ogólnie algorytm dzielenia jak liczb dziesiętnych w podstawówce. Mnożenie jest już w µkontrolerze i to nawet w postaci cząstkowej fmul .
Hmm... widzę, że temat jest stary, ale może komuś to się przyda. Dzielenie przez 4096, jako że ta liczba jest potęgą dwójki (2^12) to zwykłe przesunięcie w prawo właśnie o te 12 bitów. Jeżeli XL:XH zawiera zliczone impulsy to podzielić to przez 4096 można tak: mov XL, XH ; skrócone podzielenie przez 256 ;) ldi XH, 0x00 ; wynik w XH zawsze będzie właśnie...
Mniej na temat ale ja robię dokładnie jak kamyczek. Zacząłem od Bascoma bo było łatwo i szybko, nie zabija początkującego jak C. Wszyscy krzyczą żeby zacząć od C ale moim zdaniem dla kogoś kto zaczyna programowanie to tylko się nabluzga i zniechęci. Gdy mi Bascom już nie wystarczał lub wyżerał pamięć to robiłem wstawki ASM, i tez kończyło sie na tym...
Okey, tak zrobię. A swoją drogą Debbuger mówi mi, że gdzieś w moim programie występuje dzielenie przez zero, ale nie jestem w stanie określić kiedy to może się dziać. Byłbyś w stanie pomóc z tym?
Witam Mam ogromna prośbę. Potrzebuje przeanalizować 2 programy które niestety nie działają poprawnie. Programy pisałem sam lecz niestety sa w nich pewne błędy które niestety nie mogę znaleźć. Po asemblacji działają jednak w programie symulacyjnym nie wyświetlają tego co powinny, wiec s to programy bardziej wychodzące z tego co ma robi dany program niż...
Witam Moja przeróbka. Dzielenie 3B na 2B. Działa na pewno. ;dzielenie 3B/2B ;dzielna w r18,19,20 ;dzielnik r16,r17 ;wynik w r18,r19 i r20 ;reszta w r12,13,14 DIV32: clr r15 div16u:clrr12 ;clear remainder Low byte clr r13 ;midle subr14,r14 ;clear remainder High byte and carry ldir21,25 ;init loop counter d16u_1:rolr18 ;shift left dividend...
Jak w asemblerze (Pentium) uzyskać resztę z dzielenia liczby 64 bitowej przez 32 bitową, iloraz mnie nie interesuje. DIVL owszem działa, ale tylko wtedy gdy iloraz jest mniejszy niż 2^32 Asembler mojego kompilatora nie lubi DIV RAX.
Musisz wykonać konwersję wartości binarnej odczytanej z ADC na cyfry dziesiętne. Użyj dzielenia przez dziesięć (DIV). Pozdrawiam, Dr.Vee
Szkoda, że nikt (ze studentów) nie wpadł na to, że wystarczy jedna funkcja, by przedstawić wczytaną wartość w dowolnym systemie pozycyjnym. Chodziło tu o uzmysłowienie sobie ("odkrycie"), że wartość liczby nie jest trwale związana z jej reprezentacją i nie ma znaczenia to, jak liczba jest fizycznie reprezentowana w pamięci komputera. Dlatego było tak...
Z pewnością sposobów jest mnóstwo. Przypomniałem sobie troszkę asembler mcs51. Mam nadzieję, że program w asemblerze wyjaśni wątpliwości (albo pogłębi ;-) ). Skorzystanie z "tabliczki dzielenia" lub "tabliczki mnożenia" na liczbach o podstawie 2^8 przedstawia poniższy program. Tabelę rozbiłem na 3x256 bajtów. Obliczenie realizowane wg zależności x=256*a+b...
A wiec tak programuje w jagodzie chce napisać kalkulator i z dodawaniem odejmowaniem mnożeniem i dzieleniem nie mam problemu gdy w programie mam tylko jedną operacje z góry określoną prze zemnie np dodawanie dwóch liczb i je wyświetlenie na LCD. ale problem jest w tym że nie wiem jak samemu wybierać co chce zrobić dodawanie czy odejmowanie itp. 1.wczytuje...
Jeśli chodzi o odejmowanie o jeden to dodaj 99 i potem wykonaj DA A. Jeśli zaś chcesz odejmować dwie wartości binarne np. 56 - 23 = 33 a potem przetwarzać je na na kod BCD to trzeba korekcję zrobić "ręcznie" z dzieleniem przez 100, 10 włącznie. No chyba, że chcesz dwie liczby BCD odjąć od siebie.
Trochę dawno pisałem w asm i nie wiem czy jest gotowe przerwanie do wypisywania liczb ale możesz zrobić np. tak: 123 :10 = 12 reszta 3 12 : 10 = 1 reszta 2 1 : 10 = 0 reszta 1 Dzielisz liczbę przez 10 i wrzucasz reszty z dzielenia na stos dopóki wynik z dzielenia różny od 0. Później ściągasz ze stosu dodajesz 48 i wypisujesz.
żadne, wszystko zależy od tego jak wygląda Twój program i czy umiesz posługiwac się asemblerem. Przy dobrym wietrze koło 30% używaj szukaj I tu bym się niezgodził. Zanim zacząłem programować mikroprocesory jednoukładowe w C moje największe programy napisane mieściły się w 2kb pamięci i też wykonywały obliczenia matematyczne typu dzielenie i mnożenie,...
8 tysięcy przerwań na sekundę z nietrywialną obsługą na AVR niekoniecznie musi się udać. Co do reszty - albo C i uint64 odpowiednio przeskalowany (czyli liczymy nie w jednościach, a w tysiącznych), albo AVR, asembler i własny typ dokładnie taki jak trzeba np. 45-bitowy, i też liczymy w tysiącznych. Mnożenie i dzielenie uint64 może AVR zarżnąć. Z ARM...
Jak dla mnie Twoje pytanie jest mało szczegółowe. Do czego ma być użyty ten DPTR? Poza tym można go traktować jak 2 rejestry DPH i DPL, ale jest już używany więc użycie go do przechowywania wartości w0 - w4 mija się z celem bo jest używany do adresowania pośredniego czyli należało by go zapamiętać. Jedynie można go jeszcze użyć w pętli opóźniającej,...
Czy ktos mi pomoze zdobyć jakieś infornacje związane z prostymi operacjami arytmetycznymi zmiennoprzecinkowymi (dodawanie, odejmowanie, mnozenie?. dzielenie?) na MCS-51. Będe wdzięczny za jakis programik (w asemblerze) na ten temat. Dzięki.
Problem staje się prosty gdy możemy się posłużyć określeniem ogólnym "czas", jednak gdy mamy osobno minuty i godziny - jest inaczej. Procki nie operują na pojęciach ogólnych , tylko na liczbach i zapewniam Cię , że porównywanie liczb(nawet wielobajtowych) jest prostrze niż np. ich dzielenie. Więc może skupmy się jedynie na sposobie porównania dwóch...
Ależ sumuje dobrze, tylko żeby wyświetlić, musisz dokonać odpowiednich konwersji. Pamietaj, że wyswietlasz tylko znak o wskazanym kodzie ASCII. Dodawanie i odejmowanie od tego kodu 30h powoduje "konwersję" cyfry na kod ASCII tejże cyfry lub odwrotnie. Zatem wyswietlanie wyników >= 10 wymusza potrzebę wyświetlenia dwóch znaków: 1. O wartości ASCII (wynik...
A na jaki system? Generalnie sprawa wygląda tak, że wszystko się robi metodą "słupkową" przez dzielenie przez podstawe systemu liczenia.
Witam, //--------------------------------------... char s_write_byte(unsigned char value) //--------------------------------------... // writes a byte on the Sensibus and checks the acknowledge { unsigned char i,error=0; for (i=0x80;i>0;i/=2) //shift...
Jak kolega napisał musisz zamienić liczbę na odpowiednie znaki ASCII i wydrukować te znaki. Możesz napisać uniwersalną procedurę zamiany, działającą na zasadzie: dzielenie i resztą z dzielenia indeksowanie tablicy cyfr szesnastkowych (dla 10 i 2 wykorzysta mniej cyfr). Możesz też napisać oddzielne procedury i wykorzystać fakt, że na 2 i 16 konwertuje...
Mam do napisania program w asemblerze mikrokontrolera 8051 na średnią arytmetyczna. Asemblera nie znam dobrze i tak po omacku posługuję się nim. Dlatego mam pytanie co w tym programie jest źle. PROG SEGMENTCODE CONST SEGMENTCODE CSEG AT 0 JMPstart RSEG PROG start: MOV R1,4 ;ilosc elementow w tablicy MOV R2,0 ;obecna wartosc sumy MOV B,R1 MOV A,R1...
Brrr, Basic. ;) Przerzuć się na C lub asemblera. Nowe AVRStudio można zintegrować z WinGCC i działa to bez zarzutów. A w C deklarujesz sobie od razu, czy masz zmienną całkowitą (char, int), czy zmiennoprzecinkową (float) i o dziwo artytmetyka zmiennoprzecinkowa nie zajmuje ogromnych ilości flasha. :)
To znaczy masz zrobić konwersję binarną na BCD ? R0 - od 0 do 256 R1 - jednosci 2 R2 - dziesiatki 7 R3 - setki 1 Algorytm 1: start: R0:=liczba R1:=0 R2:=0 R3:=0 while R0>=100 do R0:=R0-100 Inc R3 end while R0>=10 do R0:=R0-10 Inc R2 end R1:=R0 Algorytm 2 DIV - dzielenie całkowite MOD - reszta z dzielenia (łatwiej...
Tu są procedury matematyczne dla '51: http://www.8052.com/codelib/math8051.asm Dzielenie 32 bitowych przez 16 bitowe bez znaku, to procedura UDIV32, a ze znakiem DIV32. Pozdrawiam.
Dzielenie przez 8 to nic innego jak przesunięcie o 8 bitów w prawo, czyli w przypadku 8-bitowych procesorów wywalenie najmłodszego bajta wyniku. Dzielenie prze 8 to nie przesunięcie o 8 bitów w prawo, tylko o 3 bity. Do autora: dzielnie wlaczysz, tracisz czas, a na końcu koledzy podsyłają ci funkcje arytmetyczne zaimplementowane w C. Jaki jest więc...
Witam. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
Bo ten avr nie ma w asemblerze komendy dzielenia. Musisz sobie sam napisać taką procedurę albo poszukać gotowej w necie. Ja kiedyś napisałem taką prostą działającą na zasadzie odejmowania. Wydajne to to nie jest ale nie wiem jak zrobić to lepiej.
Rozumiem, że przez "obliczyć %" masz na myśli policzenie 100 * x/15360. Żeby było prościej liczysz x/153 - błąd nieduży - przy niskich wartościach niweluje potrzebę korekty zaokrąglania, przy bliskich 100% błąd jest największy i dochodzi do 0.5%. Możesz sobie ręcznie zoptymalizować procedurę dzielenia dla znanego dzielnika - 153 to 0x99 binarnie, a...
(at)asembler Jaka jest precyzja tego dzielenia ?, ile miejsc po przecinku, bo w precyzji do liczb dziesiętnych to tak jak w pierwszym pisałem poście, zrobiłem taki paskudny kod, a przydało by mi się chociaż 1, 2 miejsca po przecinku: ; L R ;Compare R12,R13,R14,R15 && R16,R17,R18,R19 Cp_R12R19_32b: cp R15, R19 breq cp32r_same3 brlo cp32r_rg rjmp...
jedno i drugie mniej wiecej takie samo, teraz musze powalczyć z tym dzieleniem jakoś, bo za dużo czasu pochłonie
najpierw odpal bascoma i napisz $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 2400 Do Print "Dlaczego nie chcesz dzialac " Waitms 500 Loop i jak to pójdzie to się baw w asemblerze. a mam jakiś schemat z tuta z ektrody, w dp9 pin 5 na mase i 2 i 3 nadawanie/odbiór, poszukaj jak to bedzie na forum, reszta pinó sobie wisi. proponuje fuzy bitw...
Tu jest taki dość "przyjazny" algorytm, bez dzielenia i mnożenia, ale potrzebne są instrukcje przesunięć logicznych, porównywania, oraz AND i OR http://www.cp.eng.chula.ac.th/~krerk/pub... Jest jeszcze coś takiego, myślę, że Ci będzie pasować. Liczy pierwiastek z 32 bitowej liczby naturalnej (n), wynik w root: root=0 for(N=15;...
Ja mam algorytm i zrobiony podprogram wykonujący takie dzielenie, ale jest napisany na inny procesor. Dziwię się że ktoś jeszcze zajmuje się takimi procesorami. Z czystej ciekawości jestem ciekawy co cię zmusiło do stosowania takich uP?. Natomiast jeśli chodzi o dzielenie to łap mnie na GG, to jest sporo tlumaczenia zwłaszcza, że nie będę mógł ci pomóć...
Witam Mam uklad na ATmega8 , z wyswietlaczem LCD itd. i wykorzystuje wejscia ADC kontrolera do pomiaru napiecia (przynajmniej na wejsciu ADC). Co wazne, pisze w asemblerze, a trafilem na problem -byc moze banalny ale juz troche sie mecze, tez troche szukalem i ... Czy ktos moze wyjasnic w jakis sposob liczbe binarna w Asemblerze !! zamienic na 3 liczby...
Najpierw odczytujesz zadaną wartość w stopniach z klawiatury potem tą wartość dzielisz przez 180 i wyprowadzasz wynik. Jeśli wynik ma być z przedziału 0-2 to w pętli odejmujesz 360 aż wartość w stopniach będzie mniejsza od 360. A ten program na jaki konkretnie jest mikrokontroler??
Z szacunkiem. Porywasz się z widłami na słońce. Naucz się assemblera a wszystko się wyjaśni. Poza tym radziłbym zostawić bascoma i przerzucić się na C. A propo ADC. Ja to robie tak: W zmiennej uint16_t odczyt, mam odczyt z ADC. Przyjmując 10bit rozdzielczość i 2.56 Vref. Liczę: 2^10=1024; 2.56/1024=0,0025=25*10^(-4) Kolejna zmienna: uint32_t wynik=odczyt*25...
Tylko że jak pomnożę całość przez 10 to już nie zrobię tego na 8 bitach. Czy jak dziele 2 liczby inie dzielą się całkowicie to ustawiany jest jakiś bit lub kilka ? Poza tym nie mam zielonego pojęcia jak wyświetlić pojedynczą cyfrę na wyświetlaczy z jakiejś 3 cyfrowej liczby zapisanej w końcu w postaci hex. Zakres liczb przy podanym przeze mnie wzorze...
(at)kamyczek , dopóki nie pokażesz jakiegoś super-optymalnego kodu, to ja sobie mogę pisać że jestem mistrzem kung-fu i będzie to tyle samo warte co Twoje zapewnienia, że jesteś lepszy w optymalizacji od kompilatora. Sorry. Ta dyskusja jest bezcelowa, ponieważ założenia mogą sprawić że jej główna teza jest prawdziwa lub fałszywa. Przykładowo miganie...
Witam, powoli kończę modernizację swojej nawijarki do cewek i transformatorów, licznik liczby zwojów postanowiłem wykonać na mikrokontrolerze jak w tytule PIC16F877A. Właściwie wszystko sprzętowo działa, za to utknąłem na końcu programu, otóż licznik może zliczać do 65535 zwojów, wszystko wyświetlam na wyświetlaczu 2x16. Mój problem związany jest z...
P=U*I*cos fi cos fi=P/(U*I) Za mało podałeś szczegółów, żeby wygenerować kod, ale na oko widać co trzeba zrobić (jedno mnożenie i jedno dzielenie). A swoją drogą... gdzie tutaj jest pytanie? Kolega podzielił się z nami swoimi potrzebami i tyle... pozostało nam sie domyślać wielu rzeczy (co to jest ten blokowy woltomierzi itd, co to jest za monitor?...
Chyba w celu utrwalania niskopoziomowych nawyków starając się przechytrzyć kompilator (; Pewnie. A później amatorzy programowania dzięki takiemu podejściu zapisują proste zmienne jako float albo nie wiedzą jaka jest różnica dla działania programu pomiędzy dzieleniem przez 8 a dzieleniem przez 9. Wiedza o asemblerze jeszcze nikomu nie zaszkodziła czego...
Dla ułatwienie decyzji , czym i jak. Asembler 8051 -free Symulator 8051, z bardzo dobrym opisem uP. W programie są dostępne różne interfejsy: diody LED, wyświetlacze 7-seg, przyciski,silnik krokowy, oscyloskop z wyjścia przetwornika DA, klawiatura i inne z przykładami http://www.edsim51.com/map.html X-- Basic i Asembler Tak jak i powyżej z bogatym interfejsem...
Wszystko zależy od tego, co chcemy realizować i na jakim procesorze. 1) Baskom jest bardzo dobry jak ktoś chce zacząć zabawę z procesorami. Lub też nie ma ochoty na poznanie procesora i przygotowanie mu rejestrów dokładnie do własnych potrzeb. Wbudowane mechanizmy naprawdę genialnie ułatwiają pisanie oprogramowania - np. obsługę wyświetlacza alfanumerycznego...
Najprostszym sposobem konwersji dowolnie długiej liczby binarnej do pisemnej postaci jest ciągłe dzielenie jej przez 2 ... Dzięki za odpowiedź. Przenalizuję sobie kodzik i zobaczę, czy będę umiał go wykorzystać. Na pierwszy rzut oka wydaje mi się, że nie o to chodzi. Mnie nie chodziło o konwersję liczby binarnej do postaci pisemnej, jeśli rozumiem...
Tutaj jest kod na dzielenie 2-óch liczb 8-bitowych dla AVR: ;* "div8u" - 8/8 Bit Unsigned Division ;* ;* This subroutine divides the two register variables "dd8u" (dividend) and ;* "dv8u" (divisor). The result is placed in "dres8u" and the remainder in ;* "drem8u". ;* ;* Number of words...
Cze ! Opisowo wygląda to następująco: - w pętli, której warunkiem działania jest liczba16bit>0 przeprowadzasz dzielenie 16-to bitowe (mam taką procedurę) liczby16bit przez 10 - do reszty z dzielenia dodajesz 48 i masz kod ASCII cyfry (od końca) - pętla zakończy działanie gdy liczba16bit będzie równa 0 przykład: 65535/10=6553 (reszta=5) -> 5 6553/10=655...
tjanusz :arrow: znam troszke c# na tyle ile mi jest to potrzebne, ale w c# przecież można także wstawiać kod asemblera tworząc np. swoje własne algorytmy dzałań matematycznych. Pszepraszam, ale nie wiem co to znaczy " żródełko" gcc lub FreePascal i jak mogę do tego dotrzeć :arrow: elektryk dokładnie np. teraz pracuję nad potęgowaniem modulo metodą iterowanego...
Jak kiedyś zlitowałem się nad SAB600 i postanowiłem go zastąpić czymś bardziej orginalnym to powstał taki twór. Twór o tyle ciekawy, że w asemblerze ale pod Bascomowym interfejsem. Program oprócz generowania dźwięków robi jeszcze parę innych rzeczy, ale chyba tyle to już się można zorientować w kodzie. [syntax=basic4gl] '***********************Tiny13_Gong1...
No tak... po co się nauczyć lepiej programować, skoro można kupić arma za 3x taką cenę i uwalić go basicem :) Tak się składa, że umiem "dobrze programować" (zapraszam na www.soft4cnc.pl) i dlatego właśnie jestem zachwycony tym Basicem. Bo mimo kolegi sugestii, jakoby język C do programowania mikrokontrolerów różnił się zasadniczo od Basica do tego...
Autor się pyta, czy to możliwe, gdy tak naprawdę najwięcej zależy od niego. To, że jeden człowiek da radę, nie znaczy, że inny też może, każdy ma inne możliwości. Życie to nie telewizja, gdzie wystarczy tylko chcieć, żeby się udało. Możliwości umysłowe, finansowe, umiejętność pozyskiwania materiałów i narzędzi, przestrzeń na warsztat, czas, wytrwałość:...
To przyklad funkcji do konwersji liczby na stringa z zastosowaniem operatora modulo. Dlaczego tak długo i nieelastycznie? Jesli w ogóle to tak: (ale jest standardowa funkcja itoa,uitoa itd, być moze w asemblerze a wtedy modulo i dzielenie być może oszczędniej robi) To dwie najbardziej kosztowne operacje. Optymalizować można też przez wprowadzenie odejmowania...
Witam! Jestem początkujący w asemblerze, a chcę wykonać program (właściwie 2) obciążający najnowsze procesory intela przez co najmniej kilkanaście sekund. Nie ma znaczenia co dokładnie robi ten program - ja probuję mnożenia w pętlach (w drugim programie dzielenia - chodzi o jednakową ilość cykli maszynowych tych działań). Nie mogę sobie jednak poradzić...
Witam, Na wejściu mamy 40-bitową liczbę binarną, potrzebujemy ją skonwertować na zapis przy podstawie 10. Chcemy tego dokonać bez angażowania 'dużej biblioteki'. Najlepiej jest tego dokonać metodą kompensacyjną. [syntax=C] /* niezbędne deklaracje np. uint8_t arr[5]; itp. Także kolejność lsb..msb bardziej pożądana, ale nie niezbędna */ /* Tablica użyta...
Zamówiłem książkę kolegi , bo cenię ludzi dzielących się swoją wiedzą . Choć jestem zwolennikiem asemblera chętnie zapoznam się ze spojrzeniem szanownego kolegi na zagadnienia programowania AVR w C . Przeczytałem kilka lepszych i gorszych książek o AVR. Problem polega na tym że większości coś brak . Lub wiedza zawarta opisana słowami autora jest mało...
Witaj Nie wiem w czym widzisz problem, mnozysz czy dodajesz rownie dobrze liczby 32bitowe takze w asemblerze. Troszke wiecej problemy jest gdy je dzielisz, ale to tez do przeskoczenia (zamiana na ułamki i mnożenie) Duza liczba bitopw jest potrzebna gdy mnożysz liczby z granic przedziałów, czy ułamki, a tak to wystarczy ci najstarsze 8bitów z wyników...
do kolegi Dr_DEAD - sorki ale kolega chyba dużo z asemblerem do czynienia nie miał. Bo oczywiście co do meritum to się zgodzę że można ich używać naprzemiennie ze świadomością efektów drobnych niuansów w działaniu każdego z nich. Ale to jest poprostu wielka BZDURA z punktu widzenia pisania jasnych i przejrzystych programów. Pomijam jakieś wyjątki gdzie...
Upanie: Myślisz o potęgowaniu? Czy proponujesz może: np. 123'456'789 ** 987'654'321 (mod 7'654'321) __ (unsigned) fmod( powl(123456789, 987654321), 7654321); To by miało być szybsze? A ile poprawnych cyfr będzie miał wynik i z jakim prawdopodobieństwem? ----------------------------------------... W potęgowaniu...
Witam. Jeśli można to bym prosił kolegę asembler o jeszcze trochę dokładniejsze opisanie tego sposobu pomiaru napięcia bo bardzo mnie to zaciekawiło. 1.22 V to stałe napięcie odniesienia wytwarzane przez procesor , na jego podstawie przez wbudowane wzmacniacze operacyjne wytwarza on napięcie 2,56 V . To rozumiem. Jeśli napięcie zasilania podamy również...
O ile jeszcze pisanie modułów w asmie ma sens, to pisanie wstawek w asmie nie jest zbyt dobrym rozwiązaniem. jakby niepatrzeć prowadzi to do powstania nieprzenośnego kodu i jeśli teraz kolega zeche przenieść swój program na inną architekturę, natknie się na poważny problem. Skoro akurat ten kompilator wygenerował niepoprawny kod dla unsigned integera...
Samo dzielenie przez 10, potrzebne do konwersji na postać dziesiętną, zajmuje grube dziesiątki instrukcji procesora. istnieje efektywniejszy algorytm, ale którego implementacja najwygodniejsza będzie w asemblerze: http://www.classiccmp.org/cpmarchives/cp... http://lmgtfy.com/?q=dubldabl
oczywiście, że sizeof() :) ale niestety nie mam jak wyprowadzić wyniku na zewnątrz (goły procesor :( ) więc stąd mój post. To nie jest wytłumaczenie. Kod można skompilować do kodu asemblera, można w kodzie w C wprowadzić wyrażenie, w którym występuje dzielenie przez zero w przypadku, kiedy sizeof jest równe czemuś, co nas interesuje ("char __tmp =...
Zwykłe binarne dzielenie nierestytucyjne przy 10 bitach będzie prawdopodobnie prostsze, niż każda z tych kombinowanych metod - to w końcu tylko 8 obiegów pętli z porównaniem, przesunięciem i warunkowym odejmowaniem, tyle że te trzy operacje trzeba zrobić na 10 (czyli w praktyce 16) bitach. Gdyby toto miało przynajmniej 8-bitowe dzielenie, jak stary...
Klasyczny temat "o wyższości świąt Wielkiej Nocy nad Bożym Narodzeniem" :) Spór jest ciężko rozstrzygnąć bo każdy na swojej drodze zaczyna się specjalizować i nigdy nie jest dokładnie tak samo dobry w dwóch językach aby je obiektywnie porównać. Trzeba by było zrobić olimpiadę programistyczną z pisaniem identycznej aplikacji w różnych językach i po kilku...
Witam, Nie twierdzę że mój sposób sprawdzi się w Bascomie, dużo lepiej sprawdzi się asemblerze. Napisałem w Bascomie tak dla przykładu, myślę że tak jest przejrzyście, a chodzi po prostu o zasadę - sposób. AVR - serii Atmega to 8bitowce, więc tutaj w grę wchodziłoby tylko 8bit/8bit. Natomiast co ciekawe, AVR32 też nie ma dzielenia sprzętowego. Całkiem...
Zmieniłem na dzielenie z 10 na 16 i zastosowałem przesunięcie. Robię na Armie po raz pierwszy projekt, stąd wątpliwości. W AVR miałem taką funkcję asemblerową CLI, która blokowała wszystkie przerwania. Czy w Armie też takie coś występuje?
który stworzył mechanizmy optymalizacji dla tego co napiszecie w c daje efekt zbliżony do kodu napisanego w assemblerze choć zawsze o te kilka procent gorszy .. Nie wiem bo jeszcze nie widziałem kodu równolegle napisanego w asemblerze. Mam dla kolegi (at)kamyczek propozycję. W moim dawnym projekcie oscyloskopu jest taka funkcja: https://obrazki.elektroda.pl/6861140700_...
Zastanawiam się czy tak ciężko przeczytać listing bootloadera i wywnioskować co się dzieje . Może zanim zadasz banalne pytanie ,na które odpowiedź znajdziesz w listingu umieszczonym w poście pofatygujesz się i przeczytasz ze zrozumieniem kod . Zrozumiał bym że pytanie zadaje amator ale 24 poziom i takie pytanie to oznaka lenistwa . Mogę zrozumieć jeśli...
Witam. Chce napisac program i wgrywac do uc Atmega328p. Cale urzadzenie z tym uc chce sprzedawac jako firma. Kod chce napisac asemblerze w Avr studio 4.18 i podpiac tam kompilator Avrdude 6.3. Czy te oprogramowania sa darmowe nawet do celów komercyjnych oraz czy moge skorzystac z not aplikacyjnych (skopiowanych 1:1) atmela w tym programie (chodzi mnie...
Sumę liczb pierwszych mniejszych od 2^64 można (abstrahując od faktu, że wyznaczenie ich wszystkich przekracza możliwości łatwo dostępnych komputerów) wyliczyć dysponując zmiennymi uint64_t: [syntax=c]uint64_t s0=0, s1=0, p; ... if ((s0+=p) < p) s1++; ...[/syntax] i s1,s0 w sumie utworzą 128-bitową liczbę będącą sumą wszystkich p. Gorzej z wykonaniem...
Programy się zwykle pisze a nie robi :) Przy pisaniu programów musisz wykonać następujące kroki: 1. Zdefiniować problem W przypadku twojego kalkulatora musisz określić: - typ obsługiwanych danych - czy to będą liczby wyłącznie całkowite czy całkowite i ułamkowe (ogólnie mówiąc rzeczywiste) - rodzaje działań jakie ma wykonywać twój kalkulator, np. dodawanie,...
1. Podrzucę Ci pomysł, pomocny lub nie. Zrobiłem PWN Atmega8 (czyli straszny dziad) generator miłego dla ucha sinusoidalnego dźwięku (w oparciu o przerwanie timera). Czystość uzyskałem, gdy na samym początku przerwania ustawiałem wartość ze zmiennej do PWM, a potem mogłem ją sobie opracowywać "na nastepny raz" do woli, nieczuły że obliczenia (mnożenia,...
Witam !! zaczołem właśnie uczyć się programować w asemblerze i podcza pisania napotkałem na problem i nie umię go rozwiązać ?? pisałem programik dzielący 2 liczby wpisane 16 i wynik tez jest podawany szesnastkowo (nie można użyć .386) i program sie kompiluje nie ma błedów ale niestety cos nie działa ????? bardzo prosze o pomoc kompiluje za pomocą "tasm"...
To jeszcze ja wtrące swoje 3 grosze. Co do select case to nie polecam - mniej miejsca zajmują pojedyńcze warunki IF tylko trzeba wtedy dobrze przemyśleć aby nie wyskakiwały dwa naraz albo chociarz prawidłowa wartość była wtedy kiedy oczekujemy tego. Dodatkowo zauważyłem ze w Bascomie 8051 użycie podwójnego lub potrójnego warunku IF (if cos=1 or cos=2......
W asemblerze to tak jest ,chyba bede musiał skorzystać z tego rozkaz Może mało precyzyjnie chodziło mi o aby tak jak w BCD rozdzielić półbajty i wydawało mi sie ze w bascomie uda sie przez dzielenie moze ktoś ma jakies pomysły
Dziekuje za szybką odpowiedź. Proszę mi uwierzyć, że zadałem sobie sporo trudu i rozumiem na jakiej zasadzie wzór działa i jak fajnie można uniknąć kalkulacji floating point w asemblerze za jego pomocą. Użyłem go w też w swoim projekcie. Jedynie czego nie mogę zrozumieć to w jaki sposób wyliczyć ilość wymaganych przesunięć w prawo. Autor projektu aby...
znalazłem operacje dzielenia, ale w ty przykładzie zatwierdzanie jet tylko przez 7 przełącznik, a u mnbie zatwierdzanie ma być na przełącznikach 5, 6, 7 oraz wyświetlenie wyniku odpowiednio na diodach. Oto ten pprzykad: ;DZIELENIE - na podstawie wzoru programu z pracowni. ; Dana w ACC KODWYJ EQU 9216 DASCII EQU 9248 ; INILCD EQU 9408 BSEGAT 0 BLAD:DBIT1...
Trikess , w AVR jest też taka funkcja sprzętowa (Input Capture).Co prawda nie zeruje ona licznika, ale w AVR instrukcje (asemblera) są wykonywane króciuteńko i zegar nie jest dzielony przez 12, więc przerwanie od ICP1 może zawierać kod resetujący licznik, co nie wpłynie znacznie na jakość pomiaru, zwłaszcza przy takim zastosowaniu (wiatrak od PC).
asembler dzielenie dzielenie przez asembler dzielenie liczba asembler
kompresor sprezarki step7 manager aparat trust
ciągnik przedni napęd ciągnik przedni napęd
ABM241 Manual: Amprobe Multimeter or Abracon Crystal? Obroty chińskiego wiatraka 5 kW przy wietrze 5 m/s