forum speccy.pl

ZX Spectrum => PROGRAMOWANIE => Wątek zaczęty przez: Abrimaal w 2014.10.18, 05:41:02

Tytuł: Z języka A do B lub z B do A
Wiadomość wysłana przez: Abrimaal w 2014.10.18, 05:41:02
Pomóżcie, bo stoję w martwym punkcie.
Jak napisać w assemblerze (A to rejestr A, w nim znajduje się odczytana z tabeli wartość, tabela nie może być zmodyfikowana)
IF A>11 THEN LET A=A-12
Tytuł: Odp: Z języka A do B lub z B do A
Wiadomość wysłana przez: pear w 2014.10.18, 08:36:20
Tak po amatorsku :)
    LD  B,12   ;LET B=12
    CP  B      ;IF A>=B
    JP  NC,END
    SUB B   ;THEN LET A=A-B
END:
Tytuł: Odp: Z języka A do B lub z B do A
Wiadomość wysłana przez: trojacek w 2014.10.18, 09:27:15
Proponowałbym jednak trzymanie się standardu zapisu komend Z80. Skróty i ozdobniki funkcjonujące w jakimś krosasemblerze nie będą rozpoznawane przez natywne asemblery :/. Ja się domyśliłem, o co chodzi, ale początkujący mogą się zastanawiać, z czym to jeść.
Tytuł: Odp: Z języka A do B lub z B do A
Wiadomość wysłana przez: pear w 2014.10.18, 11:25:22
No i już mnie skarcił :)
Częściej piszę pod 8051 niż Z80 i stąd te różnice.
Już poprawiam.
Tytuł: Odp: Z języka A do B lub z B do A
Wiadomość wysłana przez: trojacek w 2014.10.18, 11:33:38
To popraw jeszcze SUB A, B na SUB B ;)
Wiem, czepiam się :)
Tytuł: Odp: Z języka A do B lub z B do A
Wiadomość wysłana przez: RafalM w 2014.10.18, 12:00:09
Cytuj
Wiem, czepiam się :)

Powiedziałbym że nie do końca.

Jeśli np. w asemblerze Sjasm wpiszemy SUB A,B to zostanie to potraktowane jako makroinstrukcja (jak np PUSH HL,DE,BC ) i zamienione na 2 instrukcje:

SUB A
SUB B


Miałem nieprzyjemność tego doświadczyć, pół godziny szukałem błędu w kodzie ;)
Tytuł: Odp: Z języka A do B lub z B do A
Wiadomość wysłana przez: pear w 2014.10.18, 12:28:22
Tutaj ma być po prostu SUB B.
A do poprawienia mam w takim razie znacznie więcej ... eh.
Tytuł: Odp: Z języka A do B lub z B do A
Wiadomość wysłana przez: Abrimaal w 2014.10.19, 00:43:40
Jasne. Rozumiem o co chodzi w JP NC, adres. Na szczęście używam Pasmo  ;)