對不起,如果這個問題似乎是'太基本'。我是一個68K ASM編碼器,但有一位朋友要求我瀏覽一下6502代碼。 我們有一個指向一串數據:閱讀內存和公司(6502)
my_ptr ds 2
此指針設置與此代碼:
ldx sound_channel_busy
bne .abc_set_score1 ; at bottom of code
sta my_ptr ; fill the pointer
讀取數據與
lda (my_ptr),y ; my_ptr + offset
這樣做,但我看到的6502 doc,y是一個字節。因此,使用超過255字節的數據字符串是不可能的(我們要讀取10.000字節或更多的字符串) 我建議我的朋友這樣做:
1)設置一個指針爲 「鹼基」 和臨時其中之一在讀取
my_ptr ds 2
my_ptr_tmp ds 2
2我們將INC)初始將它們與:
ldx sound_channel_busy
bne .abc_set_score1
sta my_ptr
sta my_ptr_tmp ; Duplicate
3)然後讀取使用:
lda (my_ptr_tmp) ; Read to acumulator
inc my_ptr_tmp ; One more on adress pointer
但它不工作,因爲我的朋友是一個C開發,我們沒有調試器...不容易。 在68K這似乎是合乎邏輯的,但在6502?
非常感謝您的幫助
嗯......在你的答案的第一部分,這意味着你讀取2個字節。但在我的情況下,我有一個2字節的地址,我只想從中讀取一個地址。所以我認爲問題來自於地址的增加(你在解釋中解釋了你的答案的一部分)。我對嗎? (我會試着回來)。非常感謝。 – Peter
所以這意味着68K中的moveword必須在這裏用兩個移動字節完成。用於複製prt並且還包含它。非常感謝 – Peter
是的,我認爲你說的是正確的。數據是字節還是字?正如你所看到的,65(C)02代碼幾乎是RISC,所以代碼根據上下文確實改變(註冊使用等)。如果你詳細說明你的用例,我可以充實我的示例代碼。例如,如果數據未被終止(可能是聲音樣本的情況),則可能需要遞減兩字節計數器。 –