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...
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,...
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...
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...
... 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...
: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...
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...
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...
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...
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...
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,...
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,...
A powiedzcie mi, na te lata a'la "makra assemblera" sie wplata w tę sama dokumentację rzeczywistych rozkazów maszynowych, to jest OK ? ???
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...
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...
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....
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.
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"...
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....
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.
0xGH już wogóle wygląda...innowacyjnie :P Te dwa rejestry co wymieniłeś to nie są komórki pamięci. Rejestry które deklarujesz w plikach nagłówkowych to są już *(adresy w pamięci) , dlatego jest mozliwość postawić tam wskaźnik. A da się postawić wskaznik na np. R2? Spróbuj...;] Procesor ma rejestry robocze , nie wmapowane w pamięć, na których wykonuje...
w tym wypadku oznacza adres pod którym znajduje się rozkaz. Zatem DJNZ R2,$ powoduje powtarzanie tego rozkazu aż R2 się nie wyzeruje.
O ile pamiętam pobieranie z pamięci działa z rejestrem segmentowym DS ... O ile jest, w temacie piszesz o zwykłym 8086. Zgadza się. Opcjonalnie można od tego odchodzić dając przed rozkazem prefix wskazujący na inny rejestr segmentowy. Skutkuje na jeden raz i następne rozkazy danych znów są względem DS
...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...
Taki program mógłby wyglądać tak: Mnożna: rejestr E Mnożnik: rejestr A Wynik: rejestr HL LD HL,0000 ;inicjacja wyniku LD B,08 ;licznik pętli LD D,00 ;zerowanie bardziej znaczącego bajtu DE NXBIT ADD HL,HL ;przesunięcie wyniku w lewo RLA ;sprawdzenie cyfry monożnika JR NC, FIN ;opuszczenie zera ADD HL,DE ;dodanie mnoznej FIN DJNZ NXBIT ;powrót do początku...
sam program w asm trudny nie jest wlasnie chodzi mi o samo odwolanie sie do portu lpt hmmm moglbys podlinkowac tamto zrodelko w c++?? moze uda mi sie wydobyc z niego odpowiednie rozkazy w asm do obslugi tego potu
A listę rozkazów kolega ma?
są komendy takie jak FMUL i FMULS ale kompletnie nie wiem jak ich używać, chociaż to jeszcze-bo mam ze dwa przykłady, ale jak odczytywać to nie mam pojęcia. według książki w tych komendach liczby są traktowane jako dziesietne z przecinkiem miedzy 7 i 6 bitem, ale co to znaczy tego już nie piszą (bo niby 00000010 to oznacza 0,2? czy cos innego i wtedy...
Tzw "dziwne mnemoniki" nabierają głębszego znaczenia i łatwiej wchodzą w pamięć, jeżeli rozwinąć skróty, z których są utworzone. Są to po prostu akronimy angielskich oznaczeń na działanie danego rozkazu.
Od bajtu CB zaczynają się wszystkie rozkazy Z-80 dotyczące operacji na bitach: ustawianie (SET), zerowanie (RES), testowanie (BIT) oraz przesywanie bitów (RR,RL,SR,SL i pochodne). Bajt DD dotyczy operacji na rejestrach IX, a FD na rejestrach IY. Stąd operacje na bitach rejestrów IX rozpoczynają się od DD CB, a na bitach rejestrów IY rozpoczynają się...
Wykonują się 3 kolejne pętle łącznie nieprecyzyjnie licząc to <100*80*80 * czas trwania rozkazu DJNZ> Dodano po 36 Jeśli koniecznie chcesz precyzyjnie licząc to: http://obrazki.elektroda.pl/6072410900_1... t_MOV - czas trwania rozkazu MOV t_RET - czas trwania rozkazu RET t_CALL - czas trwania rozkazu CALL t_DJNZ - czas trwania...
At90S2313 to procesor 8-bitowy wiec wszystkie rejestry (oprócz licznika rozkazów i jeszcze jakiegos ktorego niepamietam) są 8 bitowe, równiez organizacja pamieci danych jest 8-bitowa więc jesli chcesz posługiwac się słowem 16-bitowym to musisz go sobie podzielić na dwie częsci i przechowywać w oddzielnych rejestrach ( lub komorkach pamięci Sram) .
Programów za ciebie nie napiszę ale dam podpowiedzi :) Załączam liste rozkazów dla 8051 (jakbyś jej jeszcze nie miał) są tam opisane cykle, ilość bajtów, składnia, argumenty itp, skorzystaj z niej i spróbuj sam rozwiązać problem :) Ad1 wykorzystaj rozkazy CPL, NOP oraz SJMP Ad2 tu nie jest sprecyzowane czy dioda ma przesuwać się cały czas w jedną stronę...
Jeśli masz do dyspozycji tylko ALU (na to wskazuje spis rozkazów) to po prostu musisz symulować działania na liczbie zmiennoprzecinkowej.
Nawet gdyby same porty GPIO się wyrobiły, to nie wyrobi się cała reszta. Skoro chcesz wykonywać odczyt z częstotliwością 40MHz, to masz mniej więcej 4 takty zegara na wykonanie wszystkiego. W super-extremalnym przypadku pętla która by to realizowała ma 4 rozkazy assemblera: 1. odczyt GPIO do rejestru 2. zapis z rejestru do RAM z postinkrementacją wskaźnika...
A jakim rozkazem kończysz tą procedurę ?
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...
Nie jesteś na dobrej drodze. Zrób sobie przykład na piechotę (na papierze) i jak się wynik zgodzi to ubierz to w rozkazy. Na razie nie widze algorytmu który chcesz zastosowac do mnożenia. I jeśli będziesz umieszczał program do analizy na forum, to bardzo dokładnie opisz każdy rozkaz do czego służy (co robi)
(at)foofoo Ja też w tym roku przesiadłem się z PIC16C84 na AT90S2313. W pierwszej chwili to miałem mętlik w głowie. PIC-e miały bardzo prostą listę rozkazów i assembler był rozbrajająco prosty. Tylko dwa mnemoniki skoków warunkowych - btfsc i btfss . W AVR-ach jest tych skoków zatrzęsienie. Bez spisu wszystkich rozkazów nie siadam do pisania. W assemblerze...
No moze i tak. Więc wiecie jak to zrobić? Dajcie adres jak da sie w assemblerze za pomocą rozkazu Out. A jak nie to powiedzcie jak. Plis!!! Bo będe płakał :cry: :P
czytaj bootstrap z 5 urz. w kanale 24(*30) , a więc np. z 5 dysku. Program ładujący można uruchamiać z dowolnego urządzenia, pod warunkiem iż był on tam uprzednio zapisany. W przypadku dysków MFM, podział powierzchni dyskowej zależał od firmy montującej te urz. w Odrze. Ja miałem emulację 8 dysków po 8Mb. Na jednym z dysków zainstalowałem bibliotekę...
Języków programowania jest cała masa i mają różne przeznaczenie. Najbardziej podstawowym jest język maszynowy, czyli język konkretnego procesora, przystępną dla człowieka formą reprezentacji tego języka jest assembler, dalej operuje się bezpośrednio na rozkazach procesora ale zamiast ich kodów binarnych można się posługiwać wygodniejszymi mnemonikami,...
Byłoby miło, ale w GCC (zarówno na AVR jak i ARM) mają porąbany sposób pisania wstawek asm. Jak na razie najbardziej podobało mi się rozwiązanie z SDCC, czyli: _asm ... //tu rozkazy asemblera ... _endasm; i tyle :]
A co tu rozumieć? Masz opisane dokładnie co robi każdy rozkaz... Wiec w czym problem?
zapewne odnosisz sie do assemblera. rozkazy bazowe sa to podstawowe operacje, ktore procesor potrafi wykonac. rozkazy emulowane to swoiste makra - uzywane tak czesto, ze wszyte w procesor. dla przykladu - (abstrahujac od konkretnego procesora) masz operacje wyczyszczenia pewnego rejestru X - CLR X. w istocie procesor realizuje ja jako MOV #0,X - CLR...
Witam! Jeśli już piszesz w kodzie maszynowym, to tak dla formalności przypominam, że przy skokach względnych adres docelowy jest obliczany z uwzględnieniem bieżącego stanu licznika rozkazów czyli adres rozkazu skoku względnego plus 2. Pozdrawiam KG
przeczytaj to: http://www.cilinder.be/docs/next/NeXTSte... i wiele innych.
Piszę to w assemblerze, mam urządzenie do którego wpisuję rozkazy w postaci 0-1 (8-bitowe).I potrzebuję właśnie programu do sortowania liczb(zapisane są w rejestrach) zapisanego jak rozkazy typu MOV itd.
Ja też taki byłem, do czasu jak zacząłem mierzyć prędkość "obrotu" pętli głównej - wyraźnie widać, że im więcej się tam dokłada, tym wolniej się ona kręci. Jak miałem tylko 8 maszyn stanów to czas obrotu wynosił średnio ok 3us, jak dodałem następne cztery to już wynosi 5-6 us (at) 168MHz F4. W assemblerze to było o tyle optymalne, że do licznika rozkazów...
Witam. :) Chciałbym mierzyć temperaturę przy pomocy Procesora 8051 ( AT89S52) przy współpracy z czujnikiem DS18B20 . Mam w miarę opanowanego Assemblera do tego procesora. Chciałbym prosić was o pomoc, ponieważ nie wiem w jaki sposób odczytywać temperaturę z tego układu. On ma trzy nóżki Vcc Gnd i wyjście na komunikacje. Ale nie wiem w jaki sposób ten...
Witam Uczę się Assemblera i rozkazów dla procesora 8086. Trochę zatrzymałem się na push i pop. Jeżeli wrzucam zawartość AX na stos, to muszę wyznaczyć adres fizyczny ( czyli [SS:SP] = BX) Załóżmy, że teraz chciałbym zawartość z [SS:SP] przenieść do BX, ale nie korzystając z pop tylko z mov. Niestety MOV [SS:SP], AX nie przejdzie, bo wywala błąd. Czy...
jakby było tak łatwo to bym nie pytał :) niestety w atmedze 16 niema rozkazu xor...
:oops: Poprawiłem mój fatalny błąd (brak zwiększania zawartości r0)! Zmiana polega na tym, ze tylko raz ładujesz wartość do R0, i uniknąłem rozkazu SJMP ENDTI - chodzi o czytelniejszy zapis programu. Trochę piszesz niezrozumiale. Nadal niewiem, czy pisząc o diodach masz na myśli sąsiedni wyświetlacz? I co znaczy, że można (diody?) podłączyć do P1, które...
OK, dziękuję. NIe wiedziałem czy ROR jest też rozkazem dozwolonym dla mikrokontrolerów ARM
IloscRamu dd 0 . . . mov IloscRamu, eax Tak zapiszesz do zmiennej. Co do pytania o sprawdzenie ilości ramu chyba był specjalny rozkaz do odczytywania konfiguracji sprzętowej. ALe głowy nie dam. Chyba, żeby się dało jakoś odwołać do biosu. [EDIT] http://www.osdev.org/osfaq2/index.php/Ho... Tutaj jest cały...
Mi jednak zależy na assemblerze jeśli był byś tak uprzejmy i naprowadził mnie na trop był bym naprawdę wdzięczny. W google znalazłem jedynie informacje o assemblerze na PC (jak pisałem powyżej) gdzie wykorzystywany jest rozkaz cosine nie istniejący w "instructions set summary" z datasheet.
Tak, bo rzeczywiście do nauki assemblera jest jak znalazł. Zestaw rozkazów '51 jest stosunkowo łatwy do opanowania i dość łatwo się w nim programuje. AVRy są stworzone z myślą o programowaniu ich w C... DSM-51 służy do nauki programowania w assemblerze (poznania ogólnej idei programowania w tym "języku").
Dla początkujących z eZdsp: po wgraniu pliku .out ze skompilowanym programem, trzeba nacisnąć ikonkę "Run", z symbolem biegacza (albo w menu odpowiednią pozycję). Mając JTAG można też wykonywać program krokowo, na dwa sposoby. Można iść po krokach instrukcji programu w C, albo po krokach assemblera, odpowiednie rozkazy wyświetlą się wtedy pod każdą...
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? ale przecie on tak wiele ukrywa, nauczy się kto asemblera i nie będzie miał pojęcia o budowie (nie liście) rozkazów mikroprocesora, jak cudownie kształtuje cierpliwość i staranność, Panowi tylko kod maszynowy i ósemkowe kodowanie.
" MAm,y ksiazke z rozkazami " Domyślam się że chodzi o assembler. Jeśli ("..niewiemy..") jeśli niewiecie jak napisac program to radze zacząć od Bascom 8051 (w google znalazłem: http://www.umax.prv.pl/ dział Bascom8051)
To jak napisano pierwszy program który mógł obsługiwać klawiaturę, dysk ekran pamieć itd. ? Najpierw napisano projekt (długopisem) na papierze. Potem zakodowano (ręcznie! na szczęście procesory miały prostsze rozkazy, niż jakiś Pentium) i wydziurkowano na kartach, albo na taśmie papierowej - i trzeba było tak wydziurkować jakiś działający system (nie...
1. Ogólnie liczysz dobrze, ale procesor nie wyrobi się w 160-ciu cyklach (a dokłądniej mówiąc to liczysz trochę źle bo własnie nie uwzględniasz czasu potrzebnego na obsługę przerwania). Nie uzyskasz czasu 10us, nawet dla kwarca 16MHz. Musiał byś to napisać w assemblerze i użyć dyrektywy Nosave. 2. Nie. Jeżeli coś zadeklarujesz w programie to ta rzecz...
Troche poprawilem, nie wiem tylko czy jesli jest: 1)przerwanie: . . . LJMP gdziestam RETI Jeżeli takie coś wykonujesz to musisz to "gdziestam" zakończyć rozkazem RETI Lepiej to "gdziestam" wywołać LCALL ale to musisz pamiętać że musi się kończyć ta procedura rozkazem RET i wtedy będzie to OK!
51 to 51 i koniec :) Asembler jest taki sam (tzn. instrukcje dla procesora) Trzeba tylko uważać na to żeby wykorzystywać tylko te rejestry i adresowalny obszar pamięci jaki jest dostępny w danym typie uP. W AT89C2051 jest 2KB pamięci programu więc 16-bitowe rozkazy skoków tracą sens :), 128bajtów RAM powoduje że zapis lub odczyt z pamięci IDATA (np:mov...
ORG 100H to jest dyrektywa, że kod po niej ma się zaczynać się od tego nowego adresu, a nie rozkaz procesora... Myślę, że jak o pogooglasz pod hasłem "assembler directives", to się trochę rozjaśni... EDIT: Pogłębiłem i rozjaśniłem wypowiedź...
Po co komuś wpychać na siłę coś o co w ogóle nie prosi? Jak ktoś będzie chciał naprawić silnik w samochodzie przy pomocy młotka i dłutka to rozumiem że udzielisz mu informacji o tym jak to zrobić, bo przecież nie pytał się o żadne profesjonalne metody regeneracji swojego bolidu, a może akurat masz do czynienia z "sześćdziesięciolatkiem"? Każdy ma swój...
To i ja coś dorzucę od siebie :D Na początku znajomości z assemblerem AVR , miałem kłopoty z sbi,cbi,in,out więc się wkurzyłem i wyszło mi takie coś ;) .macro setb .if (at)0>RAMEND || (at)1>7 .error "parameter(s) out of range" .elif (at)0 < 0x20 sbi (at)0,(at)1 .elif (at)0>0x1F && (at)0<0x40 in r16,(at)0 ori...
W trybie 16 bit/DOS rozkazy typu jc mają bardziej ograniczony zasięg skoku niiż w 32bit. Masz w domu słownik ang/pl do tłumaczenia błędów w kompilacji ? Dlaczego naiwnie uważasz, że gdy wyłaczysz wyświetlanie błędów, to będzie OK ? ;) zastąp jc blad konstrukcją jnc skip jmp blad skip: ...
Ja proponowałbym rozpocząć przygodę z mikroprocesorem jednak od assemblera. Poznanie listy rozkazów, pisanie na początek prostych programów i śledzenie wykonywanych instrukcji w symulatorze pozwoli zrozumieć co i jak. Zaczynanie od Bascoma często kończy się pozostaniem przy nim. Co z tego ,że program działa ,skoro nie wiemy dlaczego? Pozdrawiam Kuba
rozkazy komputerowe rozkazy operowania assembler darmowy assembler
przeniesienie licznik elektryczny kluczyk passat zaprogramować zasilanie wycieraczki
condor schemat sterowanie triakiem
Modem wewnętrzny: wyświetlanie SMS - konfiguracja i komendy AT Jak kabel UPC wchodzi do słupka UPC?