| 
 
注册时间2004-8-29最后登录1970-1-1 
 | 
 
 发表于 2004-10-6 00:06:00
|
显示全部楼层 
| 声明:转帖 一切版权归作者所有
 文曲星内置debug用法
 --by bright
 
 注意:1.以下所举例子中的操作均在文区星上测试通过,初学者请勿随意修改其它地址内容!
 2.输入"Q"可正常退出debug,或直接关机也可,但请勿按热键,发音键,复读键和F1-F4键,会导致闪存格式化或the Nflash error!请慎重操作!
 
 说明:1.文中<CR>表示按输入键,">"为监控提示符,每一项操作后均有操作结果供参考.
 2.按键说明:输入"<"按字母O键  |  ":":I  |  "m":W  | "g":上单箭头  |  "b":K
 3.文区星内置debug使用较少,一般用wqxhexnc,nctools和pctools,而且其功能更为强大.但内置debug也不失为一种方法,在此略作介绍.
 
 1.检查存贮器的内容
 (1)检查单个地址内容
 操作举例:
 >4000 <CR>     检查地址$4000内容
 4000: ae
 (2)检查多个地址内容
 操作举例:
 a)
 >4000 <CR>            检查$4000内容
 4000: ae
 >.4015 <CR>           检查从当前地址$4001至$4015的内容
 4001:ee ea00 1000 204c 1040 7003 3103 ffff
 4010:0022 0500 29c7
 b)
 >4000.4015 <CR>       检查从地址$4001至$4015的内容
 4000: aeee ea00 1000 204c 1040 7003 3103 ffff
 4010: 0022 0500 29c7
 c)
 >4000 <CR>            检查$4000内容
 4000: ae
 ><CR>                 继续检查包括$4000在内的连续16个单元内容
 >ee ea00 1000 204c 1040 7003
 3103 ffff
 ><CR>                 继续检查连续的16个单元内容
 >
 4010: 0022 0500 29c7 a9ff 8daf 038d b003 8db3
 
 2.改变内存单元的内容
 操作举例:
 a)修改单个单元内容
 >4000 <CR>            检查$4000内容
 4000: ae
 >:10  <CR>            将$4000的内容改为$10
 >4000 <CR>            再检查$4000内容
 4000: 10
 如果要将某个单元的内容置为某值,可以简单操作为:
 >4000:20 <CR>         将$4000的内容改为$20
 >4000 <CR>
 4000: 20
 b)修改多个单元内容
 >4000:11 22 33 44 55 <CR>        从$4000开始连续修改5个单元
 >4000.4004 <CR>
 4000:1122 3344 55
 >4010:00 01 02 03 04 <CR>        修改$4010-$4014内容
 >:05 06 07 08 09                 修改$4015-$4019内容
 >4010.4019 <CR>
 4010: 0001 0203 0405 0607 0809
 
 3.移动一段内存单元的内容
 命令格式:
 {新位置的首地址}<{原位置首地址}.{原位置末地址}m
 注:格式最后用"m"表示"move"命令
 操作举例:
 >4010.4014 <CR>             先查看$4010-$4014单元内容
 4010: 0022 0500 29
 >4000:1011 1213 14 <CR>
 >4000.4004 <CR>             查看$4000-$4004新置进的内容
 4000: 1011 1213 14
 >4010<4000.4004m <CR>       将$4000-$4004单元的内容移到首地址为$4010的地方
 >4010.4014 <CR>
 4010: 1011 1213 14          已移动
 
 4.比较两段内存单元的内容
 命令格式:
 {第二段的首地址}<{第一段的首地址}.{第一段的末地址}v
 注:格式最后用"v"表示"verify"命令
 操作举例:
 a)
 >4000.4007 <CR>
 4000: aeee ea00 1000 204c
 >4010.4017 <CR>
 4010: 0022 0500 29c7 a9ff
 >4010<4000.4007v <CR>
 4000:ae (00)
 4001:ee (22)
 4002:ea (05)
 4004:10 (29)
 4005:00 (c7)
 4006:20 (a9)
 4007:4c (ff)
 比较结果不一致
 b)
 >4010<4000.4007m <CR>        将$4000-$4007单元的内容移到首地址为$4010的地方
 >4010<4000.4007v <CR>
 >                            比较结果一致
 注:如果比较结果一致直接出提示符">".如果比较结果不一致就显示不一致的单元号及其内容并在括号内显示第二段对应地址单元中的内容.
 
 5.运行机器语言程序--G命令
 命令格式:{首地址}g
 说明:当执行G命令时,6502微处理机从首地址开始执行机器语言程序.监控程序把它当做一个子程序,当执行完后,只需执行一条RTS指令,控制就会回到监控程序.
 注:此命令的执行依赖于具体机型且运行不当容易死机,暂不举例.
 
 6.反汇编--L命令
 命令格式:{首地址}l
 操作举例:
 >3000l <CR>
 3000:18     clc
 
 7.检查和改变寄存器的内容
 操作举例:
 >r <CR>                         显示当前寄存器的内容
 1c0d: a=11 x=00 y=00 p=30 s=c0
 >:26 3a 1f <CR>                 修改寄存器a,x,y的内容
 >r <CR>                         查看修改后的内容
 1c0d: a=26 x=3a y=1f p=30 s=c0
 注:若要改变后面寄存器的内容,前面寄存器内容要重写.例如要修改p的内容,前面a,x,y重写原有内容.
 >r <CR>
 1c0d: a=11 x=00 y=00 p=30 s=c0
 >:11 00 00 5f c0 <CR>           修改寄存器p
 
 8.多重命令
 多个命令可以放在同一行上
 操作举例:
 >7000lll <CR>                   从地址$7000开始连续三次反汇编
 7000: 6d a4 11     adc $11a4
 7003: 85 42        sta $42
 7005: a5 43        lda $43
 
 以上内容如有错误请指正,缺漏之处请补充。
 
 | 
 |