... ; tu kod zatrzymujący licznik mov DPTR,#TABLICA ; iicjujemy wskażnik do tablicy mov A,#0 ;A ma teraz wartosc zero movc A,(at)A+DPTR ; pobieramy starszy bajt, teraz jest w A mov B,A ; zachowujemy go, np. w rejestrze B inc DPTR ; przesuwamy wskażnik do tablicy na nastepny bajt mov A,#0 ; tu trzeba wyzerować A movc A,(at)A+DPTR ; pobieramy nastepny...
Witam! fragment programu : .cseg .org 0 rjmp Start .orgINT0addr rjmp Impuls tablica_cyf:.db cyf_0,cyf_1,cyf_2,cyf_3,cyf_4,cyf_5,cyf_... Start: w tablicy są zdefiniowane bity do sterowania wyświetlacza, po kompilacji w pierwszych komorkach wpisyane sa adresy wektorow przerwan, potem 10 cyfr. po odwolaniu sie do pierwszego elementu tablicy_cyf...
Witaj Lulubella . Co prawda zbyt wiele Ci nie pomogę (sam sie uczę ASM), ale jednak lepsze coś niż nic. A więc zacznijmy od początku. Niezbędnym dla rozwiązania Twego problemu jest utworzenie tablicy 100-tu element owej w pamięci flash mikrusa. Oto ta tablica .org $2500 oznacza umieszczenie tablicy od adresu 2500 * 2 Teraz przyszedł czas na odczytanie...
v5 wygląda na wskaźnik na tablicę bajtowych elementów, które są indeksami dla tablicy dword_40F458 po wykonaniu operacji xor z bajtową zmienną i. Po każdym obrocie pętli wskaźnik ten jest przesuwany na następny element tablicy (v5++).
Acha. To zrób w assemblerze. Albo na tablicach. Nie ma takiej operacji w BASCOMie ani w assemblerze AVR, '51 i innych. Taka operacja to tak zwany "motylek" ale naprawdę nie słyszałem o prcesorze który by miał taki rozkaz. Może jakieś procesory DSP. Albo assembler albo tablicowanie. Wiesz o co mi chodzi z tymi tablicami?
Ach tak, procesor to Atmega8
...Mam pytanie jak przeniesc komende lookup (z bascoma) na assembler? To zależy z ilu elementów maksymalnie może składać się tablica i jaki jest rozmiar jednego elementu. Np. dla tablicy o wielkości max 256 elementów umieszczonej w pamięci programu i rozmiar elementu to 1 bajt: mov a,numer_elementu mov dptr,adres_pierwszego_elementu ; (początek...
mov wX, [wY+wZ] adresowanie pośrednie z offsetem. Wcześniej musisz do wY załadować adres RxBuf, a do wZ - RxPtr offset (bajtowy!) w tablicy. Co do wykorzystania zmiennych z C w assemblerze, to - jak już zauważyłeś jest to problematyczne, ale gdy próbowałem to zrobić, to nie było problemu... Lektura dokumentacji do kompilatora C30 wystarczyła. 4\/3!!
Chcę zaprogramować mikrokontroler Motoroli 68HC908QT4. Piszę w CodeWarriorze, aczkolwiek to są moje pierwsze kroki w Assemblerze. Mam już pomysł na zrobienie tego całkiem inaczej. Wobec tego moje pytanie pozostaje jako zadane z czystej ciekawości czy da się w ogóle taką tablicę zrobić.
Moge napisac dla kompilatora MASM32, powiedzmy 3zl za zadanie :) Przy okazji jesli chcesz, zeby ktos Ci napisal jakis program to polecam http://zlecenia.org Pod koniec tego tygodnia bedzie nowy wyglad strony (ladniejszy) Zapraszam :)
Problem jest w tym że tablice są umieszczone od 0x40 (org 0x40) w pliku WaveSmpl.asm a przy starcie masz skok do procedury RESET i RX_COMPLETE_INT .org 0 rjmpRESET .org URXCaddr rjmpRX_COMPLETE_INT więc skok musi być wykonany przez tablice a jak dodajesz jeszcze jakieś tablice to ten skok jest za długi. usuń .org 0x40 ; Flash word address w pliku WaveSmpl.asm...
cjne A,02h,etykieta - co znaczy porównaj i skocz gdy nie są równe. W tym przypadku 02h to R2 w banku 0. Zakładam że wartość z klawiatury jest w A oraz, że jest to wartość 0-9. Jeśli kod klawisza jest inny należy do programu dorzucić tablicę z kodami klawiszy.
Problem udało się rozwiązać. Jest to program w tzw. "bare metal" tworzony w GNU Macro Assemblerze. Wygląda na to, że jako szablon wziąłem ustawienia z Blue Pill, a skoro działało z ST-LINK, to niczym się nie przejąłem. Dopiero teraz, gdy odłączyłem programator, okazało się, że to był błąd i Macro Assembler źle inicjował tablice wektorów dla STM32H7....
Przy małych tablicach (cyfry plus kilka znaków) działa bezbłędnie. ZH jest chyba potrzebne dopiero gdy chcemy wskazać jakiś odległy element tablicy (powyżej 255?).
Jako że asembler jest z reguły samodzielnym niezależnym, i nie związanym z IDE programem wszelkie etykiety i makra są jego wyłaczną domeną. Generalnie etykiety i marka to jest inna droga przy kompilacji ale te rozważania wkraczają w naukę o kompilatorach/translatorach. Jeżeli assembler jest makto-assemblerem (dziś trudno o inny) to wszelkie maka są...
No to po kolei: [syntax=x86asm] .MODEL SMALL Dane SEG DL_TABLICA EQU 15 Tablica DB 01h, 02h, 00h, 10h, 12h, 33h DB 15h, 09h, 11h, 08h, 0Ah, 00h Dane ENDS Najwieksza DB ? W jakim to będzie segmencie? Proponuję w Dane. Kod SEGM ASSUME CS:Dane, DS:Kod, SS:Stos Nie ma segmentu Stos Start: mov ax, OFSET Stos Po co to? mov ds, bx Co ładujesz do DS mov al,...
Ciągle możesz to zrobić, tylko użyj innych rejestrów, które są wolne. Tu masz o wstawkach: http://www.nongnu.org/avr-libc/user-manu... Inna sprawa, że może źle wybrałeś procesor, lepiej pewnie by poszło z XMega, raz, że działa do 32MHz, a dwa, że ma DMA, które może wyrzucać dane na DAC, bez konieczności robienia tego programowo. Co do...
Witam. Osobiscie preferuje TASM (sentymenty), ale oba kompilatory maja podobne mozliwosci. Istnieja miedzy roznice skladniowe, wlasnie: smieci times 768 db 0 dla MASM to to samo, co smieci db 768 dup 0 dla TASM i znaczy tyle, co: zmienna smieci zlozona z 768 bajtow o wartosci 0 (tablica) - id smieci wskazuje na pierwszy bajt tablicy. W necie, zdaje...
Prawidłowo - po wpisaniu '7' w AL (czyli dwóch ostatnich rejestru AX) znajdzie się 37h. Do BL przenosisz wiec po odjęciu 7. Tyle, że cały kod jest przygotowany do pracy z większymi wartościami, niż jedna cyfra, więc przesuniecie BL w prawo sprawi, że będzie tam 0. To pierwsza część. Dopiero kawałek dalej jeszcze raz przenosisz do BL z AL i tym razem...
do tego najlepszym rozwiązaniem będzie dyrektywa include dołączająca do głównego pliku, Raczej jest to najgorsze rozwiązanie bo include w zasadzie nie do tego służy. Jest dyrektywą wstępnej analizy tekstowej programu i efektywnie działa tak samo jakbyś w edytorze w miejsce include wkopiował zawartość wstawianego pliku. Include nie definiuje modułu...
Mi wszystko chodzi versja programu 2.1 revision 5 i chodzi mi bez problemu. Tu masz link do tego programu http://prdownloads.sourceforge.net/proem... sciągnij i zainstaluj i musi chodzić bo ja ustawienia mam takie samo kompilator i procesor. Najlepiej jak chcesz to pisz do mnie na gg 1791969 bo przez forum to się...
Witam mam następujący kod .... LOOP:LDAPORTA;Odczytaj wartość z Portu A i zapisz do Ak. A TAX ; zapisz do X bity z portu A LDALIST,X;odczytaj kod znaku LED z LIST .... LIST:fcb%11000000,%11111001,%1010010... '0', '1', '2', '3' Czy to co będzie w X definiuje co zostanie przekazane z LIST do akumulatora A? Jeśli tak to jeśli w X będzie...
Układ 8255 jest programowanym portem równoległym i może jedynie współpracować z PC lub mikrokontrolerem. Musisz uściślić o jaki program Ci chodzi na PC czy mikrokontroler i to konkretnego typu, do czego służu 8255 w twoim urządzeniu, czy steruje wyświetlaczami LED a może tablicą synoptyczną??? Pozdro
A może inaczej. Konwersja BIN->BCD jest czasochłonna, więc może od razu liczyć w BCD? Korekta dla BCD przy inkrementacji binarnej jest banalna, a AVR ma flagę przeniesienia z młodszej tetrady, co ułatwia liczenie. Przerwanie odbioru USART przepisuje wartość licznika do tablicy i tyle.
Jedyne co możesz zrobić to stworzyć tablicę struktur i przeszukiwać po kolei pola z nazwiskami.
Mam jeszcze jedno pytanie, potrzebuje wstawic tablice w asm TAB: DW10000 DW1000 DW100 DW10 DW1 I dostaje tylko " Error 106 : Unknown assembler command [DW 10000] Jesli jest to tablica DB to Ok, a DW nie :? ehh....
Jak dla mnie wystarczyłby na start graficzny assembler, gdzie wszystkie operacje np. na rejestrach byłyby w formie tablic logiczno-matematycznych na podstawie których mógłbym w profesjonalny oraz oszczędny sposób rozszerzać swoja bibliotekę graficzną... Co kto lubi... Dla mnie malowanie tych kresek byłoby mega niewygodne w kleceniu tych moich popierdułek.
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...
...do tej tablicy odwołuję się poprzez ldi r31,high(0x200) ldi r30,low(0x200) lpm wpisanie w nawiasach sinus nic nie daje, wpisanie 0x100 także nic. Ldi wtedy nie bierze elementów tablicy. Dziwne... Pzdr.
Dżyszla napisał : MOV SI,1 MOV BX,offset tablica MOV AL,[BX] INC BX MOV AH,[BX] Z tych trzech ostatnich lini moge wnioskować że w Al jest pierwsza 8 bitowa wartość tablicy a w Ah druga ? I po co ustawiać rejestr Si na 1 ?
Czy procedurę o etykiecie "timer0" masz daleko od początku programu? A może jej w ogóle nie masz? W zasadzie dla procesorów o tak dużym Flash'u powinno się używać rozkazu "jmp", a nie "rjmp" (dlateg adresy w tablicy przerwań są co 2 bajty), ale tak jak napisałeś może też być, pod warunkiem, że nie zostanie przekroczony zasięg rozkazu "rjmp". Wówczas...
Zrób sobie tablicę na 256 DWORD Wyzeruj ją przed wczytaniem pliku. Zwiększaj element w tej tablice odpowiadający kolejnemu wczytanemu z pliku znaku.
Rozumiem, że chodzi Ci o "zagęszczanie" przechowywanej w pamięci tablicy V^0.16. Akurat ten poprzedni przykład to była ekstrapolacja, bo wynik był liczony poza punktami, ale idea jest mniej więcej słuszna. Dokładnie przy interpolacji liniowej puszczasz linię prostą między kolejnymi punktami krzywej i traktujesz punkty na niej jako wartości funkcji....
Witam. próbuje nauczyć sie assemblera i troszkę potrzebuje pomocy poniżej daje kod działającego programu zrobione na zestawy dydktyczny ZD537 ; program dodajacy dwie stale ; funkcjerejestru A, R5 - argumenty, R3 - wynik $NOMOD51; wylacznie predefiniowanych nazw rejestru $INCLUDE (REG517.INC); PREDEFINIOWANIE NAZW REJESTRU 537 sta1 equ 12h sta2 equ 21...
Na avrfreaks znalazłem taki pdf: http://www.avrfreaks.net/modules/FreaksF... Flash Tables for AVRs without the LPM Instruction Nigdy nie tworzyłem takich tablic i nie mam informacji książkowych na ten temat. Mam więc pytanie do szanownych forumowiczów - czy w taki oto sposób tworzy się takie tablice? Może ktoś z forumowiczów ma jakieś...
odpal kompilator g++ z opcją -S
Od pewnego czasu tylko piszę w C i to zupełnie na inne mikrokontrolery, lecz naskrobałem takie "cóś": [syntax=asm] liczba equ 72h ; przechowywana liczba podana przez uzytkownika czy_kod_poprawny equ 73h ; zmienna "flaga", jesli wartosc 0 to kod poprawny org 0h; start: mov R0, #3 ; ilosc cyfr mov R1, #0 ; offset w tablicy mov DPTR, #haslo mov czy_kod_poprawny,...
Tak jak wcześniej wspomniał tmf, najlepiej umieścić tą tablicę w pamięci FLASH. Wadą takiego rozwiązania jest to, że wówczas będzie ona dostępna jedynie do odczytu. Procesor tez może zapisywać do pamięci programu. Z pomocą przychodzi nam assembler i instrukcja SPM. Niestety jeszcze nigdy nie próbowałem tego rozwiązania :D
Proszę bardzo: Drugi assembler daje taki output: Niestety trzebaby posiedzieć nad konfiguracją, żeby wskazać mu obszary, które są tablicami wektorów coś jak tutaj: http://www.techedge.com.au/utils/dhc11tu...
:arrow: pawelskot Wejdź na [url=http://www.myplace.nu/avr/minidds/i... AVR pages - MiniDDS, przeczytaj opis i ściągnij źródło w assemblerze. Znajdziesz w nim tablicę próbek dla przebiegu sinusoidalnego i piłokształtnego (a może jeszcze jakiegoś trzeciego - nie pamiętam). Robiłem generator sinusa na podstawie tych tablic i wychodzi bardzo...
Owszem, jeżeli jest to konieczne (brak wolnych\nie wykorzystanych rejestrów) O wiele lepszym rozwiązaniem jest skopiowanie do wolnych rejestrów. Dla kompilatora C pojęcie "wolne rejestry" nie istnieje. Wolne one są tylko wtedy gdy ich zawartość zostanie odłożona na stos. Autor wątku nie posługuje się assemblerem więc po co mieszasz? Ja nie znając bascoma...
Ja większość kodu sterującego urządzeniem do kreślenia charakterystyk elementów półprzewodnikowych napisałem bez nadmiernego zastanawiania się nad logiką, musiałem jedynie spędzić trochę czasu na poczytaniu dokumentacji bibliotek oraz rejestrów urządzeń i2c. Schemat blokowy programu zrobiłem już po fakcie, dokumentując całość w pracy inżynierskiej....
A ten assembler to wybrałeś z powodu skłonności do masochizmu? Poczytaj o automatach stanu, jedna z implementacji wykorzystuje tablice, której wymiary to stan automatu i zdarzenie. Na wskazanej przez nie pozyvcji możesz umieścić np. funkcję, która realizuje obsługę odpowiedzi na zdarzenie przy danym stanie automatu.
Ponieważ w całym poście jedyną wartą uwagi informacją jest to: nie chce przyjmować klas to obstawiam że używasz C++. W takim razie gotów jestem się założyć, że nie masz nigdzie przy przerwaniach: extern "C" void nazwa_IRQHandler() {...} Bez owego >extern "C"< przerwania definiowane w plikach C++ nie zadziałają (jeśli...
Faktycznie, to jest to o czym pisze p. Witkowski :) Tam są przykłady rozwiązań problemów. Udało mi się dotrzeć do user manual online - polecam, proszę zwrócić uwage na prostotę języka nagielskiego w jakim opisana jest cała biblioteka. Właściwie to procesory AVR zostały zaprojektowane zwłaszcza z uwagi na posługiwanie się językiem wyższego poziomu np....
nie zabardzo pamiętam assemblera ale zrobiłbym to tak: 1.deklaracja tablicy od 0 do 255 elementów wyzerowanej 2.otwarcie pliku a)czytanie znaku b)ustawienie indexu tablicy na odczytany znak, c)odczyt z tablic wartosci, d)incrementacja, e)zapis do pamiecie, f) jezeli nie ma konca pliku goto a) 3. obliczenie maxymalnej wartosci wystapienia ktoregos znaku...
Mecze się już kilka godzin próbując odczytać tablicę umieszczoną w pamięci programu i po kolei umieszczać odczytane wartości w rejestrze np: R0. Oto cześć kodu: ldi R28, low(tab) ;adres tablicy ldi R29, high(tab) lpm R0,R .ORG 0x121 tab: .DB 1,2,3,4,5,0 ; jakaś tablica .EXIT Oczywiście to nie zadziała . Adres tablicy został poprawnie odczytany i w rejestrach...
W sumie gdy przeczytałem Twój post uzmysłowiłem sobie, że ten startup to i tak w większości assembler, bo korzysta mocno z wstawek... Zaczynam wątpić w sens tego przedsięwzięcia [; W zasadzie to taka sama kwestia dotyczy tablicy wektorów w C - o ile te dla Cortex-M3 są sensowne (bo to tablica adresów funkcji), to dla ARMv4 już nieszczególnie... /; Czyżbym...
to skoro padła odpowiedz jak poradzić sobie z problemem to powiem co poszło nie tak. w językach kompilowanych, na przykład C oprócz zwykłej tablicy istnieje także statyczna czysta tablica. [syntax=c]const char tablica[liczba][/syntax] gdzie liczba to naprzykład [syntax=c]#define liczba 100[/syntax] podczas przejścia preprocesora jak kompilator widzi...
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...
Coż zamiast tablicy możesz zrobić tak jak kolega w C if-ami. wobec czego nie będziesz musiał tworzyć tablicy
Konstrukcja do-while podobnie jak if-then-else oppiera się na sprawdzeniu warunku i wielokrotne powtarzanie "losowania" całej tablicy to tak w rzeczywistości powtarzanie "if" (najlepiej byłoby to widać w postaci assemblera) algorytm dla tablicy o dowolnym rozmiarze: a) wygeneruj pierwszy losowy element b) generuj kolejny losowy element dopóki nie osiągniesz...
:arrow: chyba miales na mysli rjmp w tablicy wektorów... pozdro!
Witam. Mam problem z napisanie programu w assemblerze. Program ten pobiera od użytkownika 2 ciągi znaków a następnie zwraca nam jeden ciąg złożony z tych dwóch, z tym że jest on wyświetlany na zmianę, raz jedna literka z jednego, później pierwsza z drugiego itd. Np. ciąg I: 123, ciąg II: 456, ciąg zwracany: 142536. Nie bardzo wiem w jaki sposób mogę...
Generalnie zaden znany mi kompilator C do AVR nie daje bezposrednio takiej mozliwosci.Mozna zrobic dwie rzeczy: - skompilowac plik assemblerowy z deklaracja takiej tablicy w assemblerze do object file-a i dolinkowac go do istniejacego projektu napisanego w C - napisac swoja wlasna funkcje ktora za pomoca polecenia SPM wrzuci twoje dane w odpowiednie...
Coś mi świta że w notach microchipa są gotowe kody. Trygonometryczne najlepiej liczyć z wielomianów albo tablicować (a jeśli potrzebna lepsza dokładność to linearyzować pomiędzy wartościami z tablicy).
Co do podpowiadania, to ja pamiętam ze szkoły: podpowiedziałem koledze, jak zrobić zadanie na klasówce, i kolega wpadł - nauczycielka zauważyła, że sposób rozwiązania był za dobry, jak na znane jej umiejętności kolegi, wywołała go do tablicy, zapytała - okazało się, że nie umiał tego, czego użył w rozwiązaniu, i już wiedziała, że podpowiedziane.
Należy zrezygnować z Bascoma albo zrobić wstawkę w assemblerze, a wynik umieścić w tablicy lub dwóch zmiennych. Niestety Bascom nie potrafi operować na liczbach 64-bitowych.
Wydaje mi się, że ktoś w tym emulatorze po prostu dał ciała z < oraz >. Powinno być jak pisze kolega szelus, wtedy by to miało jakiś sens. Chyba, że przyjmuje też taki mnemonik: LDA #<etykieta To samo zadanie można zrobić prościej i czytelniej (mój ulubiony quick assembler na małym atari) :) org $0600 lda #73 ;wartość jaką chcemy przekonwertować...
Nie - assembler ma mi pomóc w zrozumieniu pisania aplikacji. Na HDD lub MMC/SD będą zapisywane dane zaszyfrowane odpowiednim dynamicznym kluczem(generowanym przez AVR). Aplikacje będzie musiała kasować wpisy w tablicy alokacji partycji o konkretnych plikach zawierających klucze po ich jednorazowym odczytaniu. Czy dobrze rozumiem że: 1. AVR zapisuje...
bardzo prosto... zalozmy ze masz liczbe 24962 i chcesz ja przeksztalcic do tablicy 5 elementowej na dziendobry zerujesz tablice. teraz odejmujesz od liczby wartosc 10000 (najwiekszy mnoznik elementow tablicy) i sprawdzasz czy liczba jest juz mniejsza od tego co aktualnie odejmujesz. za kazde odjecie powiekszasz wartosc w tablicy odpowiedzialna za dana...
unsigned char xdata T[3] _at_ 0x7000; void main() { T[0] = 0x12; T[1] = 0x34; T[2] = 0x56; // tutaj dalszy program } To działa i jest dokładnie tym, co potrzeba, ale przy dużej tablicy kod się rozrośnie do ogromnych rozmiarów. Nie chodzi tu o kod, tylko o wielkość skompilowanego programu. ... A jak...
Zamiast ładować do akumulatora stałą D1,D2,D3... musisz ją pobrać z tablicy w pamięci programu (DB) albo wyliczyć w każdym obiegu pętli, reszta instrukcji jest taka sama w każdej iteracji, więc nie widzę problemu.
Zobacz wygenerowany plik .lss - tam bedziesz mial linie kodu c++ i to jak zostaly przetlumaczone na assembler. Znajdziesz tam takze adresy. Nie podoba mi sie tez zapis uint8_t g_LED[4]={0}. IMHO to deklaruje 4-elementowa tablice, gdzie prawidlowe indeksy to 0-3, i inicjalizuje element o indeksie 0 na 0. Czyli zupelnie nie to co chcesz osiagnac. Natomiast...
Da się zapisywać do pamięci programu dane z poziomu wykonującego się programu. W assemblerze AVR występuje instrukcja SPM która zapisuje słowo z pary rejestrów R0:R1 do pamięci programu pod adres określony rejestrem Z :P Nie próbowałem tego nigdy ale faktem jest że coś takiego jest i wystarczy zajrzeć do datasheet'u :P
Skoro nie jest dla Ciebie problemem już odczyt z tej klawiatury, do dalej też nie jest trudno. Robisz sobie tablicę 10 elementów, w niej na sztywno wpisujesz jakie chcesz mieć znaki (odpowiednią sekwencję bitów), a potem odczytujesz sobie z tablicy odpowiednio... Tak wiem... tablica... ASM... nie pamiętam jak to jest w 51, ale w PIC można adresować...
jesli musisz liczyc potegi o stalym wykladniku, to najlepiej zastosowac metode tablicowa. Ja tak robilem u siebie logarytmowanie - bardzo szybka metoda. Zeby zaoszczedzic na rozmiarze tablicy (a tym samym pamieci), argument wejsciowy przydzielasz do pewnego przedzialu (ktorego szerokosc dobierasz w zaleznosci od pozadanej dokladnosci) a nastepnie na...
Język programowania to narzędzie. Wypada przeczytać instrukcję żeby wiedzieć jak się nim posłużyć. Prowadzenie dyskusji z kolegą Jacynka, przykro mi to pisać, prowadzi do mylnego wyobrażenia. Jesli wstawia kawałek pseudo kodu i pisze że to To podstawowy przykład ze strony mcs to jest to wprowadzanie ludzi uczestniczących w dyskusji w błąd . Przykład...
Ciezka sprawa. Nawt jesli popedzisz ATMege z 16MHz to masz zaledwie 16 instrukcji/us. Da sie to zrobic zakladajac, ze PWM jest uporzadkowana tablica (np. w kolejnosci wzrastajacej) i wykorzystujac przerwanie timera (COMPARE). Ladujesz rejestr do porownania wartoscia kolejna z tablicy, w przerwaniu zmieniasz stan IO i zwiekszasz wskaznik do tablicy PWM....
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ć....
Wysyłanie danych jest oparte na wstawkach Assemblerowych i jedyne co wiem, to to, że mam wpisywać wartości do zmiennych "kanal(). Nie znam ASM, więc jest mi ciężko cokolwiek zrobić. Tę procedurę zostawiam w spokoju, niech działa tak jak jest Chcę tylko (albo aż) kanal(1), kanal(2), kanal(3) zamienić na LED1 kanal(4), kanal(5), kanal(6) na LED2 kanal(7),...
Fajna konstrukcja, choć uważam, że z minionej epoki. (teraz załóżmy, że cofamy się z 10/18 lat) Mógłbyś przejść z takim urządzeniem na bazar używanego sprzętu i wybrać tylko działające joysticki i je sprzedawać xD, lub prowadzić szybką naprawę. Bardzo podobają mi się listingi binarnego kodu wraz z opisem, sam to robiłeś? W kontekście macie jakiś pomysł...
Jakiego assemblera używasz, podaj nazwe. Możesz na końcu programu wygenerować tablicę w rodzaju np, WORD program1, program2 itp.
Dalej; doczytałem ze ten plik startup jest doklejany do naszego pliku podczas linkowania - bo problem jest umieścić coś przed funkcją main od której program się zaczyna więc nie da się (chyba) zainicjalizować procesora bezpośrednio z "C". 1. Nie przesadzajmy - przy użyciu skryptu linkera i tablicy wektorów możesz sobie tak poskładać program, że zacznie...
Przede wszystkim konstrukcję switch ... case można zaimplementować jako tablicę skoków, a na dodatek jasno wyraża intencje programisty. Seria if/if else ... albo if/if/if to inny kod i chyba żaden kompilator nie przetworzy tego na równoważną konstrukcję switch ... case. Pozdrawiam, Dr.Vee
Ile problemów robi adresowanie tablic w Bascomm od 0? Tyle co użycie dyrektywy CONFIG BASE=0 ... w MATLABie tablice też są indeksowane od 1. Jakoś nie bardzo widzę problem w tym jaki indeks ma pierwszy element tablicy. Co to zmienia czy ma 0, 1 czy 123? Jak jest przenośność C a jako Basic? Dałem konkretny przykład, w C kilka godzin roboty, w Basic...
W BASCOMIE się nie da ze względu na precyzyjne czasy wyświetlania jednej linii sygnału. Świetnie nadaje się do tego Assembler gdzie kontroluje się każdy takt procesora. Jeżeli będzie zainteresowanie to mogę wrzucić moje kody poczawszy od nauki wyświetlania najprostszego wyświetlania na jednej połówce czarnego a na drugiej czarnego, poprzez prostokąt,...
Jeśli dobrze rozumiem, ma to działać następująco: Pobierasz po kolei dane z tablicy trianglewave do rejestru r0 (__tmp_reg__) i później wyprowadzasz tę wartość na PORTB . Skoro dane z tablicy pobierasz za pomocą polecenia assemblera lpm , to nie powinieneś czasami zadeklarować tablicy do zapisania we flash'u: //na początku dodaj #include <avr/pgmspace.h>...
No wlasnie, ale wtedy trzeba pisac program w assemblerze, o czym wspomnialem. BASCOM nie obsluguje tablic bitow, sprawdzalem juz w kompilatorze. BTW pisze pod Atmege16. Balu, myslalem, ze nie mozna zrobic czegos takiego DIM A as BYTE DIM B as BYTE A.B = 1 Jednak przed chwila to sprawdzilem i kompilator nie zglasza bledu. Takze w tym wypadku rzeczywiscie...
w pierwszych sektorach dysku sa tablice alokacji plików które zawierają wskaźniki (z grubsza ujmując) do plików na powierzchni dysku. Musisz znalezc odpowiedni plik w FAT potem skoczyc pod odpowiedni sektor dysku i zapisac tyle obszarów ile zajmuje plik. Generalnie pod windami tego nie zrobisz. Pozostaje tryb real.
AVRStudio (jak i wiele innych środowisk) potrafi zdeasemblować plik w postaci pośredniej, zawierający tablicę symboli - nazwy zmiennych i procedur. Ty potrzebujesz zdeasemblować czyste binaria, o których nie wiadomo, gdzie mają dane, a gdzie kod, i w których nie ma żadnych nazw etykiet i zmiennych. Z grubsza dobrze kombinujesz - pół roku intensywnej...
Dzięki temu w ogóle wiem co to jest asembler W dzisiejszych czasach nie warto sobie zawracać głowy assemblerem. i trochę bardziej rozumiem architekturę tych urządzeń. Poczytaj raczej o Z-80 do którego to było DMA. Moje dalsze przygody, pójdą raczej w różne atmegi i attiny. Raczej ARM, nie warto wchodzić a przestarzałe technologie, drogie i o małych...
Po metodzie wynika że chodzi o IDirect3D8 lub IDirect3D9 (lub jeszcze wyżej, w vista). Obecnie każdy assember wspiera makra, więc wywoływanie metod wygląda tak: coinvoke objekt, indeks_metody, parametry Rozbijanie tego na pojedyńcze instrukcje to katorga dla oczu. No ale skoro tego chcesz, to: push'ujesz parametry standardowo od prawej do lewej, a dalej:...
Początek: zamiast zapisać wzorce cyfr w tablicy w pamięci ROM, radosny programista pisze sekwencję instrukcji, które wpiszą te stałe do pamięci RAM. etykiety od licz_cośtam- to przykład, jak nie należy robić wyświetlania z multipleksowaniem. Pauza: przykład, jak nie należy robić opóźnień słyużących do odliczania czasu. Bardzo dydaktyczny program.
Aby uniknac pomylek z adresami w tablicy wektorow proponuje napisac tak: .ORG 0x00 rjmp Start .ORG INT0addr rjmp iPrzerwanieOdINT0 .ORG INT1addr rjmp iPrzerwanieOdINT1 .ORG OC2addr rjmp iPrzerwanieOdOC2 .... i tak dalej. Wszystkie adresy sa zdefiniowane w pliku mXX.inc Pozdro Dexter
Assembler stosuje się przeważnie tam, gdzie zidentyfikowano wąskie gardła w wydajności i jest możliwość jej poprawy. Też coraż rzadziej kolego (at)linuxtorpeda . Ostatnio musiałem na PC-ie wyrzeźbić bardzo sprawne operacje na dużych tablicach i potrzebowałem użyć instrukcje temporal czy non temporal - jedyne co użyłem to intrinsics-y w C i nie uznaję...
Nie rozumiem w czym problem, lista instrukcji do ręki, przeczytać kod, przeanalizować i wszystko stanie się jasne, powszechna jest opinia że assembler jest trudny, owszem w pisaniu, ale nie w czytaniu, tu nie ma żadnej składni (poza etykietami z dwukropkiem), słów kluczowych (poza DB), bibliotek, tylko lista instrukcji, która mieści się na 2-4 kartkach...
witam Co może być w tym kodzie nie tak?? .MODEL SMALL .DATA ;Segment danych Table DW 100 dup(?) ;Tablica danych .CODE ;Segment kodu ;Na wejściu procedura otrzymuje rejestry SI i BX, które wskazują na cześć tablicy ;poddawaną sumowaniu AddEm PROC lea bx,Table[si+bx];wyznacz w BX adres efektywnego pierwszego słowa xor ax,ax mov cx,20 aloop:...
Należy kontrolować indeksy,a nie wskaźniki jak nazwał je genetix , mimo że w dalszej części opisał je prawidłowo No zgadza się, są to indeksy. Jednak ja cały czas myślę assemblerem i pisałem: Inicjując bufor ustwaiamy WRptr=RDptr=adres_bufora co sugeruje, że mamy do czynienia ze wskaźnikiem. Dopiero później z rozpędu napisałem: tablica[WRptr++]=UDR;...
Ja bym zrobił to tak: ;definiowanie własnych znaków,tablica definicji znajduje pamięci ROM ;można zdefiniować 10 własnych znaków DefChars: CLR A ;ustawienie adresu CGRAM ORL A,#40H ;ustawienie kontrolera w tryb definicji CALL OutStatRegLCD MOV DPTR,#Char do DPTR adres początku tablicy z ;definicjami znaków DefChars1: CLR A MOVC A,(at)A+DPTR ;zapis bajtów...
Sprawdziłem poprawność wszystkich połączeń (używam wtykanych pinów) i okazało się, że zanikło połączenie z ALE do CLK zatrzasku. Aby sprawdzić czy winny jest Keil użyłem języka assembler - efekt był ten sam, ale na szczeście znalazłem płytke AVT i tam uruchomiłem program - zadziałał wiec poprawiłem wszystkie połączenia w mojej plytce i zaczeło chodzic!!...
po co w niektórych implementacjach takich 'rozbiegówek' mamy kod assemblerowy który kopiuje adres stosu do rejestru SP procesora? STM32 może używać dwóch stosów - jednego dla przerwań (nazwanego wyjątkowo myląco "main stack") i drugiego dla wątków (nazwanego "process stack") - a więc i dla "main()". To co jest w tablicy wektorów ląduje w MSP ("main...
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...
Witam Jestem początkującą w pisaniu w assemblerze i mam do napisania program na DSM51, piszę w Jagodzie.. Mam coś takiego (to ma mi zamienić kod strzałki w prawo z klawiatury matrycowej na wartość określoną w tablicy KEY_CODE): LJMP START ORG 100H START: MOV DPTR, #KEY_CODE MOV A, 0BH MOVC A, (at)A+DPTR LJMP $ KEY_CODE: DB 30H,31H,32H DB 33H,34H,35H...
Widzę, że zadałem trudne albo głupie pytanie. Pewnie GCC jest tak toporne, że nie podoła zadaniu. Akurat GCC nie jest tak toporne jak narzedzia komercyjne ;). Wiec: Na czym polega mój problem? Jak zmusić gcc, aby w module: - program zaczynał się od zdefiniowanego adresu Ustawiasz to w skrypcie linkera: MEMORY { CODE (rx) : ORIGIN =...
Sory, ale ja nie łapie problemu, chcesz żeby zmienić wartość zmiennej czy mieć tablice takich zmiennych.
Moim zdaniem totalnie zle zaczynasz nauke, pierwsze co powinienes zrobic to sie nauczyc asm, nastepnie rozumiec jak dziala lcd od 3310, wtedy dopiero zabrac sie za ten program. Jak chcesz koniecnie szybko napisac ten program to zobacz jak jest w asm zrobic odczytywanie tablicy i jak dziala wyswietlanie na lcd. Tyle z mojej strony, wiecej pomocy nie...
Znalazłem jeden wieczor i udało mi się wymusić generowanie "muzyczki". Jest program, tablica częstotliwości tonów (od adr. 0200) i tablica nut (od 0300) ale można je poprzestawiać. Do P3.4 wrzuciłem 0 alby zworką P3.4-P3.5 móc zatrzymać generowanie melodyjki. Timer0 generuje zadaną częstotliwość a Tiimer1 nadaje tempo. T1 ma częstotliwość 256Hz. Format...
jak narazie to tylko umiem to zrobić sposobem kopiowania ale to za długo trwa Nie wiem czy istnieje sposób sortowania sposobem kopiowaniem. Sortować można same komórki lub w przypadku sortowania łańcuchów wskaźniki na te łańcuchy. Załączam materiały o sposobach sortowania. Żle się wyraziłem chodzi o to że ustawiam wartości np w adresie ds 0001 i je...
a wiesz co to sa mnemoniki, rozkazy, stosy, pamięć, język maszynowy, bity bajty rotacje i te inne sprawy?? Assembler to czysta kombinacja z podstawowymi algorytmami. Samych algorytmów nie znajdziesz w książce typowej o procesorach, to zadanie dla książek programistycznych. Każdy procesor programuje sie inaczej ma inny zasób słów a nie wiem czy dostaniesz...
assembler darmowy assembler bascom zapis tablicy tablicy assembler przerwania
ekspres ariete schemat pozycjoner głowica telewizorze
kablówka skrzynka matryca lsc320an02
Webasto Planar 2D 12-S - Migająca czerwona dioda: przyczyny i diagnostyka BK7231N Tuya Switch by Aubess: Features & Customization