według mnie tak na logike to kompilator asemblera ma tylko moje rozkazy napisane symbolicznie przekształcić na hexa z sumą kontroloną i w odpowiednim formacie , wiec nadal będę się upierał przy swoim chociaż przyznaje że nie znam wszystkich kompilatorów i może faktycznie robią jakieś optymalizacje, chociaz włąśnie po to piszemy w asemblerze bo sami...
Wygląda na to, że wszystko działa :D Gratuluję. Jedynie komentarze i formatowanie kodu jest bardzo złe :| Skoro Twój program już działa to mogę udostępnić swój. Za punkty, bo w kodzie praktycznie każda linijka posiada komentarz, wszystko zostało w nich wyjaśnione. Jak już wcześniej w temacie pisałem u mnie jest tylko jedna funkcja "searchstr", a to...
Nie wiem czy to ważne ale 8-bitowce były programowane w maszynowym bezpośrednio wszystkie. Asm to nic innego jak bezpośrednie komendy procesora. Tu się nie zgadzam - język maszynowy jest dwójkowy i tak pisałem na laboratorium proste programy na Mera 305 (procesor Momik 8b). Pisałem to chyba nie precyzyjne słowo - wprowadzałem do pamięci. Na klawiszach...
albo różne pokrętne działania 6502. 6502 ma trochę rozkazów niepublikowanych. Na C-64 był monitor, dissassembler, a nawet Assembler interpretujący te rozkazy. 62C02, używany w "Szmatari", rozkazy niepublikowane miał zastąpione rozkazem NOP. Ciekawą cechą 6502 było dodawanie 1 cyklu maszynowego gdy PC przekraczał stronę (256 bajtów). W C-64, auto uruchomienie...
Witam, potrzebuje wyjaśnienie poszczególnych rozkazów asemblera, tzn co robi "mov", "jump" itp, jest mi to bardzo potrzebne. Za wszelką pomoc serdecznie dziękuje. Pozdrawiam Damian
Zlecę napisane programu w Assembler w środowisku Keil albo innym bez znaczenia. Opis programu - zrzut pamięci z dwóch procesorów na trzeci procesor.
A ja jeszcze dodam, aby podejrzeć sobie wypluwany kod z asemblera, jakiś program z jednym rozkazem (wcale nie ma działać), potem zmienić rozkaz na inny (lub rejestr) i porównać z poprzednim wynikowy plik exe. Zobaczysz, że zmieniają się pewne bajty, a te zmiany to właśnie oznaczenia rozkazów i rejestrów. Assembler robi coś takiego (upraszczam, to nie...
Dzisiaj jedyne sensowne zastosowanie assemblera to małe wstawki do programów w innych językach. Może to dotyczyć jakiś specyficznych rozkazów dotyczących sprzętu (przełączanie trybów CPU, dostęp do jakiś specjalizowanych rejestrów itp) bądź pewne obliczenia łatwiejsze w assemblerze (np. bardzo duże liczby - w assemblerze jest dostęp do przepełnienia,...
AVR-y mają rozdzieloną przestrzeń adresową pamięci programu i pamięci danych. Adres np. 0x100 istnieje zarówno dla pamięci RAM i jak i dla pamięci FLASH. Ale, oczywiście, jest to adres fizycznie innej pamięci. Jeżeli chcesz załadować dane z pamięci FLASH musisz użyć rozkazu lpm. Pozostałe rozkazy (lds, ld) ładują dane z pamięci RAM.
Czasami rozkazy LPM,SPM dzialają z rejestrami ZL,ZH (R30,R31) ld r30,.... ld r31.......... LPM lub LPM r16,Z
Z tym LPM to różnie bywa. Samo LPM bez parametru zadziała na pewno i kompilator też przyjmie. Nowe LPM z dowolnym rejestrem to dobra sprawa ale ja z tego nie korzystam, nie chcę niespodzianek. ??????? OMG!!! Sugerujesz że Atmel tak sobie powrzucał rozkazy na listę nie sprawdzając ich działania? Zalecam na wszelki wypadek nie korzystać z większej liczby...
:arrow: zumek Wiem, że potrafi to wygenerować kompilator assemblera. Listing z mojego poprzedniego postu to CYTAT z wypowiedzi kolegi jony15 . A moje pytanie wynikło stąd, że też ten kompilator wydał mi się kiepski, i chciałem się dowiedzieć jaka to wersja. Sorry za nieprecyzyjne pytanie. Ja używam (a raczej używałem, teraz jeśli już piszę na '51, to...
... chciałabym jedynie uzyskać odpowiedz na pytanie, czy bezpośrednie czytanie i zapis do i rejestrów XMegi może ją uszkodzić. Czy C, czy Assembler, czy BASCOM wszystkie operują na rejestrach. Jak więc miałyby uszkodzić mikrokontroler? ... C mnie już nie interesuje. Przesiadka z BASCOM na Assembler jest krokiem odważnym i chwalebnym. Jednakże uparte...
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...
Ale o którą Odrę pytasz? Ja pracowałem na 1305. Assembler (makro) to Plan 4T, podobny z mnemoników do Motoroli. Z tego co pamiętam miała 3 bajtowe słowo, wchodziły tam 4 znaki i były specjalne rozkazy do operowania tym. Poza tym dziwolągiem maszyna jak maszyna. Miała problemy mechaniczne z drukarkami, czytnikami kart czy przewijakami taśm. Z ciekawych...
Jeszcze dla pewności też wybiorę chyba AVR i zobaczymy co mi z tego wyjdzie :) ( co prawda bedzie trzeba programatorek wydłubać ale co tam :) ) Tylko że potrzebował bym jeszcze a nei wiem skad wziąść jakiś schemat układu testującego nio i rozkazy w ASM ( to chyba z PDF rozkazy wziąść ? ) jeżeli jeszcze nie wybrałeś to poleciłbym ARM'y - nie żebym miał...
Po prostu jest to stos niedostępny programowo dla programisty. To miałem na myśli. W nowszych konstrukcjach jest dostępny (przykładowo PIC12F1501), Co nie eliminuje większości ograniczeń. Ale, czy słyszałeś, aby ktokolwiek miał na PIC problemy z nadpisywaniem stosu? ;-) Rzecz w czym innym. Po prostu na stosie się czasami robi rożne operacje. W przypadku...
nie, to nie jest zadanie domowe. Robię to z własnej woli. Tak, próbowałam coś w tej kwestii zrobić - inaczej nie pisałabym na forum. Kierowałem się konkretnie tym: Od niedawna na zajęciach przerabiamy ATMega8. Pierwszy raz mam styczność z programowaniem niskopoziomowym i nie mam pojęcia jak rozwiązać konkretne zadanie Próby rozwiązania jednak na forum...
Ja bym się nie pchał w 8051 bo to zacofane układy. Powstał w 1980 roku. To że dużo osób na nim pisze, nie znaczy że jest dobrym wyjściem. Polecam AVRy, i nie tiny, bo on nic nie ma, tylko od razu ATMega8. Pisanie, że assembler jest trudny, świadczy o jego nieznajomości. Jest to język którego rozumie sam układ, więc musi być najprostszy. Składnia prosta,...
Nadszedł czas na assembler i przerabiając po kolei rozkazy jak na razie znalazłem 2 które działają dla mnie niejasno. 1.Jaki powinien być wynik tej operacji. ldi r24,$FE ldi r25,$03 adc r24,r25 W symulacji w Avr Studio otrzymuje wynik 01 ale przecież powinno być 02 ponieważ dodawana jest również flaga C(przepełnienie). Avr studio pokazuje że flaga C...
Witam. temat umiesciłem w dziale elektronika przemysłowa i energoelektronika ale widze ze chyba tutaj bedzie dla niego lepsze miejsce :) mam pytanie do fachowcow , ktorzy dośc głęboko siedza w programowaniu SIMATICów S7-300 i wyższych. poszukuje materiałow na temat formatu transmisji po profibusie. zapewne dane są tam podzielone na pakiety; pakiety...
Z tymi sterownikami nie maiłem do czynienia ale początek opisu wskazuje, że służą do obsługi code page - czyli zestawu znaków (np polskie litery) Co do programowania kontrolera przerwań to znalazłem taki papier: http://sirius.cs.put.poznan.pl/~inf94333... Trzeba pamiętać, że dostęp do rejestrów HW jest przez rozkazy assemblera in/out i nie jest...
Ściągnij notkę katalogową do rodziny ADSP-21xx. Jak nie znajdziesz, to tu masz kompletną :] Jest tam wsio o rozkazach.
Widziałem już tą stronę, mam pobrany turbo debbuger, tylko tam mogę przeanalizować gotowy już program. A mi bardziej chodzi o coś takiego: Jak będzie wyglądał stan rejestrów i flag po wykonaniu (początkowe rejestry jakieś mam podane): MOV [BP+A40h],AX I chciałbym sobie to wyliczyć na kartce oraz wprowadzić do tego debbugera, uruchomić i sprawdzić czy...
to czym się różnią eax od ebx??? Kolejnością wykonania z tago co mi wytłumaczyli więc wnioskuje że są dalsze litery alfabetu między e i x ale chyba jestem w błędzie No i są, ale rejestrów jest tylko 4 ;) Do tego EAX od EBX różnią się optymalnością rozkazów, niektóre rozkazy specjalnie traktują niektóre rejestry.
Musisz wygenerować rozkaz assemblera WDR, czyli ten sam co w innych AVRach. W AVR-libc jest to wdt_reset(). W Codevision poszukaj w helpie.
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?
w którym miejscu ma to być dopisane? wydaje mi się, że nie ma takego rozkazu
Nie bardzo rozumiem twój problem. Nie możesz po prostu użyć rozkazu: BST Albo zamaskować nieużywane bity za pomocą np. ORI , ANDI
No to trzeba zajrzeć do ksiażki, te programu są tak krótkie że zajmują zaledwie kilka instrukcji, do tego wykorzystują całkiem elementarne możliwości niektórych rozkazów.
Witam Jak wiesz już do czego służy podprogram wait_key to teraz popatrz na rozkaz assemblera cjne (kolega romsik chyba Ci to już napisał) Pozdrawiam
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...
W dokumentacji jest lista rozkazów i rejestrów z której można korzystać. Ten dokument raczej cały czas ci będzie potrzebny.
O zgrozo. A myślałem że kompilator jest dla mnie a nie ja dla kompilatora. No i właśnie tak jest - kompilator jest dla Ciebie. Ty każesz mu skompilować błędny (nie w sensie składniowym) program, a on to robi, choć program nie działa (; Zresztą jak widać po kodzie nawet w tym przypadku jego działanie jest niechlujne. Tak, strasznie... Biorąc pod uwagę...
Na 98% programujecie mikrokontrolery z tzw. rodziny '51, an 100% w ich języku maszynowym, tzw. assemblerze. Jest to najbardziej skomplikowany język, ale też daje najwięcej możliwości. Złe wieści: język którego się uczysz jest możliwy do stosowania tylko w mikrokontrolerach z tej rodziny (czyli '51), np. w popularnych AVR będzie już inny (inne rozkazy...
Widziałem gdzieś tam (chyba w bibliotece peryferyjnej STM32 albo w CMSIS dla STM32), no ale co z nimi? Mój startup robi z grubsza to samo, dodatkowo korzysta z dwóch stosów i jest krótszy (tego typu pętle, nie wiedzieć czemu, zawsze kompilują się do wieeeeeeeelu rozkazów assemblera, choć wystarczy te kilka które jest u mnie). 4\/3!!
Witam Chciałem się dowiedzieć jaki jest rozkaz w assemblerze AVR do attiny2313, żeby podzielić 2 liczby przez siebie? I czy można rejestry czy trzeba a i b? Wiem, że jest rozkaz DIV, ale do AVR nigdzie go nie widziałem. Z góry dziękuję za odpowiedź :) Pozdrawiam
Żeby nie narzekać na asemblera ;), muszę uświeadomić : Nowoczesne asemblery są bardziej zaawansowane, przy zachowaniu możliwości pisania poszczególnych rozkazów procesora. Oto przykład "Hello Word" w Flat Assembler : include '%fasminc%/win32axp.inc' .code start: invoke MessageBox, 0, 'Hello World!!!', 'Welcome Window', MB_OK OR MB_ICONINFORMATION...
Ok ,a czy nie da sie odrazu zapisac sprawdzania przycisku pomijajac zaladowanie stanu portu do akumulatora ?? np : sprawdz: // petla sprawdania przyciskow P0-P7 jnb P2.0,wys0 // jesli P2.0 jest 0 skok do wysw0 jnb P2.1,wys1 jnb P2.2,wys2 . . . itd (...) Można sprawdzać stan linii portu 2 w ten sposób, nie trzeba wykorzystywać akumulatora. mov acc,...
powiedz czy działa... Jak masz jakieś gg to zagadaj ;) Masz tu ciągle trzy niewiadome: 1. Czy wyświetlacz jest dobry? 2. Czy jest dobrze podłączony? 3. Czy go dobrze oprogramowałeś? Naprawdę, radzę użyć jakikolwiek kompilator języka wysokiego poziomu do AVR z wbudowaną w program obsługą LCD. W AVRStudio można potem podglądać rozkazy Assemblera i przyglądać...
Tak, takim rozkazem jest w assemblerze AND, w C operator &.
Każda rodzina procesorów ma inny kompilator ASM ponieważ w każdej rodzinie występują różne instrukcje. Np. dla AVR jest to AVRStudio. Jeżeli zależy Ci na uniwersalności to polecam C, albo łatwiejszy Basic (kompilator dostępny dla AVR, '51 (Bascom) i PIC ). Pamiętaj tylko że assembler to język niskiego poziomu operujący na rozkazach masynowych procesora...
A powiedzcie mi, na te lata a'la "makra assemblera" sie wplata w tę sama dokumentację rzeczywistych rozkazów maszynowych, to jest OK ? ???
Jeśli dla ciebie "kom ę dy" ( komendy ) czyli rozkazy procesora wyglądają jednakowo, to nie rozumiesz asemblera. Moga wyglądać podobnie, ale odpowiednie ich zestawienie ze sobą i odpowiednia kolejność dopiero powodują, że procesor robi dokładnie to co powinien. Jeśli tak naprawdę chcesz poznać asembler, to powinieneś się przyzwyczaić, ze tu nie bedzie...
Tyle że cbi i sbi to rozkazy w assemblerze które zajmują 2 bajty i wykonają się w jednym cyklu, a np. kod: ADCSR = ADCSR | (1<<ADSC) Niekoniecznie. Ale zależy to jeszcze od inteligencji kompilatora.
Na pewno masz: http://obrazki.elektroda.pl/3055062900_1... Wychodziłoby tutaj, że jedna linia Twojego kodu zajmuje mniej niż 2 bajty, więc w przypadku ARM Cortex jedna linia kodu przekłada się na mniej niż jeden rozkaz assemblera. Przyznasz że jest to dosyć dziwne... Też jestem w stanie absolutnego podziwu. Taki projekt (18.000l) i 32k....
Nie podałeś w jakim środowisku będzie uruchamiany kod ale AD1: Diody zapalą się jeżeli w układzie docelowym stan '1' zapala diodę. Po instrukcji jmp nie dajemy przecinka, przecinek występuje tylko jeżeli rozdzielamy parametry rozkazu. Chyba że jest to specyfika używanego assemblera. AD2: Dobrze byłoby nazwać jakoś to makro, słowo 'nazwa' może być mylące....
Tu: TIMSK |= _BV(TOIE0); włączasz przerwanie. Tylko gdzie to przerwanie niby jest? Nie ma przerwania, więc wektor będzie wskazywał na "uniwersalny łapacz nieistniejących przerwań", który resetuje układ. Pozatym TCCR0=0x03; //pres TCCR0|=_BV(WGM00); TCCR0|=_BV(WGM01); //Fast PWM TCCR0|=_BV(COM01); TCCR0&=~_BV(COM00); //Fast...
równie dobrze możesz w bascomie wkleić rozkazy assemblera, ale na początku dopisz $asm a na końcu $end asm, reszta należy już do kompilatora. Jeśli wyskoczy Ci jakiś błąd, to na 90% będzie dotyczył etykiet (czyli nazwy części programu np. loop: albo koniec: albo start:) po takiej etykiecie może być tylko dwukropek, następny rozkaz asemblera powinien...
Bo Const to stała a Ty potrzebujesz czegoś jak DB albo PROGMEM. Czyli danych umieszczonych w pamięci. A stała niekoniecznie będzie tam umieszczona. Stała może być np. wbudowana w rozkaz assemblera (akurat nie tutaj ale inaczej to może być). Zrób raczej tak: Dim Atmega As String Dim Attiny As String Atmega = "Atmega" Attiny = "Attiny"...
Mozesz powiedziec jaki jezyk cie interesuje?? Chodzi mi o Assemblera i tylko i wyłącznie o assemblera. Jest to rozkaz procesora. Ten rozkaz jest obecny od Pentium w góre.
Pojedyncza instrukcja w kodzie maszynowym to nie pojedyncza linijka kodu assemblera, Przeciwnie. Pojedyncza instrukcja w kodzie maszynowym oczywiście odpowiada linijce kodu assemblera. Tylko dwie różne instrukcje (rozkazy) nie muszą trwać tyle samo. Do tego ciąg rozkazów wykonywanych po sobie nie musi trwać tyle ile suma czasu wszystkich rozkazów....
rozkazy komputerowe rozkazy operowania rozkazy atmega8
dodge światła lm317 regulator wentylatora wymiana marvell
problemy diagbox reset pieca buderus
Brother DCP-9020CDW – reset komunikatu pojemnika na zużyty toner WT-220CL HATO 70 – napęd zapomina krańcówki, brama otwiera się tylko w górę, przyczyny i diagnostyka