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...
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...
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?
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...
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...
Dziękuję za informacje odnośnie kompilatorów, ale napisałem powyżej - na samym początku chodzi mi o translator, a nie kompilator. Język C jest językiem kompletnym co (nie koniecznie w sposób łatwy) umożliwia realizację dowolnego algorytmu, czyli możliwe jest stworzenie własnego języka programowania, który będzie tłumaczony na język C i później kompilowany...
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. Jeśli można to bym prosił kolegę asembler o jeszcze trochę dokładniejsze opisanie tego sposobu pomiaru napięcia bo bardzo mnie to zaciekawiło. 1.22 V to stałe napięcie odniesienia wytwarzane przez procesor , na jego podstawie przez wbudowane wzmacniacze operacyjne wytwarza on napięcie 2,56 V . To rozumiem. Jeśli napięcie zasilania podamy również...
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ą...
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
pokaz swoje wypociny
Sproboj chociaz cos nagryzmolic..jakies mov'y add'y Poki nie zaczniesz nikt nie rozwiarze ci zadania za ciebie. Proszę poprawić pisownię! Robak
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...
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.
No przecież jest addc. Czyli dodawanie z przeniesieniem.
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...
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...
Możliwe że pierwsza "cyfra" nie jest cyfrą tylko oznacza znak.
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.
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 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...
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.
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).
Uruchom i zobacz co się stanie =]
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 :]
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...
Kod dodający nie ma teraz sensu.
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ć...
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.
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...
no ja nie wiem...dla mnie asembler trudniej wygląda ;) Dodaje w załączniku ten plik hex i pliki w C
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...
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ł...
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...
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...
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.
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......
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.
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",...
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...
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...
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...
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 :)
Ś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.
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:...
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...
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...
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...
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.
asembler dodawanie dodawanie liczb asembler diody asembler
ubuntu karta graficzna wykryto przekroczenie limitu czasu wymiana świece kosiarki
junkers usterki junkers czerwona dioda
Gigabyte F2A88XM - Bootowanie z dysku NVMe Płyty główne FM2+ a uruchamianie z NVMe