SIGN

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Anmerkung: Dieser Artikel beschreibt die numerische SIGN-Routine im BASIC-ROM.

Name: SIGN
Beschreibung: Zahl im Fließkommaregister FAC prüfen und Akkumulator sowie Flags entsprechend setzen
Einsprungpunkt: $BC2B / 48171
Übergebene Argumente:
Rückgabe-Werte:
Akkumulator: $00 falls FAC=0, $01 falls FAC positiv, $FF falls FAC negativ
Zero-Flag: gesetzt genau dann, wenn FAC=0
Negative-Flag: gesetzt genau dann, wenn FAC<0


SIGN[1] — manchmal auch als SGNFAC[2] bezeichnet — prüft die Zahl im Fließkommaregister FAC und setzt den Wert des Akkumulators und damit das Zero-Flag und das Negative-Flag entsprechend: Falls FAC den Wert 0 hat, so setzt die Routine den Akkumulator auf 0 / $00. Bei einer positiven Zahl in FAC bekommt der Akkumulator den Wert 1 / $01, bei einer negativen Zahl den Wert 255 / $FF. Nach dem Aufruf ist ein FAC von 0 an einem gesetzten Zero-Flag erkennbar; eine negative Zahl in FAC an einem gesetzten Negative-Flag. Sind beide Flags gelöscht, so weist dies auf eine positive Zahl in FAC hin.

Der Aufruf von SIGN verändert keine Speicherinhalte.

Laufzeitverhalten

SIGN prüft lediglich den Exponenten von FAC an Adresse 97/$61, und bei einer von 0 verschiedenen Zahl in FAC zusätzlich das Vorzeichen an Adresse 102/$66. Dementsprechend benötigt ein Aufruf von SIGN nur 18 Systemtakte, falls FAC den Wert 0 enthält. Im Fall einer positiven bzw. negativen Zahl in FAC beträgt die Laufzeit von SIGN 28 bzw. 27 Takte.

Ein Systemtakt entspricht auf dem Commodore 64 rund einer Mikrosekunde (μs).

Weblinks

Quellen