【BA4988】startup系统启动入口

反汇编:

startup()
{
    __lib_temp_ptr = 0x17D7
    __stack_ptr = 0x17D7
    self.S = 0xFF // 修改栈指针
    _SYSCON = 0x02
    _CPUCLK = 0x03
    _SYSCON = 0x44
    _OSCK = 0xF3
    _SYSCON = 0x05

    X=0xFF
    do
    {
        for (i=0; i<10; i++)
        {
            void // nop
        }
        X -= 1
    }
    while (X>=0x01)
    _CPUCLK=X
    A=0
    X=1
    Y=1
    do
    {
        _BK_SEL = X
        _BK_ADRL=Y
        _BK_ADRH=A
        Y+=1
        X+=1
    }
    while (X<0x05)
    Y=*(U8*)0x03E5
    X=9
    A=*(U8*)0x03E4
    do
    {
        _BK_SEL = X
        _BK_ADRL=Y
        _BK_ADRH=A
        Y+=1
        X+=1
    }
    while (X<0x0D)
    A = *(U8*)0x03E5
    A += 0x08
    Y=A
    X=0x0D
    A = *(U8*)0x03E4
    do
    {
        _BK_SEL=X
        _BK_ADRL=Y
        _BK_ADRH=A
        Y+=1
        X+=1
    }
    while (X<0x10)
    SysStart()
    BRK
}

汇编:

[00000350]0350 [4C 54 03]: JMP $0354 @ 转移
[00000354]0354 [EA 78 D8]: NOP @ 空操作
[00000355]0355 [78 D8 38]: SEI @ 置中断禁止位
[00000356]0356 [D8 38 A9]: CLD @ 清十进制方式
[00000357]0357 [38 A9 FF]: SEC @ 置进位标志
[00000358]0358 [A9 FF E9]: LDA #$FF @ 送累加器
[0000035A]035A [E9 28 85]: SBC #$28 @ 带借位的减法
[0000035C]035C [85 2A 85]: STA $2A = #$D7 @ 存累加器
[0000035E]035E [85 28 A9]: STA $28 = #$D7 @ 存累加器
[00000360]0360 [A9 17 E9]: LDA #$17 @ 送累加器
[00000362]0362 [E9 00 85]: SBC #$00 @ 带借位的减法
[00000364]0364 [85 2B 85]: STA $2B = #$17 @ 存累加器
[00000366]0366 [85 29 A2]: STA $29 = #$17 @ 存累加器
[00000368]0368 [A2 FF 9A]: LDX #$FF @ 送变址寄存器X
[0000036A]036A [9A A9 02]: TXS @ 变址寄存器X送栈指针
[0000036B]036B [A9 02 8D]: LDA #$02 @ 送累加器
[0000036D]036D [8D 00 02]: STA $0200 = #$02 @ 存累加器
[00000370]0370 [A9 03 8D]: LDA #$03 @ 送累加器
[00000372]0372 [8D 01 02]: STA $0201 = #$03 @ 存累加器
[00000375]0375 [A9 44 8D]: LDA #$44 @ 送累加器
[00000377]0377 [8D 00 02]: STA $0200 = #$44 @ 存累加器
[0000037A]037A [A9 F3 8D]: LDA #$F3 @ 送累加器
[0000037C]037C [8D 02 02]: STA $0202 = #$F3 @ 存累加器
[0000037F]037F [A9 05 8D]: LDA #$05 @ 送累加器
[00000381]0381 [8D 00 02]: STA $0200 = #$05 @ 存累加器
[00000384]0384 [A2 FF EA]: LDX #$FF @ 送变址寄存器X
[00000386]0386 [EA EA EA]: NOP @ 空操作
[00000387]0387 [EA EA EA]: NOP @ 空操作
[00000388]0388 [EA EA EA]: NOP @ 空操作
[00000389]0389 [EA EA EA]: NOP @ 空操作
[0000038A]038A [EA EA EA]: NOP @ 空操作
[0000038B]038B [EA EA EA]: NOP @ 空操作
[0000038C]038C [EA EA EA]: NOP @ 空操作
[0000038D]038D [EA EA EA]: NOP @ 空操作
[0000038E]038E [EA EA CA]: NOP @ 空操作
[0000038F]038F [EA CA E0]: NOP @ 空操作
[00000390]0390 [CA E0 01]: DEX @ 变址寄存器X减1
[00000391]0391 [E0 01 B0]: CPX #$01 @ 变址寄存器X与存储寄存器比较
[00000393]0393 [B0 F1 8E]: BCS $0386 @ 进位为“1”分支
[00000395]0395 [8E 01 02]: STX $0201 = #$00 @ 存变址寄存器X
[00000398]0398 [A9 00 A2]: LDA #$00 @ 送累加器
[0000039A]039A [A2 01 A0]: LDX #$01 @ 送变址寄存器X
[0000039C]039C [A0 01 86]: LDY #$01 @ 送变址寄存器Y
[0000039E]039E [86 0C 84]: STX $0C = #$01 @ 存变址寄存器X
[000003A0]03A0 [84 0D 85]: STY $0D = #$01 @ 存变址寄存器Y
[000003A2]03A2 [85 0E C8]: STA $0E = #$00 @ 存累加器
[000003A4]03A4 [C8 E8 E0]: INY @ 变址寄存器Y加1
[000003A5]03A5 [E8 E0 05]: INX @ 变址寄存器X加1
[000003A6]03A6 [E0 05 90]: CPX #$05 @ 变址寄存器X与存储寄存器比较
[000003A8]03A8 [90 F4 AC]: BCC $039E @ 进位为0分支
[000003AA]03AA [AC E5 03]: LDY $03E5 = #$80 @ 送变址寄存器Y
[000003AD]03AD [A2 09 AD]: LDX #$09 @ 送变址寄存器X
[000003AF]03AF [AD E4 03]: LDA $03E4 = #$0E @ 送累加器
[000003B2]03B2 [86 0C 84]: STX $0C = #$09 @ 存变址寄存器X
[000003B4]03B4 [84 0D 85]: STY $0D = #$80 @ 存变址寄存器Y
[000003B6]03B6 [85 0E C8]: STA $0E = #$0E @ 存累加器
[000003B8]03B8 [C8 E8 E0]: INY @ 变址寄存器Y加1
[000003B9]03B9 [E8 E0 0D]: INX @ 变址寄存器X加1
[000003BA]03BA [E0 0D 90]: CPX #$0D @ 变址寄存器X与存储寄存器比较
[000003BC]03BC [90 F4 AD]: BCC $03B2 @ 进位为0分支
[000003BE]03BE [AD E5 03]: LDA $03E5 = #$80 @ 送累加器
[000003C1]03C1 [18 69 08]: CLC @ 清进位标志
[000003C2]03C2 [69 08 A8]: ADC #$08 @ 带进位加
[000003C4]03C4 [A8 A2 0D]: TAY @ 累加器送变址寄存器Y
[000003C5]03C5 [A2 0D AD]: LDX #$0D @ 送变址寄存器X
[000003C7]03C7 [AD E4 03]: LDA $03E4 = #$0E @ 送累加器
[000003CA]03CA [86 0C 84]: STX $0C = #$0D @ 存变址寄存器X
[000003CC]03CC [84 0D 85]: STY $0D = #$88 @ 存变址寄存器Y
[000003CE]03CE [85 0E C8]: STA $0E = #$0E @ 存累加器
[000003D0]03D0 [C8 E8 E0]: INY @ 变址寄存器Y加1
[000003D1]03D1 [E8 E0 10]: INX @ 变址寄存器X加1
[000003D2]03D2 [E0 10 90]: CPX #$10 @ 变址寄存器X与存储寄存器比较
[000003D4]03D4 [90 F4 58]: BCC $03CA @ 进位为0分支
[000003D6]03D6 [58 A2 46]: CLI @ 清中断禁止位
[000003D7]03D7 [A2 46 86]: LDX #$46 @ 送变址寄存器X
[000003D9]03D9 [86 26 A2]: STX $26 = #$46 @ 存变址寄存器X
[000003DB]03DB [A2 E7 86]: LDX #$E7 @ 送变址寄存器X
[000003DD]03DD [86 27 20]: STX $27 = #$E7 @ 存变址寄存器X
[000003DF]03DF [20 F6 D2]: JSR $D2F6 @ 转子
[000003E2]03E2 [00 70 0E]: BRK @ 强制暂停

posted @ 2021-11-28 15:23  无云  阅读(208)  评论(0)    收藏  举报