[syntax=avrasm] ; PODPROGRAM MNOZENIA LICZB DWUBAJTOWYCH ; PISAL I TESTOWAL: MIROSLAW LACH, AVT ; WEJSCIE: ; R0 - ADRES NAJMLODSZEGO BAJTU MNOZNEJ ; R1 - ADRES NAJMLODSZEGO BAJTU MNOZNIKA ; WYJSCIE: ; ILOCZYN JEST UMIESZCZANY W MIEJSCE CZYNNIKOW ILOCZYNU, GDZIE ; ZLOZENIE BAJTOW (R0-1):(R0):(R1-1):(R1) DAJE WYNIK ; (R0-1) - BAJT NAJSTARSZY, ZAS R0 I...
Jeśli kod ASCII znaku '0' to 30h, to ile od 30h trzeba odjąć (SUB), żeby dostać 0? A jeśli '1' to 31h, to odejmując tą samą... takie czary :) Przecież masz dokładnie to samo tylko w drugą stronę cyfra -> znak w ety1. Masz tu kilka prostych kodów, w tym także wprowadzanie liczb: https://www.dzyszla.pl/download-34.html
Standardowy algorytm dzielenia binarnego - jeden z dwóch do wyboru - restytucyjny albo nierestytucyjny. Opis znajdziesz w każdej książce z okolic arytmetyki komputerów.
Jest sposób aby wykonać ta procedurkę w asemblerze , ale nie wiem ile ona potrwa- a tobie zależy na szybkim wykonaniu obliczenia. Poniżej opisałem jak według mnie mogłoby to działać: Np. A=256 ; B=64 Deklarujemy tablice w której będą procentowe podzialy liczby (25%,50%,75%,100% itd) 1) porównanie liczb A=B, A>b, A<B 2) A>B (inkrementujemy odpowiednio...
To działa tak samo dla dowolnej ilości bajtów. Liczbę wejściową wysuwasz z najstarszego bitu najstarszego bajtu Czyli przesuwasz liczbę 32 bitową (mnożysz przez 2). Wysunięty bit (w znaczniku przeniesienia) wprowadzasz do najniższego bitu najniższej tetrady liczby BCD. Przed każdym kolejnym przesunięciem sprawdzasz każdą tetradę czy nie jest >=5...
Pokaże Ci przykład dodawania dwóch liczb wiecej jak 8 bitowych (i mniejszych niz 16 bitów), przykład ten znalazłem w ksiązce "Mikrokontrolery AVR w praktyce " Jarosława Dolińskiego ; dodaj dwie liczy 16-bitowe r1:r0 + r3:r2 add r2, r0 ;dodaj młodsze bajty adc r3, r1 ; dodaj starsze bajty z przeniesieniem Więcej przykładów operacji arytmetycznych znajdziesz...
Ten algorytm przedstawia prosta metode mozenia ktora czesto byla stosowana w procesorach nie posiadajacych instrukcji mnozenia. wykozystuje sie w nich rotacje bitow i dodawanie. Algorytm jest bardzo prosty w realizacji.
Dziękuję za wstępne zainteresowanie tematem. Rozumiem więc, że algorytm trzeba uzupełnić o następujące punkty: 2A. Przeniesienie zawartości stosu związanej z wywołaną procedurą do znanej mi komórki pamięci. 10A. Przeniesienie zawartości ww. komórki na stos. Program jako taki ma być napisany w środowisku AT89LP Developer Studio. Dostępnych jest tam z...
Hej, mam problem z napisaniem prostego (tzn. wyglądający na prosty) "programu". Może podam dokładne polecenie: Napisać program w asemblerze dodawania 2 liczb 4 bajtowych (w zapisie U2) zapisanych w komórkach o adresach 1000-1003 (pierwsza liczba) i 1004-1007 (druga liczba). Wynik umieścić w komórkach 2000-2003. Bajty liczb rozmieszczone są jak w konwencji...
witam, mam problem ponieważ muszę napisać moduł w assemblerze do C, który będzie dodawał 2 liczby zmiennoprzecinkowe, wpisane w c i wyświetlane w c, moduł assemblerowy ma wykonywać dodawanie. Jakieś podpowiedzi , albo najlepiej podobne programy do przeanalizowania
Użytkownik wprowadza nazwę pliku w którym znajduje się do 1000 liczb od 1 do 32000, program pyta użytkownika jaką chce wyświetlić statystykę z tych liczb: min, max lub średnią. Program wylicza wybrane wyrażenie, wyświetla je na ekranie oraz zapisuje do pliku. Kurcze mam z tym taki problem facet na zajęciach nic nie tłumaczy. Z kolegą napisałem cuś takiego...
1. nawet kolega (at)Tadeko9 nie napisał wyraźnie, czy wejściowa "liczba" to naprawdę liczba, czy napis (string) Liczb jako liczb, to tak naprawdę we współczesnym komputerze trzycyfrowych nie ma. (at)excray 2. słusznie pytasz o assembler - liczba setek - liczba dziesiątek - liczba jednostek 3. Liczba czy cyfra. Co ma być wynikiem
A mógłbyś zamieścić kompletny schemat połączeń przycisków, diod itp. do tego mikrokontrolera ? Bo bez znajomości sprzętu to ciężko coś dla mikrokontrolera napisać.
Generalny schemat w pseudokodzie [syntax=delphi] liczba = 0; repeat { pobierz cyfra liczba = liczba*10+(cyfra-'0') } while są cyfry.[/syntax] Przypilnuj nazw zmiennych. Wydaje mi się że piszesz 'liczba' a myślisz 'cyfra' i źle się potem myśli.
Napisać to nie ... ale mogę ci podpowiedzieć: Ja bym użył instrukcji test <adres>,1 i jak wynik jest zero to parzysta. Oczywiście wszystko to trzeba umieścić w jakiejś sensownej sprytnej pętli i podliczyć. (zakładam że chodzi o assembler x86)
Witam Czy posiada ktoś kod do asemblera, wykonujący mnożenie liczb szesnastkowych?? [url=http://www.google.pl/search?num=100... Google zna. Na wszelkie procesory, do wyboru do koloru. Naprawdę używanie Google nie boli.
Witam, Mam problem z wykonaniem ćwiczenia, za pomocą języka assembler w programie uVision, za pomocą listy rozkazów muszę napisać program odpowiadający za dodawanie dwóch liczb których suma da cyfrę dwubajtową, a następnie podzielenie tej licby na liczbe setek, dzięsiątek i jedności. Następnie trzeba przesłać setki, dzięsiątki i jedności na port https://obrazki.elektroda.pl/1755238000_...
Autorka tematu mogła podać pod jakim to emulatorem to ma działać bo jsr $ff80 to jakiś skok do procedury tego emulatora (pewnie wyświetlanie wyniku). (at)szlus masz rację z tym sta ($80),y a ja od siebie dodam, że na początku zamiast ldy #0 powinno być chyba ldy #1
jak zaprogramowac uC 8051 zeby dodawal liczby ktorych suma jest wieksza niz 255? ADDC ok.. ale.. czemu to nie dziala? ;przekladowe liczby MOV R2, 0xDD MOV R3, 0xDD MOV R4, #0 ;zerowanie R4 ; dodawanie do R0 kolejnych liczb ; do R1 dodajemy tylko flage przeniesienia [0 albo 1] ADD A, R2 ADDC A, R4 ADD A, R3 ADDC A, R4 END wynik .. 0xBB :/ co...
Czesc. Mam problem, a w sumie to nawet 3 =]. Mam do napisania 3 programy w assemblerze (dokladniej bede je uruchamiac na symulatorze procesora z80). 1 zadanie. Napisz program, ktory liczbe 21H doda do liczby 42h. 2 zadanie. Za pomoca programu sprawdz czy suma tych liczb (zad 1) jest liczba parzysta. 3 zadanie. Dane sa dwie liczby. Napisz program, ktory...
To są moje początki w programowaniu w języku assembler. Chciałem napisać program który będzie podnosił liczbę 8bitową do potęgi trzeciej. Z mnożeniem mniejszych liczb nie ma problemu ale przy większych które mogą zajmować nawet 3 bajty pojawiają się schody (dosyć wysokie jak dla mnie). Naskrobałem kawałek programu ale stoję w miejscu i się gubię. SJMP...
to trochę zależy pod jaki mikrokontroler piszesz!! i czy liczby "dodawane" sa zapisane z "korekcją dziesiętną" ogólnie: w dodawaniu postepujesz podobnie jak w dodawaniu "pod kreską" tylko że dodajesz liczby z zakresu 0..255, czyli poszczególne bajty, tzn. jak dodajesz dwie liczby jednobajtowe to maksymalny wynik moze być zapisany w 9 bajtach (8 bajtów...
Dla mnie assembler to czarna magia, a mam napisać program który: 1: pobierze do 10 liczb 1 bajtowych 2: i je posortuje mam maly problem z wyborem ilosci tych sortowanych liczb... nie wiem jak się do tego zabrać... myślałem nad wyznaczeniem sobie stałej liczby pobieranych danych... a wykluczanie niepotrzebnych by polegało na przypisaniu im 0 :) (klawiatura...
witam i podziwiam :) nie chce mi się wyciągać ZX z szafki i znowu gapić się w ten zielony monitor :) Dzięki Sinclairowi za Spectruma ! gdyby nie ten komputer to nie znałbym się na mikroelektronice. Rok temu przesiadłem się na PCta, i przekładam swoje programy na intelowskie mnemoniki '25 * 255 ORG 0 ; jeśli to "samoróba" ORG 32768 ; jeśli...
oj po co tyle kodu ???;) Jak odświerzanie wyświetlaczy ma być na pętli nieskończonej to nie potrzeba tyle kodu . Opisz jak sprzętowo podpięte są te wyświetlacze a dopiero po pokazaniu schematu można wogóle zacząć analizować kod. Pojrzyj na www.kloszi.prv.pl dział "Moje projekty->Symulator Softwarowy MCS-51" i tam jest właśnie zrobione sterowanie wyświetlaczami...
Przyglądnij się tej linii: sum cl, b W niej masz, błąd.
a) OK -> SFR dokładniej pod adresem E0H (ACC dla 8051) b) NIE -> stała liczba dziesiętna 121 pod adres 00h (czyli do rejestru R0) c) rozumiem, że są tu dwie instrukcje? Pierwsza ładuje liczbę do rejestru a druga zapisuje pod adres wskazywany przez R0 stałą 121. Czyli 121 zapisane pod adresem RAM 0AH (czyli 10 w systemie dziesiętnym) d) to samo co w...
Może nie najładniej to rozrysowałem - [url=http://forum.dzyszla.aplus.pl/topic... dzielenia liczb wielobajtowych z wykorzystaniem odejmowania
Witam wszystkich. Mam pewien projekt do zrobienia i w sumie nie wiem jak sie do tego zabrac. Temat zadania brzmi: procedury obliczania iloczynu liczb n-bitowych w formacie 8x8, 16x8, 16x16 w asemblerze AVR. Czy moglibyscie mnie nakierowac, od czego mam zaczac? Najlepiej gdyby ktoś spróbował mi wytłumaczyć problem. Dzięki z góry.
No, to już coś. Teraz podobne funkcje dla assemblera zapisz dla mnożenia (MUL). Następnie zobacz, jak [url=http://www.dzyszla.aplus.pl/downloa... liczby (klika przykładów z assemblera) - znów zapiszesz swoją funkcję zamiast readln. Podobnie postąp z wyświetlaniem liczb (również ten sam link co podałem). Na koniec wszystko zapisz w jednym...
ale jak obsługa ADC i Timera2 i LCD zajmowała 1,5kb w Bascomie, tak przy optymalizacji w C się zeszło dość nisko, w zasadzie 500b może to było, nie pamiętam dobrze, ale wyglądało lepiej Słabe porównanie. Bascom tyle żre bo jest uniwersalny. Spróbuj wyświetlić np 2 bajtową liczbę na LCD w C. Najpierw musisz ją rozłożyć na pojedyńcze cyfry, potem wysłać....
1. Dla liczb całkowitych w przypadku x86 jest to naturalny zapis, a więc od lewej (M) do prawej (L). Choć zasadniczo nic nie stoi na przeszkodzie stworzyć program wg logiki odwróconego zapisu ;) Nie wiem, dla jakiego procesora Ty piszesz. 2. W zasadzie to nie musi. Porównaj z moim schematem. Przyznam szczerze, że nie umiem zobaczyć, dlaczego tutaj to...
Jeśli przypatrzysz się wygenerowanemu kodowi, to dzięki optymalizatorowi mamy po prostu odjęcie 8-bitowe jednej zmiennej od drugiej. Ale to jest bez znaczenia dla tej konkretnej debaty, bo przecież to jak standard języka C "zrealizowany" na konkretnej implementacji (nawet nie wiemy jakiej...), to jest dalsza kwestia. Standard mówi, że operacja odejmowania...
Witam. Mam do napisania 3 programy w assemblerze na DSM-51. 1. Dodawanie dwóch liczb 5-cyfrowych. 2. Mnożenie dwóch liczb 5-cyfrowych. 3. Komparator (porównywanie cyfr) 5-cyfrowych. Np. 18 większa 10, 10 mniejsza 18, 10 równa 10. Na wyswietlaczu LCD musi pokazac sie równiez słowo(mniejsza, wieksza, rowna)
1. Assembler 2. Licznik pracuje w trybie 1 wiec max ma 64tys (to jest nieistotne) 3. Licznik jest 16 bitowy
Pierwsze uno - Ty nie podajesz liczb, tylko znaki! Do wprowadzania liczb polecam napisać sobie małą pętlę, która umożliwi konwersję znaków na liczbę on-line. Drugie uno - przesuwanie rejestru do tablicy i wyświetlanie mało co da... Proponuję książkę lub kurs i przeanalizować choćby kilka [url=http://www.dzyszla.aplus.pl/downloa... przykładów...
Witam, proszę o pomoc, mam do wykonania następujące zadanie: W pamięci komputera, począwszy od adresu T, znajduje się ciąg bajtów. Ilość elementów w tym ciągu znajduje się pod adresem N (jeden bajt, tzn. ich liczba jest nie większa od 255) Napisz program, który pod adresem W, zapisze sumę (16-bitową) tych bajtów. przykładowo: ... ... ... //tu jest program...
Jeśli dobrze rozumiem, daną wejściową jest liczba dodatnia X, a potem program oblicza sumę liczb od 1 do X, a następnie ją wyświetla. Czy potrzebujesz w C, czy w ASM? Ja kiedyś programowałem DSM-51 używając kompilatora SDCC, nawet napisałem na własne potrzeby bibliotekę obsługującą typowe operacje na DSM-51. Jakbyś napisał, że potrzebujesz napisać w...
Tutaj x*sin to tylko przykład jak robić operacje... Wiem, że 8051 nie ma 16bitów, ale bez tego będzie trudno uzyskać płynność obrotów. A mnożenie w 8051 pozwala na pomnożenie dwóch 8bitowych liczb do 16bitowego wyniku i własnie do tego zmierzałem powyżej. Co do assemblera, jest jak najbardziej pożądany, żeby to szybko działało, ale najpierw musisz się...
nie wiem jak zrobic ((64 < znak) && (znak < 91)) uzyc AND nie moge w programie, coprawda znalazlem and ale wydaje mi sie bezuzyteczny w ogole w asemblerze przeciez chyba nei moge wpisac dwoch liczb w jeden rejestr ? i tak to bedzie bez sensu bo nawet jesli to mam jeden operator przyrownania
Jaki przykład ? Pytałem z twojej strony o przykład podnoszenia do dowolnej potęgi dla liczb zmiennoprzecinkowych podwójnej precyzji i się nie doczekałem, więc czemu ty liczysz na przykłady od kogoś, skoro wskakujesz do wątku, wykrzykuesz "Viva la assembler!" ale rękawicy już nie chcesz podjąć? jeśli chcesz przesunąć o jedno miejsce w lewo mnożysz razy...
Witam. Szkielet programu asemblera na 51' zamieszczałem w poście pod koniec wątku: [url=http://www.elektroda.pl/rtvforum/vi... Dodawanie 3 liczb 8-bitowych - może się Koledze przyda. Do kompilacji najczęściej używam ASEM'a. Pozdrawiam.
Witajcie. Postanowiłem napisać ten temat z jednego powodu: Siedzę już dłuższy czas na próbie programowania w Assemblerze i wciąż nie mogę dojść do tego co mam zamierzone... Chcę zrobić prosty kalkulator do obliczania podstawowych obliczeń (dodawanie, odejmowanie, mnożenie i dzielenie). Do tej pory mam coś takiego jak zamieściłem poniżej. I teraz pytanie...
Algorytm jest dość prosty, wygląda jak mnożenie pisemne. Potrzebujesz dwóch pętli, zewnętrzna wybiera kolejne cyfry mnożnika, a wewnętrzna mnożnej. Kolejne cyfry wyniku (ma nie więcej cyfr niż suma długości mnożnej i mnożnika) wyznaczasz ze wzoru: x=a[i]*b[j]+przeniesienie jeśli x>9 to { przeniesienie=x/10 x=x mod 10} potem oczywiscie musisz sumować...
Teraz już sprawy idą w lepszym kierunku. Problematyczny jest jeszcze sposób deklaracji zmiennych w programie. Proponuję pobrać z internetu dowolny assembler na 8051 (np. ASEM-51), wtedy wszystkie błędy składniowe można na bieżąco sprawdzać. Struktura programu (dowolnego) może wyglądać np. tak: - deklaracja zmiennych i stałych, - instrukcja skoku do...
Witam. Jak programowałem '51 (zresztą dalej programuję) to natrafiłem kiedyś na "kopalnię" procedurek jak mnożenie/dzielenie liczb wielobajtowych, różne konwersje itp... prawie zawsze piszę swoje procedurki ale zdarzyło mi się już, że szybko i jednorazowo musiałem pomnożyć liczby 6bajtowe a potem podzielić przez jakąś stałą i tutaj wykorzystałem gotowe...
Cześć Jestem początkujący więc proszę o wyrozumiałość Poniżej krótki program (od wykładowcy) którego zadaniem jest wyświetlanie liczb na wyświetlaczu 7 segmentowym. Proszę o wyjaśnienie co poszczególne komendy wykonują w kodzie (próbowałem z instrukcją ale pojawiło się mnóstwo pytań http://www.atmel.com/webdoc/avrassembler...
Według mnie nauki nie powinno się zaczynać ani od C ani od C++, że tak powiem są to języki "nieprzyjazne" dla wszystkich którzy zaczynają się ich uczyć, a co mówić dla kogoś kto nie miał żadnego kontaktu z programowaniem. No, ale my nie mamy wpływu na to co rodzi się w głowach ludzi którzy ustalają materiał przerabiany na zajęciach. Co więc Twoim zdaniem...
witam mam następujący problem umieszczam w programie liczby: MOV43H,#55H MOV44H,4H MOV45H,45H MOV46H,78H MOV47H,11H MOV48H,#201 MOV49H,#148 MOV4AH,#219 MOV4BH,78H MOV4CH,20H MOV4DH,99H MOV4EH,#120 wyswietlam zawartosc komorki 43h: MOVA,43H LCALLWRITE_HEX ustawiam sobie rejestr R4 jako taki wskaźnik i wpisuje do niego wartość 43H; MOVR4,#43H ;R4 będzie...
Z tego co podałeś to wynika, że serwisant ma dostęp do części kodu w assemblerze opisującego ciągi tekstowe (z możliwością przetłumaczenia ich na inny język, co wspomniano w, którymś komentarzu). Jego wersja zawiera konkretne adresy początków poszczególnych komunikatów (a właściwie etykiety je swskazujące). Prawdopodobnie on to po wstawieniu tekstów...
assembler konwersja liczb assembler darmowy assembler zaokrąglanie liczb
system solarny zbiór układ moment dokręcać śruba silnik mercedes
Jak zdjąć nadkole przedniego koła w Peugeot 407? Słaby udar w młotowiertarce Milwaukee - przyczyny i rozwiązania