pokaz swoje wypociny
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.
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
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",...
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...
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ą...
No przecież jest addc. Czyli dodawanie z przeniesieniem.
no ja nie wiem...dla mnie asembler trudniej wygląda ;) Dodaje w załączniku ten plik hex i pliki w C
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...
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
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...
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).
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...
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
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...
Sposób który pierwszy narzuca się aby liczbę przedstawić w postaci tekstu to znaleźć ilość jednostek, dziesiątek, setek, tysięcy, itd... w danej liczbie (dzieląc przez 1000,100,10). Następnie te znaki pozostaje już tylko "przesunąć" do znaków ASCII, a wiec dodać 0x30. Dla przykładu mamy liczbę 123, liczba setek: 1, liczba dziesiątek 2, liczba jednostek...
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.
Czesc Wiem że instrukcja adc dodaje do siebie pare rejestrów ale o co chodzi z tym przeniesieniem bo nie mogę tego rozkminić.
Ś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.
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...
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...
A co to jest "BCD ze znakiem"?
No to w takim układzie zerujesz sobie zmienną i w pętli dla każdej cyfry od lewej do prawej wykonujesz: mnożenie przez 10, dodawanie wartości cyfry... Jedyne czego w takim układzie potrzebujesz, to funkcji do mnożenia i dodawania liczb dowolnej długości.. do konwersji w przeciwną stronę liczbę dzieli się przez 10(lub przez inną podstawę) i resztę dopisuje...
Spróbuj tak: #include <avr/io.h> .global Dodawanie Dodawanie: add r24,r22 ret Dodano po 1 Zdaje sie że bajtowe parametry zwracane są właśnie w r24.
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. 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...
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...
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.
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)
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.
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ł :]
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.
Na moje lepiej zrobić to tak: dodawanie: clr a mov b,#00h mov r0,#01h clr c petla: add a,(at)r0 inc r0 inc b jnc petla mov P5,b ret Nie wiem czy chcemy dodawać adres komórki i licznik dodawań ;) Taki drobiazg :]
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.
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...
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...
adc reg,reg A bez wsunięcia CY: add reg,reg
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...
Adresy urządzeń mi nie pomogą. Dla jasności, nie znam asemblera, miałem dopiero jedną lekcję z niego.
Może skorzystaj z rozwinięcia logarytmu w szereg potęgowy? Np. jeśli 0<x<=2 to ln x = suma(od 0 do niesk) z (-1)^(n+1) ((x-1)^n)/n Oczywiście nie liczysz do nieskończoności tylko np. 5 pierwszych składników sumy... wtedy przy sprytnym podejściu będzie działać dość szybko, wystarczy mnożenie i dodawanie ;-) Dla wszystkich x>0 trochę gorzej......
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...
Napisz jakie założenia projektu tego licznika i napiszemy go w końcu to nie jest taki skomplikowany układ :) 1. czy ma być wprowadzany obwód kola z podłączonym licznikiem? 2. tylko prędkość czy coś jeszcze? Obwod kola powinien byc wprowadzany ze wzgledu na wygode (co by nie przeprogramowywac proca itp.). Natomiast dodawanie kolejnych funkcji nie jest...
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...
A tak wogóle, to jak odjąć dwie liczby BCD, takie np 8 cyfrowe, bo ja siedze nad tym już pare godzin i nie mam rozsądnego pomysłu (czyli prostego - jak z dodawaniem BCD). mj
Najszybciej będzie tworząc 256-bajtową tablicę na każdy poziom. Bez podwójnych rejestrów DPTR musiałbyś mieć próbki w pamięci IRAM (mov A, (at)Rn) lub ew. w jednej stronie pamięci XRAM (movx A, (at)Rn): mov DPTR, #tablica_poziomu_x mov R1, #liczba_probek mov R2, #adres_1_probki_w_ram petla: mov A, (at)R2 ; +1 movc A, (at)DPTR+A ; +1 mov (at)R2,...
Obawiam się, że ja Ci na razie za dużo nie pomogę, bo czas już mi się kończy i muszę "zniknąć" na c.a. dwa tygodnie. Nie pamiętam też już - musiałbym przejrzeć dokładnie kod, a nie bardzo mam teraz czas. W każdym razie, należałoby wrzucić printk na lookup ARP, może dodawanie i usuwanie z tablicy (to chyba w arp.c, ale nie dam głowy) + drukowanie nagłówków...
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...
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...
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.
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, 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ę...
Stos w '51 jest analogią stosu talerzy (np. po zmywaniu a przed wycieraniem, przy założeniu że nie masz suszarki :-)) Najpierw myjesz i kładziesz jeden na drugim a następnie zdejmujesz od góry (czyli nie możesz wyciągnąć nic ze środka). Ostatni talerz umyty jest jednocześnie pierwszym wytartym. Konkret. PUSH ACC kładzie na stosie akumulator, PUSH B...
"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...
czy ktos może mi pomóc zrobić zaokrąglenie Mam zrobiony woltomierz na MCS 51 oczywiście sam go nie zrobiłem więc wielu rzeczy tam nie rozumiem. Mam do tego symulator, uklad wykonuje 16 pomiarów w okreslonym czasie zrobilem sam sortowanie bombelkowe po wielkich bólach dodawanie i wyliczyłem średnią przy pomocy znajomego zamiane bin na bcd pozostało mi...
http://obrazki.elektroda.net/74_12498390... Witam. Chciałem przedstawić projekt licznika opartego na mikrokontrolerze atmega8. Projekt ten powstał z chęci sprawdzenia swoich umiejętności w asemblerze więc przy komentowaniu projektu proszę zwracać większą uwagę na software niż na hardware. Projekt został ukończony parę miesięcy temu ale dopiero...
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...
Na pewno, to to jest jakiś program ;)) Z tego co widzę, to usiłuje on wczytać dwie liczby w zakresie 0-65535 i ... nic więcej :))) Żadnego 372 tu nie ma, a za to jest martwa pętla :)) model tiny .stack 2H .data napis1 db 'Pokaz','$' napis2 db 10,13,'Podaj pierwsza liczbe: ','$' napis3 db 10,13,'Podaj druga liczbe: ','$' napis4 db 10,13,'koniec','$'...
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ć? ??? nie zabardzo wiem o co ci teraz chodzi :) hehe ale własnie cos ma byc z tym...
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.
Jak kiedyś zlitowałem się nad SAB600 i postanowiłem go zastąpić czymś bardziej orginalnym to powstał taki twór. Twór o tyle ciekawy, że w asemblerze ale pod Bascomowym interfejsem. Program oprócz generowania dźwięków robi jeszcze parę innych rzeczy, ale chyba tyle to już się można zorientować w kodzie. [syntax=basic4gl] '***********************Tiny13_Gong1...
Najlepszą metodą znalezienia błędu w przypadku jak nic nie pomaga jest analiza kodu w asemblerze jaki został wygenerowany z twojego programu i porównanie go z działającym programem. Pamiętaj że rdzeń cortex-m0 w przeciwieństwie do cortex-m3 jest znacznie prostszy i analiza asemblera nie jest aż tak skomplikowana oczywiście na początku wyda ci się to...
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...
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...
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.
ż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,...
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ć...
Dlatego pytałem jak bez systemu operacyjnego mając czysty dysk, wykonać np funkcję: int a,b,dodaj; cout << "Podaj liczby"; cin >> a; cin >> b; dodaj = a+b; cout >> dodaj; i ją zrealizować wpisując bezpośrednio z klawiatury polecenia biosu lub procesora Z klawiatury niczego nie wywołasz, bo nie ma programu który by to zinterpretował...
Cześć. Mam program i nie mogę zrozumieć dlaczego skacze mi do: 291: return pgm_read_byte(&(local_lcdspec (at)00000165: lcd_PrepareSpec 309: memset(lcd_spec, 0xff, sizeof(lcd_spec)); +00000165: ED81 LDI R24,0xD1 Load immediate +00000166: E091 LDI R25,0x01 Load immediate +00000167: EF6F SER R22 Set Register +00000168:...
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...
Wyniki: W1 – 60h, W2- 61h, W3 – 62h, W4 – 63h A1 – 20h, A2 – 21h B1 – 22h, B2 -22h Start: MOV 20h, #0fdh ;A1 MOV 21h, #0ffh ;A2 MOV 22h, #0fdh ;B1 MOV 23h, #offh ;B2 ;mnożenie ;A1*B1 MOV A, 20h MOV B, 22h MUL AB MOV 80h, A ;A1*B1 L MOV 50h, B ;A1*B1 H ;A2*B2 MOV A, 21h MOV B, 23h MUL AB MOV A 41h, A ;A2*B2 L MOV B...
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...
Nadmiar w operacjach na zmiennych całkowitych nie jest nigdy wykrywany i faktycznie dodawanie i odejmowanie są tak samo wykonywane na liczbach ze znakiem i bez. Tak samo jak w asemblerze. Jest tylko kwestia, czy wynik jest interpretowany bez znaku, czy w kodzie uzupełnieniowym do dwóch.
Kolego Excray masz po części rację. Błędu jednak nie będzie gdy wartość stałej będzie większa od wartości TL0 w chwili korekcji. Tak dla przykładu. Przyjmijmy, że przeładowujemy licznik #FFF5H czyli do TL0 ma trafić #0F5h z korekcją. Dla przypadku gdy będzie spełniony warunek, który podałem wyżej przyjmijmy wartość 3 w chwili korekcji w TL0. Dla przypadku...
Autor się pyta, czy to możliwe, gdy tak naprawdę najwięcej zależy od niego. To, że jeden człowiek da radę, nie znaczy, że inny też może, każdy ma inne możliwości. Życie to nie telewizja, gdzie wystarczy tylko chcieć, żeby się udało. Możliwości umysłowe, finansowe, umiejętność pozyskiwania materiałów i narzędzi, przestrzeń na warsztat, czas, wytrwałość:...
Gdyby chodziło o jakieś na prawdę krytyczne czasowo procedury np gdzieś w przerwaniach , gdzie miałbyś takie przeliczenia robić i zależałoby ci na każdym takcie zegara to wtedy też rozumiałbym jakieś próby optymalizacji tego o co pytasz. Ale wtedy do albo bym sięgnął po wstawkę asemblerową w przerwaniu albo jak pisze tmf, w ogóle bym sobie głowy nie...
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...
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ć...
dodawanie asembler dodawanie liczb asembler asembler sortowanie
netia net24 hasło lodówka duże zużycie kodowanie 00001
chińskie radio android integra zmierzch
Wymiana anody w kotle Termet Integra - krok po kroku Resetowanie wieży Technics SC-EH560 - instrukcje i porady