[討論]考考你們→ 一個判斷轉向的程式

6502 組合語言,是哈電族裡使用的程式語言,也是目前設計 Bin 的唯一方法,有興趣的就進來吧
回覆文章
頭像
sppmg
一級會員
一級會員
文章: 260
註冊時間: 2004-01-10 12:41 PM
來自: 地球ㄉ台灣ㄉ台北
聯繫:

[討論]考考你們→ 一個判斷轉向的程式

文章 sppmg » 2005-04-27 7:45 PM

因為我想做TXT介面的文字編輯器,
但是有很多按鍵不是文字(如F1~F4、輸入.....)
所以要判斷按下哪些鍵,以及跳至他們須執行的程式。
不過那些程式都是小程式
改兩三個位址值就行了

問題來了!
請各位想想,如何做出程式體積小,執行速度快的判斷程式
再說一次已存在的條件↓
1.只有約十幾個需判斷的按鍵值
2.跳轉後的副程式都是小程式,約佔12B。且有跳轉至同一副程式的現象。
(也就是說副程式總大小很小很小)



我現在想用的方法是我在上歷史時突然想到的,
真的是又快又好,
而且這種方法只有組語或機語才做得到喔!(這也算是個提示啊!)
大家努力想想吧!
(嘿!搞不好有更好的方法)
註:若用查表程式,那些"表"也算體積
一星期後公佈答案。
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)

Mowd
系統管理員
系統管理員
文章: 1826
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd » 2005-04-27 11:56 PM

表先做好假設在
$3000:40 00 40 10

LDA #$C7
減掉一定的值之後再JSR至預先設定好的$3000

我忘記減法還有JSR間接尋址的方法啦
Mowd 與你的交流天地
歡迎您的到來

頭像
sppmg
一級會員
一級會員
文章: 260
註冊時間: 2004-01-10 12:41 PM
來自: 地球ㄉ台灣ㄉ台北
聯繫:

文章 sppmg » 2005-04-28 12:12 PM

啊!沒說清楚
實現功能可以是JSR或JMP

另外要說一下表的格式(估大小)
估計一下轉移程式的大小
數值接近的之後再寫出來看看
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)

Mowd
系統管理員
系統管理員
文章: 1826
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd » 2005-04-28 6:30 PM

其實越看越模糊,條件不夠清楚根本不知道要寫什麼@@
Mowd 與你的交流天地
歡迎您的到來

頭像
sppmg
一級會員
一級會員
文章: 260
註冊時間: 2004-01-10 12:41 PM
來自: 地球ㄉ台灣ㄉ台北
聯繫:

文章 sppmg » 2005-05-02 6:29 PM

哪裡不懂我再說說

主要條件就是
1.只有約十幾個需判斷的按鍵值
2.跳轉後的副程式都是小程式,約佔12B。且有跳轉至同一副程式的現象。
(也就是說副程式總大小很小很小)

至於跳轉方式不限用JSR或JMP
估計大小嘛.......只是方便啦。
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)

頭像
sppmg
一級會員
一級會員
文章: 260
註冊時間: 2004-01-10 12:41 PM
來自: 地球ㄉ台灣ㄉ台北
聯繫:

文章 sppmg » 2005-05-13 7:09 PM

好啦好啦!
我直接說吧!

我的方法是
利用組合語言能修改指令的功能減少程式碼
表:
比對值:1B
跳轉程式之偏移量:1B
(以上結構循環)

程式
CMP.....
BNE.....(條件不符,再比對)
STA ......(修改下面BEQ後的數值)
BEQ 00
JMP ......(條件均不符合,回主程式)
.....以下為跳轉後的子程式......

說明:
上面的轉移程式就是,
當比對到適當的值時,
程式修改BEQ的偏移量,
再由此轉到下面的子程式執行功能。
(這可是高階語言無法達到的設計喔!)
※因為之前已通過BNE的測試,所以遇到BEQ絕對能轉移。
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)

Mowd
系統管理員
系統管理員
文章: 1826
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd » 2005-05-14 3:14 PM

哇哈哈|||和組語脫離太久,我已經看不懂BNE BEQ是什麼意思了...
Mowd 與你的交流天地
歡迎您的到來

頭像
sppmg
一級會員
一級會員
文章: 260
註冊時間: 2004-01-10 12:41 PM
來自: 地球ㄉ台灣ㄉ台北
聯繫:

文章 sppmg » 2005-05-16 5:58 PM

Mowd 寫:哇哈哈|||和組語脫離太久,我已經看不懂BNE BEQ是什麼意思了...
練練吧!
我想用組語寫個哈電族的筆記本呢!
(現在還卡在文字顯示問題)

預估第一版至少能打16000個中文字。

對了
有人知道哈電族中的txt文件檔頭的意義嗎?
(了解了就能和PC互傳)
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)

Mowd
系統管理員
系統管理員
文章: 1826
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd » 2005-05-16 11:15 PM

如果可以把TXT完整檔頭及內容PO出來的話,我應該能分析出架構。
EBK的製作程式就是這樣來的。
Mowd 與你的交流天地
歡迎您的到來

頭像
sppmg
一級會員
一級會員
文章: 260
註冊時間: 2004-01-10 12:41 PM
來自: 地球ㄉ台灣ㄉ台北
聯繫:

文章 sppmg » 2005-05-17 2:07 PM

00000000 00010018
00009A0C 00000000
1800009A 0C000000

其中9A0C的值是會變動的,我認為那是檔大小(比對過)

剩下的還需解嗎?
(檔大小是剛剛發現的。 :oops: )
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)

回覆文章