我正在通過C64仿真器學習6502微程序集。目前試圖將字符串輸出到屏幕上。這是我的代碼:ASCII到C64在DASM彙編程序的屏幕代碼
processor 6502
org $1000
ldx #$00 ;using x register as column counter
print:
lda message,x;load a with x bit from message
sta $0400,x ;store this bit in row 0 col 0 address
inx ;x++
cpx #$05 ;is x >= 5?
bne print ;if not x >= 5, loop again
rts ;return from program
message dc "HELLO"
hexmsg dc $08,$05,$0c,$0c,$0f
因爲我的編輯器(記事本++上取勝10)使用ASCII狀炭碼,在message
的"HELLO"
是比特48 45 4C 4C 4F。這給出了在屏幕左上角的以下輸出:
這是正確的我猜,通過查看目標屏幕代碼表here。
如果我將第6行更改爲lda hexmsg,x
,那麼我會得到我正在處理的內容HELLO
。
我還不是很熟悉DASM彙編器,並且無法找到它的完整文檔(如果存在)。我發現的大多數教程只是聲明message .byte "HELLO"
或類似的東西,它只是起作用,因爲它們使用的彙編程序會自動將類ascii文本字符串自動轉換爲標準化字符串,但DASM似乎沒有這樣做。
有誰知道一個方法可以讓我要麼得到DASM要做到這一點,還是推薦另一種方式來簡單地輸入字符串爲彙編,而不是手動鍵入我的字符串作爲一幫十六進制數據?
順便說一句,這是我能找到的最好的文檔:http://www.macs.hw.ac.uk/~pjbk/scholar/dasm.html。 –
我很確定您的問題的來源是在源代碼中使用大寫字母。這些顯示爲大寫還是圖形字符取決於C64的當前圖形模式。嘗試使用小寫字母,我希望你會看到你期望的大寫字母。 –