A gdybym chciał się zając mikrokontrolerami, czego bym potrzebował?? Mikrokontroler (jaki?) programator (jaki?) kompilator na kompie (jaki?) hmm.. coś jescze???? _emes Na początek polecam zacząć od mikrokontrolerów rodziny AVR. Nie daj się nabrać na początki w '51 - owszem, może to i "sztandarowy" mikrokontroler, tak jak Pascal w językach programowania,...
LJMP START START mov R3, #8 mov R4, #2 mov R5, #4; dotąd jest dobrze mov A, R3 ;add R3 -źle, dodawanie wymaga dwóch operandów add A, R4 ;add R4- jak wyżej add A, R5 ;add R5- jak wyżej mov R7,A ;mov A, R3-nie wiem co miałeś na myśli pisząc ten kawałek kodu(5 lini) ;mov A, R4 ;mov A, R5 ;mov A, R7 ;mov A, P1 mov B,#5 mul A, B mov B,#2 div A,...
Hej, mam problem z napisaniem prostego (tzn. wyglądający na prosty) "programu". Może podam dokładne polecenie: Napisać program w asemblerze dodawania 2 liczb 4 bajtowych (w zapisie U2) zapisanych w komórkach o adresach 1000-1003 (pierwsza liczba) i 1004-1007 (druga liczba). Wynik umieścić w komórkach 2000-2003. Bajty liczb rozmieszczone są jak w konwencji...
Witam, Mam problem z wykonaniem ćwiczenia, za pomocą języka assembler w programie uVision, za pomocą listy rozkazów muszę napisać program odpowiadający za dodawanie dwóch liczb których suma da cyfrę dwubajtową, a następnie podzielenie tej licby na liczbe setek, dzięsiątek i jedności. Następnie trzeba przesłać setki, dzięsiątki i jedności na port https://obrazki.elektroda.pl/1755238000_...
Dodawanie i mnożenie: Można wykonać na podobnej zasadzie, jak ręczne dodawanie i mnożenie dużych liczb (zapisuje się liczby jedna pod drugą i operuje na poszczególnych cyfrach). A komparator, to sprawdzasz po ile cyfr mają liczby, jeżeli różna, to odpowiedź jest oczywista, a jeżeli obie są tej samej długości, to porównujesz kolejne cyfry. W jednym bajcie...
Tak to robi na Byte [syntax=avrasm] LDI R26, $00 Load Immediate LDI R27, $01 Load Immediate LD R24, X Load Indirect from Data Space to Register using Index X SUBI R24, $64 Subtract Immediate ST X, R24 Store Indirect From Register to Data Space using Index X [/syntax]
Ok. Już wszystko jest jasne. Jednak mam problem w stronę odwrotną, a dokładniej: Mam zadeklarowaną stałą w C, w assemblerze chciałbym wyciągnąć jej adres w pamięci. Robię dokładnie tak jak podane w przykładzie podanym przeze mnie (czyli w assemblerze dodaję .extern), kompilator podmienia nazwę zmiennej na jej adres, ale jest mały problem. Adres ten...
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...
(at)spec220 A jak jest w tym środowisku którego używasz z obsługą peryferiów mikrokontrolera? Czy wszystkie timery, USARTy, I2C, SPI, ADC, DAC, są obsługiwane? czy można ustawić każdy tryb pracy, na który pozwala hardware, czy tylko te popularne? Jak z komunikacją, powiedzmy że chcesz zrealizować DMX512, Modbus RTU, albo LIN, czy masz do tego gotowy...
Przenosisz do rejestrów x. Mnożenie w tym przypadku również musisz wykonać na rejestrze x. Choć wynik oczywiście w takim przypadku jest w dx:ax, to jednak możesz śmiało starszą część olać, jeśli wcześniej wprowadzi się tylko zabezpieczenie przed przekroczeniem zakresu. Dodawanie tak samo - na rejestrze x (wcześniej dla pewności możesz wyzerować część...
Witam. Szkielet programu asemblera na 51' zamieszczałem w poście pod koniec wątku: [url=http://www.elektroda.pl/rtvforum/vi... Dodawanie 3 liczb 8-bitowych - może się Koledze przyda. Do kompilacji najczęściej używam ASEM'a. Pozdrawiam.
Niestety... Program zawsze wyświetla, że znalazł szukany wzorzec. A gdy wpiszę tekst lub wzorzec w całości z wielkich liter to program się wysypuje :( Zerknąłem na kod i już na początku jest poważny błąd (reszty nie sprawdzałem bo nie ma sensu) [syntax=asm]blt $t3,$t6,next1 # porownanie if($t3<91) skocz dalej tak i tak next1: blt $t5, $t3, next2...
Witam. Czy potrafi ktoś pomóc mi z zadaniem z assemblera? Mam do napisania program, który mnoży dwie liczby 5 bajtowe (40 bitów) szesnastkowe oraz podaje wynik również w tym systemie (tylko wynik będzie wtedy 80 bitowy). Problem polega na tym, że do tego mnożenie trzeba wykorzystać algorytm, ponieważ instrukcja mul nie działa dla tak dużych liczb. Mnożenie...
jak zaprogramowac uC 8051 zeby dodawal liczby ktorych suma jest wieksza niz 255? ADDC ok.. ale.. czemu to nie dziala? ;przekladowe liczby MOV R2, 0xDD MOV R3, 0xDD MOV R4, #0 ;zerowanie R4 ; dodawanie do R0 kolejnych liczb ; do R1 dodajemy tylko flage przeniesienia [0 albo 1] ADD A, R2 ADDC A, R4 ADD A, R3 ADDC A, R4 END wynik .. 0xBB :/ co...
Ten Bascom i assembler na pewno się czymś różnią. Który jest łatwiejszy? Który ma większe możliwości? Tymi programatorami co podałeś link to mogę zaprogramować w obu językach czy tylko w Bascom'ie, bo na razie tak z grubsza przeleciałem i nie widziałem nic o assembler'ze W każdym języku, ponieważ ten programator służy tylko i wyłacznie do przesłania...
Jak wstawić fragment kodu napisanego w assemblerze w kompilatorze języka C firmy KEIL ? Jakoś nie mogę tego znaleźć w help'ie.
Oto co wymyśliłem :) ORG 0 AJMP 50H ORG 50H LCALL OBLSR ; wywołanie podprogramu obliczania średniej OBLSR: POP R7 ; zdjęcie ze stosu bardziej znaczącego bajtu adresu powrotu do programu głównego i zapisanie w rejestrze R7 POP R6 ; zdjęcie ze stosu mniej znaczącego bajtu adresu powrotu do programu głównego i zapisanie w rejestrze R6 MOV R5, A ; przeniesienie...
Ok poszperałem troche tylko teraz mam problem poprostu z wyświetleniem tej sumy wydaję mi się że już jest reszta dobrze, tylko właśnie nie wiem jak z tym wyświetlaniem sumy. [syntax=asm] model tiny .data komunikat1db"podaj 1 liczbe: $" komunikat2db10,13,"podaj 2 liczbe: $" suma db10,13,"Suma wynosi: $" X db0 Y db0 .code Start: mov dx, (at)DATA mov ds,...
Zapytałem nie dlatego żeby pojechać autorowi, ale żeby się dowiedzieć. Bo ja absolutnie nie znam się na Javie. Ten algorytm „odśmiecania” zapewne nie był by problemem przy bezpośredniej kompilacji na kod maszynowy. Ale ograniczenie składni (a co dopiero brak wskaźnikowania (indexowania)) to już przegięcie. Na FLASu to już całkowicie się...
Mam problem, otóż zastanawiam się w jaki sposób dodaje się wstawki asemblerowe w Keilu. Jako powinna wygladac taka sekcja pośród kodu C. Czy do poprawnej kompilacji należy zaznaczyć jakąś dodatkową opcję w środowisku? Konkretnie chodzi mi o przerobienie poniższego kodu żeby współpracował z keilem: static inline unsigned __get_cpsr(void) {...
Witam Niestety jestem zmuszony skorzystać z drętwego języka C. Chcę wstawić tam kawałek kodu w ASM - wszystko robię pod AVR Studio. Niestety po przejrzeniu dziesiątek stron nadal nie wiem jak to zrobić. Kod w ASM działa bo sprawdzałem na symulatorze.
Podaję za Arm Architecture Manual: Tak wygląda kodowanie instrukcji (a konkretnie 24 bitów odpowiedzialnych za offset) To calculate the correct value of signed_immed_24, the assembler (or other toolkit component) needs to: 1. Form the base address for this branch instruction. This is the address of the instruction, plus 8. In other words, this base...
Problem jest w tym że tablice są umieszczone od 0x40 (org 0x40) w pliku WaveSmpl.asm a przy starcie masz skok do procedury RESET i RX_COMPLETE_INT .org 0 rjmpRESET .org URXCaddr rjmpRX_COMPLETE_INT więc skok musi być wykonany przez tablice a jak dodajesz jeszcze jakieś tablice to ten skok jest za długi. usuń .org 0x40 ; Flash word address w pliku WaveSmpl.asm...
Nie. Dodawanie do ZH jest potrzebne, gdy górny bajt adresu jest inny w pierwszej a inny w ostatniej komórce tabeli.. jeśli tablica ma 2 elementy o adresach 0x8FF oraz 0x900, to bez tego dodawania uzyskasz adresy 0x8FF i 0x800 (brak dodania przeniesienia).
Zobacz na http://www.avrbeginners.net AVR Assembler->Math->Multiple byte maths. Są tam co prawda krótkie, ale dobrze opisane przykłady operacji na liczbach 2 i nawet 4 bajtowych: dodawanie, odejmowanie, porównania itp. Pozdrawiam
Programik trzeci: LD A,L1 LD B,L2 inkrementacja: INC A CP B JR NZ, inkrementacja
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...
Do zl dodajesz wartość wskaźnika i masz kolejne elementy max 256 jeśli więcej to potem dodajesz 1 do zh i masz następne 256 itd jeśli czytasz tabele kolejno to możesz dodać plusik i będzie sam zmienial kolejno elementy (lpm r0,z+)
Niektóre kompilatory umożliwiają zastosowanie acc, ale już mniejsza o to. Program jest bardzo prosty i nie bardzo jest tu co wyjaśniać. To jest jak mnożenie dziesiętne: 23 * 5: 3 * 5 = 15 2 * 5 = 10 Zapisujesz o tak: _15 10_ Dodajesz zera: 015 100 I dodajesz: 115 Tak samo działa ten program, tylko że binarnie.
witam, mam problem ponieważ muszę napisać moduł w assemblerze do C, który będzie dodawał 2 liczby zmiennoprzecinkowe, wpisane w c i wyświetlane w c, moduł assemblerowy ma wykonywać dodawanie. Jakieś podpowiedzi , albo najlepiej podobne programy do przeanalizowania
A możesz opisać, jaki był zamysł tego programu? Tak jak w temacie: dodawanie dwóch liczb :) Oto całkowita treść: Opisz i podaj przykłady jak w assemblerze dodawać, odejmować, mnożyć i dzielić dwie liczby. Gdzie są zapisywane wyniki tych operacji? (W jakich przypadkach i w jakich rejestrach?) Jak sprawdzić, czy podczas działania na liczbach nie przekroczyliśmy...
Chyba to właśnie co znalazłem w źródłach. Deklaracja funkcji przerwania nie może mieć atrybutu Interrupt("FIQ") skoro mamy już wrapper w assemblerze. Tak jak pisałem, spróbuj z __attrybut__((naked)) albo wcale. Jeśli zadeklarujemy to jako FIQ to kompilator dodaje kod odejmujący 4 od adresu powrotu, co my już robimy we wrapperku.
Mam jeszcze pytanie, jak zrobić skok do wybranego adresu? Wystarczy wpisać jmp nr adresu+offset, czy jak? Może obejrzysz przykład, np tu: http://www.elektroda.pl/rtvforum/viewtop...
Prosze o kawałek kodu z dodawaniem dwóch 8 bitowych z wynikiem 16 bitowym. Przykładowy kod: in r17,ADCH clr r16 PETLA_PRZESUN_LEWO: lsl r17 inc r16 cpi r16,8 brne PETLA_PRZESUN_LEWO in r16,ADCL movw XH:XL,r17:r16 Po tej operacji poprawny wynik jest w rejestrach XL i XH. Temperatura nie przekroczy 255 stopni wiec teoretycznie (w/g mnie)...
Napisz jaką potrzebujesz dokładność, jeśli niewielką to najlepiej użyć gotowej tablicy. Jeśli dużej to trzeba rozłożyć funkcję pierwiatkowania np. na szereg Taylora i wtedy obliczać kolejne przybliżenia, ale to wymaga napisania procedur operacji zmiennoprzecinkowych (głownie mnożenie i dodawanie zmiennoprzecinkowe).
Poza tym pobieżnie przejżałem DS ATTiny i nie widzę instrukcji analogicznej do DIV w 8051?? Jak w nim dzielić liczby?? A czy znalazłeś MUL? ;) Do takich obliczeń niestety trzeba pisać własne funkcje. Można mnożyć i dzielić poprzez wielokrotne dodawanie lub odejmowanie danej liczby, ale to jest oczywiście dosyć mało optymalna metoda. Oczywiście mnożenie...
A może coś więcej by kolega napisał? Nie orientuje się zbytnio w assemblerze a muszę projekt zrobić...
funkcje w assemblerze nazwac __vector_XX gdzie XX to jedna lub dwie cyfry. numerek ten jest numerem wektora przerwan, przy czym reset ma numer 0 pozatym odpowiedni zestaw parametrow przy owym ISR pozwoli usunac wszelkie opcje dodawane przez kompilator (atrybut 'naked'). do tego mozna sobie wtedy przerwanie napisac jako wstawke asm. 4\/3!!
Mirko51 Udzielasz fatalnej odpowiedzi. Dodawanie w kodzie BCD musi uwzględniać rozkaz korekcji dziesiętnej DA A Tu masz przykład (podprogram SUM) sumowania BCD dwóch dowolnie długich wartości umieszczonych w ramie gdzie końce pól są w R0 i R1 a długość (identyczna) jest w R2. Sumowanie odbywa się do pola, którego koniec jest w R0. [syntax=asm] SUM:...
Witam !! Przejde od razu do rzeczy (btw: programuje w assemblerze): ADD - dodaje SUB - odejmuje MUL - mnozy ale nie potrafie znalezc instrukcji dzielenia.. w zwiazku z powyzszym prosba o pomoc ... jak wykonac dzielenie (np dwoch rejestrow)?? ... cos jak DIV w rodzinie '51.... Z gory dzieki za pomoc Pozdrawiam
genetix: Tu masz rację. Chodziło mi o przeniesienie a napisałem dodawanie:) Ale już wszystko gra. Dzię wszystkim za pomoc.
To ja dam jeszcze podpowiedź ze starych czasów assemblera: Zero ascii ma kod 0x30. Potem kolejne cyferki lecą po kolei czyli 9 ascii = 0x39 Jak chcesz wyświetlić zmienną zawierającą wartość 0-9 to dodajesz do niej 0x30 lub '0', bo apostrofy tłumaczą jeden znak ascii na jego wartość, i wysyłasz na wyświetlacz (czy to LCD, czy port szeregowy/terminal)....
Dobrze jest. Tablica jest. Teraz kwestia operacji na tablicach. Dodawanie i zapis do pierwszego bajtu przy takim czymś mnie przeraża... Wiem natomiast jak zrobić z liczby w U2 wartość bezwzględną. ----------------------------------------... Koledzy, nie mam pojęcia, jak to napisać. Wiem, że aby uzyskać wartość bezwzględną należy przemnożyć logicznie...
mam problem, poniewaz dopiero co zaczalem sie uczyc asemblera mam maly problem Proszę pamiętać o używaniu znaczników syntax . Opcja Listing kodu . - arnoldziq
wchodzisz na strone microchipa i nie umiesz sobie znalezc dokumentacji procesora? zartujesz? no chyba ze z twoim angielskim jest tak cienko, ze nie wiesz co to znaczy '8-bit PIC® Microcontrollers' ... ale wtedy to juz raczej nie ma nadziei zadnej. MPLAB domyslnie wyposazony jest jedynie w interpreter assemblera. mozna dodawac rozne pakiety z jezykami...
czy program skladający się z poleceń bascoma i wstawek assemblerowych będzie zajmował mniej miejsca niż taki sam program napisany tylko w bascomie?? Będzie zajmował mniej miejca. Najwięcej możesz zaoszczędzisz zastępując pętle i IF-y a także dodawanie/odejmowanie na zmiennych dwubajtowych. Mnie się udawało zbić 20-30% kodu jak próbowałem się zmieścić...
płynny efekt też mam, może to nie jest najlepiej wykonane, ale żarówka ładnie się rozjaśnia i ściemnia i oto chodziło (a prosto wykonane), mnie nie interesował pobór mocy czy jakaś dokładna regulacja obrotów silnika, ale efekt wizualny, a wiemy, że ludzie oko postrzega światło silnie nieliniowo. Ten motyw który zastosowałem w zupełności wystarcza na...
Mam problem, mam do napisania dodawanie dwóch liczb w BCD. Pierwsza liczba w komórce pamięci 2000H druga liczba w komórce pamięci 3000H Wynik w komórce pamięci 4000H Dodawane liczby maja byc n-krotnej precyzji (n-bajtowe) Teraz co mam narazie ... To dodaje mi dwie liczby w BCD .. ale nie uwzględnia korekcji dziesiętnej .. Czy wie ktoś może jak zrobić...
W jakim kodzie są dodawane liczby - bin czy BCD? I w jakim kodzie ma być wynik bo jeśli w bin to dodając do siebie dwie 11-bitowe liczby potrzebujesz tylko dwóch rejestrów 8 bitowych na reprezentacje wyniku.
przemo_wielki, wlasnie o to chodiz ze dodawanie cyfr mam na pewno dobrze zrobione bo napisalem juz dodawanie cyfr z tym wyjatkiem ze wynik musi byc rowniez cyfra, glownie chodzi mi o wyswietlanie liczby dwucyfrowej i z tym mam problem (te dzielenie przez 10 i wypisywanie reszty i czesci calkowietej), gdzie mam blad ze zle mi wypisuje???
add ZL,offset To pewnie nie to ale zamień to dodawanie na dodawanie pełnej wartości (całego słowa 16 bitowego - w helpie jest z addc i add) i jeszcze to: ldi ZH,high(tablica_cyf<<2) ldi ZL,low(tablica_cyf<<2) Ja tam mam przesuwanie <<1 a to <<2 to chyba przesuwa 2 razy i pewnie tu leży błąd.
ja gdzie widzialem i dodaje do naglowkow takie cos co caly plik pomija jak juz byl #ifndef p__uart1_plik__ #define p__uart1_plik__ ..... #endif a jesli chodzi o asm w keilu na '51 to do *.src jakos sam dodaje definy rejestrow '51 i trzeba odznaczyc w opcjach projektu.
... zrobiłem to celowo by kod był możliwie najkrótszy choć tak naprawdę można byłoby go jeszcze skrócić pisząc w asm bo kompilator dodaje prolog i epilog ISR...robiw Nie trzeba assemblera - wystarczy ISR_NAKED: http://www.nongnu.org/avr-libc/user-manu...
assembler dodawanie assembler dodawanie bitowe assembler darmowy assembler
mixer przedwzmacniacz kernel security check mainy ricoh
Alfa Romeo 159 1.9 JTDm 120 KM 2006 – opinie, awaryjność, doświadczenia użytkowników Jak podłączyć zasilacz CISCO DPS-650AB-2 A na krótko?