【BA4988】_0344中断

反汇编:

_0344()
{
    _TISR = 0xDF
    if (_201B&0x01)
    {
        _ML1D = 0xEC
        _201B &= 0xFE
        _MTCT=0xF0
        return
    }
    if (_201B&0x02)
    {
        if (_DATA3)
        {
            _37 = _DATA3&0xBF
            _MTCT = RHYTHM_ADDR[_DATA3&0x0F]
            if (_37&0x10)
            {
                _ML1D = 0x02
            }
            if (_37&0x20)
            {
                _ML2D = 0x02
            }
            if (_37&0x01)
            {
                A = _DATA3
                A = _DATA3
            }
            if (_37&0x02)
            {
                A = _DATA3
                A = _DATA3
            }
            if (_37&0x04)
            {
                A = _DATA3
                A = _DATA3
            }
            if (_37&0x08)
            {
                A = _DATA3
                A = _DATA3
            }
            return
        }
        else
        {
            _201B&=0xFD
            _201C = 0x00
        }
    }
    _TIER&=0xDF
    _AUDCON&=0x3F
}

汇编:

[00000344]0344 [4C 49 F8]: JMP $F849 @ 转移$00E8A849
[00E8A849]F849 [48 98 48]: PHA @ 累加器压入堆栈
[00E8A84A]F84A [98 48 A9]: TYA @ 变址寄存器Y送累加器
[00E8A84B]F84B [48 A9 DF]: PHA @ 累加器压入堆栈
[00E8A84C]F84C [A9 DF 85]: LDA #$DF @ 送累加器
[00E8A84E]F84E [85 05 AD]: STA $05 = #$DF @ 存累加器
[00E8A850]F850 [AD 1B 20]: LDA $201B = #$04 @ 送累加器
[00E8A853]F853 [29 01 F0]: AND #$01 @ 逻辑与
[00E8A855]F855 [F0 15 A9]: BEQ $F86C @ 结果为0分支
[00E8A857]F857 [A9 EC 8D]: LDA #$EC @ 送累加器
[00E8A859]F859 [8D 2C 02]: STA $022C = #$EC @ 存累加器
[00E8A85C]F85C [AD 1B 20]: LDA $201B = #$04 @ 送累加器
[00E8A85F]F85F [29 FE 8D]: AND #$FE @ 逻辑与
[00E8A861]F861 [8D 1B 20]: STA $201B = #$04 @ 存累加器
[00E8A864]F864 [A9 F0 8D]: LDA #$F0 @ 送累加器
[00E8A866]F866 [8D 2B 02]: STA $022B = #$F0 @ 存累加器
[00E8A869]F869 [4C D3 F8]: JMP $F8D3 @ 转移$00E8A8D3
[00E8A86C]F86C [AD 1B 20]: LDA $201B = #$04 @ 送累加器
[00E8A86F]F86F [29 02 F0]: AND #$02 @ 逻辑与
[00E8A871]F871 [F0 64 A5]: BEQ $F8D7 @ 结果为0分支
[00E8A873]F873 [A5 02 D0]: LDA $02 = #$00 @ 送累加器
[00E8A875]F875 [D0 10 AD]: BNE $F887 @ 结果不为0分支
[00E8A877]F877 [AD 1B 20]: LDA $201B = #$04 @ 送累加器
[00E8A87A]F87A [29 FD 8D]: AND #$FD @ 逻辑与
[00E8A87C]F87C [8D 1B 20]: STA $201B = #$04 @ 存累加器
[00E8A87F]F87F [A9 00 8D]: LDA #$00 @ 送累加器
[00E8A881]F881 [8D 1C 20]: STA $201C = #$00 @ 存累加器
[00E8A884]F884 [4C D7 F8]: JMP $F8D7 @ 转移$00E8A8D7
[00E8A887]F887 [29 BF 85]: AND #$BF @ 逻辑与
[00E8A889]F889 [85 37 A5]: STA $37 = #$00 @ 存累加器
[00E8A88B]F88B [A5 02 29]: LDA $02 = #$00 @ 送累加器
[00E8A88D]F88D [29 0F A8]: AND #$0F @ 逻辑与
[00E8A88F]F88F [A8 B1 35]: TAY @ 累加器送变址寄存器Y
[00E8A890]F890 [B1 35 8D]: LDA ($35),Y @ $178E = #$26 @ 送累加器
[00E8A892]F892 [8D 2B 02]: STA $022B = #$26 @ 存累加器
[00E8A895]F895 [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A897]F897 [29 10 F0]: AND #$10 @ 逻辑与
[00E8A899]F899 [F0 05 A5]: BEQ $F8A0 @ 结果为0分支
[00E8A89B]F89B [A5 02 8D]: LDA $02 = #$00 @ 送累加器
[00E8A89D]F89D [8D 2C 02]: STA $022C = #$00 @ 存累加器
[00E8A8A0]F8A0 [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8A2]F8A2 [29 20 F0]: AND #$20 @ 逻辑与
[00E8A8A4]F8A4 [F0 05 A5]: BEQ $F8AB @ 结果为0分支
[00E8A8A6]F8A6 [A5 02 8D]: LDA $02 = #$00 @ 送累加器
[00E8A8A8]F8A8 [8D 2D 02]: STA $022D = #$00 @ 存累加器
[00E8A8AB]F8AB [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8AD]F8AD [29 01 F0]: AND #$01 @ 逻辑与
[00E8A8AF]F8AF [F0 04 A5]: BEQ $F8B5 @ 结果为0分支
[00E8A8B1]F8B1 [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8B3]F8B3 [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8B5]F8B5 [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8B7]F8B7 [29 02 F0]: AND #$02 @ 逻辑与
[00E8A8B9]F8B9 [F0 04 A5]: BEQ $F8BF @ 结果为0分支
[00E8A8BB]F8BB [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8BD]F8BD [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8BF]F8BF [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8C1]F8C1 [29 04 F0]: AND #$04 @ 逻辑与
[00E8A8C3]F8C3 [F0 04 A5]: BEQ $F8C9 @ 结果为0分支
[00E8A8C5]F8C5 [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8C7]F8C7 [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8C9]F8C9 [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8CB]F8CB [29 08 F0]: AND #$08 @ 逻辑与
[00E8A8CD]F8CD [F0 04 A5]: BEQ $F8D3 @ 结果为0分支
[00E8A8CF]F8CF [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8D1]F8D1 [A5 02 68]: LDA $02 = #$00 @ 送累加器
[00E8A8D3]F8D3 [68 A8 68]: PLA @ 堆栈弹回累加器
[00E8A8D4]F8D4 [A8 68 40]: TAY @ 累加器送变址寄存器Y
[00E8A8D5]F8D5 [68 40 AD]: PLA @ 堆栈弹回累加器
[00E8A8D6]F8D6 [40 AD 3B]: RTI @ 中断返回
[00E8A8D7]F8D7 [AD 3B 02]: LDA $023B = #$21 @ 送累加器
[00E8A8DA]F8DA [29 DF 8D]: AND #$DF @ 逻辑与
[00E8A8DC]F8DC [8D 3B 02]: STA $023B = #$01 @ 存累加器
[00E8A8DF]F8DF [AD 3F 02]: LDA $023F = #$C0 @ 送累加器
[00E8A8E2]F8E2 [29 3F 8D]: AND #$3F @ 逻辑与
[00E8A8E4]F8E4 [8D 3F 02]: STA $023F = #$00 @ 存累加器
[00E8A8E7]F8E7 [68 A8 68]: PLA @ 堆栈弹回累加器
[00E8A8E8]F8E8 [A8 68 40]: TAY @ 累加器送变址寄存器Y
[00E8A8E9]F8E9 [68 40 48]: PLA @ 堆栈弹回累加器
[00E8A8EA]F8EA [40 48 8A]: RTI @ 中断返回
posted @ 2021-12-19 17:15  无云  阅读(100)  评论(0)    收藏  举报