... ; tu kod zatrzymujący licznik mov DPTR,#TABLICA ; iicjujemy wskażnik do tablicy mov A,#0 ;A ma teraz wartosc zero movc A,(at)A+DPTR ; pobieramy starszy bajt, teraz jest w A mov B,A ; zachowujemy go, np. w rejestrze B inc DPTR ; przesuwamy wskażnik do tablicy na nastepny bajt mov A,#0 ; tu trzeba wyzerować A movc A,(at)A+DPTR ; pobieramy nastepny...
Witaj Lulubella . Co prawda zbyt wiele Ci nie pomogę (sam sie uczę ASM), ale jednak lepsze coś niż nic. A więc zacznijmy od początku. Niezbędnym dla rozwiązania Twego problemu jest utworzenie tablicy 100-tu element owej w pamięci flash mikrusa. Oto ta tablica .org $2500 oznacza umieszczenie tablicy od adresu 2500 * 2 Teraz przyszedł czas na odczytanie...
v5 wygląda na wskaźnik na tablicę bajtowych elementów, które są indeksami dla tablicy dword_40F458 po wykonaniu operacji xor z bajtową zmienną i. Po każdym obrocie pętli wskaźnik ten jest przesuwany na następny element tablicy (v5++).
Mi wszystko chodzi versja programu 2.1 revision 5 i chodzi mi bez problemu. Tu masz link do tego programu http://prdownloads.sourceforge.net/proem... sciągnij i zainstaluj i musi chodzić bo ja ustawienia mam takie samo kompilator i procesor. Najlepiej jak chcesz to pisz do mnie na gg 1791969 bo przez forum to się...
Jest sposób aby wykonać ta procedurkę w asemblerze , ale nie wiem ile ona potrwa- a tobie zależy na szybkim wykonaniu obliczenia. Poniżej opisałem jak według mnie mogłoby to działać: Np. A=256 ; B=64 Deklarujemy tablice w której będą procentowe podzialy liczby (25%,50%,75%,100% itd) 1) porównanie liczb A=B, A>b, A<B 2) A>B (inkrementujemy odpowiednio...
Od pewnego czasu tylko piszę w C i to zupełnie na inne mikrokontrolery, lecz naskrobałem takie "cóś": [syntax=asm] liczba equ 72h ; przechowywana liczba podana przez uzytkownika czy_kod_poprawny equ 73h ; zmienna "flaga", jesli wartosc 0 to kod poprawny org 0h; start: mov R0, #3 ; ilosc cyfr mov R1, #0 ; offset w tablicy mov DPTR, #haslo mov czy_kod_poprawny,...
co to za procesor? może przypisz po prostu do rejestru adres tablicy, a następnie czytaj spod adresu. Niestety nie jest mi znany ten procesor.
Jako że asembler jest z reguły samodzielnym niezależnym, i nie związanym z IDE programem wszelkie etykiety i makra są jego wyłaczną domeną. Generalnie etykiety i marka to jest inna droga przy kompilacji ale te rozważania wkraczają w naukę o kompilatorach/translatorach. Jeżeli assembler jest makto-assemblerem (dziś trudno o inny) to wszelkie maka są...
do tego najlepszym rozwiązaniem będzie dyrektywa include dołączająca do głównego pliku, Raczej jest to najgorsze rozwiązanie bo include w zasadzie nie do tego służy. Jest dyrektywą wstępnej analizy tekstowej programu i efektywnie działa tak samo jakbyś w edytorze w miejsce include wkopiował zawartość wstawianego pliku. Include nie definiuje modułu...
Witam Otóż mam mały problem. Pisze sobie szybkie przerwanie dla timera na Atmega644, to co mi kompilator z C przetłumaczył na assembler wrzuciłem do wstawki assemblerowej a przerwanie zadeklarowałem z argumentem ISR_NAKED, rejestry używane w przerwaniu zarezerwowałem przez: register uint16_t licznik asm("r30"); register uint16_t temp...
http://obrazki.elektroda.pl/6035825200_1... Witam, w chciałbym się podzielić moim ostatnim tworem jaki powstał z chwili potrzeby. http://obrazki.elektroda.pl/2685746200_1... http://obrazki.elektroda.pl/2820438100_1... http://obrazki.elektroda.pl/1850987000_1... http://obrazki.elektroda.pl/4784630600_1...
Problem jest w tym że tablice są umieszczone od 0x40 (org 0x40) w pliku WaveSmpl.asm a przy starcie masz skok do procedury RESET i RX_COMPLETE_INT .org 0 rjmpRESET .org URXCaddr rjmpRX_COMPLETE_INT więc skok musi być wykonany przez tablice a jak dodajesz jeszcze jakieś tablice to ten skok jest za długi. usuń .org 0x40 ; Flash word address w pliku WaveSmpl.asm...
A może inaczej. Konwersja BIN->BCD jest czasochłonna, więc może od razu liczyć w BCD? Korekta dla BCD przy inkrementacji binarnej jest banalna, a AVR ma flagę przeniesienia z młodszej tetrady, co ułatwia liczenie. Przerwanie odbioru USART przepisuje wartość licznika do tablicy i tyle.
...do tej tablicy odwołuję się poprzez ldi r31,high(0x200) ldi r30,low(0x200) lpm wpisanie w nawiasach sinus nic nie daje, wpisanie 0x100 także nic. Ldi wtedy nie bierze elementów tablicy. Dziwne... Pzdr.
Dalej; doczytałem ze ten plik startup jest doklejany do naszego pliku podczas linkowania - bo problem jest umieścić coś przed funkcją main od której program się zaczyna więc nie da się (chyba) zainicjalizować procesora bezpośrednio z "C". 1. Nie przesadzajmy - przy użyciu skryptu linkera i tablicy wektorów możesz sobie tak poskładać program, że zacznie...
Tak jak wcześniej wspomniał tmf, najlepiej umieścić tą tablicę w pamięci FLASH. Wadą takiego rozwiązania jest to, że wówczas będzie ona dostępna jedynie do odczytu. Procesor tez może zapisywać do pamięci programu. Z pomocą przychodzi nam assembler i instrukcja SPM. Niestety jeszcze nigdy nie próbowałem tego rozwiązania :D
Witam. próbuje nauczyć sie assemblera i troszkę potrzebuje pomocy poniżej daje kod działającego programu zrobione na zestawy dydktyczny ZD537 ; program dodajacy dwie stale ; funkcjerejestru A, R5 - argumenty, R3 - wynik $NOMOD51; wylacznie predefiniowanych nazw rejestru $INCLUDE (REG517.INC); PREDEFINIOWANIE NAZW REJESTRU 537 sta1 equ 12h sta2 equ 21...
Pierwsze uno - Ty nie podajesz liczb, tylko znaki! Do wprowadzania liczb polecam napisać sobie małą pętlę, która umożliwi konwersję znaków na liczbę on-line. Drugie uno - przesuwanie rejestru do tablicy i wyświetlanie mało co da... Proponuję książkę lub kurs i przeanalizować choćby kilka [url=http://www.dzyszla.aplus.pl/downloa... przykładów...
Mecze się już kilka godzin próbując odczytać tablicę umieszczoną w pamięci programu i po kolei umieszczać odczytane wartości w rejestrze np: R0. Oto cześć kodu: ldi R28, low(tab) ;adres tablicy ldi R29, high(tab) lpm R0,R .ORG 0x121 tab: .DB 1,2,3,4,5,0 ; jakaś tablica .EXIT Oczywiście to nie zadziała . Adres tablicy został poprawnie odczytany i w rejestrach...
Nie do końca. To wczytywanie umieszcza w tablicy kolejne cyfry. Natomiast wpisanie 10 to nie to samo co 1 i 0, które trzeba przeliczyć. Na początek zdefiniuj sobie zmienną np. Word lub DoubleWord (DW). Teraz wczytywanie musi przebiegać tak: 1. Pobierz znak 2. Jeśli to Enter - opuść pętlę (to masz i jest ok) 3. Zmień na cyfrę (to też ok). 4. Obecną liczbę...
Co do kodu - w obu assembler wygeneruje praktycznie to samo. Różnica polega na tym, że w pierwszym wypadku adresy etykiet są w znanym Ci miejscu, a w drugim tam, gdzie wygodniej assemblerowi - Tobie to miejsce nie jest znane. Biorąc pod uwagę fakt, że ten element jest w sekcji .vectors, której raczej nikt normalny nie będzie używał w swoim kodzie,...
http://obrazki.elektroda.net/57_12088851... Pokrótce przedstawię pomysł na wykorzystanie przestarzałych komputerów PC, których jak podejrzewam, podobnie do mnie wielu maniaków elektroniki po prostu nie chce wyrzucić. Komputer pracujący pod DOS-em, umożliwia dostęp do pełnych zasobów sprzętowych bez żadnej kontroli systemu operacyjnego, toteż...
Witam! fragment programu : .cseg .org 0 rjmp Start .orgINT0addr rjmp Impuls tablica_cyf:.db cyf_0,cyf_1,cyf_2,cyf_3,cyf_4,cyf_5,cyf_... Start: w tablicy są zdefiniowane bity do sterowania wyświetlacza, po kompilacji w pierwszych komorkach wpisyane sa adresy wektorow przerwan, potem 10 cyfr. po odwolaniu sie do pierwszego elementu tablicy_cyf...
Nie - assembler ma mi pomóc w zrozumieniu pisania aplikacji. Na HDD lub MMC/SD będą zapisywane dane zaszyfrowane odpowiednim dynamicznym kluczem(generowanym przez AVR). Aplikacje będzie musiała kasować wpisy w tablicy alokacji partycji o konkretnych plikach zawierających klucze po ich jednorazowym odczytaniu. Czy dobrze rozumiem że: 1. AVR zapisuje...
W BASCOMIE się nie da ze względu na precyzyjne czasy wyświetlania jednej linii sygnału. Świetnie nadaje się do tego Assembler gdzie kontroluje się każdy takt procesora. Jeżeli będzie zainteresowanie to mogę wrzucić moje kody poczawszy od nauki wyświetlania najprostszego wyświetlania na jednej połówce czarnego a na drugiej czarnego, poprzez prostokąt,...
Sprawdziłem poprawność wszystkich połączeń (używam wtykanych pinów) i okazało się, że zanikło połączenie z ALE do CLK zatrzasku. Aby sprawdzić czy winny jest Keil użyłem języka assembler - efekt był ten sam, ale na szczeście znalazłem płytke AVT i tam uruchomiłem program - zadziałał wiec poprawiłem wszystkie połączenia w mojej plytce i zaczeło chodzic!!...
Witam mam następujący kod .... LOOP:LDAPORTA;Odczytaj wartość z Portu A i zapisz do Ak. A TAX ; zapisz do X bity z portu A LDALIST,X;odczytaj kod znaku LED z LIST .... LIST:fcb%11000000,%11111001,%1010010... '0', '1', '2', '3' Czy to co będzie w X definiuje co zostanie przekazane z LIST do akumulatora A? Jeśli tak to jeśli w X będzie...
Użytkownik wprowadza nazwę pliku w którym znajduje się do 1000 liczb od 1 do 32000, program pyta użytkownika jaką chce wyświetlić statystykę z tych liczb: min, max lub średnią. Program wylicza wybrane wyrażenie, wyświetla je na ekranie oraz zapisuje do pliku. Kurcze mam z tym taki problem facet na zajęciach nic nie tłumaczy. Z kolegą napisałem cuś takiego...
Acha. To zrób w assemblerze. Albo na tablicach. Nie ma takiej operacji w BASCOMie ani w assemblerze AVR, '51 i innych. Taka operacja to tak zwany "motylek" ale naprawdę nie słyszałem o prcesorze który by miał taki rozkaz. Może jakieś procesory DSP. Albo assembler albo tablicowanie. Wiesz o co mi chodzi z tymi tablicami?
Przyznam się bez bicia, że z Assemblera jestem noga:( a mam do napisania na zaliczenie program na ProEmulator2beta5c , a nie potrafię go nawet ruszyć:( Bardzo proszę o pomoc!!! Oto treść zadania: Prezentacja liczby 4-cyfrowej na wyświetlaczu LED. Kody odpowiadające poszczególnym cyfrom należy umieścić w czterech kolejnych komórkach wewnętrznej pamięci...
dlaczego nie połączysz go z PC za pomocą USB Niestety, ale USB wykorzystuję w innym celu. Co do kodera - znalazłem coś takiego w internecie: [syntax=c]//1999 Cristi Cuturicu #include "Definicje_sprzet.h" //#pragma hdrstop #include <stdio.h> #include <stdlib.h> #include <string.h> #include "GPIO_procedury.h" #include "Katalogi_SD.h"...
mov wX, [wY+wZ] adresowanie pośrednie z offsetem. Wcześniej musisz do wY załadować adres RxBuf, a do wZ - RxPtr offset (bajtowy!) w tablicy. Co do wykorzystania zmiennych z C w assemblerze, to - jak już zauważyłeś jest to problematyczne, ale gdy próbowałem to zrobić, to nie było problemu... Lektura dokumentacji do kompilatora C30 wystarczyła. 4\/3!!
...Mam pytanie jak przeniesc komende lookup (z bascoma) na assembler? To zależy z ilu elementów maksymalnie może składać się tablica i jaki jest rozmiar jednego elementu. Np. dla tablicy o wielkości max 256 elementów umieszczonej w pamięci programu i rozmiar elementu to 1 bajt: mov a,numer_elementu mov dptr,adres_pierwszego_elementu ; (początek...
:arrow: pawelskot Wejdź na [url=http://www.myplace.nu/avr/minidds/i... AVR pages - MiniDDS, przeczytaj opis i ściągnij źródło w assemblerze. Znajdziesz w nim tablicę próbek dla przebiegu sinusoidalnego i piłokształtnego (a może jeszcze jakiegoś trzeciego - nie pamiętam). Robiłem generator sinusa na podstawie tych tablic i wychodzi bardzo...
Rozumiem, że chodzi Ci o "zagęszczanie" przechowywanej w pamięci tablicy V^0.16. Akurat ten poprzedni przykład to była ekstrapolacja, bo wynik był liczony poza punktami, ale idea jest mniej więcej słuszna. Dokładnie przy interpolacji liniowej puszczasz linię prostą między kolejnymi punktami krzywej i traktujesz punkty na niej jako wartości funkcji....
Dżyszla napisał : MOV SI,1 MOV BX,offset tablica MOV AL,[BX] INC BX MOV AH,[BX] Z tych trzech ostatnich lini moge wnioskować że w Al jest pierwsza 8 bitowa wartość tablicy a w Ah druga ? I po co ustawiać rejestr Si na 1 ?
Chcę zaprogramować mikrokontroler Motoroli 68HC908QT4. Piszę w CodeWarriorze, aczkolwiek to są moje pierwsze kroki w Assemblerze. Mam już pomysł na zrobienie tego całkiem inaczej. Wobec tego moje pytanie pozostaje jako zadane z czystej ciekawości czy da się w ogóle taką tablicę zrobić.
nie zabardzo pamiętam assemblera ale zrobiłbym to tak: 1.deklaracja tablicy od 0 do 255 elementów wyzerowanej 2.otwarcie pliku a)czytanie znaku b)ustawienie indexu tablicy na odczytany znak, c)odczyt z tablic wartosci, d)incrementacja, e)zapis do pamiecie, f) jezeli nie ma konca pliku goto a) 3. obliczenie maxymalnej wartosci wystapienia ktoregos znaku...
Moge napisac dla kompilatora MASM32, powiedzmy 3zl za zadanie :) Przy okazji jesli chcesz, zeby ktos Ci napisal jakis program to polecam http://zlecenia.org Pod koniec tego tygodnia bedzie nowy wyglad strony (ladniejszy) Zapraszam :)
to skoro padła odpowiedz jak poradzić sobie z problemem to powiem co poszło nie tak. w językach kompilowanych, na przykład C oprócz zwykłej tablicy istnieje także statyczna czysta tablica. [syntax=c]const char tablica[liczba][/syntax] gdzie liczba to naprzykład [syntax=c]#define liczba 100[/syntax] podczas przejścia preprocesora jak kompilator widzi...
Witam. Osobiscie preferuje TASM (sentymenty), ale oba kompilatory maja podobne mozliwosci. Istnieja miedzy roznice skladniowe, wlasnie: smieci times 768 db 0 dla MASM to to samo, co smieci db 768 dup 0 dla TASM i znaczy tyle, co: zmienna smieci zlozona z 768 bajtow o wartosci 0 (tablica) - id smieci wskazuje na pierwszy bajt tablicy. W necie, zdaje...
Przy małych tablicach (cyfry plus kilka znaków) działa bezbłędnie. ZH jest chyba potrzebne dopiero gdy chcemy wskazać jakiś odległy element tablicy (powyżej 255?).
Da się zapisywać do pamięci programu dane z poziomu wykonującego się programu. W assemblerze AVR występuje instrukcja SPM która zapisuje słowo z pary rejestrów R0:R1 do pamięci programu pod adres określony rejestrem Z :P Nie próbowałem tego nigdy ale faktem jest że coś takiego jest i wystarczy zajrzeć do datasheet'u :P
odpal kompilator g++ z opcją -S
bardzo prosto... zalozmy ze masz liczbe 24962 i chcesz ja przeksztalcic do tablicy 5 elementowej na dziendobry zerujesz tablice. teraz odejmujesz od liczby wartosc 10000 (najwiekszy mnoznik elementow tablicy) i sprawdzasz czy liczba jest juz mniejsza od tego co aktualnie odejmujesz. za kazde odjecie powiekszasz wartosc w tablicy odpowiedzialna za dana...
cjne A,02h,etykieta - co znaczy porównaj i skocz gdy nie są równe. W tym przypadku 02h to R2 w banku 0. Zakładam że wartość z klawiatury jest w A oraz, że jest to wartość 0-9. Jeśli kod klawisza jest inny należy do programu dorzucić tablicę z kodami klawiszy.
unsigned char xdata T[3] _at_ 0x7000; void main() { T[0] = 0x12; T[1] = 0x34; T[2] = 0x56; // tutaj dalszy program } To działa i jest dokładnie tym, co potrzeba, ale przy dużej tablicy kod się rozrośnie do ogromnych rozmiarów. Nie chodzi tu o kod, tylko o wielkość skompilowanego programu. ... A jak...
No mniej więcej tak: Dim X As Word Dim Y As Byte ... ... X = Getadc(2) Y = Lookup (X, Tablica) 'To zamiast tych wszystkich IF-ów X = Y Setki = X Mod 1000 Tysiace = X / 1000 ... ... Tablica: Data 120 'Pierwszy element Data 120 Data 120 ... ... Data 120 Data 119 '140-ty element (drugi element w wersji assemblera) Data 119 ......
No to po kolei: [syntax=x86asm] .MODEL SMALL Dane SEG DL_TABLICA EQU 15 Tablica DB 01h, 02h, 00h, 10h, 12h, 33h DB 15h, 09h, 11h, 08h, 0Ah, 00h Dane ENDS Najwieksza DB ? W jakim to będzie segmencie? Proponuję w Dane. Kod SEGM ASSUME CS:Dane, DS:Kod, SS:Stos Nie ma segmentu Stos Start: mov ax, OFSET Stos Po co to? mov ds, bx Co ładujesz do DS mov al,...
Problem udało się rozwiązać. Jest to program w tzw. "bare metal" tworzony w GNU Macro Assemblerze. Wygląda na to, że jako szablon wziąłem ustawienia z Blue Pill, a skoro działało z ST-LINK, to niczym się nie przejąłem. Dopiero teraz, gdy odłączyłem programator, okazało się, że to był błąd i Macro Assembler źle inicjował tablice wektorów dla STM32H7....
assembler darmowy assembler bascom zapis tablicy tablicy assembler przerwania
radio clarion głowica wzbudzi alternator próbnik wtryskiwacza paliwa
Zipp YM50-9 – jaka cewka zapłonowa 139FMB/139QMB? Wilmat, Naraku, NGK, Motoforce Polar TA 60 – naprawa chłodziarki absorpcyjnej, grzałka, blokada krystaliczna, amoniak