Zobacz na http://www.avrbeginners.net AVR Assembler->Math->Multiple byte maths. Są tam co prawda krótkie, ale dobrze opisane przykłady operacji na liczbach 2 i nawet 4 bajtowych: dodawanie, odejmowanie, porównania itp. Pozdrawiam
Wogóle nie działa ten program trzeci wienc nieweim co to ma wspólnego z tym co jest napisane. Ostatni rozkaz byl blednie zapisany ma byc JR NZ,przesuniecie lub JP NZ,adres etykiety. Oczywiscie w wersji ze skokiem wzglednym kompilator musi wyliczyc wartosc przesuniecia jaka ma byc umieszczona w kodzie na podstawie podanej etykiety. L1 i L2 to liczby...
W jakim kodzie są dodawane liczby - bin czy BCD? I w jakim kodzie ma być wynik bo jeśli w bin to dodając do siebie dwie 11-bitowe liczby potrzebujesz tylko dwóch rejestrów 8 bitowych na reprezentacje wyniku.
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.
a no nie pomyślałem, mój błąd. a ten asm to na 8086. no i z tym dodawaniem to normalnie potrafie nie wiem tylko jak to robić gdy liczba jest na 12 bitach?:( . więc apeluje z prośbą jeśli macie taki programik albo zrobienie go to dla was nic to bede bardzo wdzięczny:):)
Napisz jaką potrzebujesz dokładność, jeśli niewielką to najlepiej użyć gotowej tablicy. Jeśli dużej to trzeba rozłożyć funkcję pierwiatkowania np. na szereg Taylora i wtedy obliczać kolejne przybliżenia, ale to wymaga napisania procedur operacji zmiennoprzecinkowych (głownie mnożenie i dodawanie zmiennoprzecinkowe).
add ZL,offset To pewnie nie to ale zamień to dodawanie na dodawanie pełnej wartości (całego słowa 16 bitowego - w helpie jest z addc i add) i jeszcze to: ldi ZH,high(tablica_cyf<<2) ldi ZL,low(tablica_cyf<<2) Ja tam mam przesuwanie <<1 a to <<2 to chyba przesuwa 2 razy i pewnie tu leży błąd.
bez urazy, kolego olekewaagata, zanim zaczniesz kogoś pouczać przeczytaj tekst ze zrozumieniem! ;)) Autor wątku miał problem z propagowaniem przeniesienia - moja odpowiedź dotyczy DOKŁADNIE zalecenia, jaką instrukcją uwzględnia się przeniesienie. A podany przeze mnie przykład dotyczy sumowania, z jakim ma problem autor - czyli dokładnie liczby _16bit_...
Działa dobrze, możesz sobie sprawdzić nawet na kartce papieru. Wystarczy, że weźmiesz pod uwagę specyfkację formatu U2, jak binarnie zapisana jest liczba -2 i co się stanie, gdy "na kartce" dodasz do niej np. liczbę trzy. Poniżej zamieszczam program testowy dla 32/64-bitowego systemu operacyjnego, przedstawiający składniki i wynik w trzech systemach...
Ok. Już wszystko jest jasne. Jednak mam problem w stronę odwrotną, a dokładniej: Mam zadeklarowaną stałą w C, w assemblerze chciałbym wyciągnąć jej adres w pamięci. Robię dokładnie tak jak podane w przykładzie podanym przeze mnie (czyli w assemblerze dodaję .extern), kompilator podmienia nazwę zmiennej na jej adres, ale jest mały problem. Adres ten...
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...
Przenosisz do rejestrów x. Mnożenie w tym przypadku również musisz wykonać na rejestrze x. Choć wynik oczywiście w takim przypadku jest w dx:ax, to jednak możesz śmiało starszą część olać, jeśli wcześniej wprowadzi się tylko zabezpieczenie przed przekroczeniem zakresu. Dodawanie tak samo - na rejestrze x (wcześniej dla pewności możesz wyzerować część...
Zgodnie z opisem: Dodawanie dwóch liczb wykonuje się instrukcją ADD (bez uwzględnienia przeniesienia), która dodaje drugi operand do pierwszego, a wynik umieszcza w tym pierwszym. Możliwe wariancje (r-rejestr, m-adres, s-stała liczba określa rozmiar): r/m8,r8 r/m16,r16 r/m32,r32 r8,r/m8 r16,r/m16 r32,r/m32 AL,s8 AX,s16 EAX,s32 r/m8,s8 r/m16,s16 r/m32,s32...
Musisz jeszcze pamiętać że akumulator jak i rejestry prawdopodobnie są ośmiobitowe a co za tym idzie nie możesz sobie tak bezmyślnie dodawać szesnastu liczb i trzymać ich sumy w akumulatorze bo się tam ta suma nie zmieści. Wynik musisz zapisywać na dwóch bajtach i dopiero dodawać kolejną bajtową liczbę. Zazwyczaj w asemblerze, ale to zależy od konkretnego...
A skąd jest ten drugi kod? Bo jest bardziej rozbudowany od pierwszego i nie nadążam za Tobą to byl ten sam kod co wczesniej podalem tylko wycialem sam fragment po strcmp i w komentarzach rozpisywalem jak kazda linijke rozumiem Oj, raczej nie, w tym drugim kodzie jest więcej porównań/warunków i skoków, ale go nie analizowałem, więc nie wiem jak działa...
(at)spec220 A jak jest w tym środowisku którego używasz z obsługą peryferiów mikrokontrolera? Czy wszystkie timery, USARTy, I2C, SPI, ADC, DAC, są obsługiwane? czy można ustawić każdy tryb pracy, na który pozwala hardware, czy tylko te popularne? Jak z komunikacją, powiedzmy że chcesz zrealizować DMX512, Modbus RTU, albo LIN, czy masz do tego gotowy...
Witam wszystkich. Mam problem i to poważny. Potrzebuję kogoś, kto zna się na pisaniu programów w asemblerze. Niżej podaję treści takiego zadania: 1. Napisz program, który oczyszcza ekran, umieszcza wskaźnik w wybranym miejscu, prosi użytkownika o podanie dwóch wartości, dodaje je i wyświetla sumę. Użyj procedur Clrscr,Gotoxy,Writestring,Readint i Writeint...
Poza tym pobieżnie przejżałem DS ATTiny i nie widzę instrukcji analogicznej do DIV w 8051?? Jak w nim dzielić liczby?? A czy znalazłeś MUL? ;) Do takich obliczeń niestety trzeba pisać własne funkcje. Można mnożyć i dzielić poprzez wielokrotne dodawanie lub odejmowanie danej liczby, ale to jest oczywiście dosyć mało optymalna metoda. Oczywiście mnożenie...
Masz napisać procedury mnożenia liczb: 1 bajtowej przez 1 bajtową (8x8) wynik będzie 16 bitowy (2 bajty) 2 bajtowej przez 1 bajtową (16x8) wynik będzie 24 bitowy 3 bajty 2 bajtowej przez 2 bajtową (16x16) wynik będzie 32 bitowy (4 bajty) Procedura przebiega tak w kodzie naturalnym binarnym: 1. Przygotowujesz rejestr wyniku o długości równej sumie ilości...
Witam. Czy potrafi ktoś pomóc mi z zadaniem z assemblera? Mam do napisania program, który mnoży dwie liczby 5 bajtowe (40 bitów) szesnastkowe oraz podaje wynik również w tym systemie (tylko wynik będzie wtedy 80 bitowy). Problem polega na tym, że do tego mnożenie trzeba wykorzystać algorytm, ponieważ instrukcja mul nie działa dla tak dużych liczb. Mnożenie...
Witam, aktualnie na pracowni wałkujemy DSM-51 i jest dla mnie sporo niewiadomych i prosiłbym o wyjaśnienie/pomoc. Do rzeczy, pierwsza sprawa; - sterowanie diodą i brzęczykiem, korzystałem z poniższego kodu: LEDEQUP1.7 BUZZER EQU P1.7 LJMPSTART ORG100H START: LOOP: CPLLED CPLBUZZER MOVA,#10;czekaj czas 10*100ms=1s LCALL DELAY_100MS LJMPLOOP Opis: definicja...
https://obrazki.elektroda.pl/5617037700_... Amerykańska Agencja Bezpieczeństwa Narodowego (NSA) zdecydowała się na upublicznienie i darmowe udostępnienie oprogramowania GHIDRA w wersji 9.0. Jest to specjalne środowisko do inżynierii wstecznej plików binarnych, które od ponad dekady wykorzystywane jest przez pracowników NSA do wykrywania...
Stary post ale , jest sposob aby przerwania od timera wystepowaly w rownych(co do jednego cylku) z gory okreslonych odstepach. Przy kwarcu 12MHz aby odmierzac rowne czasy np 20ms wystarczy na poczatku przerwania wpiac taka procedurke ktora modyfikuje odpowienido rejestry TL0 i TH0 i uwzglednia opoznienie czasowe. t0VAL equ 20000 ; czas miedzy przerwaniami...
Chodzi o procesor ST32F103 z rdzeniem Cortex-M3. Wykonuje na przykład dodawanie dwoch liczb wielokrotnej precyzji (n-bitowej i m-bitowej). Liczby zapisane sa w systemie o podstawie 2^32. W assemblerze realizuje tylko czesc operacji na slowach. # IntLongWord ulFastMathAdd (IntWord uxA, IntWord uxB) .global ulFastMathAdd .thumb_func ulFastMathAdd:...
Nie umarł i nie umrze, aczkolwiek może zostać "zdegradowany" do pozycji języka, który jest potrzebny tylko do napisania kompilatora. Stanie się tak, jeżeli pojawi się jezyk wysokiego poziomu, a właściwie to kompilator takiego języka, za pomocą którego będzie można uzyskać kod równie wydajny. Chociaż i tak zawsze pozostanie grupa entuzjastów asm. Znajomość...
Mnóstwo instrukcji assemblera nie może być wykonanych w jednym cyklu zegara... w sumie wszystkie wykonywane są w tej samej liczbie i zależy ona od PIPELINE'u... pobranie instrukcji, dekodowanie, wykonanie, zapis do pamieci, akumulacja wyniku. To jest taki najprostszy pipeline i umożliwia on właśnie wykonywanie instrukcji w "jednym" cyklu zegara.......
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...
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...
PO. : ad 1/ avr'y są ośmiobitowe, ale obsługa zmiennych 16-bitowych jest optymalna. W przypadku średnim obsługa zajmuje 2* więcej czasu: podstawienie pomiędzy rejestrami (2*mov=2 cykle lub w szczególnym przypadku movw=1 cykl), inkrementacja (subi+sbci = 2cykle, odejmowanie wartości ujemnej, gdyż nie ma dodawania o stałą podaną bezpośrednio; w przypadkach...
http://obrazki.elektroda.pl/3751212700_1... Układ jest dedykowany na ATtiny2313, ja przy okazji zagospodarowałem ostatni AT90S2313, jaki miałem i popełniłem miernik pojemności na nim. Krótki opis jak to działa: Miernik mierzy pojemność dołączonego kondensatora ładując go stałym prądem z lustra prądowego Q1, Q2 (2x BC557), które dodatkowo...
A konkretnie to co z tego jest niezrozumiałe (po zajrzeniu do opisu instrukcji 51)? Może ujmę to tak : Chciałem opisać każdą linijkę co oznacza , jestem serem z assemblera dlatego nawet jeśli przeczytam definicje funkcji np add - ADD A, #dana · do akumulatora dodawany jest argument stały (8-bitowa liczba) to Jakbym dostał pytanie co się dzieje...
http://obrazki.elektroda.pl/4029783300_1... Układu SID (6581 stary i 8580 nowy), będącym muzyczną orkiestrą komputera Commodore 64 nie trzeba nikomu przedstawiać – między innymi dzięki jego brzmieniu owa maszyna osiągnęła tak dużą popularność. Warto tylko przypomnieć, że SID ma jedynie trzy kanały, ale umiejętności programistów...
http://obrazki.elektroda.pl/6101342600_1... Autor niniejszego opisu planował testować swego czasu tagi RFID na częstotliwość 150 kHz, jednak nie posiadał własnego generatora sygnałowego – dlatego postanowił wykorzystać w tym celu mikroprocesor ATMega88 i bezpośrednią syntezę cyfrową sygnału. Zamiast jednak sięgnąć po gotowe rozwiązanie...
https://obrazki.elektroda.pl/7656017200_... O komputerach jednopłytkowych czy stare komputery były lepsze od współczesnych platform rozwojowych i SBC? Nie lubię Arduino I to jest jak najbardziej prawda. Arduino to platforma, która miała dać łatwy dostęp do programowania elektroniki ludziom, którzy nie znają się ani na elektronice,...
https://obrazki.elektroda.pl/4689387300_... Jak niedawno zapowiadałem, prace nad projektem efektora do miksera Behringer DJX700 praktycznie zostały zakończone. Na chwilę obecną mam działający układ wraz z devboardem i ukończone programy efektów. Ale po kolei. O samym procesorze FV-1 możecie poczytać w innych moich tematach; konkretnie...
Operacje arytmetyczne i logiczne w procesorze wykonuje jednostka arytmetyczno-logiczna (ALU). Generalnie ma dwa wejścia i jedno wyjście (np 32bitowe dla procesora 32b) i współpracuje z rejestrami procesora o takiej szerokości. Dodatkowo ma wejście i wyjście do przerzutnika przeniesienia, przerzutniki flag (informacja o przepełnieniu w ostatniej operacji)...
przemo_wielki, dzieki bardzo za ten kod, teraz juz rozumiem gdzie robilem źle, musze jeszcze teraz przerobic ten program (a wlasciwie jako drugi program na zaliczenie) abym mogl wprowadzac liczby wielocyfrowe (powiedzmy tylko dwu lub trzy) i program rowniez ma je sumowac i wyswietlac sume koncepcje mam taka, ze liczby te (a wlasciwie zmienne) musze...
https://obrazki.elektroda.pl/8661538600_... Zainspirowany podcastami o historii komputerów (podcast #19 - Słowo o architekturze i słowniczek pojęć By lepiej zrozumieć zagadnienie pamięci, musimy najpierw poznać architekturę, a dokładniej to części składowe procesora. Nie będziemy zagłębiać się w tajniki najnowszych Ryzenów czy i9,...
http://obrazki.elektroda.pl/6035825200_1... Witam, w chciałbym się podzielić moim ostatnim tworem jaki powstał z chwili potrzeby. http://obrazki.elektroda.pl/2685746200_1... http://obrazki.elektroda.pl/2820438100_1... http://obrazki.elektroda.pl/1850987000_1... http://obrazki.elektroda.pl/4784630600_1...
Witam. Mam problem, ponieważ nie potrafię zapisać liczby zmiennoprzecinkowej w assemblerze. Procesor dostaliśmy na laboratoriach, odpala sie go w matlabie. Mamy troszkę okrojoną ilość rozkazów(napisze je niżej). Mantysa i wykładnik maja byc po 16 bitów. Te liczby mam dodawac, odejmowac, mnożyć i porównywać. Lecz w czym mam największy problem? Nie potrafię...
https://obrazki.elektroda.pl/5009750700_... Witajcie moi drodzy Oto druga część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie omówię podstawowe operacje cyfrowego IO na prostych przykładach. Spis części (osobnych tematów) tutoriala Tutorial podzielony jest...
Pokaż jak wygląda całe przeliczenie, może da się jeszcze coś wymyślić. Teraz wygląda tak (wersja robocza): Trzeba tak dobierać mnożniki żeby dzielniki były potęgą dwójki. Czyli w tym przypadku zwiększyć dzielnik ze 100 na 128, i tle samo razy zwiększyć mnożnik, czyli ze 127 na 163: uint32_t newsample = (volume_coefficient *newbuffer Tutaj chyba nie...
wygląda to tak dla każdego dźwięku w stroju równomiernie temperowanym: A to 440Hz, A# to 466,16Hz czyli pierwiastek 12 stopnia z 2 wyższa częstotliwość. 1 cent wyżej to częstotliwość wyższa o pierwiastek 1200 stopnia z 2. Wartość, którą należy wpisać do SIDa, określająca częstotliwość oscylatora to: częstotliwość dźwięku * 0,0596. Także jak widzisz...
https://obrazki.elektroda.pl/5334725900_... LabVIEW to znane wielu inżynierom środowisko programowania w graficznym języku G, dedykowane głównie do zastosowań w systemach laboratoryjnych i kontrolno-pomiarowych. Wiele razy pisaliśmy już na forum m.in. o warsztatach i szkoleniach związanych z tym środowiskiem. Teraz, z okazji przyznania...
http://obrazki.elektroda.pl/3234430100_1... W Wyszukiwanie, zbieranie i analizowanie otwartych komponentów systemu Najpierw zacznijmy od wyjaśnienia co to jest oprogramowanie otwarte czy też dostępne na licencji GPL (trochę teorii). Narzędzia wykorzystane w routerze, takie jak Linux, U-Boot i inne dostępne są na licencji GPL, co oznacza...
https://obrazki.elektroda.pl/2568884200_... Witajcie moi drodzy Zapraszam na kolejną część mojego tutoriala PIC18F2550 i kompilatora SDCC . W tej części zademonstruję jak używać wyświetlacza 7-segmentowego z PIC18F2550 . Kod obsługi wyświetlacza będzie oczywiście napisany w oparciu o przerwania i timery . Cały proces powstawania układu...
Witam. Mam maly problem z programem w assemblerze. Temat programu to : wyprowadzanie liczb 16-bitowych na ekran w postaci dziesietnej Problem wyglada tak, ze program powinien wyswietlac liczby od 0-65535, niestety liczby 65536-65539 tez moga byc wpisane. czy moglby ktos sprawdzic moj kod i ewentualnie poprawic tak zeby wyswietlalo poprawnie? (program...
Witam, Mam do wykonania następujące zadanie: dodawac do siebie poszczególne komórki obszarów pamieci, wynik dodawania umieszczac w drugim obszarze. Program ma sprawdzac poprawnosc podanych adresów – wynik w akumulatorze B. Program ma sie zaczynac od adresu 0020h. Dane wejsciowe: 0010h, 0011h - dwie komórki pamieci zawierajace adres poczatku pierwszego...
dodawanie bitowe assembler dodawanie dodawanie assembler
makro przycisk access interfejs optyczny licznika miernik częstotliwości radiu
lodówka whirlpool pokrętło renault mascott
Problem z menedżerem wtyczek w Nero PhotoSnap Viewer Błąd w podnośniku Ruthmann - przyczyny i diagnostyka