pokaz swoje wypociny
Po pierwsze należy się zapoznać z procesorem, na który ma być pisany program. Szczególną uwagę należy zwrócić na rejestry i organizację pamięci. Dopiero później można pisać program. Podejrzewam, że dowolna książka traktująca o 8051 zaczyna się zwykle od takich informacji. W moim przypadku sprawdziła się np. "Podstawy programowania mikrokontrolera 8051",...
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.
Witam. Zaczynam naukę mikroprocesora 8086. Trochę poczytałem i chcę napisać swój pierwszy program, dodawania 3 liczb 8-bitowych. Czy może to wyglądać w ten sposób? .model small .stack 100h .data .code start: mov ah,0 int 16h ;pobiera znak z klawiatury i zwraca w AL mov bl,al ;przerzucam liczbe z AL do BL mov ah,0 int 16h ;pobiera drugi znak z klawiatury...
wynik ma byc cyfrą.Przy obliczaniach gdzie nie wychodzi cyfra,np 9+5=14 uwzgledniamy bledny wynik:D co najwyzej komunikat o blednym wyniku ma sie pojawic
no ja nie wiem...dla mnie asembler trudniej wygląda ;) Dodaje w załączniku ten plik hex i pliki w C
dobra a wiec od nowa pisze co i jak, dostałem od nauczyciela trzy pytania dotyczace asemblera, ja osobiscie jeszcze nic w nim nie robilem nie mialem stycznosci i troche go nie kumam.... 1. Inkrementacja jest to..., natomiast dekrementacja jest to ... w języku programowania ASEMBLER 2. Napisz prosty program w ASEMBLERZE dla układu 8051 realizujący funkcje...
Najwyraźniej skopiowałeś funkcję bez zrozumienia. Twoje "Oblicz_długosc" funkcjonalnie odpowiada strlen() z języka C, czyli liczy długość łańcucha znaków aż do wystąpienia znaku o kodzie równym 0, którym w języku C (i nie tylko) oznacza się koniec łańcucha. W pierwszej tablicy masz napis i asembler sam dodaje znacznik końca o kodzie 0 - dla kompatybilności...
No przecież jest addc. Czyli dodawanie z przeniesieniem.
Witam Na czwartek muszę przygotować listingi programów napisanych w asemblerze które wykonają poniższe działania: 1. Dane są liczby: A=0F1h, B=00011111b. Obliczyć binarnie A+B, A-B, B-A. Podać wynik w postaci binarnej i szesnastkowej. 2. Napisać program mnożenia x4 liczby umieszczonej w rejestrze R7 bez użycia instrukcji mul ab. 3. Napisać program obliczający...
Witam. a i x są liczbami 16 bitowymi. wykonałem mnożenie liczby 16bitowej przez 16 bitową i teraz mam problem bo nie mogę zrobić dodawania(+b). wynik mnożenia liczba 32bitowa, chciałem dodać jakąś liczbę 8bitowa. moje pytanie jak zrobić w asemblerze dodawanie liczby 8b do 32b?
Sproboj chociaz cos nagryzmolic..jakies mov'y add'y Poki nie zaczniesz nikt nie rozwiarze ci zadania za ciebie. Proszę poprawić pisownię! Robak
W r6 jest T0TC czyli licznik timera. Jest on zwiększany co 40 cykli (T0PC - timer prescaler). Jeśli chodzi o samo wejście do przerwania, to czasu wystarczy - pierwsze spróbkowane bity ewidentnie odpowiadają bajtowi synchronizacji bez 2, 3 pierwszych bitów, ale to bez znaczenia, ważne jest wyłapanie początku pierwszego bajtu danych (PID). Spróbuję to...
C pod windowsem, asembler na Dosie\
A jak mogę wyświetlić zawartość rejestru w konsoli, żeby nie wyświetlały się krzaki? Musisz zrobić konwersję znaków z rejestru na ASCII. Do znaków 0-9 dodajesz '0' (30h), a do znaków A-F dodajesz '7' (37h).
Ależ sumuje dobrze, tylko żeby wyświetlić, musisz dokonać odpowiednich konwersji. Pamietaj, że wyswietlasz tylko znak o wskazanym kodzie ASCII. Dodawanie i odejmowanie od tego kodu 30h powoduje "konwersję" cyfry na kod ASCII tejże cyfry lub odwrotnie. Zatem wyswietlanie wyników >= 10 wymusza potrzebę wyświetlenia dwóch znaków: 1. O wartości ASCII (wynik...
i jeszcze o języku C ;-) aczkolwiek asembler '51 jest dość przyjemny. Mogłbys także nieco bardziej rozwinać jaką masz koncepcje, np. z jakiej 51 chcesz korzystać i jak te liczby chciałbyś wporwadzać - chodzi mi głównie o to, że od sposobu podłączenia zależeć będzie liczba potrzebnych "nóżek" i sposób sterowania.
Trochę dawno pisałem w asm i nie wiem czy jest gotowe przerwanie do wypisywania liczb ale możesz zrobić np. tak: 123 :10 = 12 reszta 3 12 : 10 = 1 reszta 2 1 : 10 = 0 reszta 1 Dzielisz liczbę przez 10 i wrzucasz reszty z dzielenia na stos dopóki wynik z dzielenia różny od 0. Później ściągasz ze stosu dodajesz 48 i wypisujesz.
Witam Wydaje mi się, że: 1) Dając INC PARZ , zwiększasz to co pod PARZ, a nie PARZ, czyli (PARZ) <-- (PARZ) +1 2) Chyba nie ma takiego trybu jak ADD PARZ,2 , dodawać można tylko do akumulatora. Poza tym pamietajmy o # przed daną ;) Dlaczego nie wykorzystać rejestrów, ja np. zrobiłem to tak: MOV R1,#22H MOV A,#2H ORG 100H MOV (at)R1,A LJMP START START:...
Tak PutStr i GetStr to makra Aktualnie program wygląda nastepująco: PutStr input GetStr wejscie nwln PutStr output GetStr wyjscie je odczyt odczyt: movah, 3dh moval, 0 movdx, wejscie int21h movbx, ax movah, 3fh movcx, 1024 movdx, bufor int21h movah, 3eh int21h xor di, di je porownajbuf porownajbuf: mov dl, [bufor+di] mov ah, dl inc di...
Czesc Wiem że instrukcja adc dodaje do siebie pare rejestrów ale o co chodzi z tym przeniesieniem bo nie mogę tego rozkminić.
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...
A z tego co mi wiadomo, to można do bascoma dodawać kod ASEMBLEra? Może zrobić losowanie z ASEMBLERZE? tylko, że ja nie znam nic z Asemblera.
tylko jak rozpoznać czy naciśnięty klawisz to było +-*/ i co zapisać w rejestrze żeby wiedziało ze to będzie +-*/ no i jak odczytać z rejestru ze jeśli jest to to robi to a jeśli to to. i w klawiaturze matrycowej nie mam znaków +-*/ tylko chciałem to przeprogramować na te znaki np wciskam "prawo" to dodawanie. Tego nie rozumiem. Zapomniałem dodać że...
zle rozumujesz Gdzie napisałem ze powoduje? Nie napisałeś nic - dlatego poprosiłem o wyjaśnienie. Po prostu twierdzę, że Twój sposób sterowania jest lekko dziwny i chciałbym pojąć jego zasadę działania - może wtedy ulepszyłbym sterowanie u siebie. Mnie chodzi o krytyczne warunki. A mnie o stworzenie optymalnego sterownika :) Jak wszystko jest ładnie...
Witam, Można wykorzystać rozkaz DA A ale należy pamiętać że jest on wykonywany poprawnie tylko po instrukcjach ADD i ADDC. Dlatego odejmowanie należy zastąpić dodawaniem zanegowanej wartości. np: 59H-21H = 38H MOV R0,#59h MOV R1,#21h MOV A,#99h ; uzyskanie negacji w kodzie BCD SUBB A,R1 ADD A,#01h DA A ADD A,R0 ; 59h+(-21h) DA A Pozdrawiam JarekC
Hej, Na początek, odejmować, to znaczy dodawać zanegowaną wartość. Czyli: 10 - 50 to nic innego jak 10 + (-50) Skomplikowanie to wygląda, ale zaraz tłumaczonko będzie, tylko uruchomię sobie SIM51ENG, bo taki mam dostępny symulator 51, bo rozumiem, że to dla MCS-51 ma być? Oto kod w asemblerze. mov R0,#10 przesyła do rejestru R0, pierwsza liczbe mov...
Witam wszystkich :) Przyjąłem już strategię działania. Otóż, wersja MikroLuk v2.0 zostanie wypuszczona z moim własnym asemblerem, obsługą dwóch, może trzech programatorów, symulatorem i następującymi możliwościami integracyjnymi: 1. Będzie można zdefiniować obsługę programatora poprzez wywoływanie zewnętrznego oprogramowania, będą również dodane standardowe...
Witam. Gratuluje pomysłu, fajne urządzenie z b szerokim zastosowaniem. Mam kilka pytań do autora; 1 - jak się zapala pojedynczy piksel? To jest LCD 84pixle*84pixle? tzn jest 7056 wszystkich pixli? Jeżeli tak to jak to jest realizowane? 2 - na laborkach uczę się C++ w Visual studio 2005 i patrząc na Twój program większość była dla mnie zrozumiała, pytanie...
Ściągnij sobie rozkazy asemblera http://www.edw.com.pl/index.php?module=C... Asembler- język maszynowy... i spróbuj napisać jeszcze raz bo jak narazie to nie widać tu twojej pracy własnej.
Rozumiesz o co chodzi? Większość tak, dziękuję bardzo :) Chciałbym jeszcze spytać co mogę wstawić pod "wartość" i dlaczego do stack pointera dodaje się i odejmuje 2 a nie 1? (skoro przykładowo ściągamy pierwszy element od góry, a nie pierwsze dwa)
Ramka danych składać ma się z ośmiu bajtów danych. czyli jak? 8 bajtów danyh + bajt/bajty sumy kontrolnej? najprostszą sumą kontrolną (stosowaną w plikah .hex) jest dodawanie wszystkih bajtów, i zanegowanie... taka suma jest wystarczająca jak w temacie piszesz "Bascom albo asembler" to powiedz przynajmniej na jakiego procka to chcesz.
no ok... ale wynik czego ? dodawania czy zliczania to po pierwsze a po drugie jaka '51 ma port P5 ? Czy jak wystąpi przeniesienie to wyświetlić wynik występujący po nim (nie 8 bitów) czy przed nim. od którek komurki pamięci zacząć dodawać ? jak sprecyzujesz pytanko to ci pomogę.
nie wiem-zainstalowałem tego Codevision ale z tego co wyczytałem to tam poruszać się tylko można w C a dla mnie to czarna magia. Próbowałem skopiować kilka programów w C na ATM16 i dodawałem tam komendy zwiazane z funkcjami ale podglądu do asemblera nigdzie tam nie widzę. Chyba dalej bedę siedział nad jak najprostszym liczeniem moze z przybliżeniem...
Jeśli chcesz zoptymalizować pętlę jeszcze bardziej, to zamiast for-ować od 0 do max, for-uj od max do zera. Co obrót pętli zaoszczędza się jedną instrukcję, porównaj sobie w obu przypadkach asembler wygenerowany przez kompilator. Dobry kompilator sam to zrobi. Sam sie kiedyś zdziwiłem, ja dodawałem a kompilator odejmował :]
Wystarczy jakiś mały mikrokontroler najlepiej z 2 licznikami. Napisanie programu nawet w asemblerze nie będzie trudne. Dodajesz jeszcze mały wyświetlacz alfanumeryczny i po spr`awie.
atom: masz dane do wysłania, dodajesz CRC i ślesz to (dane + CRC) odbiorca odbiera wszystko i tym samym algorytmem liczy CRC dla odebranego bloku danych (dane + CRC). Jeżeli otrzymana wartość jest stała (z góry znana), nie było błędu w transmisji i dane (już bez CRC ) można mleć dalej... A czy ja napisałem coś co sugeruje inaczej? To ma chyba tak dzialac...
Akumulator to tylko nazwa rejestru. Potrafił akumulować wyniki z ALU i był docelowym rejestrem do której zapisywany był wynik operacji. Obecnie wyniki mogą być zapisane do dowolnego rejestru z pewnej grupy rejestrów, więc nadaje się im po prostu nazwy R0..R31. Jeżeli, któryś z nich dodatkowo spełnia jakąś funkcję to nadaje się mu ekstra nazwę. Nazwa...
No tak sie przymierzam żeby odstapic od bibliotek, narazie chce poznac procka i jego mozliwosci przez przyklady ktore mam. Mysle ze na poczatek to jest dobre potem nastepny poziom tajemnej wiedzy - max to chyba asembler gdzie umiem tylko dodawac :)
Ale zawsze masz stałe opóźnienie, czyli wykonanie inkrementowania sekund byłoby stale po prostu przesunięte względem impulsu z zegara. No niekoniecznie ten czas będzie stały. Licznik trzeba odpowiednio sterować, po 60s inkrementować już minuty, potem godziny. Konieczne jest też zerowanie odpowiednich wartości. Zatem ten czas będzie się zmieniał. Jednak...
to o czym piszesz najprawdopodobniej jest jakas funkcja w C, ktora jest zrealizowana na jeden ze sposobow o ktorym pisalem. jaka DOKLADNIE operacje ma realizowac twoj sumator? OR? XOR+AND? ile bitow ma byc sumowane? czy maja byc sumowane po prostu bity i podawany wynik, czy istotne jest, zeby carry z poprzedniej pary bylo dodawane do kolejnej? tu jest...
Witam. Timer mikrokontrolera '51 taktowanego zegarem 11.059200 MHz zliczy w ciągu jednej sekundy 921600 impulsów. Ze względu na wielkość timera (2 bajty) może Kolega zliczać setne części sekundy - ustawić przerwanie co 9216 impulsów. Każde wywołanie przerwania zwiększy zmienną o 1, czyli mamy w niej wynik pomiaru z rozdzielczością 0,01 s. Rozwiązanie...
Reasumując: program obsługi "żelazka": - na PC startuje "tylko" kiljka minut, czasem działa w czasie rzeczywistym - na uC staruje 4ms, czas rzeczywisty nie jest problemem. A z czego to wynika? (tak jak i cała różnica między tymi dwoma docelowymi platformami) Otóż z tego, że na PC piszemy program, który działa pod kontrolą takiego lub innego systemu...
Jest taka sprawa. Stworzyłem sobie pętlę For Krok Next w Asemblerze [syntax=armasm]For_plus: ADIW R24 ,4 CP R24,R26 CPC R25,R27 BRNE For_plus[/syntax] Można w niej zarówno dodawać, jak i odejmować. W przypadku odejmowania należy ADIW zastąpić SBIW Jednak ma ona kilka wad. Po pierwsze maksymalną liczbą do której doliczy jest 65536. Po drugie krok może...
Najprościej jest tak: do zawartości rejestru w momencie wyświetlania dodać "poprawkę" ASCII - czyli trzeba zajrzeć do tablicy ASCII i tam 0 odpowiada chyba 30hex - czyli do zawartości rejestru dodać trzeba 30hex czy coś takiego, dokładnie nie pamiętam. Ale to załatwia tylko jedną tetradę, żeby mieć liczbę np. dwu cyfrową chyba najłatwiej jest liczyć...
Ale mimo wszystko zastanawia mnie czego unikać aby przysłowiowo nie "zamulić" programu. Moze są ogólne rady. Zakładając, że nie korzystamy z wait czy waitms w pętli głównej to widać, że już jakieś doświadczenie masz w programowaniu, i powoli jak mówią koledzy wyżej dochodzisz - jak każdy zresztą- niestety do kresu możliwości Bascoma. Tzn można z niego...
Dodawanie : ; PODPROGRAM WIELOBAJTOWEGO DODAWANIA ; WEJSCIE: ;R0 - ADRES NAJMLODSZEGO BAJTU PIERWSZEGO SKLADNIKA ;R1 - ADRES NAJMLODSZEGO BAJTU DRUGIEGO SKLADNIKA, NIE MODYFIKOWANY ;R2 - LICZBA BAJTOW ; WYJSCIE: ;R0 - ADRES NAJMLODSZEGO BAJTU WYNIKU ;R2=0 ;PRZENIESIENIE C I PRZEPELNIENIE OV JEST ;USTAWIANE W TAKI SPOSOB, JAK W ROZKAZIE ADDC...
Witajcie, Dużo szukałem, ale nie mogłem znaleźć Działającego programu do kalkulatora, który dodaje, odejmuje, mnoży i dzieli ( Może też pierwiastkować ) maksymalnie 3 liczby 16-sto bitowe i wynik pokazuje na wyświetlaczy LCD. Jak by ktoś posiadał to był bym wdzięczny za wstawienie.
pan B dodaje od lewej do prawej strony, na kartce też tak sie robi..Wywody o kodzie binarnym nie są mi potrzebne i nic nie wnoszą na postawione pytanie. W lewo w prawo to wiem, przecież nie robie tego w systemie trójkowym i skoro asembler to wiadome jest ze w AVRStudio.
Tak masz rację, nie orientuję się w asemblerze, ładnych parę lat pisałem jakieś proste programiki na zajęciach i tyle... Potrzebne mi to tylko po to, żeby pokazać, że język drabinkowy może być uproszczeniem takiego programu w asemblerze i szczerze mówiąc tylko po to mi potrzebny ten program... nie chcę się uczyć asemblera, moje zadanie dotyczy czego...
...przychodzący brodcast (ARP) dodaje wpis przesuwając (jakoś) pozostałe Nie ma przychodzacego broadcastu, broadcast i multicast sa sprzetowo zablokowane, w PC jest po prostu takze w tablicy arp dodany odpowiedni wpis.
Ja w takim przypadku dodaję moduł w asemblerze. #include <avr/io.h> #include <avr/interrupt.h> ; przepełnienie timera0 - nic (wybudzanie) .global SIG_OVERFLOW0 SIG_OVERFLOW0: ; tu można wstawić kod reti Szablonowo wygląda to tak mniej więcej tak.
Witam, za zajeciach z techniki mikroprocesorowej przerabialiśmy podstawowe zagadnienia z arytmetyki w programowaniu asemblera 8051.Podany niżej program musze przerobic aby dodawał dwie liczby dwubajtowe.Wiem ze powinnen najpierw dodać młodsze bity z przeniesiem a potem starsze ale za bardzo nie wiem jak to zrobić dalej.Czy ktoś mógłby troche mnie pokierować?...
W asemblerze da się to napisać w postaci pętli bez problemu. Spokojnie mógł bym to napisać, tyle że jest dużo szczegółów do obgadania - ja w asemblerze pisze tylko dla WinAVR, nie dla Codevision, więc niewiem jak są przekazywane parametry do funkcji w asemblerze, jak się dodaje wstawki, ile trwa jeden przebieg przy próbkowaniu ciągłym (musiał bym się...
A co to jest "BCD ze znakiem"?
adc reg,reg A bez wsunięcia CY: add reg,reg
"Chcesz się nauczyć asemblera pisząc w języku BASCOM Basic?" a co- bardzo fajny: $asm ... ... $end asm Samo $ASM...$END ASM nie wystarczy. Bascom dodaje też coś od siebie. Nawet jakbyś pododawał te pozostałe dyrektywy wyłączające to musisz się trzymać kilku ograniczeń. Powstaje hybryda której nie da się kontrolować w pełni, a nie o to przecież w pisaniu...
To jest kwestia podstaw znajomości systemów operacyjnych i dostępu do systemu plików na dysku. Kiedyś to była podstawa wiedzieć. Znak "\" czy "/" to dla OS tylko inne znaki ASCI - jądro systemu musi interpretować co ma z tym zrobić. W zamierzchłych czasach, kiedy DOS 6.22 był nowością było coś takiego jak pojecie programu rezydentnego. Złośliwcy dodawali...
Wyświetlasz tak jak znaki, tylko musisz zamienić swoją liczbę na ASCI. Stwórz sobie podprogram który będzie zamieniał liczbę z danego rejestru na ASCI z dowolnego formatu. Pamiętaj, że liczby są przechowywane w formacie HEX. Zobacz czy nie masz komendy która konwertuje HEX na BCD (dziesiętny), wtedy tylko dodajesz $30 to każdej cyfry z BCD i masz pikną...
Kod dodający nie ma teraz sensu.
Rzeczywiście da się. Dodajemy trzy linijki a kod w asemblerze staje się krótszy . Czy to nie jest genialne ? Faktycznie jeśli powodem dyskusji stają się "przyzwyczajenia", to warto wrócić do tematu.
Dobry wieczór! Nadszedł czas kończenia odłożonych na później tematów. Wcześniej nie wiedziałem, jaki format będą miały dane, które prześlę do CA80 za pomocą karty SD. Asembler TniAsm, który wcześniej używałem, nie tworzył plików *.hex (albo nie umiałem tego zrobić), a plik *.bin jest trudniejszy do obróbki. Sbasm ma wszystko, czego potrzebowałem, więc...
Ale asemblera też nie porzucaj, bo on pozwala na pełne panowanie nad danym procesorem, na pisanie bardzo zwartych fragmentów kodu a także fragmentów wymagających wyciśnięcia maksymalnej prędkości z procesora. Same zasady pisania programu w asemblerze są podobne jak i w językach wyższego poziomu tyle, że kolejne kroki rozpisuje się na podstawowe rozkazy...
dziękować :) ale asemblera nie znam. wiem że dwa razy jest zero dodawane. ale nie powinno to powodować nie wyświetlania się znaku. dzieki za wersje ze wskaźnikami. też taką miałem pierwotnie. sprawdze jeszcze raz na tej Twojej.
Nie wiem dlaczego to chcesz napisać w Asm, ale musisz wiedzieć, że Bascom generuje plik OBJ który mozesz załadować do Atmel Studio i podejrzeć wygenerowany kod Asm. Mój program NoSave Tool także potrafi te dane wyciągać z pliku OBJ tyle że szybciej i przyjemniej - jednym klikiem. Proszę to zdeasemblowany kawałek (nie cały) kodu wraz z opisami która...
Dawno temu programista ,to był człowiek z wiedzą ,który znał asembler i potrafił myśleć binarnie . Ale że człowiek sobie upraszcza to dziś mamy arma w czajniku który przyspiesza mało optymalny bo uniwersalny kod. Rzeczywiście działa szybciej na 100MHz zegarze w stosunku do starej 0C51 która miała cykl rozkazowy 12 taktów zegara czyli przy zawrotnych...
żadne, wszystko zależy od tego jak wygląda Twój program i czy umiesz posługiwac się asemblerem. Przy dobrym wietrze koło 30% używaj szukaj I tu bym się niezgodził. Zanim zacząłem programować mikroprocesory jednoukładowe w C moje największe programy napisane mieściły się w 2kb pamięci i też wykonywały obliczenia matematyczne typu dzielenie i mnożenie,...
Adresy urządzeń mi nie pomogą. Dla jasności, nie znam asemblera, miałem dopiero jedną lekcję z niego.
Chyba faktycznie zaczne sie uczyc assemblera bo ten mikropascal nie ma wogóle żadnej pomocy Wiesz, powiem Ci, że aby zacząć programować w asemblerze wystarczy znać nazwy najważniejszych rejestrów, wiedzieć za co odpowiadają i mieć pod ręką listę rozkazów dla danego procka. W porównaniu z Micropascal, Microbasic, BASCOM lub nawet z C, w przypadku programowania...
Witajcie szukając dobrego i w miare taniego narzedzia dla 51 zeby miało asembler, IDE i kompilator C trafiłem na produkt firmy Wickenhäuser Elektrotechnik. Całe środowisko sprzedają za 99 Euro i na niektórych stronach userzy pozytywnie sie wypowiadają że mały zwarty i szybki kod generuje. Czy moze ktos uzywał tego narzędzia i mógłby się wypowiedzieć...
Poza tym ja umieszczę w programie tylko to jest mi potrzebne i to co wykorzystuję biblioteka czy wykorzystasz 1 czy wszystkie doklei się zazwyczaj w całości. To są niby drobiazgi ale jednak są To oczywiście nie jest prawdą. Linker sprawdza co jest wykorzystane i kod do którego nie ma referencji jest usuwany. Także z całej biblioteki, o ile ją linkujesz...
Panowie, czy któryś z was używał VUSB z pamięcią zewnętrzną RAM ? Ja mam 64k na mojej płytce z atmega128 i niestety gdy dodaje: [syntax=c] void before_main(void) __attribute__((naked)) __attribute__((section(".init3"))) { MCUCR = 1<<SRE; SFIOR = 1<<XMBK | 1<<XMM0; DDRC = 0x80; PORTC &= ~(1<<7); SP = 0xffff; } [/syntax] do...
Jeśli pan podpina wyświetlacz do at89c2051 ,który nie ma wyjścia magistrali 8080 i emuluje pan jedną żeby przerobić na drugą dodając jeszcze zewnętrzne bramki to nie wiem do końca czemu ma to służyć profesjonalizmu to tu jakoś nie mogę się doszukać . U dobrego programisty to jest stabilizator kilka kondensatorów rezonator kwarcowy o ile jest taka potrzeba...
Witam, Postanowiłem sobie napisać program w C, który wyświetla na ekranie TV jakiś obrazek.. Chciałbym do tego użyć języka C, beż użycia asm,którego w ogóle nie znam. Tutaj można zdobyć trochę wiedzy: !!Uwaga poprany i działający kod jest [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/pgmspace.h> uint8_t PROGMEM...
witam nic prostszego! zaczynasz od wyzerowania wyniku i zrobienia pętli dla wszystkich cyfr liczby wejściowej, począwszy od najbardziej znaczącej W pętli: 1. mnożysz wynik przez podstawę liczby wejściowej (czyli 8) 2. dodajesz do wyniku kolejną cyfrę liczby wej. na którą wskazuje stan pętli np zmieniasz liczbę 157 1. wynik=0 2a. wynik*=8 podstawa liczby...
Kolego z tego co zaprezentowałes nic nie będzie, wystarczy ten program skompilować i popatrzeć na listę błedów. Brak w nim opisu podprogramów (wszystkie nazwy po lcall). Nie rozumiesz tez do konca liczby dwóbajtowe. Dwa bajty=16 bitów=65535 i taka może byc najwieksza liczba zapisana na dwóch bajtach w zapisie binarnym. Ale mozna sobie równierz zorganizowac...
dobra dobra... możesz skorzystać i przerobic... 5.00 V =255 > czyli 0,0196 V = 1 najstarszy bit 10000000 = 80=128 (*0.019...)= 2,5 = 2512 01000000 = 40=64 = 1,254= 1254 00100000 = 20=32 = = 0627 00010000 16 0314 00001000 8 0156 00000100 4 0078 00000010 2 0039 00000001 1 0020 ----- 40 suma 260 1700 3000 ------ 5000 tak więc - sprawszasz najstarszy bit...
Po pierwsze to powinieneś najpierw zadbać o TL0 bowiem to on "ucierpi" w pierwszej kolejności pod wpływem impulsów z licznika. Korekty dokonujesz dodając niezerową zdefiniowaną stałą do obecnej wartości młodszego bajtu licznika. TL0=TL0 | 0x30; TH0=0xF8; W asemblerze będzie to: ORL TL0,#30h MOV TH0,#0F8h Można także dokonać dodawania jak zaproponował...
Witam. Ostatnio udało mi się przeczytać (pobieżnie) książkę Rafała Baranowskiego "Mikrokontrolery AVR ATmega w praktyce". Do tej pory do AVR-ów używałem C. Jednakże chciałem sobie popróbować asemblera. Nie miałem problemów, aby uruchomić program, który był w całości napisany w asemblerze. Problem pojawił mi się, gdy chciałem napisać program w C, a jedną...
Mam zaprojektować filtr cyfrowy, na mikroprocesorze 8051F362. Ten procesor, ma specyficzną jednostkę dodające-mnożącą i mam prośbę, czy może mi ktoś napisać prosty program w asemblerze ( z tłumaczeniem) , jak wykorzystać jednostkę dodający-mnożącą.
Witaj Nie wiem w czym widzisz problem, mnozysz czy dodajesz rownie dobrze liczby 32bitowe takze w asemblerze. Troszke wiecej problemy jest gdy je dzielisz, ale to tez do przeskoczenia (zamiana na ułamki i mnożenie) Duza liczba bitopw jest potrzebna gdy mnożysz liczby z granic przedziałów, czy ułamki, a tak to wystarczy ci najstarsze 8bitów z wyników...
Nie umarł i nie umrze, aczkolwiek może zostać "zdegradowany" do pozycji języka, który jest potrzebny tylko do napisania kompilatora. Stanie się tak, jeżeli pojawi się jezyk wysokiego poziomu, a właściwie to kompilator takiego języka, za pomocą którego będzie można uzyskać kod równie wydajny. Chociaż i tak zawsze pozostanie grupa entuzjastów asm. Znajomość...
Próbowałem mikroC. Dla programisty dobrze znającego asembler (aby weryfikowac co kompilator produkuje dla konstrukcji w C) to jest duże ułatwienie. Ale w testowanej wersji było duzo irytujących błędów. Wszystkie na które trafiłem wystepowały tylko w okreslonych złożeniach kilku czynników. Jest to o tyle "wkurzające" że masz już kawałek programu przetestowany,...
Dodaje nieusuwalną przez kompilator instrukcję asemblera "nop" (nic nie rób, bodajże 1 cykl i 1 bajt) nie pozwalając tym samym na usunięcie "nic nie robiącej" pętli. Nie jestem teraz pewien, czy akurat w tym wypadku jest to uzasadnione, ale podejrzewam, że jest to jedno z działających rozwiązań :) Przy okazji - warto korzystać z plików .lss ! Widać...
Witam wszystkich serdecznie, jestem tutaj nowym userem i dopiero raczkującym w świecie MCS51, dlatego proszę o wyrozumiałość. Mam taki problem: Mam program, który przesuwa diodę. diodybit P5.1 switchbit P5.0 daneequ P4 cseg at 8000h clrdiody <----- nie rozumiem tej linijki movB,#00000001B PROGRAM: movP4,#11111111B movA,P4 movA,B rlA movB,A movdane,A...
Masz 2 wyjścia. 1. Funkcji obsługi przerwania trzeba ustawić atrybut : __attribute__ ((interrupt ("IRQ"))) który dodaje prolog i epilog funkcji obsługi przerwania. Ale podobno nie zawsze dziala... 2. Piszesz sam prolog i epilog funkcji obsługi przerwania w asemblerze. I zamiast skoku pod AIC skaczesz do etykiety obsługi przerwania która powinna zachowywać...
Musisz jeszcze pamiętać że akumulator jak i rejestry prawdopodobnie są ośmiobitowe a co za tym idzie nie możesz sobie tak bezmyślnie dodawać szesnastu liczb i trzymać ich sumy w akumulatorze bo się tam ta suma nie zmieści. Wynik musisz zapisywać na dwóch bajtach i dopiero dodawać kolejną bajtową liczbę. Zazwyczaj w asemblerze, ale to zależy od konkretnego...
Rewersing nigdy nie był łatwy , bo z pliku który otrzymujemy możemy uzyskać kod asemblera , pozbawiony etykiet , komentarzy ze skokami opatrzonymi jedynie w adresy skoków w pamięci . Nie tylko adresy. Deassembler może dodawać labele (oczywiście tylko z numeracją), oraz usuwać labele do których nie wykrył żadnych skoków czy odwołań. Do tego cześć armów...
dodaje dwie liczby dwucyfrowe do 372 to jest pewne na pewno to robi poprawdzie to pomocy
Ok. Dzięki, bo sposób jest interesujący i warto się takowego nauczyć, jednak jak wygląda sprawa z prędkością podmiany danych, ewentualnie dodanie danych do listy. Pytam bo u mnie jest trochę więcej danych i chce wycisnąć jak najmniejszy czas, trochę skrócona wersja type cPointMax = 2000000; TTbPoint = array[0..cPointMax] of TPoint; PTbPoint...
Z pewnością sposobów jest mnóstwo. Przypomniałem sobie troszkę asembler mcs51. Mam nadzieję, że program w asemblerze wyjaśni wątpliwości (albo pogłębi ;-) ). Skorzystanie z "tabliczki dzielenia" lub "tabliczki mnożenia" na liczbach o podstawie 2^8 przedstawia poniższy program. Tabelę rozbiłem na 3x256 bajtów. Obliczenie realizowane wg zależności x=256*a+b...
Jak wyliczyć (Wykonać) dokładnie opóźnienie np. 500ms Nie chcę tego robić na timerze ! Chodzi mi o to jak wyznaczyć taką liczbę cykli procesora które zajmie pętla for tak aby wykonała się dokładnie w 500ms Do dokładnego odmierzania czasu służą timery. Jeżeli nie chcesz, to masz złe podejście. Nie chodzi mi o czysty assembler tylko o wykonywanie pętli...
• 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...
Nie bardzo rozumiem o co chodzi większość asemblerów dopuszcza komendę inc ("coś.obj") - czyli włączenie skompilowanego pliku asm , c, pas. Więc jeśli chcesz, to co robisz zrobić dobrze to pomyśl o działaniu z bibliotekami lib. Ważne jest to żeby stosować adresowanie ideksowane i zapewnić przenośność kodu w pamięci, nie stosować sztywnych przypisań...
tak to jest najszybsza metoda wykorzystujaca przesuwanie i dodawanie wartosci 3 .Porownanie czasu tej operacji w asemblerze a sposobow napisanych w basicu pokazuje jakie to sa roznice.Algorytm jest kilka razy szybszy i kilka razy mniejszy.i ta metoda nie jest tylko dla 8-bitowych liczb lecz dla kazdej wielkosci liczby.po prostu zamiast 8 bitow przesuwamy...
Czy ktos mi pomoze zdobyć jakieś infornacje związane z prostymi operacjami arytmetycznymi zmiennoprzecinkowymi (dodawanie, odejmowanie, mnozenie?. dzielenie?) na MCS-51. Będe wdzięczny za jakis programik (w asemblerze) na ten temat. Dzięki.
Witam. Usiłuję od dłuższego czasu napisać fragment kodu pracujący pod DOSem (DOSBox) który ma za zadanie czytać znaki z klawiatury do wektora. Wektor ten ma być później wypisany na konsoli. Poniżej kod - jest jakiś błąd, albo ja nie rozumiem czegoś do końca... [syntax=asm] .model small .stack 100h .code bufor db 8 dup(6h) ;definiuje wektor 8 elementów,...
a w jakim języku programujesz ? Bo np.: w Bascomie jest gotowa funkcja. Programuje w asemblerze. Teraz mi się przypomniało, że 6 się dodaje po dodaniu dwóch liczb bcd. Najpierw do mniej znaczącej liczby. Jesli nie nastąpi przepełnienie półbajtu to się tą 6 spowrotem odejmuje, jak nastąpi to się zostawia i robi to samo ze starszym półbajtem. ... Więc...
Witam, Jak juz pisalem wczesniej zaczynam picoblaze i mam problem z tutorialem www.xilinx.com/products/boards/s3estarte... Po asemblerze zostaje wygenerowany nowy plik control.vhd, dodaje w nim port proc_reset : out std_logic;, lacze z resetem picoblaze (kcpsm3_reset), ucf-a nie zmieniam (jest sciagniety razem z tutorialem). Po...
Trochę się gubię w takiej sprawie: w trybie Thumb adresy kodu dla instrukcji skoku mają być nieparzyste; niestety kompilator C czasem mi generuje parzyste, co oznacza przejście do trybu ARM. Przykład: deklaruję funkcję zewnętrzną, która jest napisana w asemblerze, i potrzebuję użyć jej adresu - dostaję parzysty; jak to zrobić, żeby wychodził nieparzysty?...
dodawać liczba asembler dodawać kolumna schemat dodawać
backup android centrala alarmowy schemat pomiar zysku anteny
electrolux ewt1066edw diagbox akumulator
Moc grzałki w układzie trójkąt vs gwiazda Regulacja czasu załączania w myjce ciśnieniowej Kärcher