tablicę z danymi umieść na samym końcu za programem: [syntax=asm].include "tn13def.inc" .cseg .org0x00 rjmpstart .org 0x0A start: cli ; blokada przerwań ldi r16,low(RAMEND) ; stos na koniec RAM out SPL,r16 ldi r16,0b00000111 ;konfiguruje porty B pin0-pin2 na wyjscie out ddrb,r16 ps0:ldiZL,low(Ledy<<1) ;adres tabeli w pamięci programu ldiZH,high(Ledy<<1)...
1. Jak wprowadzasz tablicę? 2. Wypisanie indeksów trochę mało ma się do samej tablicy, gdyż jest to wyłącznie matematyka (i={2,4,..,n}, dla n<=rozmiar(tablica))
Mam pytanie jak w asemblerze avr zadeklarowac w segmencie danych tablice slow, o wielkosci np. 5. Można jedynie zarezerwować stały dany obszar pamięci .dseg tBuffer: .byte 0x05 Powyższe rezerwuje 5 bajtów w SRAM pod etykietą tBuffer . Można używać ten obszar w róznych nie kolidujacych ze soba procedurach. A tak mozna się odwołać do 3 bajtu : sts...
W każdej nowej linijce dodaj DB i wtedy nie ma znaczenia ile takich danych umiescisz.
Witaj! Nie musisz pisać deklaracji .DW. Możesz pisać deklaracje .DB. musisz pamiętać że Flash kontrolera to 2 bajty poj jednym adresem. Zapraszam do lektury http://www.atmel.com/dyn/resources/prod_... http://www.atmel.com/dyn/resources/prod_... Nie ważne jakiego kompilatora uzywasz gdyż jest dla danej rodziny kontrolerów...
Witaj, może inta jest wskaźnikiem na początek tablicy? Pozdrawiam!
Tak na marginesie kiedyś był taki standard od 14-31 na polskie znaki co powoduje ze mamy tylko 7 bitów na załą tablicę ASCII
Pic Picowi nierówny, tablice można wykonać i operowac nimi na rózne sposoby. Na stronie Microchipa poszukaj Aplication Note "AN716". Tam jest rozdział zarówno o tablicach zorganizowanych przy pomocy rozkazu RETLW (powrót z załadowaniem rejestru)i jak to użyć(dla wszystkich PIC-ów), jak i o operowaniu na tablicach przy użyciu dedykowanych rejestrów (dla...
Sory, źle napisałem, robię tak: mov tab lea dx, tab Co muszę zmienić w kodzie żeby program działał mi tak jak powinien? Edit: problem rozwiązany.
start: mov dx, al mov ah,9 int 21h Nie rozumiem pytania o konwersje, ale moge podpowiedzieć że podany wyżej kod raczej nie zadziała, bo są w nim 2 błędy, składniowy i logiczny. 1. Nie można skopiować wartości 8 bit do wartości 16bitowej 2. Funkcja 9 int21h przyjmuje w rejestrze DX wskaźnik do tablicy znaków a nie wartość.
Dokladnie chce wyswietlic te 2 tablice, 2 ciagi, scislej mowiac fraze: "Ala_ma_+Kota." (taka konkatenacja tekstu) Prawde mowiac ciekawa koncepcja tylko nie jest az tak latwo przelac to na kod programu... (z racji ze raczkuje w asemblerze jak niestety widac)
Czesc, Dosyc niedawno zainteresowalem sie uC. Pisze program ktory ma rosnąco pokazywac liczby na wyswietlaczu led. Mam 2 siedmiosegmentowe wyświetlacze. Liczby zawarlem w tablicy. Problem jest w tym ze probuje zrobic osobna tablice dla jednosci a osobną dla dziesiątek. Niestety tak to nie działa. Pomoze ktoś ? Oto problemowy kawałek kodu: ldi ZL, LOW(Liczba_LED*2)...
U mnie kod: .org 0 start: inc r1 rjmp start działa poprawnie (AVR Studio 4, ver 4.12 sp1 build 462). No wiec asemblacja przebiega prawidlowo, lecz podczas debugowania program wyskakuje z obiegu. Tzn. co się dzieje ? Co do eeprom, spróbuj tak: .ESEG eevar1: .DW 0x1234 Po asemblacji wygenerowany zostanie plik nazwa_projektu.eep, wrzucasz go za pomoca...
Witam, mam problem z dwoma zadaniami na tablicach w asemblerze, mianowicie: 1) ustawić bit zerowy na wartość drugiego bitu każdej liczby w tablicy 2) każda liczbę tablicy pomnożyć przez następna, występująca po niej. mam już "ramy" programu- funkcje zmieniające typ wprowadzanych liczb, pobieranie liczb do tablicy z klawiatury, potrzebuje tylko kilka...
Co konkretnie koleżanko chcesz robić ?
Wydaje mi się , że do takich porównań lepiej użyć XRL , niż SUBB . Piotrek
Chciałem to zrobić, aby lepiej rozumieć asemblera. A jak się ma asembler do bramek i tablic Karnaugha? Czy chcesz zbudować własny procesor, czy zrozumieć asembler istniejącego procesora. Same operacje w asemblerze nie wymagają znajomości rozbudowanych układów logicznych na poziomie bramek. Wystarczą operacje logiczne i arytmetyczne na liczbach zapisanych...
program ten służy do sterowania sterownikiem matrycy diod LED. matryca jest 16 diodowa. wyjścia ze sterowników sterowane są PWMem a ich wartość ustalana jest przez wartość która wprowadzę w 192 bitowym rejestrze czyli za jedno wyjście odpowiada 12 bitowe słowo. W tej chwili mam stworzoną tablicę z 24-oma 8 bitowymi słowami. Żeby ustawić wartość PWM...
Przestaw operandy.
Witam, mam mały problem z następującym programem. Muszę wyszukać maksymalną wartość w tablicy. Program działa w DOSBox'ie, ale muszę robić coś źle bo nic nie wyświetla (jest jakiś krzak). Jestem totalnym początkującym jeżeli chodzi o asemblera :(. Poniżej zamieszczam napisany kod przeze mnie: dane SEGMENT ;segment danych tekst_1 db ": To jest...
DB Nie jest rozkazem procesora tylko dyrektywą kompilatora. A DPTR jest to 16 bitowy rejestr w 8051. Więcej szczegułów znajdziesz w dokumentacji 8051
Witam! Od paru dni uczę się pisać programy w asemblerze na AVR (dokładnie AtMega16) i mam następujący problem na którego nie potrafię rozwiązać: próbuje stworzyć tablice danych w pamięci SRAM aby odwoływać się do nich instrukcją STS jednak wpisanie danych w następujący sposób nie działa: .dseg bus: .db 0xc2, 0xc6, 0xce, 0xcc natomiast "ręczne wklepywanie...
Masz zadeklarowaną tablice(pole 16-bajtowe) TABLICA EQU 50 ;od adresu w RAM-e = 50 I teraz nie piszesz gdzie sumujesz te osiem srodkowych wartosci ale zakładam że np do akumulatora, więc najprościej jest tak: CLR A ;zeruję bo tam będę sumował ADD A,TABLICA+4 ADD A,TABLICA+5 ADD A,TABLICA+6 ADD A,TABLICA+7 ADD A,TABLICA+8 ADD A,TABLICA+9 ADD A,TABLICA+10...
Najwyraźniej skopiowałeś funkcję bez zrozumienia. Twoje "Oblicz_długosc" funkcjonalnie odpowiada strlen() z języka C, czyli liczy długość łańcucha znaków aż do wystąpienia znaku o kodzie równym 0, którym w języku C (i nie tylko) oznacza się koniec łańcucha. W pierwszej tablicy masz napis i asembler sam dodaje znacznik końca o kodzie 0 - dla kompatybilności...
Dobrze by było podac w czym programujesz asembler, C++, bascom??
Witam mam taki problem , chce odczytać 100 elementów z tablicy której adres efektywny został zdeklarowany symbolicznie jako TABLICA ( chodzi o asemblera 8086), niestety nie wiem jak sie do tego zabrać, może ktoś mi pomóc? pozdrawiam i dzięki za pomoc
Strasznie się zapętliłeś z adresowaniem. MOV A,4 oznacza prześlij do akumulatora zawartość komórki o adresie 4 (czyli to samo co MOV A,R4) natomiast MOV A,#4 oznacza wpisz do akumulatora wartość 4 Proponuję zacząć używać symulatora (np. AVSIM'a) Moja propozycja kodu: MOV R1,#4 ;LICZBA ELEMENTÓW MOV R2,#0 ;ZEROWANIE BUFORA SUMY PETLA: MOV DPTR, #Tablica...
Z innej beczki - problem kresek można również rozwiązać stosując RAM grafiki w wersji dual-port. https://obrazki.elektroda.pl/2008294700_... IDT7132SA/LA Ten byłby idealny do COBRA1. Jedna strona adresowana z liczników i tylko do odczytu - druga podłączona do szyny Z80. Oczywiście przełączniki adresów można pominąć wówczas. To samo...
A po co w ogóle to przekształcać? Jeżeli drażnią optycznie Cie liczby typu 11, 12 .... to zrób sobie definicje: #define Klawisz_1 11 #define Klawisz_2 23 Jeżeli koniecznie chcesz przekształcić, to najlepiej tablicą, tak jak pisze Atom1477.
Witaj, _Edycja(at)4 I dokładnie taki sam symbol jest wyeksportowany z dll. Taki ciąg znaków powinieneś podać do funkcji GetProcAddress. Zmian nazw, bzw. usunięcia dekoracji, dokonuje się zazwyczaj za pomocą tekstowego pliku .def, dołączanym do etapu linkowania.
Co to za asembler? Na jaki procesor? Na jaki system operacyjny?
Tablicę wskaźników tworzy sam kompilator/asembler, nie ma potrzeby samemu wyliczać kolejnych ofsetów. W złych miejscach szukasz też optymalizacji. Przede wszystkim informację o szerokości znaków w pikselach (nie bajtach) zamieściłbym tuż przed opisem znaku - jest to logiczne, gdyż dotyczy opisu konkretnego znaku. Ale na optymalizację miejsce umieszczenia...
Hej !! Ja mam podobny problem :/ Robiliśmy na lekcji kilka prostych programów na DSM-51 ale teraz na zaliczenie potrzebował bym coś wiekszego np. kasa fiskalna do autobusu, tablica swietlna obslugujaca mecz koszykówki, jakis stoper.. Dzięki. .
W tym miejscu chodziło mi o eth0. Ten pierwszy wpis (z pierwszej tablicy) skądś się przecież bierze. Przez osmozę tego nie złapał ;)
skynet_2: żeby o działało to musiał byś mieć tablicę zawierającą wszystkie kombinacje wartości PWMów. Czyli 128wartości ^ 48 PWMów = raczej dużo.
Wartość wyjściowa jest różnicą pomiędzy wartością z tablicy i zmierzoną z ADC, nie analizowałem dokładnie, ale wygląda jakby to był regulator P ze wzmocnieniem 1 (mało) więc nawet jeśli stabilizuje to bardzo kiepsko. Kod programu (Niestety nie mój a pisany przez kolegę z którym już nie mam kontaktu) To trzeba napisać od nowa, poprawić niesprawdzony...
wiki to nie Koran drogi kolego fundamentalisto. W chrześcjaństwie tak nazywano scholastyków - nie uznających niczego poza tym co powiedziane i napisane i tylko na podstawie tego dokonywać wymyślania tworów kolejnych - co oczywiście prowadziło do absurdów - np. Czy chimera unosząc się w próżni może tworzyć intencje wtórne - co nieco przypomina naszą...
Zapomniałem dodać, że piszę w asemblerze.
a z tablica bedzie może nie profesjonalnie ale chociaż bez problemów ;) Tylko że za dobrze nie potrafie budować tablic w asemblerze, ale zaraz o tym poczytam :D Więcej pokory kolego Tarczel2 dla zumka, właśnie z tablicą będzie b. profesjonalnie, poprogramujesz trochę to się dowiesz dlaczego.
albo ustawiasz BX na początek tablicy i z każdym przebiegiem zwiększasz o długość pola tablicy, albo używasz rejestrów indeksowych i zapisujesz prawie jak tablicę.
Jak jest dużo flash-a, to można jeszcze przejsć przez tablicę. Jak się ją wyrówna do granicy 256 bajtów, to chyba będzie ciut szybciej, niż ta rozwinięta pętla.
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....
Teraz kumam o co w tym chodzi. Dziekuje bardzo za pomoc i jeszcze jedno pytanie gdzie znajde taka tablice?
Czyli jeśli w kodzie C inicjuję jedynie wektor powiedzmy ADC_vect, to jedynie w kodzie asemblerowym jedynie .org ADCaddr będzie pozbawione komentarza <__bad_interrupt>. A propos wektorów i tablicy: Czy inicjalizacja tablicy wektorów przerwań jest zależna od typu mikrokontrolera? W literaturze i w poradnikach internetowych widzę, że wszędzie wektory...
Za kod przepraszam, faktycznie trudno cokolwiek z niego odczytać. Porównałem oba przypadki, znalazłem różnicę ale już poprawiłem (w klastrze nowego folderu jako początek sektora dla wpisu ".." wpisywałem numer sektora katalogu nadrzędnego jako 00000002h- w tym sektorze znajduje się katalog główny, trzeba ten wpis pomniejszyć o 2 niewykorzystywane klastry)....
To nad czym się zastanawiacie intvect jest przecież wyjaśnione (internal vectors = wektory skoków wewnętrzne) czyli tablica przerwań procesora. Np.: .ext0 DC.W it_ret oznacza że jeżeli wystąpi przerwanie wewnętrznego modułu przerwania zewnetrznego EXT0 (.ext0) to procesor wykona skok do etykiety w programie it_ret lub zapewne jest to zakodowana nazwa...
Hmmmm... a czy nie możesz w funkcji odczytu po prostu nie wrzucać znaków NULL do tablicy ? Potrzebne Ci są one do czegoś ? Ewentualnie zrób obsługę tablicy w asemblerze i sam poznęcaj się nad zapisem i odczytem do i z pamięci, która odpowiada za tablicę.
Sprawa jest prosta: orientowac sie w asemblerze (wiedziec co w trawie piszczy), znac dobrze C - to jest podstawa. A jak ktos lubi moze sie douczyc roznych wynalazkow. Oczywiście że tak. Chociaż odwróciłbym to. Znać dobrze asembler, i orientować się w C. Prosta sprawa c + asembler = zrobimy wszystko. Jednak bascom (wogóle Basic) naprawdę uczy złych...
Projekt mam napisany w języku "C". W asemblerze mam kilka funkcji, które nie są mojego autorstwa. Funkcje asemblerowe mam zapisane w pliku z rozszerzeniem .s,który jest dołączony do projektu. Tablice w asemblerze STable i SiTable mógłbym skopiować do dowolnego pliku z rozszerzeniem .c i użyć dyrektywy __attribute__((space(prog), address(0x200))) lecz...
nie jest dokładnie wyskalowany wiec np . 2bity odpowiadałoby (wyświetlałoby)0,1V , 4 bity 0,2V ale już np 6bitów 0,3V a 20bitów 1,1V i inne. chodzi mi o zasade tworzenia tablic w asemblerze bo na razie wiem tylko że zaczyna sie to od .db . jak to zrozumiem to licze że dalej mi pójdzie.
Mogę spróbować. Nie jest to priorytetowe, ale i tak, chyba pokuszę się na przepisanie procedury przerwania FIQ z języka C na asembler. Nie obiecuję, że wcześnie wrzucę tu moje wypociny. Procedura ta korzysta z zmiennych globalnych z czego jedna jest tablicą. Najpierw muszę właśnie opanować manipulowanie takimi zmiennymi w asemblerze. PS. A czy jest...
niestety asembler to dla mnie czarna magia :D próbowałem DAC0H = wzorzec[i][1]; DAC0L = wzorzec[i][0]; ale działało wolniej niż z jednowymiarowej tablicy dac[i] nie musi być tablicą i do tego dążę przyspieszając wzór który podałem na początku... sin_180 to cały okres jeśli zrobisz mi tą pętlę w asm to było by ciekawe :)
zapomniałem "&" Fakt. Teraz wszystko działa jak należy. Oj ten Atembler (miks słów asembler i Atmel) jest bardzo fikuśny. Grunt, że działa. Temat rozwiązany przez vonar. Dzięki wielkie!
Witam! Jak w AVR-GCC zapisać tablice z danymi pod konkretnym adresem w pamięci flash procesora? Będę wymieniał te tablice za pomocą bootloadera w zależności od wersji urządzenia dlatego muszę mieć je zapisane pod odpowiednim adresem. Jest coś takiego jak dyrektywa "ORG" w asemblerze? Pozdrawiam
Co do problemu to chwilowo nic nie dodam. Zauważyłem jednak że nie zwalniasz zaalokowanej pamięci a w C++ to poważny błąd. Każdy new powinien być w parze z delete, a ponieważa alokujesz tablice powinieneś użyć delete[].
Masz rację. Moja pomyłka, przepraszam (było rano). Powinno być: nr_bajtu_pamięci_ekranu = (x div 8 )+(y - 1) * 5 Przy edycji musiałem skasować te kilka znaków. Teraz chyba to działa. y to oczywiście numer wiersz dla piksela. Masz rację, że w asemblerze natywnie nie ma tablic dwuwymiarowych, ale bardzo łatwo jest oprogramować taką strukturę pamiętając...
Grzebiąc po karcie SD telefonu zauważyłem, że w/w kod to nie zapis pliku MP4 a jest to zwykły zapis sektorów w których znajdują się fragmenty filmu. Wychodzi z tego, że SYMBIAN zapisując film szuka wolnych sektorów a w kilku plikach podaje ich adresy. Pliki te są bardzo podobne do fragmentów tablicy FAT32 (taki format plików mam na karcie). Problem...
Każdy kompilator "pisze program w asemblerze" więc oczywiście jest to możliwe. Nie rozumiem tylko w jakim celu programista miałby się katować asemblerem zamiast pisać w C. AVR to nie 51 czy PIC; kompilator języka wysokiego poziomu generuje dość przyzwoity i wydajny kod, więc po co utrudniać sobie życie?
Na poczatku kazdego programu umieszcza sie tzw Tablice wektorow przerwan. Procesor ma zaszyte na stale pod jaki adres ma skoczyc gdy otrzyma przerwanie. Gdy otrzyma takowe skacze w odpowiednie miejsce tablicy. Po drodze na stosie zachowuje aktualny adres licznika programu zeby wiedzial w ktore miejsce ma wrocic po wykonaniu instrukcji reti informujacej...
Eh.. coś widzę że każdy drąży wokół tematu a nie w temacie... Ten problem o ile wystąpi (podobno w niektórych licznikach rowerowych nie występuje ale nie mam zamiaru badać tuzina liczników) mam zamiar zwalczyć (o ile się da) ekranowaniem. Licznik własnej konstrukcji wydaje mi się że mogę za ekranować albo umieścić w metalowej obudowie i wyprowadzić...
w ten sposob zapisana tabela jest wlaczana do kodu. po wykonaniu sie instrukcji mov.b 'wykonywane' sa dane zapisane w tabeli. umiesc jmp $ przed tabela i powinno byc w miare dobrze - to taka poprawka na szybko dane stale (czyli tablica) powinny byc umieszczone w innej sekcji, a nie w sekcji na kod, czyli RSEG CODE. 4\/3!!
Generalnie wszystko źle:) Zacznijmy od tego, że nie chronisz rejestru SREG w przerwaniu. Tutaj w tym przypadku moze to chodzic bo nie uzywasz w programie głownym bo go nie masz, ale masz dwa przerwania. Jedno przerwanie moze przerwac prace drugiego i wtedy klops. Oczywiscie długo może to chodzic bez obiawów ale w koncu sie to wywyróci, a ty nawet możesz...
Witam. Napisałem sortowanie bąbelkowe pod Asemblera, lecz coś w ogóle nie sortuje mógłby ktoś z Was spojrzeć na Niego. Oto jego kod. Tablica - to moja tablica elementów do sortowania n - ilość elementów asm { //------------ edi=i, esi=j // i=0; mov edi, 0h pierwsza: //j=i; mov esi, edi; druga: //if(tablica A to jego wygląd w C++ (przerobiony aby było...
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...
Może skorzystaj z rozwinięcia logarytmu w szereg potęgowy? Np. jeśli 0<x<=2 to ln x = suma(od 0 do niesk) z (-1)^(n+1) ((x-1)^n)/n Oczywiście nie liczysz do nieskończoności tylko np. 5 pierwszych składników sumy... wtedy przy sprytnym podejściu będzie działać dość szybko, wystarczy mnożenie i dodawanie ;-) Dla wszystkich x>0 trochę gorzej......
Niby tak, ale chętnie sprawdziłbym przekład na asembler obu wersji. Mamy tutaj 512 taktów zegara na obsługę przerwania. Jak się doliczy wszystkie operacje na stosie, zaindeksowanie tablicy (szybciej byłoby na wskaźnikach), to zapasu wielkiego nie będzie, zwłaszcza gdyby komuś przyszło do głowy skrócić okres PWM np. do 100 i ustawić preskaler timera...
Sortowanie liczb całkowitych w tablicy metodą bąbelkowej. Chodzi może o sortowanie liczb metodą "bąbelkową"? Zadając pytanie należy podać: System operacyjny. Typ pliku wynikowego (com, exe), jeśli pod DOS, Windows. Komunikaty błędów kompilacji.
... ; 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...
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...
Siedzę na tym cały czas i nie mogę wymyślić ani znaleźć odpowiedzi w jaki sposób w tym programie będzie działać linia: mov esi, OFFSET linie + 4. Sprawdzam sobie rejestry w visual studio i wygląda to tak: http://obrazki.elektroda.pl/3068093500_1... Po wykonaniu ostatniej lini w DX dostaję wartość piątej cyfry w tablicy linii czyli 444,...
Kolega z Łodzi to coś słyszał ale nie do końca pamięta. Nie zaśmiecam sobie pamięci tego typu szrotem. Algorytm na poczekaniu wyczytałem z sufitu. Ponieważ jest "bardzo szybki" może być użyteczny przy wszelkiego rodzaju konwersjach liczba/łańcuch zwłaszcza w układach wyświetlania wielkości fizycznych, gdzie w procesie kalibracji możemy wyliczyć i wpisać...
Do moderatora: Link do dodawania obrazkow nie dziala. http://img190.imageshack.us/img190/8615/... Gdyby hotlink nie dzialal: [url=http://img190.imageshack.us/img190/... Mam 3 labela w sumie: numer, tresc, punktacja. Problem jest taki, ze w "tresci programu" napisy na guzikach sa zdefiniowane jako czarne a wyswietlaja sie...
W załączniku przejrzyj dwie procedurki.
bo musisz jeszcze coś do DPTRa wpisać. Takiego sposobu urzywa sie do pobierania danych z tablicy względem DPTR i np R1 masz np tablice tab1: DB 0,2,4,8 do tego twój programi (ale najpierw musisz dodać na poczatku polecenie MOV DPTR, #tab1) i on ci pobierze dane z tej tablicy. Gdy np r1=0 to pobierze ci pierwszą wartosć- czyli zero, gdy np R1=2 to z...
Problem w tym, że ja z asemblerem nie jestem obeznany. Coś tam kiedyś się uczyłem jednak nie miałem zbyt dużo wolnego czasu. Mam jeszcze jedno pytanie. Moja funkcja uart_tx wygląda aktualnie tak: [syntax=c]void uart_tx(char temp[]) { wskaznik = temp; LED_ON; UCSRB |= (1<<UDRIE); } [/syntax] W tym momencie ona działa, jednak nie jestem pewny czy...
Nie zrozumiałeś mnie i szkoda że tak radykalnie pochodzisz. Nie chcę przekazywać wskaźników. Nie chcę się nigdzie w programie odwoływać przez wskaźnik. Przyjmijmy, że to w tym wykonaniu niemożliwe i nie wracajmy więcej do tematu, za dużo przeróbek. Jeśli nie wskaźnikami, to jak inaczej zminić adres struktury/tablicy w pamięci? PS: czy przyszedł czas...
To z asemblerem, to na jaka platforme?? Na x86 nie znam instruckji LUT, jest za to XLAT - a sam skrot LUT rozwija sie jako look-up table, czyli dla danego indexu masz odpowiendia wartosc w tablicy. Istrukcja XLAT pobiera dane z adresu: ds:[bx+al] i zapisuje je w al.
Pamięć jest zorganizowana w komórki 16-bitowe, objawia się to np tym że wskaźnik programu wskazuje na słowo (2 bajty) a nie na bajt. Wszystkie instrukcje muszą być więc wyrównane do granicy dwóch bajtów. Jakkolwiek z poziomu samego programu pamięć flash jest zorganizowana bajtami, więc spokojnie można w niej umieszczać tablice bajtów bez utraty pamięci....
Najszybciej będzie tworząc 256-bajtową tablicę na każdy poziom. Bez podwójnych rejestrów DPTR musiałbyś mieć próbki w pamięci IRAM (mov A, (at)Rn) lub ew. w jednej stronie pamięci XRAM (movx A, (at)Rn): mov DPTR, #tablica_poziomu_x mov R1, #liczba_probek mov R2, #adres_1_probki_w_ram petla: mov A, (at)R2 ; +1 movc A, (at)DPTR+A ; +1 mov (at)R2,...
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ą...
masz tak: ldi r17, high(51) ldi r16, low (51) out ubrrh, r17 out ubrrl, r16 a dokumentacja mówi tak: • Bit 7 – URSEL: Register Select This bit selects between accessing the UCSRC or the UBRRH Register. It is read as one when reading UCSRC. The URSEL must be one when writing the UCSRC. Więc to twoje zapisywanie do ubrrh...
Mam delikatny problem z tym programikiem. Służy on do sterowania silnikiem krokowym. W zależności od wartości R4 resetowany jest odpowiedni pin procka. Jeśli ten program użyje razem z obsługą UARTa (przerwania) to mi wszystko skacze w maliny. Wiem że program jest zły, ale nie wiem gdzie. Jako tako steruje silnikiem, ale też zgłasza „lewe”...
a może jeszcze inaczej a. plik asemblera budujący tablice wektorów przerwań b. kompilacja z opcją -nostartfiles lub tez zmiana skryptu linkera ??? Rozwiązanie o tyle nieelastyczne, że trzeba będzie ręcznie edytować każdy element tablicy wektorów podczas gdy potrzebuję zmodyfikować jedynie wektor INT0, a w stosunku do pozostałych wektorów chciałbym aby...
Dziękuję za porady - odnośnie tamtego problemu użyłem właśnie wartości w tablicy:)
U mnie nie akceptuje tego (wers.1.11.7.4) $hwstack = 32 ' default use 32 for the hardware stack $swstack = 32 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space Ale to ustawia się w opcjach więc to chyba niema żadnego wpływu asembler Nie zrozumiałeś mnie. Tekst wyświetlany jest w mniej więcej tak: .........TE........
Nie mogę oczywiście napisać za Kolegę ale może coś podpowiem. Klawisz "enter" jest zdefiniowany w tablicy KEY_COD: w ostatniej pozycji "DB 0AEH ;Enter". Najprostszą metodą będzie utworzenie drugiej tablicy TEXT z odwrotnym zapisem i przesłanie jej do LCD. Na razie program działa w pętli i cały czas wysyła dane do LCD (o ile się nie mylę), co wcale nie...
albertb - ten "and" akurat jest tam nie potrzebny, bo chce odczytać cały port ale to jest maska które piny mają być odczytane w przerwaniu Też tak słyszałem, że Bascom zamuli wszystko a Asembler powinien wyrobić. Może ktoś wie jak tu wstawić jakieś wstawki Asemblerowe do Bascoma, może w tedy wyrobi, tylko że na Asemblerze w ogóle się nie znam. Chce...
program powinien zostać napisany w assemblerze. Nie wiem jakich komend powinnam użyć do napisania filtra. To na studiach - zastanawia mnie ten asembler - po kiego ich tego uczą zamiast rozwiązywania algorytmów. Rozumiem że to są rózne filtry. Napisz w C przetlumacz i ręcznie lekko popraw :)
Bawiłem się w to niedawno , programując PIC-a w asemblerze. Piszesz że jest dla ciebie jasne sterowanie wyświetlaczem LCD kiedy już masz odpowiednie kody w CG_RAM , więc przesyłam ci fragment dotyczący ładowania pamięci CG_RAM całą serią kodów dla polskich znaków. Na samym dole są dwie tablice danych : jedna dla małych znaków a druga dla dużych. Jak...
Drodzy koledzy wiem jak programować w C i C++ na PC'ty więc takie, rzeczy jak Warning to dla mnie ważna sprawa i zwracam na to uwagę - kompilator nie zgłasza problemu jak się deklaruje tablice o wielkości N dla stringu o długości N ponieważ znak \0 wpisywany jest tuż za tablicą a nie w niej samej. Łatwo to sprawdzić w wyświetlając w pętli kolejne adresy...
To jest zwykły asembler Thumb2. Jako że to jest rozbiegówka, to kod musi zapisać odpowiednie liczby w odpowiednie miejsca, i to jeszcze w odpowiedniej kolejności. Cały proces rozbiegania rdzenia CortexM3 jest dostępny w dokumentacji do CortexM3, którą można pobrać ze [url=http://infocenter.arm.com/help/inde...
po pierwsze są 2 atmelowskie assemblery, na '51 i AVR. Chciałem się dowiedzieć w jaki sposób piszecie programy w asemblerze udostępnionym przez firmę atmel. Jak go uruchomić, jak zapisać program i inne rzeczy. ja pisze w Avr Studio 4. w jaki sposób?w kolejności w kodzie: skoki do przerwań, procedury obsługi przerwań, właściwy kod, dodatkowe procedury(w...
Twoja odpowiedz to raczej post++ niz prawdziwa wskazowka :P Tablice kodow mam przed oczami wiem ze trzeba zrobic tak: PSEUDO KOD: JESLI znak_lancucha >= '0' I znak_lancucha <= '9' TO liczba = liczba * 10 + (znak_lancucha - kod znaku 0) Programuje w C++ a teraz musze pobawic sie w asm. To co udalo mi sie wyskrobac wyglada tak. mov cx, 00...
niestety nie udało mi się rozwiązać tego problemu (czyt. sprawdzania 4 bitowego kodu). nigdzie nie umiałem znaleźć choćby powierzchownego wyjaśnienia działania tablic w asemblerze. (jeśli ktoś wie gdzie znajdę takie info - proszę o PW) zauważyłem że sporo osób czytało mój post, więc samolubnie uznając go za ciekawy, napiszę moje, proste rozwiązanie....
Zależy w jakim przypadku. Mówisz tak ogólnie, że nie da się odpowiedzieć na Twoje pytania. Zarzuć przykładowym kodem. Sama tablica nie musi być ulotna, ale dane w niej już mogą. Zależy, czy zmieniasz dane w tej tablicy, czy zmieniasz tablice... Generalnie w przypadku wątpliwości zajrzeć do asemblera. Zależy to też od wersji GCC - przed Gcc 4.x dla volatile...
Kilka błędów: - nie możesz zakładać, że zmienne znajdują się pod stałymi adresami w pamięci, to się będzie zmieniać pomiędzy kompilacjami, w związku z tym istnieje konieczność użycia symboli - register to tylko sugestia dla kompilatora i tych rejestrów wcale nie musi rezerwować. Ale jest też poważniejszy błąd - rejestry te są wykorzystywane przez AVR-libc...
Ale rozumiem ze Atmega obsluguje tylko wyswietlacz a dane do wyswietlacza przychodza przez jakies polaczenie z procesora DSP ?? Obliczenie 128 punktowego DFT to nie zadanie dla Atmegi ;) Pozatym te wyswietlacze nie sa zbyt szybkie wiec raczej odswiezanie wieksze jak 10Hz jest bezcelowe bo wszystko sie rozmaze i bedzie jedna wielka plama. Potrzebujesz...
Osobiście mogę tylko potwierdzić, że kończąc projekt, najszybciej można się nauczyć nawet asemblera... ;) To co kolega shg napisał nie ma nic współnego ani z asemblerem, ani z C, najwięcej ma cech bascoma, nie rozumiem, dlaczego kolega KJ nie rozumie, tym bardziej, że pełno tu komentarzy mocno objaśniających, wystarczy zamienić " ; " na " ' "... ;)...
Jezeli uzywasz ZL,ZH to muszą byc te symbole wczesniej zdefiniowane moze uzyj poprostu r30,r31. Tylko te rejestry są uzywane jako wskaznikowe do odczytu/zapisu falsha .def zl=R30 .def zh=r31 Dzięki coś już zaczęło działać ale nie do końca tak jak powinno. Tzn do rejestru R16 trafia wartość ale ciągle jest to FF a powinny być kolejne wartości z tablicy....
Witam, Mam taki problem, mam za zadanie stworzyc stoper w asemblerze, na mikrokontrolerze opartym o 51-ke. Moj głowny problem to stworzenie miedzyczasu w tym programie, niestety nie jestem zbyt biegly w tym jezyku więc prosilbym o pomoc. Dodam jeszcze że stoper ma byc wyswietlany na wyświetlaczu 7 segmentowym, wbudowanym w zestaw na jakim pracujemy....
asembler tablice tablice dwuwymiarowe tablice dostęp
kodowanie modułu pralki minidisc laser prawa konsument
pralka samsung zawiesza pralka samsung zawiesza
Demontaż podłogi ze sklejki: krok po kroku Pominięcie falownika w pompie Grundfos MAGNA UPE 40-120/F