no przecież jest assemblerowa instrukcja ROR - w czym problem? 4\/3!!
Należy przed skokiem przesunąć stos programu o dwa czyli najprościej: INC SP INC SP
Przede wszystim, jesli oczekujesz pomocy, musisz podac na jaki procek ten assembler. Po komendach widze ze nie jest to x86, czyli PCet. Byc moze chodzi o jakis mikrokontroler. Nie wiem czy wiesz, ale assembler nie ejst przenoscym jezykiem i nie ma jakies jego standardu - w przeciwienstwie do Ansi C czy pascala. Dalej nie wiem czy wiesz, ze nawet jesli...
MAIN: Mov SP,#SPVALUE i tyczy się #SPVALUE . Może trzeba coś zadeklarować na początku? SP - Stack Point /wskaznik stosu/ polecam lekture assemblera, w skrócie chodzi o to żeby przesunąć stos powyżej używanych rejestrów... Wystarczy że dodasz choćby coś takiego i będzie działać bez problemu.. SPVALUE DATA 032H
Jaki przykład ? Pytałem z twojej strony o przykład podnoszenia do dowolnej potęgi dla liczb zmiennoprzecinkowych podwójnej precyzji i się nie doczekałem, więc czemu ty liczysz na przykłady od kogoś, skoro wskakujesz do wątku, wykrzykuesz "Viva la assembler!" ale rękawicy już nie chcesz podjąć? jeśli chcesz przesunąć o jedno miejsce w lewo mnożysz razy...
hmm asemblery to bardzo szeroka gama różnych dziwnych "nakładek" niektóre stoją tak naprawde bardzo wysoko. pamiętacie może asembler z Commodore 64 (8502, 6510, 6502) rożnił sie na moje oko dość bardzo od asemblera powiedzmy do procesorów mcs-51 - nie było w nim czegoś takiego jak nazywanie linii programu wsyzstko trzeba było liczyć - przynajmniej tak...
Prawidłowo - po wpisaniu '7' w AL (czyli dwóch ostatnich rejestru AX) znajdzie się 37h. Do BL przenosisz wiec po odjęciu 7. Tyle, że cały kod jest przygotowany do pracy z większymi wartościami, niż jedna cyfra, więc przesuniecie BL w prawo sprawi, że będzie tam 0. To pierwsza część. Dopiero kawałek dalej jeszcze raz przenosisz do BL z AL i tym razem...
Dziex, ale już wpisałem ldi bitcount, low(CRC16poly). Wcześniej mi to nie działało. Może zrobiłem jakąś literówkę. PS. Żeby wywalić starszą połówkę to trzeba przesunąć 8 razy z nie 4. Wiem że LDI działa tylko na liczbach 8-bitowych. Assembler AVR mam w jednym palcu. Dziwiłem się tylko że kompilator automatycznie nie wstawia młodszej połówki jak widzi...
Ok, racja, ale implementacja jeszcze zależy jeszcze od tego, czy to będzie assembler, czy np Bascom... ;) W tej kwestii nadal jest cisza ze strony amaram-a . Tak się jeszcze zastanawiam, czy x/10 również da się zastąpić przesunięciami bitowymi ? Pozdr. Light-I
dziel FFFFFFFFFFFFF000 przez 00000AAAAAAAAAA - ucierpi nieco dokładność, ale jest to do wykonania na 64 bitach ALU. Wynik przesuń o 6 w prawo (otrzymasz 6 miejsc binarnych po przecinku, oczywiście przesunięcia dokonujesz modyfikując cechę wyniku). Generalnie dzielenie np liczb 32 bitowych na FPU odbywa się w rzeczywistości z wykorzystaniem 96 bitów,...
Visual Basic 2010 (kompilator i debugger). Dalej nie kumam. Jak są na stosie to w którym momencie zostały tam dodane i odwołanie do nich jest po prostu przez nazwę zmiennej? Dodano po 13 Mam na zadanie: "Wskaż miejsca w pamięci gdzie przechowywane są zmienne". Jak na to odpowiedzieć? Stos[przesunięcie]?
Witam! Nie wiedziałem gdzie dokładnie umieścić ten temat, więc jeśli zajdzie taka potrzeba to proszę przesunąć go do odpowiedniego działu. Teraz tak, mam zrobić projekt w assemblerze, który będzie odczytywał z enkodera pozycję, mam zliczyć ile impulsów jest potrzebnych na cały obrót tarczy przy silniku, jest to silnik z drukarki hp (model: c6429-60004)......
Czy da sie zrobic tak, aby po wykonaniu przerwania skoczyl w konkretne miejsce? cos jak LJMP czy LCALL tyle ze one nie zakanczaja dzialania przerwania, ja chcialbym zakonczyc przerwanie (np RETI) ale nie przejsc do nastepnego polecenia w programie a do ustalonego miejsca Jest to mozliwe, ale trzeba uwazać, aby odpowiednio poustawiać(wyzerować) znaczniki,...
Dobrze że przesuwasz bit w prawo w rejestrze ale musisz wpisywać bit w 7 bit rejestru i następnie go przesunąć w prawo. Ponieważ DS wysyła od najmłodszego(LSB) bitu. aby ustawić lub wyzerować bit w rejestrze roboczym musisz użyć następującej komendy: ustawianie bitu sbr r16,1<<7 ; 7 oznacza wagę bitu zerowanie bitu cbr r16,1<<7 ; 7 oznacza...
Wogóle nie działa ten program trzeci wienc nieweim co to ma wspólnego z tym co jest napisane. Ostatni rozkaz byl blednie zapisany ma byc JR NZ,przesuniecie lub JP NZ,adres etykiety. Oczywiscie w wersji ze skokiem wzglednym kompilator musi wyliczyc wartosc przesuniecia jaka ma byc umieszczona w kodzie na podstawie podanej etykiety. L1 i L2 to liczby...
wykorzystując gotowe procedury zawarte w SYSTEM.INC możesz przesunąć pozycję kursora w dowolnym kierunku, wejście dla tej procedury stanowi akumulator w którym ustalamy polożenie zapisując 8-bitową wartośc, następnie sprawdzając odpowiednie linie portów (te na których podlączone są klawisze) za pomacą JB PX.X bądz JNB PX.X odwolywać się do programów...
Główkuję już 3 dzień nad programem ... aa: jbp1.3,aa mova,#44h ;wysłanie komendy Convert T movr2,#8 next: rrca djnzr2,next Czy uważasz, że np. powyższy fragment Twojego programu wysyła komendę "Convert T" na magistralę 1wire bo tak napisałeś w komentarzu ? Procesor nie czyta komentarzy - ślepo wykonuje to co mu każesz, a każesz mu przesunąć...
Algorytm którego używam przesuwa bity, ale równie dobrze można dzielić tak jak piszesz, tylko jak używam dzielenia to program "rośnie" wiec chyba pozostanę przy sprawdzaniu najstarszego bitu i OR. Rośnie o kilkadziesiąt bajtów. Tyle ile ma procedura biblioteczna dzielenia liczb 16 bitowych ze znakiem. Ale pewnie dzielenia prędzej czy później będziesz...
Żeby zrobic ostatni punkt czyli porownanie bez uwzglednienia rozmiarow znakow wystarczyloby wstawic przed porownaniem zamiana znakow (to juz wiem ) troche pokombinowalem (nawet cos juz sprowalem napisac) znalazlem rozkaz przesuwajacy bity a wiec "A" (65) ,a male "a" to 97 a wiec 32 bity roznicy okragle 2^5 tylko co jesli wprowadzilem male a ? to wtedy...
Pierw AND z 11110000 a później przesunięcie w prawo ?
bo to moze byc np kombinacja powyzszych a nie jakies makro oznacza to ze ustawiasz bit 1szy drugi i trzeci np xxxxxxxx1110. Wg mnie coś Ci się przesunęło bo bit 4 (licząc od 1) jest zarezerwowany i musi być wyzerowany joł. Dziękuję za podrzucenie tego nazwy tego PM0056 Programming manuala :) Pomogło! Jeśli chodzi o rodzinę 32F1xxx to wystarczi Ci PM0056...
Masz napisać procedury mnożenia liczb: 1 bajtowej przez 1 bajtową (8x8) wynik będzie 16 bitowy (2 bajty) 2 bajtowej przez 1 bajtową (16x8) wynik będzie 24 bitowy 3 bajty 2 bajtowej przez 2 bajtową (16x16) wynik będzie 32 bitowy (4 bajty) Procedura przebiega tak w kodzie naturalnym binarnym: 1. Przygotowujesz rejestr wyniku o długości równej sumie ilości...
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ść...
To podpowiem Ci jeszcze złośniku, że obroty stosuje się na poziomie assemblera tylko dlatego, że niektóre maszyny tylko przez obrót potrafią przesunąć bity do przeniesienia. I jak spojrzysz na całość to nie chodzi o obrót tylko o przeniesienie i o przesunięcie całej, wielobajtowej liczby. I chociaż absolutnie na to nie zasługujesz przy sposobie w jaki...
Trochę nieprecyzyjnie się asembler wyraził. Program może być i HEX, tyle że wtedy będzie ciężko go dokleić do tego co zapodał asembler. Czyli albo program asemblera zmieniasz na HEXa i doklejasz swój, co jednak będzie trudne bo HEX zawiera adresy i one musiały by się przesunąć o 400B. A same z sobie się nie przesuną. Albo swój program przerabiasz na...
;***************************************... ; otwarcie pliku ;***************************************... mov ah, 3dh ; usluga otwierania pliku mov al, 2 ; otwieram do odczytu i zapisu mov cx, 1 mov dx, offset File name ; DS:DX offset do nazwy pliku int 21h jc blad mov hFile, ax ; zachowaj uchwyt pliku ;***************************************...
Może i tak. Ale na moje oko i tak kombinujecie. Ja od początków jak stosuję przesyłanie danych przez UARTa to stosuję jeden algorytm który wymyśliłem jak tylko zacząłem się zajmować programowaniem, i okazał się na tyle skuteczny że korzystam z niego od kilku lat i nie zmieniłem od tamtej pory w nim nic. Wysyłam: 23, Dana, Dana, Dana, Dana, ..., Dana,...
Witam. Wykonałem miernik częstotliwości wg warmar2.w.interia.pl/. Miernik wyświetla prawidłowo tylko do 10MHz (autor projektu podaje zakres do 20MHz). Jak policzyłem, sygnał po przejściu przez preskaler 1/16 ma częstotliwość 650kHz (10MHz/16) i nie jest prawdą, że preskaler na 74S74 jest za wolny co sugeruje autor projektu. Według mnie jest błąd programu,...
mirekk36 : może sprawdź najpierw co oznacza << w asemblerze. To nie jest żadne przesunięcie o 2 bajty. <<1 oznacza przesunięcie w lewo o jeden bit czyli pomnożenie przez 2. Powinno być <<1.
Po drugie, pewny jesteś że 0C odpowiada wartość 0? Mówisz o przesunięciu w lewo o 8? 00000001 co będzie jak to przesuniesz o 8 w lewo?
Zdecydowanie tak, jak zobaczy Quartus'a to da sobie spokój... wiem co piszę. Można ućyć, nierozwijanego co prawda ale do CPLD wystarcza, MAX PLUS. WinCUPL jest jaki jest Startowałem na GAL'erze na Amigę, nic się nie wieszało i rewelacyjnie działał tester on-line. Później kilka GAL zrobiłem na komercyjnym DOSowym CUPL, dużo gorszy niż Amigowe rozwiązanie....
int n wywoluje przerwanie i jest to uprzywilejowany rozkaz, zarezerwowany tylko dla systemu. Gdyby nawet nie byl uprzywilejowany, to int n pobiera adres funkcji z wektora przerwan, ktory jest umieszczony w niedostepnym miejscu dla szarego programisty. To tyle na temat int. Mozesz go uzywac na win98/ME, ale nie na XP. 2. Nie uzywaj assemblera o takiej...
Cieszę się, że osiągnąłeś zamierzony cel, a że "po swojemu" to tylko plus bo znaczy, że sam kombinujesz, a to najważniejsze. Niestety muszę Cię zmartwić, ale robisz bardzo podstawowy błąd, polegający na zapętleniu się w przerwaniu w pętli: while(bit_is_set(ADCSRA,ADSC)); Rozważ hipotetyczny (aczkolwiek możliwy) przypadek, że pętla ta nigdy nie zostanie...
Bardzo, bardzo dziękuję Ci Krauser. Przepraszam za ten bałagan, dostałem program na zaliczenie w edsim51 a niestety jest to moje pierwsze spotkanie z assemblerem. Jeśli nie poradzę sobie z tym zadaniem to napiszę o co chodzi, chociaż wolałbym napisać na priva do Ciebie Krauser jeśli oczywiście wyrazisz zgodę na to ponieważ widzę że znasz assemblera...
Witam Wpadłem na pomysł ominięcia problemów z zakupem drogich diod RGB za cenę trochę bardziej skomplikowanego programu. Jak sądzicie, czy można umieścić w jednym rzędzie diodę R,G i B i tak sterować wyświetlaniem obrazka aby kolor R był pierwszy potem G a w tym czasie R już świeci następny punkt i w trzecim kroku R świeci 3 punkt G 2 punkt a B 1 punkt....
;* ;***************************************... ;*PROCEDURA WYLICZANIA SUMY KONTROLNEJ Z NUMERU SERYJNEGO UKŁADU 1-Wire ;***************************************... ;* ;* ;*******************************OPIS****... ;*Kolejne bajty numeru seryjnego...
Mimo ze tu i tam wdzailem posty o sprawdzaniu flagi zajetosci nadal nie kumam czemu wyswietlanie na lcd przestaje dzialac. Dodalem do kodu instrukcje zmieniajace kierunek portu by czytac z portu i juz wysiwetlacz nie wyswietla...tzn nie zle testuje flage. Przedtem dzialalo bo pewnie same istrukcje dawaly dosc duze opoznienie by wywietlacz dobrze dzialal....
Dzięki za podpowiedź BlueDraco, masz rację tablica jest zbędna. Myslę że tak można by to zrobić, czy dobrze myślę? Trzeba tylko zainicjować zmienna "i" wartością 0b00010001 by działało na 4 bitach portu prawidłowo. [syntax=c]//============================... int main(void) { uint8_t i =...
Ja robiłem gen. dwufazowy na podkręconym do 10MHz AVR - 100próbek/kanał 8-bitów, częst. 50-4000Hz co 50Hz, przesunięcie fazowe co 1 stopień, zniekształcenia sinusa całkiem znośne, ale trudne programowanie w assemblerze, no i powyżej 4kHz to już problem, bo AVR za wolny.... ale dla jednokanałowego generatora to można by chyba koło 10kHz wyciągnąć, wogóle...
:arrow: slawek55 możesz też zanegować bity, dodać '1', zrobić przesunięcie w prawo o jeden bit a następnie powrócić do zapisu ujemnego (lub pozostawić jak jest). Całe 3 instrukcje assemblera....
Oczywiście, że to świetny pomysł. Niby można zostać przy asemblerze i pisać genialny kod wykorzystujący w 100% możliwości procesora - tylko po co? Dla idei? Tak się pisało 20 lat temu dema na Amigę lub Atarynkę. Po co? można by podać 1000 przykładów po co. Chociażby ze względu na wydajność. W androidzie też jest udostępniona możliwość pisania w C i...
źle przerobiłeś procedurę w asm na C, choćby w tym względzie że do rejestrów wpisujesz numery bitów na nie "1" przesuniętą o numer bitu :) Chodzi o ten operand "<<". Zamiast przerabiać gotowca z datasheta trzeba było zrobić zwykłą wstawkę assemblera gdzie zamieniasz r16 na r24 który to jest miejscem w którym C przekazuje do procedury parametr...
W rodzinie '51 standardowo stos ma początek w rejestrze o adresie 07H (i zajmuje kolejne o wyższym adresie) można to sobie zmienić przez wpisanie nowego adresu do SP przykład: MOV SP,#30H ;przenosi początek stosu od adresu 30H Co do dzielenia to mała podpowiedź Ponieważ liczba ma być dzielona przez 16 to najlepszym sposobem jest przesuwanie bitowe w...
(at)roman_partyka Polecam lekturę (at)JacekCz Czasami przydaje się funkcja skoku względnego z przesunięciem w akumulatorze. To jest odpowiednik switch-case. A czasami można w locie podmienić adres funkcji zależnie od warunków lub czasu aplkacji. Na 8-bitowcach takie rzeczy są dość normalne.
Dziękuje za pomoc.. W klasie zrobiliśmy ten program troche inaczej ale ten działa lepiej.. w naszym trzeba było robić pętle, wpisywać ile znaków ma tekst.. A mam jeszcze jedno pytanie. chce sobie zrobić licznik BPM (Beats per minuts) Licznik mierzący ilość zliczanych impulsów w ciągu minuty tylko ze wynik ma być wyświetlany odrazu tzn. myslałem nad...
dzieki oczywiscie za pomoc , tyle ze udało mi sie tego dojsc innym sposobem dzis w szkole Juz jestem blisko ale teraz przychodzi kolejny problem ... druga czesc programu . Mianowicie aby na LED czyli na wyswietlaczy 7-segmantowym napis "OLA" musi się zacząć wysówać ... problem polega na tym że wiem jak przesówać tekst ale nie wiem jak zrobić by ten...
niestety nic nie daje. nawet jak ustawie w bascomie w opcjach. nawet po resecie zawartość na wyświetlaczu sie nie zmienia, tylko czasem sie przesunie.. db0-db3 wiszą w powietrzu. czy mam je jakoś podłaczyć? może bascom opóźńienie wstawia za małe do sterowania lcd? ma ktoś może jakiś kod w assemblerze do obsługi lcd albo opis sterownia 4ro przewodowego?...
R0.1 xor R1.1: mov R16, R0 mov R17, R1 andi R16, &B00000010 andi R17, &B00000010 Xor R16, R17 'W R16.1 masz wynik Jak chcesz xorowac bity na różych pozycjach pozycjach to dawaj tak: R0.1 xor R1.2: mov R16, R0 mov R17, R1 andi R16, &B00000010 lsr R17 'przesuniecie bitów na ta samą pozycję andi R17, &B00000010 Xor R16, R17 'W R16.1 masz wynik
Najlepiej poczytaj sobie o tym w jakimś podręczniku o grafice w Assemblerze i szukaj algorytmów do rysowania linii. Najprostszy algorytm to może bazować na tym, że najpierw musisz wyznaczyć współczynnik kierunkowy prostej, żeby móc osądzić w jaką stronę jest przyrost prostej. Musisz też mieć długość odcinka po x i po y, powiedzmy jako dx i dy. Następnie...
A ja obstawiam, że podczas zmieniania zmieniłeś po prostu długość napisów. Otóż program po kompilacji zawiera skoki - jeśli przesuniesz coś za napisem choćby o jeden bajt to potem skok np. do jakiejś funkcji/obsługi przerwania nie "trafi" w jej początek i wszystko się posypie. Stąd robiąc takie modyfikacje musisz zachować dokładnie długość oryginalnego...
Jednak nic to nie dało... Po restaecie okazało się, że żaden wskaźnik nie pasuje, albo coś źle zrobiłem. Tego się nie dowiem, bo przez przypadek nadpisałem sobie wyniki wyszukiwania. Teraz mam taką absurdalną sytuację, że szukam tym pointer scannerem i wyszukuje mi adresy przesunięte o 1 w stosunku do adresu który szukam. Mianowice mam np. adres 052CBE2D...
Chciałem Wam bardzo podziękować za zainteresowanie i profesjonalne odpowiedzi. Dziękuję! Co do Assemblera - patrzyłem na jego kod. W pewnym momencie następuje pętla w której następuje 'przes'-krotne przesunięcie bitowe w lewo (za każdym razem o jeden - rozkaz LSL), następnie w pamięci umieszczana jest dziwna wartość rejestru R24 (nie wiem czy dobrze...
BASCOM generuje prawidłowy kod do obsługi 1wire tylko dla częstotliwości zegarowej 12 MHz. Dla przeanalizowania tego przypadku przytaczam poniżej procedurę odczytu bajtu z linii 1wire przetransponowaną żywcem z BASCOMa do assemblera. ;***************************************... ; Odczyt 8 bitow z urzadzenia 1wire, poczatkowo...
http://obrazki.elektroda.pl/9090946500_1... Witam. Chciałbym dziś zaprezentować niewielkie, pokazowe urządzenie. Idea zbudowania takiego cyfrowego portfolio sięga czasów, gdy gdzieś tu na elektrodzie pojawiła się "Elektroniczna Wizytówka". Bardzo zaciekawił mnie ten projekt, lecz większość podeszła krytycznie do nazwy "wizytówka". Postanowiłem...
Witam, Właśnie zaczynam przygodę z programowaniem w asemblerze bo od września będę się uczył tego w szkole dlatego chcę poznać podstawy do tego czasu i mam pewien problem korzystam z kompilatora FASM jest moim zdaniem bardzo dobry bo jest windowsowy wszystko jest w oknie nie ma żadnych problemów kod jest bardzo przejrzysty i czytelny jest idealny do...
Cześć, Przy nauce assemblera stworzyłem program, który zamienia litery parami w tekście o nieznanej długości. Problem w tym, że chcąc wyświetlić napis na standardowe wyjście, wyświetla się również 1919 wcześniejszych znaków. Jaka może być tego przyczyna? Kod: [syntax=asm] .MODEL TINY Kod SEGMENT ORG 256d ASSUME CS:Kod, DS:Kod, SS:Kod Start: jmp Poczatek...
Witam. Borykam się z problemem przerwania INT1 w procesorze Atmega88p. Otóż przerwanie raz działa poprawnie , wykrywa odpowiednie zbocze , a innym razem załącza się praktycznie losowo . Napisałem specjalnie prosty programik aby zobrazować problem . Program jest pisany w bascomie jednak ze sporą ilością wstawek z assemblera . (Na czystym bascomie zachowuje...
Witajcie. Nadeszły wakacje, nadeszła i nuda. I to jaka, aż wstyd przyznać mi się, że wziąłem się za obsługę kineskopu cz/b 5,5". No cóż, w wieku 22 lat powinno się obsługiwać dziewczynę a nie kineskop, no ale zdarza się i tak :-) Generalnie nie za bardzo jest sens przytaczać kod programu czy schemat. Ogólnie synchronizuje się na przerwaniach z impulsem...
witam mam takie zadanie: .z80 bdos equ 5 aseg start: org 100H ; iloczyn skalarny wektorow ; struktura wektory: ; 1 bajt - dlugosc n ; n bajtow - pierwszy wektor w1 ; n bajtow - drugi wektor w2 ; kazda wspolrzedna w1 jest ; mnozona przez odpowiednia wspolrzedna ; w2 i obliczana jest suma. ; wykorzystanie rejestrow : ; b - licznik wspolrzednych...
https://obrazki.elektroda.pl/5009750700_... Witajcie moi drodzy Oto druga część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie omówię podstawowe operacje cyfrowego IO na prostych przykładach. Spis części (osobnych tematów) tutoriala Tutorial podzielony jest...
Witam, Programy typu zapal diodę w pętli już przerobiłem, od paru dni męczę sie z Real Time Timer . Napisałem sobie program który co 2 sekundy zapala kolejną diodę, aż do 8 diody. W symulatorze program działa w porządku , ale jak testuje na płytce, to zapalają mi sie po 2 sekundach wszystkie diody i nie wiem co jest. Program jest napisany w Keilu. Oto...
Jest to wg projektu z EdW: ////////////////////////////////////////... // harddef.h - definicja sprzętu dla programu testującego możliwości wyświetlacza z noki3310 // przeznaczenie: "Programowanie procesorów w języku C (EdW)" // ////////////////////////////////////////...
Hej, tutaj wklejam kod z lekcji 13 ////////////////////////////////////////... // main.c - plik główny programu testującego możliwości wyświetlacza graficznego z telefonu nokia3310 // przeznaczenie: "Programowanie procesorów języku C (EdW)" // // Autor: RadosĹ‚aw Koppel...
assembler darmowy assembler assembler tablicy assembler przerwania
halogenowy transformator monter elektronik podświetlenie łącznika
Jak zresetować urządzenie HG6000: router, maszyna, generator Wymiana łożyska wirnika Makita bez prasy