【BA4988】SysWriteCom函数
反汇编:
U8 SysWriteCom( U8 len,U8 *buf) { Pack_len = len Com_addr = buf if (Pack_len = 0) { AutoPowerOffCount = AutoPowerOffValue return 0 } for (Send_len=0; Send_len汇编:
E90D [4C 8F F9]: JMP $F98F @ 转移
F98F [8D 32 20]: STA $2032 = #$00 @ 存累加器
F992 [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
F994 [B1 28 85]: LDA ($28),Y @ $17AF = #$A0 @ 送累加器
F996 [85 3C C8]: STA $3C = #$A0 @ 存累加器
F998 [C8 B1 28]: INY @ 变址寄存器Y加1
F999 [B1 28 85]: LDA ($28),Y @ $17B0 = #$17 @ 送累加器
F99B [85 3D AD]: STA $3D = #$17 @ 存累加器
F99D [AD 32 20]: LDA $2032 = #$00 @ 送累加器
F9A0 [C9 00 F0]: CMP #$00 @ 累加器与存储器比较
F9A2 [F0 2B A9]: BEQ $F9CF @ 结果为0分支
F9A4 [A9 00 8D]: LDA #$00 @ 送累加器
F9A6 [8D 33 20]: STA $2033 = #$00 @ 存累加器
F9A9 [A0 00 B1]: LDY #$00 @ 送变址寄存器Y
F9AB [B1 3C 85]: LDA ($3C),Y @ $0030 = #$17 @ 送累加器
F9AD [85 08 A5]: STA $08 = #$17 @ 存累加器
F9AF [A5 09 29]: LDA $09 = #$38 @ 送累加器
F9B1 [29 20 F0]: AND #$20 @ 逻辑与
F9B3 [F0 FA A9]: BEQ $F9AF @ 结果为0分支
F9B5 [A9 DF 85]: LDA #$DF @ 送累加器
F9B7 [85 09 C8]: STA $09 = #$DF @ 存累加器
F9B9 [C8 EE 33]: INY @ 变址寄存器Y加1
F9BA [EE 33 20]: INC $2033 = #$01 @ 存储器加1
F9BD [CC 32 20]: CPY $2032 = #$10 @ 变址寄存器Y与存储器比较
F9C0 [90 E9 AD]: BCC $F9AB @ 进位为0分支
F9C2 [AD 33 20]: LDA $2033 = #$10 @ 送累加器
F9C5 [CD 32 20]: CMP $2032 = #$10 @ 累加器与存储器比较
F9C8 [D0 05 A9]: BNE $F9CF @ 结果不为0分支
F9CA [A9 01 4C]: LDA #$01 @ 送累加器
F9CC [4C D1 F9]: JMP $F9D1 @ 转移
F9CF [A9 00 AD]: LDA #$00 @ 送累加器
F9D1 [AD 27 20]: LDA $2027 = #$04 @ 送累加器
F9D4 [8D 28 20]: STA $2028 = #$04 @ 存累加器
F9D7 [60 AD 27]: RTS @ 子程序返回