私は、ランディ・ハイドによる 6502 アセンブリ言語を使用した本の A totorial に従っています。第 14 章のセクション 7 に「jsr incrtn」と書かれている部分があります。問題は、彼が incrtn というサブルーチンを作成していないことです。ここに完全なコードがあります。 、
PRTSTR:
STA ASAVE
STY YSAVE
PLA ;GET RETURN ADDRESS FROM
STA RTNADR ;THE 6502 STACK
PLA
STA RTNADR+$1
;
JSR INCRTN ;INCREMEOT THE RETURN ADDRESS
LDY #$0
LDA (RTNADR),Y ;GET L.O. ADDRESS OF STRING
STA ZPAGE
INY
LDA (RTNADR),Y ;GET H.O.ADDRESS OF STRING
STA ZPAGE+$1
;
JSR INCRTN ;MOVE RTNADR PAST THE ADDRESS
JSR INCRTN ;BYTES
;
;
; AT THIS POINT, ZPAGE POINTS TO THE STRING WHICH
; IS SUPPOSED TO BE OUTPUT
;
DEY ;RESET Y REG TO ZERO
LDA (ZPAGE),Y ;GET THE LENGTH OF THE STRING
STA LENGTH ;AND STORE IT IN "LENGTH"
PRTS1 INY ;MOVE TO THE NEXT CHARACTER
CPY LENGTH ;ARE WE THROUGH YET?
BEQ PRTS2
;
LDA (ZPAGE),Y ;GET THIS CHARACTER
JSR COUT ;AND OUTPUT
JMP PRTS1 ;MOVE TO NEXT CHAR AND REPEAT
;
PRTS2 LDA ASAVE ;RESTORE THE REGISTERS
LDY YSAVE
JMP (RTNADR) ;SIMULATE AN RTS
;
;
;
ASAVE EPZ $0 ;ZERO PAGE WORKSPACE
YSAVE EPZ ASAVE+$1
ZPAGE EPZ YSAVE+$1
RTNADR EPZ ZPAGE+$2
COUT EQU $FDED ;COUT ROUTINE
END
誰でも私を助けることができますか?
更新、誰かがテキストを印刷する方法を知りたい場合は、短い方法でここにいくつかの作業コードがあります
LDX #$0
LOOP INX
LDA STRING,X
JSR $FDF0
CPX STRING
BLT LOOP
RTS
STRING STR "hello world"
END