INY

Aus C64-Wiki
(Weitergeleitet von iny)
Zur Navigation springenZur Suche springen
Mnemonic: INY
Opcode: $C8
Anzahl der Bytes: 1
Befehlsgruppe: Arithmetik- und Logikbefehle
Adressierung: implizit
Beeinflusste Flags im Statusregister:
Negative-Flag
Zero-Flag
Taktzyklen: 2


Der Assembler-Befehl INY erhöht den Inhalt des Y-Registers um 1.
Bei einer Erhöhung des Wertes 255 ($ff) wird der neue Wert wieder 0.

Funktionsprinzip

Ass befehl c8.gif

Bedeutung der Buchstaben im Befehl

INY INcrement Y-Register
Erhöhe Y-Register

Beispiel

; Dieses Programm speichert einen Speicherbereich auf Diskette
; Programmstart mit SYS 49152 "NAME",Startadresse,Endadresse  
; z.B: SYS 49152 "NAME",4096,8192 (Programm NAME ab Adresse $1000-$2000 speichern)

*=$c000         ; Startadresse des Programms

CHKKOM   = $AEFD
FRMEVL   = $e257 
FRMNUM   = $AD8A
GETADR   = $b7f7

start       jsr FRMEVL     ; Dateinamen holen und setzen
           
            ldx #$08       ; Gerätenummer
            stx $ba
                        
            jsr CHKKOM     ; auf "," prüfen

            jsr FRMNUM     ; Ausdruck holen und auf numerisch prüfen 
            jsr GETADR                        
            sty $c1        ; Startadresse in $c1/$c2 speichern
            sta $c2

            jsr CHKKOM     ; auf "," prüfen

            jsr FRMNUM     ; Ausdruck holen und auf numerisch prüfen 
            jsr GETADR     ; (Akku = H-Byte; Y-Register = L-Byte)

            iny            ; zur Endadresse den Wert 1 addieren       
            bne endadr     
            clc
            adc #$01       

endadr      sty $ae        ; Endadresse in $ae/$af speichern
            sta $af

            jmp $f5ed      ; Save-Routine (implizites rts)

Speicherauszug:

.c000  20 57 e2  jsr $e257
.c003  a2 08     ldx #$08
.c005  86 ba     stx $ba
.c007  20 fd ae  jsr $aefd
.c00a  20 8a ad  jsr $ad8a
.c00d  20 f7 b7  jsr $b7f7
.c010  84 c1     sty $c1
.c012  85 c2     sta $c2
.c014  20 fd ae  jsr $aefd
.c017  20 8a ad  jsr $ad8a
.c01a  20 f7 b7  jsr $b7f7
.c01d  c8        iny
.c01e  d0 03     bne $c023
.c020  18        clc
.c021  69 01     adc #$01
.c023  84 ae     sty $ae
.c025  85 af     sta $af
.c027  4c ed f5  jmp $f5ed

Vergleichbare BASIC-Anweisung

Für BASIC V2:

10 Y = Y + 1

Beispielprogramme