【BA4988】SysLine函数
反汇编:
void SysLine(U8 x1,U8 y1,U8 x2,U8 y2)
{
*buff_point = *(U16*)__stack_ptr
20D8 = 0x13
20DA=0x60
Lcd_X=0x00
Lcd_Y=0x00
_8714() // 00E97714()
20E9=003A
20EA=003B
*((U8*)_0038)=*buff_point
20D8-=1
buff_point+=1
do {
do {
if ((03F8 == 0x01) && (003B == 03FA) && (003A == 03F9))
{
003A=03FB
003B=03FC
*((U8*)_003A)=*buff_point
003A=03F9
003B=03FA
}
else
{
*((U8*)_003A)=*buff_point
}
*(U16*)&003A+=1
buff_point+=1
20D8-=1
} while (20D8!=0x00)
tmp=20D8
20D8=*(*(U16*)&_003A) & 0x01
*(*(U16*)&_003A)=(*buff_point&0xFE) | 20D8
20D8=tmp
003A=20E9
003B=20EA
_65FB() // 00E955FB()
2082+=1
20E9=003A
20EA=003B
buff_point+=1
20D8=0x13
20DA-=1
*((U8*)_0038)=*buff_point
20D8-=1
buff_point+=1
} while (20DA!=0x00)
}
汇编:
[00E956B2]66B2 [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
[00E956B4]66B4 [B1 28 8D]: LDA ($28),Y @ $17AF = #$A5 @ 送累加器
[00E956B6]66B6 [8D 2F 00]: STA $002F = #$A5 @ 存累加器
[00E956B9]66B9 [C8 B1 28]: INY @ 变址寄存器Y加1
[00E956BA]66BA [B1 28 8D]: LDA ($28),Y @ $17B0 = #$09 @ 送累加器
[00E956BC]66BC [8D 30 00]: STA $0030 = #$09 @ 存累加器
[00E956BF]66BF [A9 13 8D]: LDA #$13 @ 送累加器
[00E956C1]66C1 [8D D8 20]: STA $20D8 = #$13 @ 存累加器
[00E956C4]66C4 [A9 60 8D]: LDA #$60 @ 送累加器
[00E956C6]66C6 [8D DA 20]: STA $20DA = #$60 @ 存累加器
[00E956C9]66C9 [A9 00 8D]: LDA #$00 @ 送累加器
[00E956CB]66CB [8D 81 20]: STA $2081 = #$00 @ 存累加器
[00E956CE]66CE [8D 82 20]: STA $2082 = #$00 @ 存累加器
[00E956D1]66D1 [20 14 87]: JSR $8714 @ 转子$00E97714
[00E956D4]66D4 [AD 3A 00]: LDA $003A = #$20 @ 送累加器
[00E956D7]66D7 [8D E9 20]: STA $20E9 = #$20 @ 存累加器
[00E956DA]66DA [AD 3B 00]: LDA $003B = #$0C @ 送累加器
[00E956DD]66DD [8D EA 20]: STA $20EA = #$0C @ 存累加器
[00E956E0]66E0 [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
[00E956E2]66E2 [B1 2F 91]: LDA ($2F),Y @ $09A5 = #$01 @ 送累加器
[00E956E4]66E4 [91 38 CE]: STA ($38),Y @ $0C13 = #$01 @ 存累加器
[00E956E6]66E6 [CE D8 20]: DEC $20D8 = #$12 @ 存储器减1
[00E956E9]66E9 [18 AD 2F]: CLC @ 清进位标志
[00E956EA]66EA [AD 2F 00]: LDA $002F = #$A5 @ 送累加器
[00E956ED]66ED [69 01 8D]: ADC #$01 @ 带进位加
[00E956EF]66EF [8D 2F 00]: STA $002F = #$A6 @ 存累加器
[00E956F2]66F2 [AD 30 00]: LDA $0030 = #$09 @ 送累加器
[00E956F5]66F5 [69 00 8D]: ADC #$00 @ 带进位加
[00E956F7]66F7 [8D 30 00]: STA $0030 = #$09 @ 存累加器
[00E956FA]66FA [4C 17 67]: JMP $6717 @ 转移$00E95717
[00E956FD]66FD [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
[00E956FF]66FF [B1 2F 91]: LDA ($2F),Y @ $09CD = #$0A @ 送累加器
[00E95701]6701 [91 38 CE]: STA ($38),Y @ $0BD3 = #$0A @ 存累加器
[00E95703]6703 [CE D8 20]: DEC $20D8 = #$12 @ 存储器减1
[00E95706]6706 [18 AD 2F]: CLC @ 清进位标志
[00E95707]6707 [AD 2F 00]: LDA $002F = #$CD @ 送累加器
[00E9570A]670A [69 01 8D]: ADC #$01 @ 带进位加
[00E9570C]670C [8D 2F 00]: STA $002F = #$CE @ 存累加器
[00E9570F]670F [AD 30 00]: LDA $0030 = #$09 @ 送累加器
[00E95712]6712 [69 00 8D]: ADC #$00 @ 带进位加
[00E95714]6714 [8D 30 00]: STA $0030 = #$09 @ 存累加器
[00E95717]6717 [AD F8 03]: LDA $03F8 = #$01 @ 送累加器
[00E9571A]671A [C9 01 D0]: CMP #$01 @ 累加器与存储器比较
[00E9571C]671C [D0 31 AD]: BNE $674F @ 结果不为0分支
[00E9571E]671E [AD 3B 00]: LDA $003B = #$0C @ 送累加器
[00E95721]6721 [CD FA 03]: CMP $03FA = #$04 @ 累加器与存储器比较
[00E95724]6724 [D0 29 AD]: BNE $674F @ 结果不为0分支
[00E95726]6726 [AD 3A 00]: LDA $003A = #$8D @ 送累加器
[00E95729]6729 [CD F9 03]: CMP $03F9 = #$00 @ 累加器与存储器比较
[00E9572C]672C [D0 21 AD]: BNE $674F @ 结果不为0分支
[00E9572E]672E [AD FB 03]: LDA $03FB = #$00 @ 送累加器
[00E95731]6731 [8D 3A 00]: STA $003A = #$00 @ 存累加器
[00E95734]6734 [AD FC 03]: LDA $03FC = #$10 @ 送累加器
[00E95737]6737 [8D 3B 00]: STA $003B = #$10 @ 存累加器
[00E9573A]673A [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
[00E9573C]673C [B1 2F 91]: LDA ($2F),Y @ $17C8 = #$80 @ 送累加器
[00E9573E]673E [91 3A AD]: STA ($3A),Y @ $1000 = #$80 @ 存累加器
[00E95740]6740 [AD F9 03]: LDA $03F9 = #$00 @ 送累加器
[00E95743]6743 [8D 3A 00]: STA $003A = #$00 @ 存累加器
[00E95746]6746 [AD FA 03]: LDA $03FA = #$04 @ 送累加器
[00E95749]6749 [8D 3B 00]: STA $003B = #$04 @ 存累加器
[00E9574C]674C [4C 55 67]: JMP $6755 @ 转移$00E95755
[00E9574F]674F [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
[00E95751]6751 [B1 2F 91]: LDA ($2F),Y @ $09A6 = #$A0 @ 送累加器
[00E95753]6753 [91 3A 18]: STA ($3A),Y @ $0C20 = #$A0 @ 存累加器
[00E95755]6755 [18 AD 3A]: CLC @ 清进位标志
[00E95756]6756 [AD 3A 00]: LDA $003A = #$20 @ 送累加器
[00E95759]6759 [69 01 8D]: ADC #$01 @ 带进位加
[00E9575B]675B [8D 3A 00]: STA $003A = #$21 @ 存累加器
[00E9575E]675E [AD 3B 00]: LDA $003B = #$0C @ 送累加器
[00E95761]6761 [69 00 8D]: ADC #$00 @ 带进位加
[00E95763]6763 [8D 3B 00]: STA $003B = #$0C @ 存累加器
[00E95766]6766 [18 AD 2F]: CLC @ 清进位标志
[00E95767]6767 [AD 2F 00]: LDA $002F = #$A6 @ 送累加器
[00E9576A]676A [69 01 8D]: ADC #$01 @ 带进位加
[00E9576C]676C [8D 2F 00]: STA $002F = #$A7 @ 存累加器
[00E9576F]676F [AD 30 00]: LDA $0030 = #$09 @ 送累加器
[00E95772]6772 [69 00 8D]: ADC #$00 @ 带进位加
[00E95774]6774 [8D 30 00]: STA $0030 = #$09 @ 存累加器
[00E95777]6777 [CE D8 20]: DEC $20D8 = #$11 @ 存储器减1
[00E9577A]677A [AD D8 20]: LDA $20D8 = #$11 @ 送累加器
[00E9577D]677D [C9 00 D0]: CMP #$00 @ 累加器与存储器比较
[00E9577F]677F [D0 96 4C]: BNE $6717 @ 结果不为0分支
[00E95781]6781 [4C 84 67]: JMP $6784 @ 转移$00E95784
[00E95784]6784 [AD D8 20]: LDA $20D8 = #$00 @ 送累加器
[00E95787]6787 [48 A0 00]: PHA @ 累加器压入堆栈
[00E95788]6788 [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
[00E9578A]678A [B1 3A 29]: LDA ($3A),Y @ $0C32 = #$40 @ 送累加器
[00E9578C]678C [29 01 8D]: AND #$01 @ 逻辑与
[00E9578E]678E [8D D8 20]: STA $20D8 = #$00 @ 存累加器
[00E95791]6791 [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
[00E95793]6793 [B1 2F 29]: LDA ($2F),Y @ $09B8 = #$00 @ 送累加器
[00E95795]6795 [29 FE 0D]: AND #$FE @ 逻辑与
[00E95797]6797 [0D D8 20]: ORA $20D8 = #$00 @ 逻辑或
[00E9579A]679A [91 3A 68]: STA ($3A),Y @ $0C32 = #$00 @ 存累加器
[00E9579C]679C [68 8D D8]: PLA @ 堆栈弹回累加器
[00E9579D]679D [8D D8 20]: STA $20D8 = #$00 @ 存累加器
[00E957A0]67A0 [AD E9 20]: LDA $20E9 = #$20 @ 送累加器
[00E957A3]67A3 [8D 3A 00]: STA $003A = #$20 @ 存累加器
[00E957A6]67A6 [AD EA 20]: LDA $20EA = #$0C @ 送累加器
[00E957A9]67A9 [8D 3B 00]: STA $003B = #$0C @ 存累加器
[00E957AC]67AC [20 FB 65]: JSR $65FB @ 转子$00E955FB
[00E957AF]67AF [EE 82 20]: INC $2082 = #$01 @ 存储器加1
[00E957B2]67B2 [AD 3A 00]: LDA $003A = #$00 @ 送累加器
[00E957B5]67B5 [8D E9 20]: STA $20E9 = #$00 @ 存累加器
[00E957B8]67B8 [AD 3B 00]: LDA $003B = #$0C @ 送累加器
[00E957BB]67BB [8D EA 20]: STA $20EA = #$0C @ 存累加器
[00E957BE]67BE [18 AD 2F]: CLC @ 清进位标志
[00E957BF]67BF [AD 2F 00]: LDA $002F = #$B8 @ 送累加器
[00E957C2]67C2 [69 01 8D]: ADC #$01 @ 带进位加
[00E957C4]67C4 [8D 2F 00]: STA $002F = #$B9 @ 存累加器
[00E957C7]67C7 [AD 30 00]: LDA $0030 = #$09 @ 送累加器
[00E957CA]67CA [69 00 8D]: ADC #$00 @ 带进位加
[00E957CC]67CC [8D 30 00]: STA $0030 = #$09 @ 存累加器
[00E957CF]67CF [A9 13 8D]: LDA #$13 @ 送累加器
[00E957D1]67D1 [8D D8 20]: STA $20D8 = #$13 @ 存累加器
[00E957D4]67D4 [CE DA 20]: DEC $20DA = #$5F @ 存储器减1
[00E957D7]67D7 [AD DA 20]: LDA $20DA = #$5F @ 送累加器
[00E957DA]67DA [C9 00 F0]: CMP #$00 @ 累加器与存储器比较
[00E957DC]67DC [F0 03 4C]: BEQ $67E1 @ 结果为0分支
[00E957DE]67DE [4C FD 66]: JMP $66FD @ 转移$00E956FD
[00E957E1]67E1 [60 8D 81]: RTS @ 子程序返回
浙公网安备 33010602011771号