美文网首页
6502芯片:自增和自减(Increments & Decrem

6502芯片:自增和自减(Increments & Decrem

作者: 苹果王子刘泽庆 | 来源:发表于2021-05-26 06:43 被阅读0次

    汇编程序经常会使用基于内存的计数器,偶尔需要进行+1和-1的操作。一种解决思路是依次使用LSBMSB指令,并借助ADC/SBC指令实现增加或减少1的操作。但实际上6402芯片的指令集提供了INCDEC这两条更加高效的指令来实现这一操作。

    递增操作比较简单粗暴,我们只增加最不重要的字节,直到结果变成零。这表明计算已经换行(例如FF +01 => $00),并且需要增加到最重要的字节。

    ; Increment a 16 bit value by one
    _INC16  INC MEM+0       ;Increment the LSB
            BNE _DONE       ;If the result was not zero we're done
            INC MEM+1       ;Increment the MSB if LSB wrapped round
    _DONE   EQU *
    

    递减则有点棘手,因为我们需要知道最不重要的字节何时将从00下溢到FF。答案是首先将其加载到累加器中以设置处理器标志,从而对其进行测试。

    ; Decrement a 16 bit value by one
    _DEC16  LDA MEM+0       ;Test if the LSB is zero
            BNE _SKIP       ;If it isn't we can skip the next instruction
            DEC MEM+1       ;Decrement the MSB when the LSB will underflow
    _SKIP   DEC MEM+0       ;Decrement the LSB
    

    相关文章

      网友评论

          本文标题:6502芯片:自增和自减(Increments & Decrem

          本文链接:https://www.haomeiwen.com/subject/rubajltx.html