1. 程式人生 > 其它 >【BA4988】__banked_function_call函式

【BA4988】__banked_function_call函式

反彙編:

__banked_function_call()
{
    current_bank_number = _get_current_bank_number()
    _switch_bank_number(*(U8 *)((U16 *)__addr_reg + 2), current_bank_number)
    __addr_reg = *(U16 *)(*((U16 *)__addr_reg))
    __indirect_call()
}

彙編:

D2F6 [AA 20 F8]: TAX @ 累加器送變址暫存器X
D2F7 [20 F8 E8]: JSR $E8F8 @ 轉子
D2FA [48 A0 02]: PHA @ 累加器壓入堆疊
D2FB [A0 02 B1]: LDY #$02 @ 送變址暫存器Y
D2FD [B1 26 20]: LDA ($26),Y @ $7A7B = #$FF @ 送累加器
D2FF [20 FB E8]: JSR $E8FB @ 轉子
D302 [88 38 B1]: DEY @ 變址暫存器Y減1
D303 [38 B1 26]: SEC @ 置進位標誌
D304 [B1 26 48]: LDA ($26),Y @ $7A7A = #$FF @ 送累加器
D306 [48 88 B1]: PHA @ 累加器壓入堆疊
D307 [88 B1 26]: DEY @ 變址暫存器Y減1
D308 [B1 26 85]: LDA ($26),Y @ $7A79 = #$FF @ 送累加器
D30A [85 26 68]: STA $26 = #$FF @ 存累加器
D30C [68 85 27]: PLA @ 堆疊彈回累加器
D30D [85 27 8A]: STA $27 = #$FF @ 存累加器
D30F [8A 20 72]: TXA @ 變址暫存器X送累加器
D310 [20 72 D5]: JSR $D572 @ 轉子
D572 [A8 38 A5]: TAY @ 累加器送變址暫存器Y
D573 [38 A5 26]: SEC @ 置進位標誌
D574 [A5 26 E9]: LDA $26 = #$FF @ 送累加器
D576 [E9 01 85]: SBC #$01 @ 帶借位的減法
D578 [85 26 A5]: STA $26 = #$FE @ 存累加器
D57A [A5 27 E9]: LDA $27 = #$FF @ 送累加器
D57C [E9 00 85]: SBC #$00 @ 帶借位的減法
D57E [85 27 48]: STA $27 = #$FF @ 存累加器
D580 [48 A5 26]: PHA @ 累加器壓入堆疊
D581 [A5 26 48]: LDA $26 = #$FE @ 送累加器
D583 [48 98 60]: PHA @ 累加器壓入堆疊
D584 [98 60 48]: TYA @ 變址暫存器Y送累加器
D585 [60 48 18]: RTS @ 子程式返回