Nie. Wszystkie $include mam na samym początku pliku "głównego" - tak jak się to robi np. dołączając pliki nagłówkowe w języku C. Teraz wyjeżdżam, ale jak wrócę to spróbuję powstawiać je w odpowiednie miejsca. Niesądzę jednak, aby to pomogło - pliki te zawierają procedury oraz deklaracje zmiennych w pamięci RAM i Flash, zawsze są poprzedzone odpowiednio...
Witam ! Czy ktoś może mi pomóc w objaśnieniu instrukcji (stos, stos b, stos d, stos w ) w asemblerze ? Muszę napisać mały referat na ten temat , a nie mogę niczego znaleźć. Z góry dziękuję za pomoc Dodano po 1 chodzi o obsługę w/w instrukcji
Witam! Niejednokrotnie już korzystałem z usług tego forum lecz pierwszy raz zdecydowałem się założyć własny temat (po prostu nie znalazłem odpowiedzi na nurtujące mnie pytania w tematach już istniejących). Otóż mam następujące pytania: 1) Jak można inaczej zapisać instrukcje PUSH i POP w asemblerze nie używając tychże instrukcji? Do dyspozycji mam rejestry:...
Witam. Chciałbym prosić o spojrzenie na temat, odczytuję dane z tablicy umieszczonej w pamięci programu i nie działa to poprawnie. Procek AVR, ATtiny, piszę w ASM w AVR Studio. Zadeklarowałem tablicę: .CSEG Moja_tabliczka: .db tutaj mam ok. 20 wartości (war1, war2,...,0) Deklaruję według dokumentacji do AVR, czyli: ldi ZH,high(tablica) ldi ZL,low(tablica)...
Czesc Wiem że instrukcja adc dodaje do siebie pare rejestrów ale o co chodzi z tym przeniesieniem bo nie mogę tego rozkminić.
Jakie instrukcje należy wypisać aby wyświetlić na wyświetlaczu LCD cyfrę zero. Wyświetlacz ma dwa wiersze po 16 znaków każdy cyfra ma być wyświetlona na górze wyświetlacza LCD mikrokontroler 8051/2 Asembler
Witam, Piszę program w C, w środowisku WinAVR i powstała potrzeba użycia wstawki asemblerowej. Wiem, jak zrobić taką wstawkę z jedną instrukcją, np. nop: __asm("nop"); Jednak nie działa mi to, gdy chcę wstawić w ten sposób całą procedurę (kilkadziesiąt linii) w asemblerze. Z góry dziekuję za pomoc Bartek
Witam! Od kilku dni uczę się asemblera. Chciałem napisać bibliotekę DLL w asemblerze, która zamienia małe literki na duże, w podanym w argumencie łańcuchu(w ramach nauki). Funkcja biblioteczna otrzymuje w argumencie wskaźnik na łańcuch(char *). Odczyt poszczególnych znaków działa, problem występuje natomiast w momencie gdy chcę coś zapisać pod adresem...
Wlasnie .spi, .srt itp nie znalazlem w spisie dyrektyw w ksiazce, ale jeszcze poszukam dokladniej. Ale mam jeszcze takie troche inne pytanko... czym sie roznia etykiety z kropka przed i te bez kropki? Np: .main jakies instrukcje.... main0 jakies inne instrukcje... jramain0 bo mniej wiecej tak intuicyjnie to czuje ze te bez kropek moga byc zawarte w...
Witam ... Prosze o krotki opis USB tzn. numer portu jaki jest przypisany do tego "zlacza" i czy jest mozliwosc sterowania tym portem chocby przy pomocy instrukcji asemblerowych jak in i out . Dziekuje .
Witam mam taki chyba łatwy programik w asemblerze na dsm51 i musze zrobic do niego algorytm ale nie mam pojecia jak. Jak ktos wie co z tym zrobic i mi powie to byłbym bardzo wdzieczny. oto program: WY—WIETLACZ ALFANUMERYCZNY LCD - ANIMACJA (dla dsm 51 !!!) ;***************************************... LJMP START ORG 100H START: MOV R0,#LCDWC...
Czy programowanie w tym języku dla ARM jest podobne do AVR ??? Są duże różnice - mamy podział na dwa tryby wykonywania instrukcji Thumb i ARM. Oprócz tego w trybie ARM mamy do czynienia z wykonywaniem instrukcji warunkowo czego w AVR-ach nie uświadczysz. Pamiętaj także że ARM7tdmi to jest rdzeń 32 bitowy więc dochodzi ci dodatkowo coś takiego jak wyrównanie....
Witam, mam na zaliczenie z pracowni napisać taki program: na wyświetlaczu LCD w Dsm-51 w pierwszej lini ma być moje imie i nazwisko a w lini pod spodem imie i nazwisko kolegi z tym ze ma zawierac polskie znaki.z tym sobie umię poradzić. problem jest w tym ze po naciśnięciu klawisza ENTER na klawiaturze matrycowej imiona i nazwiska mają się zamienić...
Super, że napisałeś o jaki procesor chodzi... Sądząc z instrukcji o '51. mov to instrukcja przeniesieania wartości z/do pamięci wewnętrnej/rejestrów uC, movx to instrukcja dostępu do zewnętrznej pamięci danych (fizycznie inny układ scalony niż uC), DPTR to 16 bitowy rejestr używany generalnie przy adresowaniu komórek pamięci zewnętrznej, choć można...
• XOR AX, AX zerowanie rejestru AX(dla takich samych wartosci wynikiem xora jest 0) • MOV AL, '6' wpisujesz do AL wartosc kodu ASCII jaka ma 6 czyli 0x36 • ADD AL, '7' dodajesz 0x37(wartosc 7) do AL • AAA ; AX:=0103H nie mam pojecia ;) ale znalazlem cos takiego Instrukcja AAA rozdziela liczbę dwójkową w AX nie większą niż 18...
CPI r24, 4BRSH wylacz_usypianie...wylacz_usypianie:CLI.... Kod: avrasm ] CPI r24, 4BRSH wylacz_usypianie...wylacz_usypianie:CLI.... Powiem szczerze, że nie bardzo rozumiem. Obecny kod wygląda w ten sposób: [syntax=c]/* * main.c * * Created: 2/14/2022 1:11:10 PM * Author: Maciej */ #include <xc.h> #include <avr/wdt.h> #include <avr/interrupt.h>...
Ma oznaczenie, ale po tym oznaczenia nie znalazłem producenta, ani żadnej instrukcji lub sterowników. A długo szukałem,bez rezultatu, dlatego postanowiłem ją rozgryść ręcznie. Karta jest zodzysku. Pisze na niej tylko: Relais I/O 60003.00392-43/96
Witam wszystkich Otóż jak nie trudno się domyśleć mam taki mały problem z programem Dev-c++. Otóż chciałby sobie zrobić wstawki asemblerowe. Ze szukałem się trochę ale wreszcie odnalazłem jaką składnie trzeba użyć i etc. Sam kompilator niema żadnych zastrzeżeń co do kodu jednak gdy po skompilowaniu uruchomię gotowy produkt, nagle windows wywala mi że...
no przeciez powyzej masz przyklad obliczenia ile to zajmuje. trzeba policzyc ile cykli procesora zajmuje jeden obrot petli, policzyc ile czasu zajmuje jeden cykl procesora i maz odpowiedz. mozna tez uzyc wbudowanego w kazde sensowne srodowisko programistyczne tak zwanego zegarka 'stopwatch' lub licznika cykli procesora na dane instrukcje. pozatym w...
Masz jeszcze kilka rozwiązań. Skoro to całe funkcje, to możesz je przenieść do osobnego pliku z rozszerzeniem .S - plik asemblera, który przed asemblacją zostanie przetworzony przez preprocesor - możesz tam normalnie używać #define, #include itd. Oczywiście musisz się stosować do konwencji przekazywania parametrów/zachowywania rejestrów. Jeśli chodzi...
Cześć Proponuję poczytać o adresowaniu bitowym. Wszystko się rozjaśni. Krótko mówiąc te instrukcje SETB i CLR zmieniają stan linii 1 na porcie 5 w celu wygenerowania opadającego zbocza na wejściu CLK układu 574. powodzenia
Składnia jest praktycznie taka sama jeśli chodzi o instrukcje procesora. Inne mogą być np. dyrektywy/odwołania do plików nagłówkowych, ale to już niewiele roboty i można "ręcznie".
myślę że to wszystko wyjaśni Super opis naprawde wielkie dzieki!!! Mam tylko pytanie (moze niedoczytalem bo pozna godzina...): T0 ma wiekszy priorytet niz T1. Jezeli realizujemy przerwanie z T0 to wiem ze przerwanie z T1 zostanie zrealizowane po nim, ale czy w instrukcji przerwania T0 moge wpisac zeby sprawdzal czy T1 sie przepelnil? Innymi slowy:...
Witam. Asembler to język programowania tzw. niskiego poziomu. W uproszczeniu jedna instrukcja w asemblerze przekłada się na jeden rozkaz wykonywany przez procesor. Daje to najpełniejszy dostęp do możliwości oferowanych przez sprzęt, ale jednocześnie silnie wiąże ten język z konkretnym procesorem. Innymi słowy, każdy procesor (a w zasadzie rodzina) ma...
Witam, Wlasnie niedawno mialem "przyjemnosc" sprobowania programować mikrokontroler (projekt...). Niestety przy próbie uruchomienia kodu, który wyświetałby cokolwiek pożytecznego na LCD zakończyły się porażką pomimo spisania kodu (prawie żywcem z książki Kościelnika "Mikrokontrolery Nitron" i niestety nie wiem jak mogę go poprawić. Programuje MC68HC908...
Przede wszystskim trzeba wiedzieć co to za procesor. Domyślam się że 8-bit - więc nie ma instrukcji do dzielenia 16-bit (pomijam jakieś 'super-wynalazki' z układem arytmetyki zmiennoprzecinkowej itp.) Trzeba napisać lub poznać podprogram który dzieli liczby 16 bitowe i według tego się kierować.
Programowania orientowanego obiektowo - podobno - bardzo ciężko jest się nauczyć samemu. Wszyscy guru zalecają przede wszystkim znalezienie sobie mentora - kogoś, kto łagodnie wprowadzi w świat tego programowania. Z mojego doświadczenia wynika ponadto, że osobom, które programowały już proceduralnie, jest jeszcze ciężej. Bardzo ciężko jest wykorzenić...
Dobre pytanie, niestety jest tu potrzebna znajomość konkretnego modelu mikrokontrolera AVR, dla którego został wygenerowny plik HEX podczas kompilacji. Są jednak sytuacje, w których udaje się odczytać z mikrokontrolera zawartość wgranego kodu do pliku HEX, nawet gdy jest on zabezpieczony, a tym samym znamy wtedy jego model. Zdarzają się czasami też...
Po co w takim razie ten VHDL ? Istnieją jakieś funkcje tylko do symulacji i nijak się to ma do sprzętu, a przecież to język opisu sprzętu ... Czy oznacza to, że np instrukcja LOOP też jest niesyntezowalna ? Trochę się zawiodłem ... Czy faktycznie VHDL jest taki ważny i tak stosowany na świecie ? Jakoś nie widzę sensu uczenia się tego - więcej da chyba...
Szukam i nie moge znalezc. Ile cykli zegarowych przypada na dana instrukcje tego procesora. Oczywiscie chodzi mi o instrukcje asemblerowe. Dzieki za pomoc.
Cześć Przede wszystkim musze powiedzieć że nie znam sie ani odrobine na asemblerze . Mamy tu koder do 4kanałowego sterowania proporcjonalngo w asm'ie na attiny 15. teraz pytanie -czy da sie przerobić kod tak ,aby miał ich 7 lub 8kanałów i wrzucić go do Attiny 26 ?? I czy to koder PPM?? PS niestety nie przypomnę sobie strony z której wziąłem ten schemat...
A możesz to debugować pod visual studio? Wg mnie masz kilka możliwości dojścia o co chodzi. Od najprostszych: 1. Wczytanie się w dokumentację readline czy nie jest deprecated i z jakiej biblioteki pochodzi (co biblioteka to obyczaj) 2. Debugowanie kodu przed wysypaniem w trybie asemblera. Zobaczysz konkretną linię, która wysypuje program. 3. Jeśli nie...
Mam Atmega8A czy potrafisz przekształcić kod asemblera na język maszynowy i go wytłumaczyć? Oczywiście, chętnie pomogę Ci przekształcić kod asemblera na język maszynowy oraz wytłumaczę jego funkcjonowanie. Aby to zrobić, proszę podaj fragment kodu asemblera, który chciałbyś przekształcić i omówić. Upewnij się, że podany kod zawiera wszystkie potrzebne...
Dzięki za odzew. Mnie udało się uruchonić obydwa programy :) A macie może macie jakiś dobry kurs, gdzie dość jasno, a jednocześnie treściwie i bez lania wody opisane są poszczególne instrukcje.
Nie chodzi mi materiały, książki bo to juz mam. Ale potrzebne mi instrukcje do laboratorium do ćwiczeń. Takie ćwiczenia mam przygotować na zaliczenie :-) Kiedyś jak miałem laborki z programowania mikrokontrolerów to miałem takie instrukcje. Niestety to ich juz nie mam. Zresztą były one do nauki asemblera i na 8051. Teraz muszę napisać na C i na atmega128....
WITAM! Poniżej wkleję kod źródłowy mojego programu napisanego w asemblerze.Mam problem ponieważ zostałem zapytany przez wykładowcę gdzie w nim jest porównanie napięć na obu potencjometrach (bo dotyczy on potencjometru analogowego i cyfrowego i jeżeli przekroczy się tam jakąś wartość napięcia na cyfrowym to ma sie zapalać diodka).W załączniku dodam wszystkie...
Najprościej napisać nic nie wnoszącą odpowiedź jeśli się nie zna rozwiązania, racja :) ? Jeszcze prościej jest napisać, że odpowiedź nic nie wnosi i czekać na gotowca. Nie jestem asemblerowcem, ten język nie jest intuicyjny, jeśli się zajmuje już parę lat językiem wysokiego poziomu, to pisanie w asemblerze sprawia olbrzymie problemy. Ale wracając do...
Ja mam kompilator a51(kompiluje do pliku *.obj) oraz ohs51 do tworzenia hexów.Do symulacji używam m535demo.Wygląda jak m535 ale pracuje bez stanowiska mikroprocesorowego ESM-2.Możesz zczytywać zawatości wszystkich rejestrów sprawdzać ile cykli trwają poszczególne instrukcje.Jest również symulacja pamięci zewnętrznej.Może jutro wrzucę go na forum.
To mniejwięcej "brzmi" tak: ... ;r16-wejście ;r17-rezultat rol r16 ror r17 ;... ;powyższe 2 instrukcje , są "odpowiednikiem" 4 poniższych instr. 51-ki ;a-wejście ;b-rezultat rlc a xch a,b rrc a xch a,b ;... Poza tym , jeśli ktoś zna assemblera na procki X , to "przejście" na procki Y nie jest chyba trudne :?: Piotrek
nam pani na zajęciach podała tak: mov tmod, #00000001b mov th0, high(48578) mov tl0, low(48578) mov R0, #16 setb tr0 sek: jnb tf0, $ clr tf0 djnz r0, sek ; reszta instrukcji po opóźnieniu 1 sek tyle że program staje przy fragmencie sprawdzania czy nastapiło przeniesienie czyli przy JNB ;/
Problem jest chyba w instrukcji RLC. Otóż #170 to 10101010 więc najpierw masz C = 0 10101010 (zawartość akumulatora) -------------------- 01010100 (wynik w akumulatorze po pierwszym wykonaniu RLC) C = 1 -------------------- 10101001 (wynik w akumulatorze po drugim wykonaniu RLC) C = 0 Więc jak widzisz polecą co jakiś czas dwa zera pod rząd. Musisz najpierw...
kombinowalem nawet tak $asm mov b,#50 djnz b,$ $end Asm i nic nie pomoglo. Instrukcja Djnz istnieje w helpie. "skoki z wykorzystaniem offsetu Można określić o ile bajtów do przodu lub tyłu ma skoczyć program, bez używania etykiet. Jb P1.0 , *+12 ;skok do przodu Jb P1.0 , *-12 ;skok do tyłu Jnb P1.0 , *+0 ;pętla powtarzana dopóki P1.0 pozostanie ;w stanie...
Witam deal - 8051 w wersj normalnej wykonuje instrukcję djnz w 2 cyklach tylko szybkie kostki od dallasa robią to w 3 cyklach więc program będzie taki: mov a,#7 ;1 cykl djnz acc,$ ;14 cykli a żeby ręcznie wykorzystywać przerwania trzeba po prostu umieścić program asemblera w odpowiednim adresie i tak dla timera 1 jest to adres 01BH a dal timera 0 jest...
Tak wlasciwe wystarcza instrukcje transferow danych miedzy rejestrami, testowania i operacji bitowych oraz instrukcje skokow bezwzglednych i warunkowych. Do tego znajomosc rejestrow "mieszajacych" portami procesora i jestes w domu.
Czesc.Spotkalem sie z takim problemem.Programuje w C w WinAVR.Poniewaz aktualnie jestem zmuszony do uzycia wstawki asemblerowej w celu sprytnej modyfikacji stosu i podstawienia tam innego adresu powrotu niz ten ktory jest tam zapisany przegladam sobie kod asemblera aby sprawdzic dokladnie co kiedy sie dzieje oraz dokumentacje do asemblera i...niespodzianka.Konkretnie...
Często używam tej instrukcji w programach asemblerowych dla tego procka i nigdy nie zauważyłem nieprawidłowości w jej działaniu nawet przy współpracy z przerwaniami.
Do kompilacji pliku na hex uzywam ASEM-51 w wersji 1.2 oczywiście z odpowiednimi deklaracjami. Do tej pory nie miałem z nim problemów. Spróbuję czegoś innego bo jest trochę tego w sieci i o rezulatatach dam znać. Co do wymiany procka to nie wiem czy to coś pomoże bo jak w jednym miejscu programu uPC "rozumie" co ma zrobić a w drugiej nie to chyba jest...
proste instrukcje wykonują cię co jeden cykl zegarowy, ale ijstrukcje skoków i warunkowe juz 1,2 lub 3 cykle. zajżyj sobie do noty katalogowej twojego procka tam jest tabelka komend asemblerowych i jest też podane ilość cykli potrzebna do wykonania. najlepiej sprawdzić ile czasu potrzeba na wykonanie jakiejś pętli poprzez symulator zawarty w AVRStudio
Witam, cel pozostał ten sam, lecz zmienił się kod, tym razem bez Lcd, więc jako zadanie dostałem opisanie krok po kroku otrzymanego kodu oraz przeniesienie kodu z języka Bascom na kod Asemblera i C. Jako, że programowanie nie jest moją mocną stroną, prosiłbym o pomoc (rady, sugestie najlepiej w sposób tzw. łopatologiczny jak można osiągnąć postawiony...
Witam wszystkich, proszę o pomoc w rozwiązaniu problemu w kodzie w języku C ale ze wstawką asemblerową. Poniżej zamieszczam kod. [syntax=c]/* * main.c * * Created: 2/14/2022 1:11:10 PM * Author: Maciej */ #include <xc.h> #include <avr/wdt.h> #include <avr/interrupt.h> #include <util/delay.h> #define WDT_ENABLE ISR(WDT_vect)//przerwanie...
Witam mam pytanko raczej kilka. 1 . czy program napisany w asemblerze skompilowany do postaci hex,lub bin można wrzucić do wnętrza mikrokontrolera za pomocą pakietu bascom wykożystując programator z ep. avt 2502 czy jakoś tak procek to np. at89c2051 2. jeśli nie to pomużcie w znalezieniu takiego nażędzia(program i programator) 3 . jak działa emulator...
Zastanawiam się czy ktoś kiedyś popełnił już coś takiego. Wymyśłiłem sobie sterować czterokrotnym, siedmiosegmentowym wyświetlaczem. Nie interesują mnie gotowce (chcę po prostu sprawdzić czy dobrze kombinuję), zatem procedurę piszę od zera mając w zasadzie tylko pomysł w głowie. Uwidziałem sobie, że przeznaczę cztery komórki pamięci na każdą cyfrę(...
Poniewaz ATmega ma rozbudowane funkcje portow najpierw musisz ustawic kierunek portu czyli czy ma byc wejsciem czy wyjsciem. Do tego sluzy rejestr DDRx gdzie x okresla literke portu. W ATmega 8 do dyspozycji masz porty B,C,D przy czym tylko port D jest kompletny. Aby ustawic pin jako wyjscie musisz na odpowiednim bicie ustawic 1. Mozna to zrobic tak:...
Witam. Pewnie tematów z podobnymi prośbami było tu już mnóstwo. Niestety nie znalazłem odpowiedzi na nurtujące mnie pytanie. Napisałem taki króciutki programik w asm. .include "m8def.inc" .CSEG .org 0x0000 rjmp RESET .org 0x001C rjmp timer0 RESET: ;inicjowanie stosu ldi r16, LOW(RAMEND) out SPL, r16 ldi r16, HIGH(RAMEND) out SPH, r16 ;poczatkowe ustawienia...
Teraz już sprawy idą w lepszym kierunku. Problematyczny jest jeszcze sposób deklaracji zmiennych w programie. Proponuję pobrać z internetu dowolny assembler na 8051 (np. ASEM-51), wtedy wszystkie błędy składniowe można na bieżąco sprawdzać. Struktura programu (dowolnego) może wyglądać np. tak: - deklaracja zmiennych i stałych, - instrukcja skoku do...
Na pewno do zrozumienia asemblera potrzebna jest ogólna koncepcja programowania. Jak znasz już jakieś języki kompilowane do kodu maszynowego to będziesz mieć łatwiej. Przydatna jest znajomość systemów liczbowych (binarny, ósemkowy, szesnastkowy). Najważniejsza jest dokumentacja do danego procesora dla którego chcesz pisać program. Spis instrukcji, ich...
Najpierw zadaj sobie pytanie po co chcesz uczyć się asemblera? Bo o ile w przypadku AVR jeszcze jakiś sens tego jest, o tyle w przypadku ARM sensu to nie ma praktycznie żadnego. Oczywiście pisząc w języku wyższego poziomu warto mniej więcej orientować się w asemblerze, czasami się to przydaje, lecz uczenie się samego asemblera współcześnie jest lekko...
a co się dzieje wewnątrz mikrokontrolera? Opiszesz mi instrukcje Atmega8a wraz z tym jak to działa, co się dzieje z układem mikrokontrolera? Oczywiście! Omówię, jak działają poszczególne instrukcje Atmega8a w kontekście podanego kodu asemblera oraz jak wpływają one na funkcjonowanie mikrokontrolera. Kod asemblera: ``` sbi DDRC, 0 sbi PORTC, 0 sbi DDRB,...
Noooo, chyba nie jest aż tak źle z moim programem... :? ? Wysyłanie na port jest zrobione tak, jak zazwyczaj robi się to w programach dla wyświetlacza w trubie 4-bit - najpierw robię 'backup' zawartości ACC, później zeruję młodsze 4 bity, wyrzucam ACC na port, włączam RS (albo nie, w zależności czy to dane czy rozkaz), a następnie daję impuls na EN....
Dla jakiego procka jest assembler nie ma w zasadzie znaczenia. Ja ostanio mając podstawy (choć może całkiem niezłe) programowania 8086-80386 byłem w stanie spokojnie pisać programy dla AT90s2313 i któregoś 32-bitowego Hitachi. Proponuję naukę asma dla PC, a potem przeczytanie instrukcji. Mam jedną właśnie o at90s2313, ze stronki atmela sciagnieta, dokladny...
Witajcie! Czy ktos z Was programuje mikrokontrolery w języku asemblera uzywając do tego programu keil? Gdzie mogę znaleść instrukcje dotyczące ustawień programu do pisania w asemblerze? Pozdrawiam grzegorz. Przeniesiono z Programowanie Ogólne. - arnoldziq
jest to instrukcja PL do laboratorium. Zawiera ona programowanie wyswietlacza LCD, mnozenie liczb ktore w wyniku daja np 24 bitowa liczbe w kodzie bcd i wiele pozytecznych uwag przy programowaniu.Instrukcja w jezyku polskim.
Dzięki za wyjaśnienia zostańmy na chwile przy tym kawałku kodu : ; main loop ; ;r28,r29,r30 is the phase accumulator ; r24,r25,r26 is the adder value determining frequency ; ; add value to accumulator ;load byte from current table in ROM ;output byte to port ;repeat ; LOOP1: add r28,r24 ; 1 adc r29,r25 ; 1 adc r30,r26 ; 1 lpm ; 3 out PORTB,r0 ; 1 rjmpLOOP1...
Przez rejestr B sie nie da. Do pobierania danych z pamieci programu sluzy instrukcja MOVC A,(at)A+DPTR. Przyklad: MOV DPTR,#Tablica MOV A,#4 <-chcesz 4 element MOVC A,(at)A+DPTR <-Do A zaladuje 4 element z tablicy ... dalsze instrukcje na A Tablica: DB 1,2,3,4,5,6,7,8,9........... UPDATE: W przykladzie kolegi powyzej to to samo tylko ze marnowane...
ad. 2. W asmemblerze MC68k :], a co? jak dowolny, to dowolny :] (asm x86 nie znam za bardzo) Założenia: argument funkcji podawany jest przez stos (wskaźnik stosu - rejestr A7, stos rośnie w dół) Wartość (wskaźnik) zwracana jest w rejestrze D0. Reszta rejestrów pozostaje niezmieniona. Za obsługę stosu odpowiada funkcja wywołująca, więc po powrocie z...
Ale o co konkretnie Ci chodzi ?? Wogole nie wiesz co robia instrukcje czy jak ? Co do programu to jest malo przejrzyscie napisany. Jesli to jest kurs dla poczatkujacych to proponuje poszukac innego. Sam patrzac na to cos z poczatku zglupialem i musialem sie wgapic zeby zrozumiec o co chodzi. Do meritum: Na poczatku sa sa dwie dyrektywy org ktore mowia...
Witam !! Mam następujący problem. Wykonałem programator ISP na podstawie schematu STK200 z instrukcji BASOMA. I mam następujące pytania. Po pierwsze, czy będzie on prawidłowo działał z programem ispprog ?? U mnie zczytuje sygnaturę procesora i niby programuje procesor, weryfikacja Flasha też przebiega poprawnie, ale niestety procesor milczy. Kolejną...
...Niestety - przerwanie wywołuje się tylko pierwszy raz... :cry: Bo tak napisałem kod , że przerwanie samo siebie wyłacza , byś napewno widział , że zadziałało ;) Twoje instrukcje , poza włączaniem i wyłączaniem pullupów na PORTB , nic więcej nie robią .Ty pewnie chcesz pomrugać LED-ami na tym porcie ? Instrukcje ORI/ANDI , ustawiają/kasują bity.Jeśli...
ale możesz wykorzystywać wewnętrzne funkcje DSM51 czy masz wklepaś instrukce obsługi wyświetlacza komenda po komendzie? Jeśli to drugie to mogę pomóc ale musisz wypisać gdzie i jak jest podpięty konkretnie wyświetlacz i ile ma linii/znaków... Dodano po 6 masz gotowca: ;***************************************... ; WY—WIETLACZ ALFANUMERYCZNY...
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...
Witam. Mam taki o to problem. Mam projekt stopera na at89s8253 przy użyciu Timer T0. Przy inicjalizacji przerwania od T0 czas zaczyna być odmierzany.. Wszystko ładnie śmiga, ale niestety nagle czas się przestaje zmieniać ( na tej samej wartości ).. W przerwaniu nic nie zmieniam odnośnie ustawień T0 .. Przykładowy program przerwania: OBS_T0 INC R3 CJNE...
Sądząc z twojej chęci do myślenia i czytania to pewnie jeszcze trzeba by pójść i zaliczyć za ciebie ten projekt :( :( Algorytm był już podany w tym temacie (dla ułatwienia podam, że był zatytułowany algorytm 2. Rozpisz go sobie w formie jakiej od ciebie wymagają. Inne liczby wpisujesz do R0 przed wywołaniem konwersja. Błagam nie zostawaj serwisantem...
Witam! Rozumiem, że masz napisany w notatniku program w asemblerze procka 8051 i chcesz go skonwertować do postaci .BIN lub .HEX, aby uzyskac plik dla programatora pamięci równoległych typu 27xxx. Użyj jakiegoś CROSSASSEMBLERA. Ja jak się kiedyś w to bawiłem, to używałem METASSEMBLERA C16, ale to jeszcze pod DOSem działało he, he. Podawalo się ścieżkę...
Po zmianie radio buttona wywołujesz SetDlgItemText i od tej pory nie wiesz co system zrobi..... 1. cmp Len, 1 2.jae wychodzimy 3. invoke GetDlgItem, hWnd, 1060 4. invoke SendMessage, eax, BM_GETCHECK, 0, 0 5. .if eax==BST_CHECKED 6. invoke SetDlgItemText, hWnd, EDIT1_ID, addr Bufor1 7. invoke SetDlgItemText, hWnd, EDIT2_ID, addr Bufor2 8. inc Len 9....
Od jakiegoś czasu próbuję uruchomić i2c na 18f2520 i podłączonym do niego termometrze cyfrowym AD7415. Z tego co napisane jest w instrukcji do AD7415 najpierw należy wysłać numer rejestru z którego będziemy czytali. Ale problem mam już na samym początku. Niezależnie od tego czy układ mam podłączony czy nie pic mi mówi że przyszło ACK od AD7415. Poniżej...
Na pewno na pierwszym miejscu jest zestaw instrukcji. Na przykład możliwość łatwego adresowania tablic obiektów o rozmiarze większym niż 1 bajt powiedzmy w ARM, czy w MC68020 i wyższych, lub na przykład wykonywanie operacji na 16 i więcej bitach za pomocą instrukcji operujących na danych ośmiobitowych (dodawanie, odejmowanie, porównanie itd. z propagacją...
Poza tym, że w jednym i drugim instrukcja zajmuje jedną linię i ma format "opkod argument1, argument2", to innych podobieństw jest niewiele - różne architektury, różne zestawy instrukcji, rejestry itd. Pozdrawiam, Dr.Vee
witam czy moze ktos udostepnic instrukcje asemblera do at91sam7s pozdrawiam
Moje zadaniepolega na tym że do aplikacji po przez pipe jest przesyłany losoby ciąg bajtów, długość duża, bez znaczenia. I teraz należy odczytać 2 pierwsze bajty i przekształcić je na liczbę szesnastkową (wsumieto już jest) i następnie wczytać pozostałe bajty w ilości takiej jak wartość tej liczby, następnie znów 2 bajty i liczbę. Liczbę1 i Liczbę2...
Myślę, że jeśli piszesz w C i używasz GCC - to jedną z najlepszych podpowiedzi jak i co robić w asemblerze jest właśnie C. Tzn chodzi o to, że można sobie jak na dłoni podejrzeć pliki w których masz cały kod napisany przez ciebie w C - przetłumaczony na asm i to z dobrymi opisami - co i jak. Czytanie tych plików to bardzo dobra lektura poważnie. Czasem...
Mam wątpliwości, czy to jest cały program. Moim zdaniem jest to wyrwana z jakiejś większej całości procedura. To chyba jest cały program, tyle że ten asembler pewnie dokleja przynajmniej kod zakończenia procesu. Generalnie mam wrażenie że autor pytania jest leniem. Miał napisać jakiś program na zaliczenie, dostał/znalazł gdzieś kawałek kompletnego...
Tylko, że porównywanie w procesorach się wykonuje przez odejmowanie (patrz dokładny opis tej instrukcji), a to w przypadku porównywania z zerem jak napisałem nic nie zmieni. Pożyczka, czyli ustawienie przeniesienia C=1 występuje gdy wartość odejmowana będzie większa niż zawartość rejestru. Takie podstawy to kolega powinien znać. A BRLO właśnie sprawdza...
Skoro masz program, i mówimy o asemblerze to odpowiednie instrukcje potrzebują konkretną liczbę cykli procesora na wykonanie - przeanalizuj program zgodnie z dokumentacją techniczną procesora (uwzględniając częstotliwość z jaką będzie pracował)... co do poprawności - kod U2 służy głównie do wykonywania obliczeń na liczbach ze znakiem. Jak dla mnie -...
Jestem początkujący jeśli chodzi o asemblera i mikrokontrolery i próbuję napisać sobie program do wykrycia który klawisz klawiatury został naciśnięty. Czy ten program poniżej by działał? Założenia: klawiatura matrycowa 4x4 jest podpięta do portu P1 mikrokontrolera w ten sposób, że wiersze (S0-S3,S4-S7,S8-S11,S12-S15) są podpięte pod piny P1.0-P1.3 a...
Slicznie Ci dziekuje... Napisalem pierwsza instrukcje i dziala... Prosze jeszcze o pomoc... wydawalo to mi sie banalne... ale niestety znowu mi tradycyjnie nie dziala :( Program teraz wyswietla mi odpowiedniki w ASCII elementu tablicy data1 ... Jaka instrukcja "zamienie" to na cyfry??? Probuje dodac 0x30 addl $0x30, %ecx ... Ale to jest zle... Liczbe...
Witam wszystkich forumowiczów. Zmagam się z nawiązaniem komunikacji poprzez I2C procesora ATmega8 oraz układu RTC PCF8583. Na wstępie napiszę, że linie SDA i SCL są podciągnięte do VCC przez rezystory 1K. Układ pracuje z kwarcem wewnętrznym 1MHz. Podprogram "dwiems" generuje opóźnienie rzędu 2ms. Podprogram "blad" wywołuje pętle, która zapala diode...
Witam Potrzebuje pomocy w napisaniu funkcji jezykiem asembler na Intelu. Program, na ktorym ma byc wykonane zadanie to CygWin. Poszczegolne funkcje opisane sa w pliku , mozna przetestowac pozniej ich poprawnosc dzialania w programie napisanym przez wykladowce Mprov (program dolaczony). Potrzebna jest tez instrukcja, czyli opis kazdej funkcji : jak sie...
Wybrałeś drogę przez "pokrzywy" :-). Może i dobrze. Jak się poparzysz to będziesz inaczej patrzył na temat programowania. W sumie można i deasemblować. Ale zobacz pierwsze linijki (zaraz po etykiecie start). Moim zdaniem wpakowana jest tam instrukcja bez sensu (jeżeli flaga ustawiona lub wyzerowana to skocz do...). Kod po deasemblacji jest "nienaturalny"....
Witam Mam następujący problem, działający program obsługi jest taki: ISR(TIMER1_OVF_vect){ UDR0= Buff[rd]; rd = (rd + 1) % 256; UDR0= Buff[rd]; rd = (rd + 1) % 256; } program działa, ale jest za wolny, te kilka instrukcji kompilator zmienia na 122 linie w asm. Najlepiej byłoby napisać tę funkcję w asemblerze, niestety do tej pory pisaałem tylko w C....
Witam. Szczęśliwie dla użytkowników praktycznie wszystkie wyświetlacze alfanumeryczne LCD obsługuje się tak samo. Ich chipy sterujące są zgodne z HD44780. W skrócie obsługa LCD'ka wygląda tak: - inicjalizacja (zestaw komend sterujących, ustawia się min. sposób podłączenia 4/8 bit, ilość linii itp itd.). Sprawa dosyć dobrze opisana w większości datasheet'ów...
Witam Mam pytanie dotyczące programu. Wyświetlam tekst na wyświetlaczu lcd i chcę przerywać to za pośrednictwem klawisza enter. Gdzie wstawić odpowiedni kawałek kodu, aby wciśnięcie entera powodowało przerwanie wyświetlania tekstu. Kod wyświetlania: [syntax=asm]LJMP START ORG 100H START: MOV R0,#LCDWC ;adres wpisu instrukcji MOV R1,#LCDRC ;adres odczytu...
Ja mam takie zdanie że rzekoma "prostota" assemblera PICów wcale prostotą nie jest. Raz że instrukcji jest mało i żeby zrobić byle co to trzeba to poskładać ze 100 innych instrukcji (choćby mnożenie), to jeszcze jest wąskie gardło w postaci chyba tylko jednego pełnosprytnego rejestru (taki akumulator). Na AVR masz bogaty zestaw instrukcji (np. jest...
Ok, już sprawdziłem powyższy kod. Jak się okazało, jest w nim błąd. Instrukcja ROR, mogłaby być wykorzystana, gdyby flaga C zawierała wartość najmłodszego bitu rejestru przed wykonaniem operacji. Zamiast ROR, użyłem więc kolejno instrukcji BST, LSR, BLD, niestety kod wydłużył się o 2 CK. Czy ktoś ma pomysł na zoptymalizowanie tego kodu? [syntax=asm]ldi...
Nie 30, tylko 6 plików... No dobra, Ctrl+C, Ctrl+V: ADD A , Rn do akumulatora dodawana jest zawartość rejestru Rn A <− A + Rn gdzie Rn = R0...R7 (jeden z rejestrów roboczych) kod: 0 0 1 0 1 n2 n1 n0, gdzie n2...n0 – wskazują na R0...7 stąd: 28h−2Fh cykle: 1 bajty: 1 przykład: ADD A , R2 – ADD A , adres do akumulatora dodawana...
Disasemblacja kodu i ponowna kompilacja nie jest na ogół możliwa. Wynika to z faktu, że mając plik binarny tak naprawdę do końca nie wiadomo, które jego bajty odpowiadają za instrukcje, a które - za dane (co zresztą potwierdza model maszyny Turinga). Oczywiście asemblery na ogół mają jakieś dobre heurezy, podążające za kodem, jednak nigdy w 100% nie...
Do tej pory pisząc w asemblerze znałem architekturę wewnętrzną danego procesora i odwoływałem się do danego rejestru W C jest dokładnie to samo :) Tylko że zamiast używać assemblerowych instrukcji i operowania na rejestrach roboczych, piszesz "równaniami" w stylu REJESTR = (1<<BIT) i nic Cię więcej nie obchodzi. Może to z początku wyglądać dziwnie,...
To jest prosta pętla wykonuje się tyle razy jaki długi jest rejestr żeby ją przedłużyć można zrobić na dwa sposoby dobudować jeszcze jedną pętlę ,która wykona obecną n razy lub rozszerzyć rejestr do długości 3 bajtów wykonując to samo odejmowanie przeniesienia na tym najwyższym i będzie to samo . Dla bezpieczeństwa między sbi portx i cbi portx warto...
Znasz znaczenie DJNZ? Decrement Jump if Not Zero. Zmniejsza wartość podanego rejestru, a następnie wykonuje skok - gdy wartość (rejestru) wciąż jest <> 0. Jak wiadomo czas wykonywania instrukcji jest niezerowy - stąd powstaje "regulowane " (podanymi wartościami) opóźnienie. Zmienia się bowiem liczba iteracji pętli - więc i liczba wykonanych instrukcji....
Adres definiujesz właśnie tak jak pokazałeś - dyrektywą org. Symbol INT0addr to tylko symbol, któremu przypisana jest jakaś wartość. W asemblerze nie ma typów, więc wszystko zależy od programisty. Zdefiniujesz, że INT0addr ma np. 64, to .org INT0addr spowoduje, że następna instrukcja trafi pod adres 64. Co do języka - rozumiem, narzut to dobry powód...
Tak. Na początek wyrzucić RET po RJMP Piksel_rowna_sie_jeden. A następnie, analizując ten zestaw instrukcji napisać równoważny kod: [syntax=armasm]Piksel_rowna_sie_zero: RET [/syntax] Skoro kasujesz R16 instrukcją CLR R16, to po co ładujesz tam literał przez LDI R16,0? Bez sensu. Skoro w R16 jest zero, które wymusiłeś, to po co sprawdzać warunek czy...