Jeszcze raz ass z 80
Masz problem? Zapytaj na forum elektroda.pl
From: "muniek" <muniek241_at_nospam_wp.pl>
Subject: Jeszcze raz ass z 80
Date: Sun, 8 Dec 2002 08:11:27 +0100
Witam!
Jeszcze raz zwracam się do Was z proźbą. Za pierwszym razem pomogliście,
więc może i tym razem też :)
Mam do napisania program w assemblerze na Z80 który ma posortować liczby z
pięcio elementowej tablicy. Kierunek sortowania jest dowolny. Próbowałem
napisać ten program, ale nic nie wyszło :(
Pozdrawiam i proszę o pomoc
Muniek
From: "edek" <k_at_nospam_ii.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Sun, 8 Dec 2002 09:21:45 +0100
Użytkownik "muniek" <muniek241_at_nospam_wp.pl> napisał w wiadomości
news:asurcu$8uf$1_at_nospam_absinth.dialog.net.pl...
Witam!
Jeszcze raz zwracam się do Was z proźbą. Za pierwszym razem pomogliście,
więc może i tym razem też :)
Mam do napisania program w assemblerze na Z80 który ma posortować liczby z
pięcio elementowej tablicy. Kierunek sortowania jest dowolny. Próbowałem
napisać ten program, ale nic nie wyszło :(
Pozdrawiam i proszę o pomoc
Muniek
To juz bardziej sie nadaje na pl.comp.programming
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Sun, 8 Dec 2002 18:34:28 +0100
Użytkownik "muniek" <muniek241_at_nospam_wp.pl> napisał w wiadomości
news:asurcu$8uf$1_at_nospam_absinth.dialog.net.pl...
Witam!
Jeszcze raz zwracam się do Was z proźbą. Za pierwszym razem pomogliście,
więc może i tym razem też :)
Mam do napisania program w assemblerze na Z80 który ma posortować liczby z
pięcio elementowej tablicy. Kierunek sortowania jest dowolny. Próbowałem
napisać ten program, ale nic nie wyszło :(
...
najprostsze do napisania jest chybac sortowanie babelkowe
przegladasz tablice od poczatku do konca
i porownujesz dwa sasiednie elementy
w zaleznosci od oczekiwanego kierunku posortowania
(rosnaco czy malejaco)
zamieniesz te dwa elemeny miejscami lub nie
jesli jeden mniejszy od drugiego
i idziesz o kroko dalej
itd
przy ostanim przegladnieciu juz niczego nie bedziesz
musial zamieniac bo wszystko bedzie na swoim miejscu
i to jest koniec sortowania
Andrzej
From: "muniek" <muniek241_at_nospam_wp.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Sun, 8 Dec 2002 18:52:00 +0100
Użytkownik "Andy" <anok_at_nospam_ceti.pl> napisał w wiadomości
news:asvvsg$g3n$1_at_nospam_news.tpi.pl...
Użytkownik "muniek" <muniek241_at_nospam_wp.pl> napisał w wiadomości
news:asurcu$8uf$1_at_nospam_absinth.dialog.net.pl...
Witam!
Jeszcze raz zwracam się do Was z proźbą. Za pierwszym razem pomogliście,
więc może i tym razem też :)
Mam do napisania program w assemblerze na Z80 który ma posortować liczby
z
pięcio elementowej tablicy. Kierunek sortowania jest dowolny. Próbowałem
napisać ten program, ale nic nie wyszło :(
...
najprostsze do napisania jest chybac sortowanie babelkowe
Ale jak to zrobić w assemblerze???W Pascalu czy w C++ to banał. Na
wykładach mamy tyle informacji że lepiej nie mówić.(Prawdę powiedziawszy do
tej pory nie zabardzo nawet wiem jak zrobić tablicę w assemblerze).
Właściwie to cały wykład sprowadza się do polecenia zróbcie to i to, ale jak
się do tego zabrać, to już twoja sprawa :(
Chcę się tego nauczyć, ale w necie nie ma przykładowych programów z
omówieniami na Z80 :((( A z literaturą też cieńko (wogóle jest jakaś ???)( z
piniędzmi na nią też ;) )
Pozdrawiam
Muniek
From: Slawomir Sidor <slawek_at_nospam_graficomp.com.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Sun, 08 Dec 2002 19:40:42 +0100
Ale jak to zrobić w assemblerze???W Pascalu czy w C++ to banał. Na
Tak samo, tylko inaczej sie to zapisuje. Mniej obrazowo.
tej pory nie zabardzo nawet wiem jak zrobić tablicę w assemblerze).
Tablice w assemblerze ? No mnemonika na to nie znajdziesz.
Wybierasz sobie jakis fragment pamieci i ustalasz, ze bedzie to twoja
tablica.
Chcę się tego nauczyć, ale w necie nie ma przykładowych programów z
omówieniami na Z80 :((( A z literaturą też cieńko (wogóle jest jakaś ???)( z
piniędzmi na nią też ;) )
Literatury jest bardzo duzo, ale nie szukaj nowej. Cofnij sie w czasie
do ZX Spectrum i masz literature, niestety wiele w PL bylo ciezko
dostepne.
A sortowanie robisz najprosciej jak sie da.
Wybierz fragment pamieci ze swoja tablica.
Wczytaj pierwszy element, porownaj z drugim
(metoda porownania dowolna, mozliwe jest kilka rozwiazan)
Jesli dokonales zamiany to lecisz na poczatek procedury.
Jesli doszedles do konca tablicy to jest posortowana.
Dla pieciu elementow to moznaby to na samych rejestrach zrobic :)
(niech ktos zerknie czy sie nie walnalem z rozpedu)
--
Slawomir Sidor (601 ALEKSA) N 51 58.1385 E020 09.1966
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 9 Dec 2002 12:25:50 +0100
Użytkownik "muniek" <muniek241_at_nospam_wp.pl> napisał w wiadomości
news:at01am$spv$1_at_nospam_absinth.dialog.net.pl...
...
Ale jak to zrobić w assemblerze???
...
no musisz troche pokombinowac,
zwykle robilo sie tak:
tab: DB 0,0,0,0,0
"tab"- to etykieta
masz tablice bajtowa z 5-cioma zerami
uzywalem asm'a w zyciu na kilka roznych prockow ala jakos Z80 mnie ominelo
pobieranie elementow z tablicy
zwykle robi sie posrednio przez jakis rejestr
lub bezposrednio + rejestr z offsetem
wtedy resjestr z offsetem trzeba inkremenowac o 1 po kazdym obejsciu
do porownania dwoch licznb zwykle tez jest jakas iinstrukcja w stylu
CMP, COMP itp
a jesli nie to mozesz odjac od siebie dwie liczby
i po rejestrze stanu stwierdzic czy wynik odejmowania
jest wiekszy, mniejszy czy rowny zero
i to prawie wszystko czego potrzebujesz
szczegolow musisz poszukac w sieci
na pewno znajdziesz liste rozkazow Z80
Andrzej
From: Slawomir Sidor <slawek_at_nospam_graficomp.com.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 09 Dec 2002 14:33:04 +0100
pobieranie elementow z tablicy
zwykle robi sie posrednio przez jakis rejestr
lub bezposrednio + rejestr z offsetem
W Z80 polecam rejestr IX
Napewno po tym wykladowca bedzie bardziej zadowolony.
Przy tablicy do 256 elementow wystarczy.
--
Slawomir Sidor (601 ALEKSA) N 51 58.1385 E020 09.1966
From: "muniek" <muniek241_at_nospam_wp.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Thu, 12 Dec 2002 13:15:58 +0100
Uzytkownik "Slawomir Sidor" <slawek_at_nospam_graficomp.com.pl> napisal w wiadomosci
news:np69vu4b2pas3n39i2b4vk7mrosu6fcp73_at_nospam_4ax.com...
pobieranie elementow z tablicy
zwykle robi sie posrednio przez jakis rejestr
lub bezposrednio + rejestr z offsetem
W Z80 polecam rejestr IX
Napewno po tym wykladowca bedzie bardziej zadowolony.
Przy tablicy do 256 elementow wystarczy.
Witam!
W koncu napisalem ten program, eh. ;) Przedstawiam go ponizej. O teraz takie
pytanie. Jak by go mozna napisac prosciej??? Np. z wykorzystaniem rejestrów
IX ?
Pozdrawiam
Muniek
;-------------------------------------------------
; sortowanie babelkowe
;-------------------------------------------------
STARTC &100
ENDC END
org &100
ld hl,&500
ld sp,hl ; inicjacja stosu danych
ld bc,TAB ; pierwsza liczba = poczatek ciagu liczb (tab...hl-1)
ld a,(NR)
ld e,a
ld hl,TAB ; adres konca ciagu liczb w hl
adc hl,de ; tab + NR
dec hl
ld de,TAB+1 ; druga liczba = (bc+1...hl)
;---------------------------------------------------
; glowna petla (tm)
;---------------------------------------------------
PETLA: push hl ; adres konca narazie nie potrzebny
ld a,(de)
ld h,a
ld a,(bc)
sub h ; (bc)-(de)
jp P,PETLA2 ; wynik ujemny wiec (bc) < (de) , bez zamiany miejsc
ld a,(de) ; wynik dodatni zamiana miejscami
ld h,a ; (de)->a->h
ld a,(bc) ; (bc)->a
ld (de),a
ld a,h
ld (bc),a
PETLA2: pop hl ; teraz adres konca sie przyda :P
inc de
push hl
sbc hl,de
pop hl
jp P,PETLA
inc bc ; de na koncu ciagu , bc++ , de = bc + 1
push bc ; bc -> de
pop de
inc de
push hl
sbc hl,bc
pop hl
jp P,PETLA
halt ; koniec bo bc = hl
NR: defb 5 ; ilosc liczb do posortowania
TAB: defb 8,5,7,1,3 ; liczby do posortownia
END: EQU $
From: Slawomir Sidor <slawek_at_nospam_graficomp.com.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Thu, 12 Dec 2002 19:13:02 +0100
W koncu napisalem ten program, eh. ;) Przedstawiam go ponizej. O teraz takie
pytanie. Jak by go mozna napisac prosciej??? Np. z wykorzystaniem rejestrów
IX ?
O ile dobrze zerknalem (nie chce mi sie nad tym gleboko zastanawiac)
to rejestry BC i DE sluza u Ciebie jako wskazniki do odpowiednich
liczb w tablicy.
Czyli zeby bylo bardziej ladnie to zamiast BC wstawiasz IX a zamiast
DE wstawiasz IY.
Generalnie IX, IY sluza wlasnie do indeksowania tablic itp.
Oczywiscie nie ma obowiazku ich uzywania, ale niektorzy wykladowcy
patrza na to jako na wieksze zaawansowanie programujacego.
Dla mnie to nie ma sensu jesli nie brakuje nam rejestrow.
Uzycie IX i IY zwieksza objetosc kodu programu.
--
Slawomir Sidor (601 ALEKSA) N 51 58.1385 E020 09.1966
From: "jerry1111" <jerry1111_at_nospam_wp.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Sun, 8 Dec 2002 18:50:48 +0100
najprostsze do napisania jest chybac sortowanie babelkowe
Ale masz koszt O(n^2) o ile dobrze
licze. Strrrrasznie dlugo sie bedzie sortowac.
Znaczy, w tym zadaniu przy 5 elementach
w tablicy to jeszcze przejdzie.
jerry
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: Jeszcze raz ass z 80
Date: Sun, 08 Dec 2002 22:17:30 GMT
On Sun, 8 Dec 2002 18:50:48 +0100, jerry1111 wrote:
najprostsze do napisania jest chybac sortowanie babelkowe
Ale masz koszt O(n^2) o ile dobrze
licze. Strrrrasznie dlugo sie bedzie sortowac.
Znaczy, w tym zadaniu przy 5 elementach
w tablicy to jeszcze przejdzie.
Otoz to - trudno bedzie uzyskac lepszy efekt jakakolwiek metoda.
J.
From: "edek" <k_at_nospam_ii.pl>
Subject: Re: Jeszcze raz ass z 80 - OT
Date: Mon, 9 Dec 2002 01:16:42 +0100
Uzytkownik "J.F." <jfox_at_nospam_poczta.onet.pl> napisal w wiadomosci
news:3e35bfe6.36043022_at_nospam_no...
On Sun, 8 Dec 2002 18:50:48 +0100, jerry1111 wrote:
najprostsze do napisania jest chybac sortowanie babelkowe
Ale masz koszt O(n^2) o ile dobrze
licze. Strrrrasznie dlugo sie bedzie sortowac.
Znaczy, w tym zadaniu przy 5 elementach
w tablicy to jeszcze przejdzie.
Sortowania babelkowe, wstawianie, wybieranie
dzialaja wlasnie super (znaczy najszybciej)
dla malych tablic 3-5 elementow
-> wide np. Knuth Wirth "Algorytmy + struktury..."
Reingold, Deo "Algorytmy kombinatoryczne"
Ale to juz raczej dyskusja na pl.comp.programming
edek
From: "Piotr Wyderski" <piotr.wyderskiREMOVE_at_nospam_hoga.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 9 Dec 2002 01:29:05 +0100
jerry1111 wrote:
najprostsze do napisania jest chybac sortowanie babelkowe
Ale masz koszt O(n^2) o ile dobrze
licze. Strrrrasznie dlugo sie bedzie sortowac.
Dobrze liczysz, choc zlozonosc asymptotyczna podaje sie dla
funkcji, nie dla stalej -- przy 5 elementach to bedzie po prostu
jakies K. :-) BTW, istnieje wersja sortowania babelkowego
o zlozonosci O(n^1,58), tzw. sortowanie Shella.
Znaczy, w tym zadaniu przy 5 elementach
w tablicy to jeszcze przejdzie.
Selection sort da ~13 porownan, czy to az tak duzo? :-)
A kod bedzie bardzo zwarty i krotki.
Pozdrawiam
Piotr Wyderski
From: "jerry1111" <jerry1111_at_nospam_wp.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 9 Dec 2002 21:12:57 +0100
Znaczy, w tym zadaniu przy 5 elementach
w tablicy to jeszcze przejdzie.
Selection sort da ~13 porownan, czy to az tak duzo? :-)
A kod bedzie bardzo zwarty i krotki.
Pewnie ze tak ;)
Po prostu 0.0001s przed wcisnieciem WYSLIJ zorientowalem
sie ze temat jest na tablice 5 elementow. No i dopisalem
te 2 wiersze, ale nie zmienilem reszty :(
Dla sortowania 5 sztuk to po prostu nie ma sie co
bawic, tylko zrobic 'jak leci' pierwszym sposobem co
przyjdzie do glowy.
jerry
From: jfox_at_nospam_poczta.onet.pl (J.F.)
Subject: Re: Jeszcze raz ass z 80
Date: Sun, 08 Dec 2002 20:41:40 GMT
On Sun, 8 Dec 2002 08:11:27 +0100, muniek wrote:
Mam do napisania program w assemblerze na Z80 który ma posortować liczby z
pięcio elementowej tablicy. Kierunek sortowania jest dowolny. Próbowałem
napisać ten program, ale nic nie wyszło :(
Dokladnie piec ? To nie ma sensu jakis petli zakladac, mozesz
sobie kolejne porownania w kod wbic.
Poszukaj na sieci "sieci sortujace" [sorting networks]
Optymalne rozwiazania sa znane.
J.
From: "Piotr Wyderski" <piotr.wyderskiREMOVE_at_nospam_hoga.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 9 Dec 2002 01:24:59 +0100
J.F. wrote:
Dokladnie piec ? To nie ma sensu jakis petli zakladac, mozesz
sobie kolejne porownania w kod wbic.
Ale petla bedzie mala, szczegolnie, jesli wybierze selection
lub insertion sort, babelkow sie ogolnie rzadko uzywa.
Poszukaj na sieci "sieci sortujace" [sorting networks]
One zwykle implementuja mergesort -- idealne do implementacji
sprzetowej i do wiekszych danych sekwencyjnie, ale dla 5 elementow... :-)
Tu warto rozwinac drzewo porownan, ale kod moze byc spory -- 5
elementow to nie jest znow tak malo.
Optymalne rozwiazania sa znane.
Co przez to rozumiesz? Problem sortowania przez porownania
ma ogolne rozwiazania optymalne, o zlozonosci Omega(n log n),
istnieje wiele algorytmow (np. heapsort czy wspomniany merge)
o zlozonosci Theta(n log n).
Pozdrawiam
Piotr Wyderski
From: "Tomasz Bednarz" <tb_at_nospam_internet.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 9 Dec 2002 00:29:55 +0100
Jeszcze raz zwracam się do Was z proźbą. Za pierwszym razem pomogliście,
więc może i tym razem też :)
Mam do napisania program w assemblerze na Z80 który ma posortować liczby z
pięcio elementowej tablicy. Kierunek sortowania jest dowolny. Próbowałem
napisać ten program, ale nic nie wyszło :(
Pozdrawiam i proszę o pomoc
Szkoda ze nie piszesz nic:
- jakie to liczby 1,2,3,4... bajtowe ?
- jaka jest struktura tej tablicy w pamieci ? (akurat to ze jest to a ass i
ze jest to tablica 5 wyniarowa - mi nie mowi nic)!
- jak chcesz posortowac te tablice? tzn co znaczy posortowac 5 wymiarowa
tablice ?
- gdzie sa warunki wejsciowe ?
TB
From: Slawomir Sidor <slawek_at_nospam_graficomp.com.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 09 Dec 2002 01:01:21 +0100
- gdzie sa warunki wejsciowe ?
Pewnie takie dostal zadanie, bez sprecyzowania reszty.
Musi sobie cos przyjac.
--
Slawomir Sidor (601 ALEKSA) N 51 58.1385 E020 09.1966
From: "Tomasz Bednarz" <tb_at_nospam_internet.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 9 Dec 2002 01:49:55 +0100
Użytkownik "Slawomir Sidor" <slawek_at_nospam_graficomp.com.pl> napisał w wiadomości
news:c9n7vuk2ke671llmdp5ipk2bjn03eb6ohd_at_nospam_4ax.com...
- gdzie sa warunki wejsciowe ?
Pewnie takie dostal zadanie, bez sprecyzowania reszty.
Musi sobie cos przyjac.
Ah i tak nie doczytalem
gosc pisze o pieciu elementach
a skoro tych elementow jest piec to nie ma chyba co sortowac :-)
Wasnie (pytanie teoretyczne) - kiedy mozna mowic o sortowaniu ?
Tzn ile musi byc elementow :-) jak sa dwa to tez moze byc sortowanie ?
TB
From: Slawomir Sidor <slawek_at_nospam_graficomp.com.pl>
Subject: Re: Jeszcze raz ass z 80
Date: Mon, 09 Dec 2002 14:35:20 +0100
Wasnie (pytanie teoretyczne) - kiedy mozna mowic o sortowaniu ?
Tzn ile musi byc elementow :-) jak sa dwa to tez moze byc sortowanie ?
W zasadzie tak. Skoro mozna sortowac rosnaco i malejaco to juz dwa
elementy mozna sortowac. I to chyba tylko metoda babelkowa :))
Przy trzech elementach to juz mozna sie wykazac.
--
Slawomir Sidor (601 ALEKSA) N 51 58.1385 E020 09.1966