其他分享
首页 > 其他分享> > 【BA4988】SysGetKey函数

【BA4988】SysGetKey函数

作者:互联网

反汇编:

U8		SysGetKey()
{
    if (KeyBuffBottom == KeyBuffTop)
    {
        return 0xFF
    }
    else
    {
        buff_point = &KeyBuffer
        key = buff_point[KeyBuffBottom]
        KeyBuffBottom+=1
        KeyBuffBottom&=0x0F
        return key
    }
}

汇编:

[00E9E6CC]76CC [AD 04 20]: LDA $2004 = #$00 @ 送累加器
[00E9E6CF]76CF [CD 03 20]: CMP $2003 = #$00 @ 累加器与存储器比较
[00E9E6D2]76D2 [F0 1D A9]: BEQ $76F1 @ 结果为0分支
[00E9E6D4]76D4 [A9 08 85]: LDA #$08 @ 送累加器
[00E9E6D6]76D6 [85 2F A9]: STA $2F = #$08 @ 存累加器
[00E9E6D8]76D8 [A9 20 85]: LDA #$20 @ 送累加器
[00E9E6DA]76DA [85 30 AC]: STA $30 = #$20 @ 存累加器
[00E9E6DC]76DC [AC 04 20]: LDY $2004 = #$0C @ 送变址寄存器Y
[00E9E6DF]76DF [B1 2F 48]: LDA ($2F),Y @ $2014 = #$09 @ 送累加器
[00E9E6E1]76E1 [48 EE 04]: PHA @ 累加器压入堆栈
[00E9E6E2]76E2 [EE 04 20]: INC $2004 = #$0D @ 存储器加1
[00E9E6E5]76E5 [AD 04 20]: LDA $2004 = #$0D @ 送累加器
[00E9E6E8]76E8 [29 0F 8D]: AND #$0F @ 逻辑与
[00E9E6EA]76EA [8D 04 20]: STA $2004 = #$0D @ 存累加器
[00E9E6ED]76ED [68 4C F3]: PLA @ 堆栈弹回累加器
[00E9E6EE]76EE [4C F3 76]: JMP $76F3 @ 转移$00E9E6F3
[00E9E6F1]76F1 [A9 FF 60]: LDA #$FF @ 送累加器
[00E9E6F3]76F3 [60 AD 04]: RTS @ 子程序返回

标签:LDA,20,函数,04,累加器,SysGetKey,2004,A9,BA4988
来源: https://www.cnblogs.com/kevinshq/p/15704121.html