在時鐘介面輸入
qhlixpfh
即可(注意進入後可不要亂按
不然會出現 THE FLASH IS ERROR
-----------------------------------------------------
DEBUG的使用 原作者LEE
作者:LEE
說明:debug是組合語言工具。如果你對6502組合語言不熟悉,那它對你沒有幫助(或許還有副作用)。本文的物件是有一定組合語言基礎的讀者。
名詞:快閃記憶體--記憶體的一種,掉電後內容不易失,但可以通過軟體修改。文曲星共有快閃記憶體512K,劃分為16個頁,每頁32k,映射於cpu位址空間的$4000-$BFFF.
RAM記憶體--記憶體的一種,掉電後內容將消失。位於cpu位址空間的$0000-$3FFF.容量為16K.
ROM記憶體--記憶體的一種,掉電後內容不會消失,而且不可修改。映射於cpu位址空間的$4000-$BFFF及$C000-$FFFF.容量暫時不清楚。
debug的每個命令都以一個字母開頭。參數採用16進制。參數之間以空格隔開。輸入時“中英數”切換英文和數位狀態,除e z及e x命令外不能輸入中文,也不能輸入大寫字母。每個命令行以“輸入”結束,按“跳出”表示放棄該命令。按“求助”鍵可輸入字母“b”。
[]中的內容為可省略項
d [位址] [快閃記憶體頁碼]--以16進制字元顯示指定位址的內容。位址省略時接著上一次的位址。快閃記憶體頁碼省略時採用上一次的頁碼。下同。
d s [位址] [快閃記憶體頁碼]--以英文字元顯示指定位址的內容。
d z [位址] [快閃記憶體頁碼]--以中文GB碼顯示指定位址的內容。
d x [位址] [快閃記憶體頁碼]--以中文BIG5碼顯示指定位址的內容。
c 起始位址 結束位址 快閃記憶體頁碼 位址2--從起始位址到結束位址與位址2處的一段資料逐位元組比較,找出不同之處。
e [位址]--以16進制字元修改指定位址的內容。
e s [位址]--以英文字元修改指定位址的內容。
e z [位址]--以中文GB碼修改指定位址的內容。
e x [位址]--以中文BIG5碼修改指定位址的內容。
g 位址 [快閃記憶體頁碼]--從指定位址開始執行程式。
m 起始位址 結束位址 快閃記憶體頁碼 目標位址--把從起始位址到結束位址的內容移動到目標位址處。
r 顯示g命令執行後的寄存器狀態。
r a 數值--修改a寄存器.
r x 數值--修改x寄存器.
r y 數值--修改y寄存器.
s 起始位址 結束位址 [快閃記憶體頁碼]--從起始位址到結束位址進行數值搜索。
s s 起始位址 結束位址 [快閃記憶體頁碼]--從起始位址到結束位址進行字串搜索。
u [位址] [快閃記憶體頁碼]--從指定位址開始反組合語言程式。
f 位址 快閃記憶體頁碼--格式化指定快閃記憶體頁指定位址所在的4k內容。警告:會清除該處內容的。例如:f bxxx 2將清除第2快閃記憶體頁$b000-$bfff的4k內容。
f l 位址 快閃記憶體頁碼--把指定快閃記憶體頁指定位址所在的4k內容移到記憶體的$3000-$3fff處。
f w 位址 快閃記憶體頁碼--把記憶體的$3000-$3fff處的4k內容寫到指定快閃記憶體頁指定位址。
注意:如果你不知道你在幹什麼,請一定不要用f命令,f命令是最危險的命令(也是最強大的命令),它會改寫你的快閃記憶體的內容,誤用的話後果很嚴重的。
COM檔結構:
$0000:43 4f 4d ("COM")
$0003:?? (COM檔入口地址的高8位,必須是偶數且在1A-3E之間,低8位恒為10)
$0004:?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? (檔案名,如用漢字必須使用BIG5碼)
$0010:?? ?? ... (檔內容)
附:“河南體育彩票”根源程式
org $1e00
db "COM",$1e,"猠玭砰▅眒布";big5碼,即gb碼“河南體育彩票”
Secret: lda Ds03
bpl Ls17;第一次使用本軟體嗎?不是,則轉Ls17
lda #0
sta Ds03
lda #$20
sta Ds04
sta Ds04+7
sta Ds04+9
lda #0
sta Ds04+10
lda $46a
sta $80
lda $46b
sta $81
jsr $e153
lda $83
sta Ds04+1
lda $84
sta Ds04+2
lda $85
sta Ds04+3
lda $86
sta Ds04+4
lda $05
sta $80
lda $07
sta $81
jsr $e153
lda $84
sta Ds04+5
lda $85
sta Ds04+6
lda $86
cmp #'5'
bcc Ls01
sbc #5
Ls01: sta Ds04+8;以上代碼隨機產生一個號碼
Ls17: lda #0
ldx #<Ds01
ldy #>Ds01
jsr $e1b9;打開一個視窗,顯示號碼
jsr $e09c;等待按任意鍵
Ls16: ldy #7
tya
Ls02: sta $61,y
dey
bpl Ls02
Ls12: ldx #7
Ls03: cpx #6
beq Ls04
lda $61,x
beq Ls04
inc Ds04+1,x
lda Ds04+1,x
cmp #$3a
bcc Ls04
lda #'0'
sta Ds04+1,x
Ls04: dex
bpl Ls03
lda Ds04+8
cmp #'5'
bcc Ls14
sbc #5
sta Ds04+8
Ls14: inx
lda $cc
cmp #$ef;按“1”嗎
bne Ls05
stx $61
Ls05: cmp #$df;按“2”嗎
bne Ls06
stx $62
Ls06: cmp #$bf;按“3”嗎
bne Ls07
stx $63
Ls07: lda $cb
cmp #$ef;按“4”嗎
bne Ls08
stx $64
Ls08: cmp #$df;按“5”嗎
bne Ls09
stx $65
Ls09: cmp #$bf;按“6”嗎
bne Ls10
stx $66
Ls10: lda $ca
cmp #$ef;按“7”嗎
bne Ls11
stx $68
Ls11: lda #0
sta $468
ldx #<Ds01
ldy #>Ds01
jsr $e1b9;在視窗中顯示變化的號碼
lda $61
ora $62
ora $63
ora $64
ora $65
ora $66
ora $68
bne Ls12;如果1-7未全部按下,則轉Ls12
Ls13: jsr $e09c;等待按鍵
cmp #13;“輸入”嗎
bne Ls15;
jmp Ls16
Ls15: cmp #27“跳出”嗎
bne Ls13
jmp $402b;存儲進度並返回pctools(注:jsr $402b將把ram中改變了的com程式寫回檔)
Ds01: db $80,<Ds04,>Ds04,32,18,10,2,<Ds02,>Ds02
Ds02: db 2
Ds03: db $ff
Ds04: db 0,1,2,3,4,5,6,7
[轉貼]NC2000的debug
[轉貼]NC2000的debug
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)