- 注册时间
- 2004-11-14
- 最后登录
- 1970-1-1
|
做这个目的是做个DEBUG工具,用汇编显内存的HEX或字符,不过用不了.程序如下:
显存计数加
计数地址:8A 8B
2065 INC$8A
2067 BNE$206B
2069 INC$8B
206B RTS
DEC TO HEX
入口:F8
出口:F9 FA
206C:"0123456789ABCDEF"
207C LDA$F8
207E LSR
207F LSR
2080 LSR
2081 LSR
2082 TAX
2083 LDA$206C,X
2086 STA$F9
2088 LDA$F8
208A AND#$0F
208C TAX
208D LDA$206C,X
2090 STA$FA
2092 RTS
HEX的ASCII到显存
209C STA$F8
209E JSR$207C
20A1 LDA$FA
20A3 STA($8A),Y
20A5 JSR$2065
20A8 LDA$F9
20AA STA($8A),Y
20AC JSR$2065
20AF RTS
主程序,当200D为1,显字符;为0,显HEX
20B0 INT$C729 清屏
20B3 LDA#$C0 显存计数初始化
20B5 STA$8A
20B7 LDA#$02
20B9 STA$8B
20BB LDA#$00 将0入栈,初始计数为0
20BD PHA
20BE PLA 出栈,为以后跳转所需
20BF PHA 进栈,保持栈中的值
20C0 CLC 将记数与记录查看内存地址的零页地址的值相加,得出当前查看的地址,并转为HEX,送到显存
20C1 ADC#$FB
20C3 PHA 低位入栈
20C4 LDA$FC
20C6 ADC#$00
20C8 JSR$209C 计算高位并转为HEX,送到显存
20CB PLA
20CC JSR$209C 计算低位并转为HEX,送到显存
20CF LDA#$2D 字符"-"
20D1 STA($8A),Y 送到显存
20D3 JSR$202C 显存加
20D6 LDA#$14 地址8C计数
20D8 STA$8C
20DA PLA 另一个计数加并入栈保存
20DB TAY
20DC INY
20DD TYA
20DE PHA
20DF LDA$14FF,Y 从1500开始读取内容,1500为虚拟地址,之前将查看的数据发送到此
20E2 PHA 入栈
20E3 LDY#$00
20E5 LDA$200D 判断200D是不是1
20E8 BEQ$2101 是则到2101
20EA PLA 出栈,转HEX,到显存
20EB JSR$209C
20EE DEC$8C 计数减
20F0 DEC$8C 计数减,因显HEX一行10字节,显字符一行20字节,显HEX需减两次
20F2 BEQ$20DA 减为0则一行显示结束
20F4 JSR$202C 显存加,留个空格
20F7 LDA$8A 看显存计数,如果低位为5C,说明显示完毕
20F9 CMP#$5C
20FB BNE$20BE 否则进行下一行
20FD INT$C719 刷新
2100 RTS
2101 PLA
2102 CMP#$9E 直接以显字符显示在屏幕上,过滤9E
2104 BEQ$2108
2106 STA($8A),Y
2108 JSR$202C 显存加
210B JMP$20F0 |
|