forum speccy.pl
ZX Spectrum => PROGRAMOWANIE => Wątek zaczęty 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
-
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:
-
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ść.
-
No i już mnie skarcił :)
Częściej piszę pod 8051 niż Z80 i stąd te różnice.
Już poprawiam.
-
To popraw jeszcze SUB A, B na SUB B ;)
Wiem, czepiam się :)
-
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 ;)
-
Tutaj ma być po prostu SUB B.
A do poprawienia mam w takim razie znacznie więcej ... eh.
-
Jasne. Rozumiem o co chodzi w JP NC, adres. Na szczęście używam Pasmo ;)