BVS $hhll
Aus C64-Wiki
(Weitergeleitet von BVS)
Mnemonic: | BVS $hhll | |||
Opcode: | $70 | |||
Operand(en): | $nn | |||
Anzahl der Bytes: | 2 | |||
Befehlsgruppe: | Sprungbefehl | |||
Adressierung: | relativ | |||
Beeinflusste Flags im Statusregister: | ||||
keine | ||||
Taktzyklen: | 2 | |||
1 Extratakt bei Sprung | ||||
1 Extratakt bei Überschreitung einer Page-Grenze | ||||
1 | PC | R | Lese Befehl, inkrementiere PC | |
2 | PC | R | hole Operand, inkrementiere PC | |
3 | PC | R | lese Opcode des nächsten Befehls; wird Sprung ausgeführt, addiere Operand zu PCL | |
4+ | PC | R | lese Opcode des nächsten Befehls; korrigiere PCH; hat er sich nicht geändert, inkrementiere PC | |
5! | PC | R | lese Opcode des nächsten Befehls, inkrementiere PC | |
Anmerkung: | Der Opcode-Ladezyklus des nächsten Befehls ist nur zu Demonstrationszwecken angegeben. Zur Berechnung der Zyklenzahl nicht verwenden. | |||
Anmerkung: | * Das Highbyte des Programmzählers (PCH) kann zu diesem Zeitpunkt ungültig sein, z.B. um 256 Bytes zu hoch oder niedrig. | |||
Anmerkung: | + Dieser Zyklus wird beim Sprung ausgeführt | |||
Anmerkung: | ! Führt der Sprung zu einer anderen Seite, wird dieser Zyklus ausgeführt |
Der Assembler-Befehl BVC $hhll verzweigt zur Adresse $hhll (neuer Wert des Programmzählers PC), wenn das Ergebnis der letzten arithmetischen Operation einen Wertebereichsüberlauf (von nicht-negativen Werten zu negativen Werten und umgekehrt) hervorgerufen hat, was mit Overflow-Flag = 1 angezeigt wird.
Im Zuge eines Bit-Tests übertragen die BIT-Befehle Bit 6 des Operanden ins Overflow-Flag und bei einem Bit-Wert von 1 kann sofort eine Verzweigung ausgelöst werden.
Es ist bei der relativen Adressierung darauf zu achten, dass sich das Sprungziel innerhalb des gültigen Adressbereiches befindet!
Funktionsprinzip
Bedeutung der Buchstaben im Befehl
BVS | Branch on oVerflow Set |
Verzweige, wenn Overflow-Flag = 1 |
Beispiel
Überlauf bei arithmetischen Operationen:
clc ; Übertrag vor der Addition löschen lda wert ; Wert aus dem Speicher holen adc #10 ; um 10 erhöhen bvs fehler ; falls die Addition >127 wird, haben wir ; einen "Overflow"! ; Ok, Wert im Bereich -127 bis 128, weiter geht's ... fehler ...
Bit-Abfrage:
weiterlesen ; Daten von einem Gerät lesen ... bit $90 ; STATUS-Byte in der Zeropage bvs abbruch ; Bit 6 im STATUS-Byte gesetzt ; = EOF (End Of File), am Ende der Datei angelangt ; weiter einlesen ... abbruch rts
Vergleichbare BASIC-Anweisung
Keine vergleichbare BASIC-Befehlsfolge vorhanden.