【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 @ 强制暂停
浙公网安备 33010602011771号