【讀取按鍵】
我們假設你要讀取的是一個普通的方形nes搖桿,而不是一些其他亂七八糟的東西。為了知道一個按鍵是否按下,你一次一鍵地讀取0x4016(搖桿1)或0x4017(搖桿2)。如果按鍵按下,右邊的bit0将被置位(1)。你用1同它相“與”,若結果不為0則跳轉。在你讀取任何内容之前,你需要先複位搖桿(選通)。
【選通/複位】
為了選通/複位搖桿,我們寫入一個1然後一個0到0x4016(搖桿1)或0x4017(搖桿2)。可以這麼搞:
對,就這樣!之後可以真正讀取搖桿資訊。
【讀取順序】
在對0x4016或0x4017進行的的每個讀取操作,你獲得了不同按鍵的狀态,這些被讀出按鍵的順序為:
讀取序号 | 對應按鍵
1. a
2. b
3. select
4. start
5. up
6. down
7. left
8. right
那麼在我們搞些事情之前先學習一些條件和跳轉指令怎麼樣?
【條件跳轉】
我們在大多數指令中設定了一些特定“條件”,他們是:
eq——equal-zero, 等于0
ne——not equal,不等于0
lt——less than,小于0
gt——greater than, 大于0
pl——plus,正數
mi——minus,負數
cc——carry clear,進位标志為0
cs——carry set,進位标志為1
vc——overflow clear,溢出标志為0
vs——overflow set, 溢出标志為1
這些條件會被大多數指令設定,甚至包括資料載入。所有這些條件都有一個分支指令。在條件碼前加上“b”就構成了條件跳轉指令,例如:
我希望你已經發現規律了。我相信隻有ne和eq條件能被一個非比較指令影響。
以防萬一你不知道,偷偷告訴你,一個label(标簽)就是一個名稱後面跟上冒号,例如
我希望你懂了。記住:标簽很好玩。
【讀取按鍵的一個小栗子】
說夠了。上代碼:
希望你不認為這太難。
個人認為gba是更容易程式設計的。是以對我而言,nes程式需要更多學習來搞明白。
【複習今天内容】
首先我想提一點,你可能知道我的gba 彙編系列教程了,或許你也知道我的x86(dos)彙編教程?在三門彙編語言中穿梭有時讓人抓狂,是以如果你看到一些奇怪的或者錯誤,讓我知道就行。謝謝。
按鍵檢測不那麼激情澎湃,但我可以告訴你後面更精彩。。。