【BA4988】_71D3函数
反汇编:
_71D3(int a) { _2037 = a for (i=0x08; i!=0; i--) { _PA |= 0x40 void // nop void // nop _PA &= 0xBF tmp = _2037 _2037 &= 0x80 _PA = (_PA & 0x7F) | _2037 _2037 = tmp _PA &= 0xBF void // nop void // nop _PA |= 0x40 void // nop void // nop void // nop void // nop void // nop void // nop _2037 <<= 1 } }
汇编:
71D3 [A0 08 8D]: LDY #$08 @ 送变址寄存器Y
71D5 [8D 37 20]: STA $2037 = #$11 @ 存累加器
71D8 [AD 18 02]: LDA $0218 = #$7F @ 送累加器
71DB [09 40 8D]: ORA #$40 @ 逻辑或
71DD [8D 18 02]: STA $0218 = #$7F @ 存累加器
71E0 [EA EA AD]: NOP @ 空操作
71E1 [EA AD 18]: NOP @ 空操作
71E2 [AD 18 02]: LDA $0218 = #$7F @ 送累加器
71E5 [29 BF 8D]: AND #$BF @ 逻辑与
71E7 [8D 18 02]: STA $0218 = #$3F @ 存累加器
71EA [AD 37 20]: LDA $2037 = #$11 @ 送累加器
71ED [48 AD 37]: PHA @ 累加器压入堆栈
71EE [AD 37 20]: LDA $2037 = #$11 @ 送累加器
71F1 [29 80 8D]: AND #$80 @ 逻辑与
71F3 [8D 37 20]: STA $2037 = #$00 @ 存累加器
71F6 [AD 18 02]: LDA $0218 = #$3F @ 送累加器
71F9 [29 7F 0D]: AND #$7F @ 逻辑与
71FB [0D 37 20]: ORA $2037 = #$00 @ 逻辑或
71FE [8D 18 02]: STA $0218 = #$3F @ 存累加器
7201 [68 8D 37]: PLA @ 堆栈弹回累加器
7202 [8D 37 20]: STA $2037 = #$11 @ 存累加器
7205 [AD 18 02]: LDA $0218 = #$3F @ 送累加器
7208 [29 BF 8D]: AND #$BF @ 逻辑与
720A [8D 18 02]: STA $0218 = #$3F @ 存累加器
720D [EA EA AD]: NOP @ 空操作
720E [EA AD 18]: NOP @ 空操作
720F [AD 18 02]: LDA $0218 = #$3F @ 送累加器
7212 [09 40 8D]: ORA #$40 @ 逻辑或
7214 [8D 18 02]: STA $0218 = #$7F @ 存累加器
7217 [EA EA EA]: NOP @ 空操作
7218 [EA EA EA]: NOP @ 空操作
7219 [EA EA EA]: NOP @ 空操作
721A [EA EA EA]: NOP @ 空操作
721B [EA EA 0E]: NOP @ 空操作
721C [EA 0E 37]: NOP @ 空操作
721D [0E 37 20]: ASL $2037 = #$22 @ 左移
7220 [88 C0 00]: DEY @ 变址寄存器Y减1
7221 [C0 00 D0]: CPY #$00 @ 变址寄存器Y与存储器比较
7223 [D0 B3 60]: BNE $71D8 @ 结果不为0分支
7225 [60 AD 18]: RTS @ 子程序返回