据称本论坛严禁灌水, 难道你想让人说“好,顶”之类的,有灌水嫌疑啊!
5555~~~~~~~~~~~这个就是用不了,不知为什么.CALL之后屏幕上一点反应都没有.
另外我看不出这句是干什么
20BE PLA出栈,为以后跳转所需
20BF PHA进栈,保持栈中的值
这句根本没用 可以去掉
因为有这一句:20FB BNE$20BE否则进行下一行
所以这个应该不是多余的. 建议你把转为hex的改一下,可以不要这个表的,还不会破坏x的内容,而且在转的同时就可以发送到屏幕的。就不用先把结果存在$f8,$f9了。这个只要保护一下y,顺便还可以用y判断一行显示完了没。
pha
and #$f0
lsr
lsr
lsr
lsr
jsr A
pla
and #0f
A:ora #$30
cmp #$3a
bcc B
clc
adc #$07
B:sta ($xx),y
iny
rts 谢谢。我参考一下,因为DEC TO HEX在BAS里也要用上,看看可不可以先。
[求助]麻烦大家看一下这一些汇编代码
做这个目的是做个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
页:
[1]