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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Quellen[Bearbeiten | Quelltext bearbeiten]