【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 @ 子程序返回