ZX Spectrum > PROGRAMOWANIE

Konkurs dla programistów ;)

(1/9) > >>

Tygrys:
Każdy programujący w asemblerze zna taką procedurkę:


--- Kod: --- inc h
ld a,h
and 7
ret nz
ld a,l
add a,32
ld e,l
ret c
ld a,h
sub 8
ld h,a
       ret

--- Koniec kodu ---

Zdaniem jest napisanie odpowiednika w języku C.

Dodam, że ja znam rozwiązanie ;-). Jestem ciekaw waszych sposobów.

pear:
Nie to, żebym się czepiał, ale wypadałoby podać co jest wejściem, a co wyjściem.

RafalM:
To jest standardowa procedura przejścia o jedną linię niżej w pamięci ekranu Spectrum.

Argument: HL, zwracana wartość:HL.

A w C pisał nie będę bo pomysłu nie mam,  przepisałbym operacja po operacji kod z asemblera ;)

Tygrys:
pear, dzięki za uwagę, Fakt, nie każdy musi kojarzyć tą procedurę.

Tak jak napisał Rafał, wejściem jest adres pamięci VIDEO w rejestrze HL. Wynikiem działania jest adres pamięci dla linii poniżej. Działanie na zasadzie y=y+1

Co do języków programowania, to w sumie może być każdy inny wysokiego poziomu, jak chociażby BASIC.

Po rozwiązaniu tego zadania, będzie kolejne. Mam nadzieję, że inni również się przyłączą do zabawy ;)

Gryzor:
Za malo danych wejsciowych do rozwiazania zadania :-)
To ma byc w C na ZXa czy w generycznie w Ansi C np.
unsigned int func(unsigned int x);
ja bym uzyl #def i przepisal w assemblerze :-)

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej