易码技术论坛

 找回密码
 加入易码
搜索
查看: 101122|回复: 4

[复制链接]
发表于 2005-4-16 02:12:00 | 显示全部楼层
多看多写点程序, 有助增进编程技巧! 楼主这段程序我只看了一点, 没真正去了解其运作, 有以下几点建议由于没有试过,可能会有点错误)




在2018有程序中若改为:
2018 LDY $85
201A BEQ $202A
201C LDA $7E
201E CLC
201F ADC #$14
2021 BCC $2025
2023 INC $7F
2025 DEY
2026 BNE $201E
2028 STA $7E

亦可改为
2018 LDY $85
201A LDA $7E
201C CLC
201D DEY
201E BMI $2028
2020 ADC #$14
2022 BCC $201D
2024 INC $7F
2026 BCS $201C
2028 STA $7E

在206B中的
LSR
LSR
LSR
ASL
ASL
ASL (按思考应可以用一个AND #$F8来取代)

208B中 由于$82基本上值是由$0-$13,因此可用
208B LDY $82
208D LDA ($80),Y
208F STA $3001,Y
2092 DEY
2093 BPL $208D   (省了CPY $82 ,而CPY $82每次执行时间为3个cycle, 虽是作用不大)

最后是2097, 可改为
2097 LDY $3000
209A LDA $82
209C STA $87
209E LDX #$00
20A0 CLC
20A1 ROR $3001,X
20A4 INX
20A5 DEC $87
20A7 BNE $20A1
20A9 ROR $3001,X
20AC DEY
20AD BNE $209C    (php/plp每次一入一出, 用了7个cycle, 因此在循环执行多次的程序中, 如非必要就最好不要使用, 不过当不是要求以最佳速度地方使用也亦可, 若要再加快速度, 可考虑用零页地址[ZEROPAGE]取代$30xx作有关数据存放)

[此贴子已经被作者于2005-4-16 2:28:31编辑过]

 楼主| 发表于 2005-4-16 16:28:00 | 显示全部楼层
谢谢sun前辈提点~我不太清楚BMI的用法的说~还有原来ROR是可以用$XXXX,Y这样的寻址的啊~忘掉……
发表于 2005-4-17 02:51:00 | 显示全部楼层
BPL  是正则执行跳转
BMI  是负则执行跳转
正数为00-7F, 负数是80-FF
在6502的ROR并没有 $????,Y的, 只有$????,X
 楼主| 发表于 2005-4-17 11:03:00 | 显示全部楼层
谢谢!
 楼主| 发表于 2005-4-15 17:32:12 | 显示全部楼层 |阅读模式
<任意位置(精确到象素)任意大小图片显示子程序>
入参:$80,81图片数据开始地址
      $82图片宽度以byte为单位
      $83图片高度以象素为单位
      $84,85图片显示位置以最左上点为0,0长高都以象素为单位
出参:无

CODE $2010================
2010- LDA #$C0
2012- STA $7E
2014- LDA #$19(如为1020则把此处改为LDA #$09)
2016- STA $7F
2018- LDY $85
201A- BEQ $202A
201C- CLC
201D- LDA $7E
201F- ADC #$14
2021- STA $7E
2023- BCC $2027
2025- INC $7F
2027- DEY
2028- BNE $201C
202A- LDA $84
202C- LSR
202D- LSR
202E- LSR
202F- CLC
2030- ADC $7E
2032- STA $7E
2034- BCC $2038
2036- INC $7F
2038- LDA $84
203A- LDX #$03
203C- LSR
203D- BCS $2069
203F- DEX
2040- BNE $203C
2042- LDX $83
2044- LDY #$00
2046- LDA ($80),Y
2048- STA ($7E),Y
204A- INY
204B- CPY $82
204D- BNE $2046
204F- CLC
2050- LDA $7E
2052- ADC #$14
2054- STA $7E
2056- BCC $205A
2058- INC $7F
205A- CLC
205B- LDA $80
205D- ADC $82
205F- STA $80
2061- BCC $2065
2063- INC $81
2065- DEX
2066- BNE $2044
2068- RTS
2069- LDA $84
206B- LSR
206C- LSR
206D- LSR
206E- ASL
206F- ASL
2070- ASL
2071- STA $3000
2074- LDA $84
2076- SEC
2077- SBC $3000
207A- STA $3000
207D- LDA $83
207F- STA $86
2081- LDY #$14
2083- LDA #$00
2085- STA $3000,Y
2088- DEY
2089- BNE $2085
208B- LDY #$00
208D- LDA ($80),Y
208F- STA $3001,Y
2092- INY
2093- CPY $82
2095- BNE $208D
2097- LDX $3000
209A- LDY #$00
209C- CLC
209D- LDA $3001,Y
20A0- ROR
20A1- STA $3001,Y
20A4- PHP
20A5- INY
20A6- CPY $82
20A8- BEQ $20AF
20AA- PLP
20AB- LDA #$00
20AD- BEQ $209D
20AF- PLP
20B0- LDA $3001,Y
20B3- ROR
20B4- STA $3001,Y
20B7- DEX
20B8- BNE $209A
20BA- LDY $82
20BC- LDA $3001,Y
20BF- ORA ($7E),Y
20C1- STA ($7E),Y
20C3- DEY
20C4- BPL $20BC
20C6- CLC
20C7- LDA $7E
20C9- ADC #$14
20CB- STA $7E
20CD- BCC $20D1
20CF- INC $7F
20D1- CLC
20D2- LDA $80
20D4- ADC $82
20D6- STA $80
20D8- BCC $20DC
20DA- INC $81
20DC- DEC $86
20DE- BNE $2081
20E0- RTS
==========================
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-29 17:16 , Processed in 0.010260 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表