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...
W każdej nowej linijce dodaj DB i wtedy nie ma znaczenia ile takich danych umiescisz.
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...
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)...
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,...
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...
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...
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...
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ć...
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...
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...
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...
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...
Wydaje mi się , że do takich porównań lepiej użyć XRL , niż SUBB . Piotrek
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
1. Jak wprowadzasz tablicę? 2. Wypisanie indeksów trochę mało ma się do samej tablicy, gdyż jest to wyłącznie matematyka (i={2,4,..,n}, dla n<=rozmiar(tablica))
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...
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
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...
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
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...
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.
Witaj, może inta jest wskaźnikiem na początek tablicy? Pozdrawiam!
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ł ;)
... ; 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...
Teraz kumam o co w tym chodzi. Dziekuje bardzo za pomoc i jeszcze jedno pytanie gdzie znajde taka tablice?
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ę.
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
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)
Zapomniałem dodać, że piszę w asemblerze.
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 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...
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...
Hmmmm... a czy nie możesz w funkcji odczytu po prostu nie wrzucać znaków NULL do tablicy ? Potrzebne Ci są one do czegoś ? Ewentualnie zrób obsługę tablicy w asemblerze i sam poznęcaj się nad zapisem i odczytem do i z pamięci, która odpowiada za tablicę.
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)...
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...
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...
nie jest dokładnie wyskalowany wiec np . 2bity odpowiadałoby (wyświetlałoby)0,1V , 4 bity 0,2V ale już np 6bitów 0,3V a 20bitów 1,1V i inne. chodzi mi o zasade tworzenia tablic w asemblerze bo na razie wiem tylko że zaczyna sie to od .db . jak to zrozumiem to licze że dalej mi pójdzie.
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...
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.
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...
Co konkretnie koleżanko chcesz robić ?
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...
Co do problemu to chwilowo nic nie dodam. Zauważyłem jednak że nie zwalniasz zaalokowanej pamięci a w C++ to poważny błąd. Każdy new powinien być w parze z delete, a ponieważa alokujesz tablice powinieneś użyć delete[].
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
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...
W załączniku przejrzyj dwie procedurki.
asembler tablice tymczasowe tablice tablice błędów
nvidia jetson lokalizacja bluetooth gogle chrome
amplituner naprawa denon amplituner naprawa denon
Solar Tracking System Block Diagram Using TDA2822 IC, LDR Sensors, and DC Motor Alphard SW 807 – parametry techniczne, moc, T-S, zastosowanie głośnika niskotonowego