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. By zapoznać się na dobre z AVR'ami rozpocząłem pisanie programu z procedurkami które później będe wykorzystywał. Jak zawsze, chcę by każda część programu była w 100% moja, żadnego kopiowania z innych źródeł. Niestety, napisanie jakiejś bardziej skomplikowanej procedurki od podstaw pochłania dużo czasu. O wiele prościej by było sięgnąć do jakiegoś...
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...
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 -...
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
Mam problem jak w temacie LJMPSTART ORG100H START: LCALLLCD_CLR MOVA, #'P' LCALLWRITE_DATA MOVA, #'i' LCALLWRITE_DATA MOVA, #'s' LCALLWRITE_DATA MOVA, #'z' LCALLWRITE_DATA STARTN: LCALLWAIT_KEY MOVR0, A LCALLPISZ_BCD MOVR5, A LCALLLCD_CLR MOVA, #'1' LCALLWRITE_DATA MOVA, #'+' LCALLWRITE_DATA MOVA, #' ' LCALLWRITE_DATA MOVA, #'2' LCALLWRITE_DATA...
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...
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ć...
Szukam i nie moge znalezc. Ile cykli zegarowych przypada na dana instrukcje tego procesora. Oczywiscie chodzi mi o instrukcje asemblerowe. Dzieki za pomoc.
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...
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...
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...
Kiedy już widzisz okno Dissasembly jesteś w domu. Po prostu widzisz jak to kompilator obsługuje, które rejestry i jakimi instrukcjami....Każda instrukcja języka wyższego poziomu jest tłumaczona na ASM a tak naprawdę to jest opisem poprzedzajacym to co na podstawie tej instrukcji wygenerował kompilator. Przedstawiłeś drogę maksymalnie na około. Po prostu...
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.
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.
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
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...
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...
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...
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 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...
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...
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ę(...
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...
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...
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...
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...
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...
instrukcja TEST jest odpowiednikiem instrukcji AND, przy czym wynik operacji nie jest zapisywany z powrotem do pierwszego argumentu, zostają jedynie ustawione flagi S, Z i P stosownie do wyniku operacji. (x86_instruction)
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....
ANL - po prostu funkcja logiczna AND SWAP - zamienia tetrady akumulatora np. przed ACC=0x4A a po wykonaniu instrukcji ACC=0xA4. Zdecydowanie ten program pisał jakiś straszny paprok. Szkoda czasu na analizę. To co chcesz zrobić polega na prostej zmianie adresu rejestru odczytywanego z RTC, ale znalezienie miejsca do zmiany w tym kodzie to już trochę...
Chodzi mi o polecenie MOV TH0, #F0Fh. Asembler zasygnalizuje błąd - nieznana nazwa F0Fh. Dla asemblera to NIE JEST liczba. Jeśli już poprawisz tak, żeby była liczbą - asembler zasygnalizuje przekroczenie zakresu, bo argument tej instrukcji może mieć tylko 8 bitów.
mimo wszystko człowiek nauczył się czegoś o timerach i asm Moim zdaniem asembler na pewnym etapie nauki jedynie zaciemnia obraz zmuszając do koncentrowania się na szczegółach, tracąc zarazem szerszy kontekst. Nie trzeba wertować dokumentacji. Wystarczy zapoznać się z ogólnym opisem procesora -- gdzie jest wyjaśnione do czego służą poszczególne bloki....
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...
Odpowiedniki 51 DALLASA/MAXIMA maja nawet dodatkowa instrukcje ktora automatycznie inkrementuje R0 po przesłaniu.
Od początku: - nie mozna wykonać instrukcji MOV A,(at)DPTR , przy korzystaniu ze znacznika DPTR musisz użyć MOVX lub MOVC (nie analizowalem, ktory musi być użyty w programie) - JZ WYSW0.0 raczej każdy interpreter potraktuje to jako błąd ponieważ uzna, że to adres bitowy. staraj sie raczej używac '_', z tego samego powodu etykiety WYSW0.0: są błędne...
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.
A nie warto bylo wejrzec na strone atmela <-- assembler po nacisnieciu na plik sam sie rozpakuje potem odpalasz "asm51.exe" wpisujesz "laser.asm"(po uprzednim skopiowaniu tego pliku do katalogu z assemblerem) wciskasz Enter i masz piekny plik hex!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!... jak bys chcial plik bin to zapraszam tutaj: a jak spowrotem to:...
Wstawki asemblerowe w AVRGCC można umieszczać w programie po instrukcji "asm volatile", zresztą najlepiej przeczytaj sobie "GCC-AVR Inline Assembler Cookbook" - znajdziesz go pod tym adresem: Pozdrawiam.
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.
www.google.com is your friend po sieci krazy piekny opis po ang. calego 8051 wlacznie ze wszystkimi instrukcjami assemblera i co nie tylko. Ja to mam w formie papierkowej i wiernie mi sluzy :) Jak chcesz po polsku to tez sa jakies mniejsze opisy, ale mozna kupic calkiem sensowne ksiazki -> patrz ksiegarnia/biblioteka.
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...
W odpowiedzi dla "zumek": Na celu miałem optymalizację pamięciową programu. chciałem zaoszczędzić na instrukcjach. Jeśli chodzi o Bascoma i Asm to Bascom ma wygodne jak dla mnie środowisko (edytor, kompilator, programator) a procedurki w asm mało zajmują i drogą ewolucji zacząłem pisać całość kodu w asm pod Bascomem. I dlatego chciałem napisać obługę...
popatrz sobie pod debugerem w ktorym miejscu rozpoczyna sie twoj kod: w/g mojego oka ostatnia intrukcja 'end koniec ' mowi iz instrukcja pierwsza jest za etykieta koniec: a wiec program zaczyna dzialanie od: mov AX,4C00h ;zakoncz int 21h ; program nie wykona sie to co chcesz, poczatek zrob taki: .code koniec: mov AX,(at)data ; mov DS,AX ;ustaw DS...
Witam, te dane nie zostyały sprecyzowane, poprzedni mój post to był fragment zadania, ale należy załóżyć że bedzie to program typu .com problem rozwiązałem za pomcą instrukcji "lea si,tablica" , a wczytywanie danych za pomoca "mov al,ds:[si]" ,pozdrawiam i dzięki za zainteresowanie
Skorzystaj z breakpoint-ów i obserwuj Cycle Counter i Stop Watch .Dowiesz się ile cykli i ile czasu zużywają poszczególne instrukcję czy procedurki.Możliwości jest wiele :D Piotrek
jak policzyć czas rzeczywisty wykonania instrukcji np. przy kwarcu 11059200 do set pinc.1 waitms 1 reset pinc.1 waitms 1 loop W jakim czasie w rzeczywistości będzie przełączał pin. Jak to przeliczyć do konkretnego kwarcu itp. ile czasu zajmuje wykonanie 1 instrukcji w asemblerze i jak to ma sie do kwarca
Pomocy. Niewiem czemu ale jak pisze w pascalu instrukcje pod asm. to mi wypala ciągle jakiś blad, a niby program dobry. np. mov ax,13h - pisze nieznany identyfikator ax. czym to moze być spowodowane?
Niby dlaczego za małe(krótkie) Procedury delay liczą 256*256 cykli co daje trochę ponad 65ms dla zegara 1 MHz. Procedury, które podałem łatwo dostosować do dowolnego zegara. Wystarczy pozmieniać wartości ładowane do odpowiednich rejestrow. W komentarzach podane są cykle zegarowe zajmowane przez określoną instrukcję. Dla 1MHz cykl wykonuje się w czasie...
Kilka pytań i spraw, ktore być mogą okazać się pomocne: Z wartości przeładowania T0 (D8EF) i faktu że przerwanie chodzi 100 razy/sek domyślam sie ze używasz kwarcu 12MHz . Jednak jesli ma to byc równo 100Hz to zauważ że podana u ciebie wartosć początkowa jest za mała o 1, bo powinno byc: T0pocz = FFFFh - (Fxtal / 12 / Fto) + 1 = D8F0h (a nie D8EFh)...
Przeniosłem z: Schematu/instrukcji...
1. dyrektywa asemblera .cseg .org "mówi" kompilatorowi od jakiego adresu umieścić kod wynikowy programu po skompilowaniu 2. stosu mógłbyś nie używać tylko wtedy gdybyś nie używał instrukcji typu rcall lub innych skoków do podprocedur, które muszą odłożyć na stosie punkt do którego ma wrócić program po zakończeniu tejże podprocedury - po rozkazie ret,...
Przerwanie oparlem o wywolania DOS-owe XOR_BX,BX -> zerowanie BX XOR_CL,CL -> zerowanie CL POCZATEK: MOV_AH,08H -> ustawia ze odczyt klawiatury INT_21H -> wywolanie przerwania odczyty klawiatury MOV_CH,AL -> do CH znak ASCII klawisza nacisnietego CMP_AL,13 ->sprawdzenie czy ENTER JNE_DALEJ ->jak nie ENTER to skacz dalej CMP_CL,1...
Witam Powstawiaj odpowiednie instrukcje tam gdzie napisałem zapal, zgaś itp. Powinien program zadziałać nie daję gwarancji że się nie machnołem. Niemniej idea chyba będzie widoczna i powinieneś w razie czego uruchomić ten program. Pozdrawiam ledequp1.7 buzerequp1.5 licznikequ21h ; licznik przerwań czas_led22h czas_buz23h czy_sequ1 ; czy sekunda org0000h...
A o zaliczeniu laborki dowiedziales sie wczoraj? Ten program to chyba ok 15 linijek w asm, i zeby to napisac wystarczy powierzchowne przejrzenie noty jakiegos 8051 + lista instrukcji.
No i pozostaje problem mnożeń. Skoro pomnożę 2 liczby 8bitowe wynik otrzymam 16 bitowy żeby tego uniknąć musiałbym na początku zamienić wszystkie bajty na (w jakiś sposób) odpowiadające im liczby w kodzie 1N.7Q wykonać obliczenia i spowrotem wrócić do normalnego kodu dwójkowego. Tylko nigdzie nie mogę znaleźć sposobu takiej konwersji:(. Jest wogóle...
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....
mov dptr,#keyarr do rejestru DPTR (dwa bajty) ładowany jest adres pierwszego bajtu tablicy o nazwie Keyarr movc a,(at)a+dptr do akumulatora ładowana jest wartość spod adresu jaki jest w DPTR+wartość w akumulatorze. Jeśli przed wykonaniem tej instrukcji w akumulatorze bedzie wartośc 4 to po wykonaniu operacji w akumulatorze znajdzie się wartośc 17 (piąty...
bsf STATUS,RP0 movlw b'01010101' (miałem 4 diody na porcie A) movwfTRISA ^ 0x080 ( coś się powinno zapalić ) bcf STATUS,RP0 movlwb'00110011' movwfPORTA A skąd znalazłeś ten kod? Bo to dość dziwny zapis, ale sprowadza się do tego ze wpisujesz W pod adres TRISA (czyli w przybliżeniu coś około 0xA0 ) z operacją xor która zamienia wartość adresu, negując...
Witam szukam listy mnemoników oraz ich znaczeń dla asemblera procesorów 32bit CISC szczególnie tych które wykonują instrukcje pętli. Dziękuje za pomoc pozdrawiam
Asemblera mam 1 rok i tego :) Wielkie dzięki za pomoc. Po analizuje ten kod i zrobię inny a nóż się uda :) Wydaje mi się, że w kodzie masz pomieszane zmienne ze wskaźnikami do zmiennych. mov ecx, tablica mov eax, j mov edx, [ecx+eax*4] <-------------- blad Skomentuj ten kawałek. Co tu jest zmienną, a co wskaźnikiem? W asemblerze taka instrukcja:...
Zamiast instrukcji mov , użyj xch ;... petla: rrc A xch A,R0 ; mov R0,A ; mov A,R1 rlc A xch A,R0 ; mov R1,A ; mov A,R0 ;... Piotrek
Tak masz rację Ch. M. przyznaje że nie napisałem sam tego programu...ponieważ jestem początkujący w te klocki i nie ukrywam że nieprędko bym napisał ten program...Program zaczerpnąłem z książki Pana A. Pawluczuka- Sztuka programowania mikrokontrolerów AVR - przykłady, która po prostu jest świetnie napisana szczególnie jak dla mnie.. takiego laika. Program...
tego typu instrukcje sa niewskazane we wstawkach, bo nie pozwalaja kompilatorowi dokonac dobrej optymalizacji. niemniej jednak akurat ta instrukcje powrotu mozna wykorzystac i nie powinno z tym byc problemow. pytanie pierwsze: mozna uzyc lekkiego helpa ze strony tworcow assemblera. nalezy najpierw zaladowac wartosc zmiennej do jakiegos tam rejestru:...
Witam, poczatkuje w asm i sprawia mi to troche problemow. Nie wiem w jaki sposob zapisac liczbe 12bitowa w jakiejs zmiennej (akumulatorze). Napisalem nastepujacy kod MOV A, ADCDATAH MOV B, ADCDATAL ANL A, #00001111B ORL A, B Chcialbym uzyskac liczbe 12 bitowa (0F FF), natomiast instrukcja ORL daje 8 bitow. Nastepnie chcialbym pomnozyc ta liczbe przez...
Najłatwiej jest załadować najmłodszy bit do T (bst/jedna instrukcja), wykonać przesunięcia (lsr+ror lub 2*ror) i wczytać bit T do najstarszego bitu (bld/jedna instrukcja) - łącznie 4instrukcje/4cykle.
witam Gdzie moge znalesc jakies sensowne wytluamczenie co robią instrukcje LOAD, FETCH, STORE, EINT w PicoBlaze IDE. Nieukrywam że z asemblerem niemialem zaduzo do czynienia, a musze na zajecia zrobic pewien program, gosc od nas wymaga cudów a nawet niewytluamczy instrukcji itp.
jak zamienie na MOV AX,DX się wywala niestety REPNE SCASB To jest linia z instrukcją porównującą wartość w MOV AL, DL Ewentualnie trzeba dać: REPNE SCASW Tylko, czy to będzie zgodne z założeniami działania procedury?
Witam, Dwie uwagi: 1. rezystory podciągające mają zbyt małą wartość. W przybliżeniu 5V/1kOhm = 5mA na pin * 8pinów = 40mA Natomiast karta katalogowa AT89C51 wyraźnie podaje. Maximum IOL per port pin: 10 mA Maximum IOL per 8-bit port: Port 0: 26 mA Przekroczysz więc dopuszczalny maksymalny prąd portu P0. Po za tym po co takie duże prądy. Prąd wejściowy...
Chodzi mi o linijkę zaznaczoną gwiazdkami . Kompilator wyrzuca mi błąd takiej treści error: Undefined symbol: SPL i nie wiem co jest nie tak, w tej linijce .include "2313def.inc" .def acc = r16 ; nadanie rejestrowi r16 nazwy symbolicznej .cseg .org 0x00 ldi acc, 0b11111111 ; załaduj do acc liczbę 255 (0xff) out DDRB, acc ; wpisanie...
Dzień dobry! Mam mały problem który pewnie wyda się banalny, jednak już sporo czasu nad tym siedzę: a EQU 080h b EQU 040h c EQU 020h d EQU 001h e EQU 002h f EQU 008h g EQU 004h h EQU 010h MOV.B Table(/*Rx*/),0x90 ;W manualu przykład wygląda mniej więcej tak, nie działa powyższa instrukcja choć już wielu rzeczy próbowałem... ;podejrzewam że to...
Mam dzisiaj chyba dzień dobroci... Tu masz procedurę dzielenia, przerobioną z noty AVR200. Wykona się +/- o 50% dłużej niż oryginalny kod 16/16 unsigned - jest 8 przebiegów pętli więcej i jedna instrukcja więcej w pętli, ale zoptymalizowałem jednego brancha więc cykli w przebiegu pętli wyjdzie tyle samo. Z tego wynika, że wszystko powinno zająć max...
Dziękuje za pomoc przynajmniej działa, teraz załączam na końcu za instrukcją SJMP w programie, ale to jest w pewnym sensie trochę oszukiwanie kompilatora, a pewnie istnieje lepsze rozwiązanie. Jakby ktoś znał inne rozwiązanie, to niech napisze z góry dzięki.
Jaki powinien być wynik dzielenia w asemblerze 1/FFF7 ? Takie działanie przy pomocy instrukcji div nie jest możliwe. Taką operację mozesz wykonać przy wykorzystaniu FPU, ale trzeba dane wprowadzać we właściwym formacie. Jak to niemożliwe? Bzdura! Możliwe i daje wynik 0, reszty 1.
Wg tego co przeczytałem w PDFie instrukcja SBI CBI działa na adresach od 0x00 do 0x1F. Twój rejestr SPCR jest już pod adresem 0x2C (0x4C). Spróbuj tak: ldi temp, (1<<SPE) out SPCR, temp ; gdzie temp to jakiś tam rejestr który masz wolny. Poczytaj strony 356 i 357 PDFa. Pozdrawiam
Dobrze kombinujesz. Porównanie można zrobić przez CMP, ale chyba jednak wygodniej będzie przez CJNE, bo po CMP trzeba dołożyć odpowiednią instrukcję skoku. CJNE może jako argument przyjmować wartości bezpośrednie, czyli porównywać rejestr z wartością np.: CJNE A,#0Bh,skok_jesli_rozne jesli_rowne_OBh: cośtam dalej . . . skok_jesli_rozne: Tym co napisał...
Ech, kolega Pituś Bajtuś ma rację. Rozkazy push i pop działają tylko z argumentem bezpośrednim, więc jeśli chcesz odłożyć na stos R0 to musisz podać jego adres, czyli "push 00h". Nie ma znaczenia do którego rejestru go zdejmiesz, bylebyś zdjął daną ze stosu, więc zdjęcie danej do rejestru R1 będzie wyglądało tak "pop 01h". A kolega zwi3rzak się niestety...
Poza tym nie wiem zupełnie jak i czy można w ogóle zrealizować tak funkcję EX-OR. AVR: eor R16,R17 8051: xrl A,R0 PIC: xorwf <adres>,<kierunek> I to taki problem ?? Nie napisałeś jaki asembler, najwyraźniej nie chce Ci się poszukać. Każdy procesor ma w swej liście instrukcji operacje logiczne, tylko ich mnemoniki i operandy się różnią.
Dziękuję za odpowiedź, niestety chyba coś musi być programowo. Miałem nadzieję, że da się to zrobić sprzętowo. Prosty PWM na TMR0 nie powinien dużo przekroczyć 20 instrukcji (już testuję), ale wymaga drobnej obsługi (w przerwaniu). Zastanawiam się czy Twoja sugestia nie jest lepsza.