在手機(jī)上玩編程
在手機(jī)上可以玩編程?對,可以,而且,玩的還是匯編,6502 匯編。那么,用什么軟件呢?Jbit(http://sourceforge.net/projects/jbit/),一款開源的 J2ME 程序。6502匯編,還有人在用嗎?有,文曲星系統(tǒng)在用,凌陽的cpu 也支持。
下面,簡單介紹一下Jbit 的使用:
1、 啟動(dòng)程序后,出現(xiàn)如下界面
?
3、 再選擇 6502 查看所有的 6502 示例
?
4、 選擇菜單,彈出菜單項(xiàng)
?
5、 選擇 Info,查看該示例的信息:
?
Show the word "CIAO".
CPU Instructions: LDA (LoaD Accumulator), STA (STore Accumulator) and BRK (BReaK).
CPU Addressing Modes: Immediate [#n], absolute [n:n] and implied [].
IO: Video memory is at 40-79 in page 2; 1st row starts at 2:40, 2nd row starts at 2:50 and so on for a 10x4 matrix of Latin1 (extended ASCII) characters.
翻譯及注解:
顯示“CIAO”單詞。
CPU指令:
LDA--由存儲(chǔ)器取數(shù)送入累加器 M→A
STA--將累加器的內(nèi)容送入存儲(chǔ)器 A—M
?
BRK—中斷,程序停止
CPU尋址模式:
A)快速模式 (Immediate)
在這種模式中,操作數(shù)的值在指令中被給出. 在匯編語言中,這種模式以操作數(shù)前加 "#" 來標(biāo)記.
例如: LDA #$0A - 意思是 "load the accumulator with the hex value 0A"
在機(jī)器代碼中,不同的模式以不同的代碼標(biāo)記. 所以 LDA 將依賴于不同的地址模式被翻譯成不同的代碼. 在這種
模式中,代碼是: $A9 $0A
B)完全和完全零頁面模式 (Absolute and Zero-page Absolute)
在這種模式中,操作數(shù)地址被給出.
例如: LDA $31F6 - (匯編語言)
$AD $31F6 - (機(jī)器代碼)
如果地址不是在零頁面 - 也就是,任何高字節(jié)不是00的地址 - 只有一個(gè)字節(jié)需要給出. 處理器自動(dòng)將高字節(jié)填為00.
例如: LDA $F4
$A5 $F4
注意不同的模式中不同的指令代碼.
同時(shí)注意對于兩字節(jié)地址,低字節(jié)先被儲(chǔ)存,例如: LDA $31F6 在內(nèi)存中被存為三個(gè)字節(jié): $AD $F6 $31.
絕對零頁面通常被叫做零頁面.
C)隱含模式 (Implied)
這種模式不需要任何操作數(shù)地址. 它們隱含在指令中.
例如: TAX - (將累加器中的值傳給 X 寄存器)
$AA
IO:Video 內(nèi)存位于 第二頁的 40-79 位;第一行開始于 2:40,第二行開始于 2:50,因此,構(gòu)成一個(gè) 10*4的 Latin1(擴(kuò)展ASCII碼)字符矩陣。
6、 按下完成按鈕,回到示子,再次打開菜單項(xiàng),選擇 [3 Load&RUN],載入并執(zhí)行程序。
?
7、 選擇菜單項(xiàng) Video,查看打印出來的字符
?
?
8、 按任意鍵退回,然后選擇 End
?
9、 然后重復(fù)按下 Back ,一直退回主界面,選擇 Editor
?
10、 打開的編輯器如下:
?
這是什么啊?呵呵,這就是匯編程序的代碼。每一個(gè)數(shù)字(0-255),或者代表指令的操作碼,或者代表數(shù)據(jù)。如前面兩個(gè)數(shù)字:169 67,169 表示指令 LDA,67 表示載入的值。
LDA 指令共有八個(gè)操作碼,分別代表不同的尋址模式。
11、 按下手機(jī)的 # 號(hào)鍵(有些機(jī)型上是 @ 鍵),切換成匯編視圖
?
再次按下 # 號(hào)鍵,回到 MEM 視圖。
12、 按下菜單鍵
?
13、 選擇 7 Debug 進(jìn)行調(diào)試
?
第一行 PC 3:0 R 表示當(dāng)前代碼所處的位置
第二行 LDA #67 就是第一條指令
第三行 A 0 X 0 Y 0 表示 A X Y 寄存器里的值
第六行 I# 0 表示目前已經(jīng)運(yùn)行了 0 條指令
第七行 C# 0 表示目前已經(jīng)運(yùn)行了 0 個(gè)機(jī)器周期
14、 按下數(shù)字 1 鍵,進(jìn)行單步調(diào)試
?
15、 再次按下數(shù)字 1 鍵
?
16、 然后按下 # 號(hào)鍵,查看 Video 內(nèi)存里的值
?
17、 呵呵,C(值為 67) 已經(jīng)打印出來了。
這里,簡單地帶大家逛一下 Jbit,還有很多其它的功能,就不一一列出了。大家可以自已玩一下。
其它的匯編語言,java 的字節(jié)碼,其實(shí)也都可以這樣在手機(jī)上玩,不一定需要實(shí)現(xiàn)全部的指令,只要實(shí)現(xiàn)部分指令,能玩起來就行。
參考文檔:
1、6502 微處理器: http://nesdev.parodius.com/6502_cn.txt
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
