Mam pytanie jak w asemblerze avr zadeklarowac w segmencie danych tablice slow, o wielkosci np. 5. Można jedynie zarezerwować stały dany obszar pamięci .dseg tBuffer: .byte 0x05 Powyższe rezerwuje 5 bajtów w SRAM pod etykietą tBuffer . Można używać ten obszar w róznych nie kolidujacych ze soba procedurach. A tak mozna się odwołać do 3 bajtu : sts...
Chciałem to zrobić, aby lepiej rozumieć asemblera. A jak się ma asembler do bramek i tablic Karnaugha? Czy chcesz zbudować własny procesor, czy zrozumieć asembler istniejącego procesora. Same operacje w asemblerze nie wymagają znajomości rozbudowanych układów logicznych na poziomie bramek. Wystarczą operacje logiczne i arytmetyczne na liczbach zapisanych...
program ten służy do sterowania sterownikiem matrycy diod LED. matryca jest 16 diodowa. wyjścia ze sterowników sterowane są PWMem a ich wartość ustalana jest przez wartość która wprowadzę w 192 bitowym rejestrze czyli za jedno wyjście odpowiada 12 bitowe słowo. W tej chwili mam stworzoną tablicę z 24-oma 8 bitowymi słowami. Żeby ustawić wartość PWM...
Witam! Mam tablice danych .byte. Chce wyswietlic jakis element (np. pierwszy), tzn. odpowiednik liczby w tablicy ASCII. Dlaczego to nie dziala? (GNU As) ########################################... SYSEXIT = 1 SYSREAD = 3 SYSWRITE = 4 STDOUT = 1 STDIN = 0 EXIT_SUCCESS = 0 .section .data data1: .byte 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,...
W każdej nowej linijce dodaj DB i wtedy nie ma znaczenia ile takich danych umiescisz.
Sprawa jest prosta: orientowac sie w asemblerze (wiedziec co w trawie piszczy), znac dobrze C - to jest podstawa. A jak ktos lubi moze sie douczyc roznych wynalazkow. Oczywiście że tak. Chociaż odwróciłbym to. Znać dobrze asembler, i orientować się w C. Prosta sprawa c + asembler = zrobimy wszystko. Jednak bascom (wogóle Basic) naprawdę uczy złych...
Mam jeszcze jedno pytanie, potrzebuje wstawic tablice w asm TAB: DW10000 DW1000 DW100 DW10 DW1 I dostaje tylko " Error 106 : Unknown assembler command [DW 10000] Jesli jest to tablica DB to Ok, a DW nie :? ehh....
Kolega z Łodzi to coś słyszał ale nie do końca pamięta. Nie zaśmiecam sobie pamięci tego typu szrotem. Algorytm na poczekaniu wyczytałem z sufitu. Ponieważ jest "bardzo szybki" może być użyteczny przy wszelkiego rodzaju konwersjach liczba/łańcuch zwłaszcza w układach wyświetlania wielkości fizycznych, gdzie w procesie kalibracji możemy wyliczyć i wpisać...
DB Nie jest rozkazem procesora tylko dyrektywą kompilatora. A DPTR jest to 16 bitowy rejestr w 8051. Więcej szczegułów znajdziesz w dokumentacji 8051
Witam was wszystkich moi drodzy koledzy z forum elektroda. Obecnie w dniu dzisiejszym mam do napisania program w ASEMBLERZE. Zalozenia odnosnie programu to: W projekcie należy opracować w języku asemblera procesorów Intel aplikację konsolową (tryb 32-bitowy). Aplikacja musi implementować zadany algorytm sortowania lub wyszukiwania danych w tablicy lub...
a wiesz co to sa mnemoniki, rozkazy, stosy, pamięć, język maszynowy, bity bajty rotacje i te inne sprawy?? Assembler to czysta kombinacja z podstawowymi algorytmami. Samych algorytmów nie znajdziesz w książce typowej o procesorach, to zadanie dla książek programistycznych. Każdy procesor programuje sie inaczej ma inny zasób słów a nie wiem czy dostaniesz...
Drodzy koledzy wiem jak programować w C i C++ na PC'ty więc takie, rzeczy jak Warning to dla mnie ważna sprawa i zwracam na to uwagę - kompilator nie zgłasza problemu jak się deklaruje tablice o wielkości N dla stringu o długości N ponieważ znak \0 wpisywany jest tuż za tablicą a nie w niej samej. Łatwo to sprawdzić w wyświetlając w pętli kolejne adresy...
Pic Picowi nierówny, tablice można wykonać i operowac nimi na rózne sposoby. Na stronie Microchipa poszukaj Aplication Note "AN716". Tam jest rozdział zarówno o tablicach zorganizowanych przy pomocy rozkazu RETLW (powrót z załadowaniem rejestru)i jak to użyć(dla wszystkich PIC-ów), jak i o operowaniu na tablicach przy użyciu dedykowanych rejestrów (dla...
Wiesz co Ci powiem? Ostatnio wpadło mi zadanie napisania dwóch ciekawych programików. Jeden za zadanie miał odczytywać dane z wyświetlacza lcd( takie szkiełko bez elektroniki które ma 22 wyprowadzenia i 67 elmentów ( cyfry i symbole ) całość sterowana poprzez zmiany napięcia na wszystkich końcówkach jednocześnie. 0V,1V,2V,3V.). Trzeba było 3 dni pisania...
Cały kod jest dość obszerny (8 większych modułów i kilka miejszych) i wolałbym go nie upubliczniać ale dla przykładu: procedure TPictSearchObjCustom.PrzygotowanieBitmap... _BmpOrgiL: TBitmap); begin // _BmpOrgiL.PixelFormat:= pf24bit; FBmpPrev.Assign(_BmpOrgiL); FZoomR:= _BmpOrgiL.Width / FBmpSkalaWidth; FZoomI:= _BmpOrgiL.Width...
Witam, Jestem początkującym programistą, a moja wiedza o programowaniu w asemblerze jest raczej znikoma. Dlatego zwracam się z gorącą prośbą o pomoc w poniższym zadaniu: "Napisz program, który wypisuje parzyste indeksy wprowadzonej tablicy na ekran" Bardzo proszę o pomoc
tablicę z danymi umieść na samym końcu za programem: [syntax=asm].include "tn13def.inc" .cseg .org0x00 rjmpstart .org 0x0A start: cli ; blokada przerwań ldi r16,low(RAMEND) ; stos na koniec RAM out SPL,r16 ldi r16,0b00000111 ;konfiguruje porty B pin0-pin2 na wyjscie out ddrb,r16 ps0:ldiZL,low(Ledy<<1) ;adres tabeli w pamięci programu ldiZH,high(Ledy<<1)...
Witaj! Nie musisz pisać deklaracji .DW. Możesz pisać deklaracje .DB. musisz pamiętać że Flash kontrolera to 2 bajty poj jednym adresem. Zapraszam do lektury http://www.atmel.com/dyn/resources/prod_... http://www.atmel.com/dyn/resources/prod_... Nie ważne jakiego kompilatora uzywasz gdyż jest dla danej rodziny kontrolerów...
Wydaje mi się , że do takich porównań lepiej użyć XRL , niż SUBB . Piotrek
U mnie kod: .org 0 start: inc r1 rjmp start działa poprawnie (AVR Studio 4, ver 4.12 sp1 build 462). No wiec asemblacja przebiega prawidlowo, lecz podczas debugowania program wyskakuje z obiegu. Tzn. co się dzieje ? Co do eeprom, spróbuj tak: .ESEG eevar1: .DW 0x1234 Po asemblacji wygenerowany zostanie plik nazwa_projektu.eep, wrzucasz go za pomoca...
Domyślam się, że wyświetlasz tekst funkcją przerwania 21h, która służy do wyświetlania ciągów tekstowych. Jeśli wczytać się w opis tej funkcji, to znajdziesz, że wyświetla ona tekst od wskazanego w rejestrze DX adresu aż do najbliższego wystąpienia znaku '$'. Jeśli robisz mov tab , to wpisałeś wartość 1 a nie znak '1', więc wątpię, abyś tak robił ;)
Masz rację. Moja pomyłka, przepraszam (było rano). Powinno być: nr_bajtu_pamięci_ekranu = (x div 8 )+(y - 1) * 5 Przy edycji musiałem skasować te kilka znaków. Teraz chyba to działa. y to oczywiście numer wiersz dla piksela. Masz rację, że w asemblerze natywnie nie ma tablic dwuwymiarowych, ale bardzo łatwo jest oprogramować taką strukturę pamiętając...
Skoro obliczenia w asemblerze sprawiają Ci kłopot , to mając 8KB pamięci programu i 2KB EEProm-u , wygospodaruj 720 bajtów na tablicę , zapisz w niej gotowe wartości dla każdego kąta i ... to tyle ;) Piotrek
... ; 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...
Dokladnie chce wyswietlic te 2 tablice, 2 ciagi, scislej mowiac fraze: "Ala_ma_+Kota." (taka konkatenacja tekstu) Prawde mowiac ciekawa koncepcja tylko nie jest az tak latwo przelac to na kod programu... (z racji ze raczkuje w asemblerze jak niestety widac)
Masz zadeklarowaną tablice(pole 16-bajtowe) TABLICA EQU 50 ;od adresu w RAM-e = 50 I teraz nie piszesz gdzie sumujesz te osiem srodkowych wartosci ale zakładam że np do akumulatora, więc najprościej jest tak: CLR A ;zeruję bo tam będę sumował ADD A,TABLICA+4 ADD A,TABLICA+5 ADD A,TABLICA+6 ADD A,TABLICA+7 ADD A,TABLICA+8 ADD A,TABLICA+9 ADD A,TABLICA+10...
Zapomniałem dodać, że piszę w asemblerze.
Jak wyślesz wartość al jako znak też dasz rade odczytać mając tablice kodów ascii, ale najprościej stworzyć napis 'xx',13,10,$ i pod dwa pierwsze znaki wstawić przekodowaną wartość al na liczbe szesnastkową w kodzie ascii.
Czesc, Dosyc niedawno zainteresowalem sie uC. Pisze program ktory ma rosnąco pokazywac liczby na wyswietlaczu led. Mam 2 siedmiosegmentowe wyświetlacze. Liczby zawarlem w tablicy. Problem jest w tym ze probuje zrobic osobna tablice dla jednosci a osobną dla dziesiątek. Niestety tak to nie działa. Pomoze ktoś ? Oto problemowy kawałek kodu: ldi ZL, LOW(Liczba_LED*2)...
Pamięć jest zorganizowana w komórki 16-bitowe, objawia się to np tym że wskaźnik programu wskazuje na słowo (2 bajty) a nie na bajt. Wszystkie instrukcje muszą być więc wyrównane do granicy dwóch bajtów. Jakkolwiek z poziomu samego programu pamięć flash jest zorganizowana bajtami, więc spokojnie można w niej umieszczać tablice bajtów bez utraty pamięci....
Witam mam taki problem , chce odczytać 100 elementów z tablicy której adres efektywny został zdeklarowany symbolicznie jako TABLICA ( chodzi o asemblera 8086), niestety nie wiem jak sie do tego zabrać, może ktoś mi pomóc? pozdrawiam i dzięki za pomoc
albo ustawiasz BX na początek tablicy i z każdym przebiegiem zwiększasz o długość pola tablicy, albo używasz rejestrów indeksowych i zapisujesz prawie jak tablicę.
Teraz kumam o co w tym chodzi. Dziekuje bardzo za pomoc i jeszcze jedno pytanie gdzie znajde taka tablice?
Projekt mam napisany w języku "C". W asemblerze mam kilka funkcji, które nie są mojego autorstwa. Funkcje asemblerowe mam zapisane w pliku z rozszerzeniem .s,który jest dołączony do projektu. Tablice w asemblerze STable i SiTable mógłbym skopiować do dowolnego pliku z rozszerzeniem .c i użyć dyrektywy __attribute__((space(prog), address(0x200))) lecz...
Kilka błędów: - nie możesz zakładać, że zmienne znajdują się pod stałymi adresami w pamięci, to się będzie zmieniać pomiędzy kompilacjami, w związku z tym istnieje konieczność użycia symboli - register to tylko sugestia dla kompilatora i tych rejestrów wcale nie musi rezerwować. Ale jest też poważniejszy błąd - rejestry te są wykorzystywane przez AVR-libc...
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...
Witam, mam mały problem z następującym programem. Muszę wyszukać maksymalną wartość w tablicy. Program działa w DOSBox'ie, ale muszę robić coś źle bo nic nie wyświetla (jest jakiś krzak). Jestem totalnym początkującym jeżeli chodzi o asemblera :(. Poniżej zamieszczam napisany kod przeze mnie: dane SEGMENT ;segment danych tekst_1 db ": To jest...
Ja jednak mimo wszystko polecam CRC8 na tablicy... 256 Bajtów to nie jest za dużo dla PIC-a, a działa rewelacyjnie. Znajdziesz info w notach dla 1-wire Dallasa.. //--------------------------- int8 crc; //======================fast crc8 for use with dallas //#org 0x200,0x2ff const int8 BYTE_ARRAY [256] = { 0, 94, 188, 226, 97, 63, 221, 131, 194, 156,...
Co konkretnie koleżanko chcesz robić ?
Witaj, może inta jest wskaźnikiem na początek tablicy? Pozdrawiam!
Witam! Jak w AVR-GCC zapisać tablice z danymi pod konkretnym adresem w pamięci flash procesora? Będę wymieniał te tablice za pomocą bootloadera w zależności od wersji urządzenia dlatego muszę mieć je zapisane pod odpowiednim adresem. Jest coś takiego jak dyrektywa "ORG" w asemblerze? Pozdrawiam
Strasznie się zapętliłeś z adresowaniem. MOV A,4 oznacza prześlij do akumulatora zawartość komórki o adresie 4 (czyli to samo co MOV A,R4) natomiast MOV A,#4 oznacza wpisz do akumulatora wartość 4 Proponuję zacząć używać symulatora (np. AVSIM'a) Moja propozycja kodu: MOV R1,#4 ;LICZBA ELEMENTÓW MOV R2,#0 ;ZEROWANIE BUFORA SUMY PETLA: MOV DPTR, #Tablica...
Witam, mam problem z dwoma zadaniami na tablicach w asemblerze, mianowicie: 1) ustawić bit zerowy na wartość drugiego bitu każdej liczby w tablicy 2) każda liczbę tablicy pomnożyć przez następna, występująca po niej. mam już "ramy" programu- funkcje zmieniające typ wprowadzanych liczb, pobieranie liczb do tablicy z klawiatury, potrzebuje tylko kilka...
Witaj, _Edycja(at)4 I dokładnie taki sam symbol jest wyeksportowany z dll. Taki ciąg znaków powinieneś podać do funkcji GetProcAddress. Zmian nazw, bzw. usunięcia dekoracji, dokonuje się zazwyczaj za pomocą tekstowego pliku .def, dołączanym do etapu linkowania.
nie planuję programować w asemblerze, ale zrozumienie kroku pomiędzy językiem wysokiego poziomu a językiem maszynowym zbliża mnie do zrozumienia jak w ogóle działają procesory Jakkolwiek nie uczyłem się z książek o Z-80, to bardzo dabra literaturą jest seria książek MIK Stanisława Gardynika o CA-80. Legalne skany znajdziesz na Elektrodzie. Czyli nie...
mov dptr,#keyarr do rejestru DPTR (dwa bajty) ładowany jest adres pierwszego bajtu tablicy o nazwie Keyarr movc a,(at)a+dptr do akumulatora ładowana jest wartość spod adresu jaki jest w DPTR+wartość w akumulatorze. Jeśli przed wykonaniem tej instrukcji w akumulatorze bedzie wartośc 4 to po wykonaniu operacji w akumulatorze znajdzie się wartośc 17 (piąty...
a może jeszcze inaczej a. plik asemblera budujący tablice wektorów przerwań b. kompilacja z opcją -nostartfiles lub tez zmiana skryptu linkera ??? Rozwiązanie o tyle nieelastyczne, że trzeba będzie ręcznie edytować każdy element tablicy wektorów podczas gdy potrzebuję zmodyfikować jedynie wektor INT0, a w stosunku do pozostałych wektorów chciałbym aby...
W sumie to biblioteki można dołączyć na końcu lub umieścić za tablicą "przerwań": CSEG ;segment kodu ORG0 JMPINIT $INCLUDE(procedura.ASM) INIT: ;tu jest główna pętla programu SJMP $ $INCLUDE(procedura2.ASM) Używam prostego, "jednoprzebiegowego" asemblera z funkcją optymalizacji kodu i zawsze to działa. A i zawsze umieszczam wszystkie...
Dobrze by było podac w czym programujesz asembler, C++, bascom??
Tak na marginesie kiedyś był taki standard od 14-31 na polskie znaki co powoduje ze mamy tylko 7 bitów na załą tablicę ASCII
tablice asembler tymczasowe tablice tablice jednowymiarowe
odpalać gasnąć wszystek kontrolka miernik dzwiek kondensator mniejszy zasilacz
samsung ue43nu7192u matryca samsung ue43nu7192u
Porównanie sterowników Salus WQ610RF i Viessmann BSOP Bezpieczniki świateł drogowych Citroen Berlingo 1