Jeszcze raz ass z 80



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
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




Poprzedni Następny
Wiadomość
Spis treści
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






Poprzedni Następny
Wiadomość
Spis treści
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




Poprzedni Następny
Wiadomość
Spis treści
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




Poprzedni Następny
Wiadomość
Spis treści
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


Poprzedni Następny
Wiadomość
Spis treści
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




Poprzedni Następny
Wiadomość
Spis treści
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


Poprzedni Następny
Wiadomość
Spis treści
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 $




Poprzedni Następny
Wiadomość
Spis treści
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


Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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.


Poprzedni Następny
Wiadomość
Spis treści
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






Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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.


Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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:
ze jest to tablica 5 wyniarowa - mi nie mowi nic)!
tablice ?

TB




Poprzedni Następny
Wiadomość
Spis treści
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


Poprzedni Następny
Wiadomość
Spis treści
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



Poprzedni Następny
Wiadomość
Spis treści
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