6502——寄存器

6502有六个可供使用的寄存器(A,X,Y,PC,S,P)。其中除程序计数器PC是16位外,其余寄存器均为8位。

1、累加寄存器A——8位

作用:同ALU一起完成各种算数逻辑运算符。它通常既提供ALU一个原始操作数,又存放操作结果,所以称为累加器。

2、变址寄存器X和Y——8位

作用:主要在变址寻址的方式中用来存放地址偏移量,也常被当做计数器使用。此外还可以作为一般通用寄存器,用语数据的暂存。

3、程序计算器PC——16位

作用:存放下一条要执行指令的地址码。

当顺序执行的时候,没去处一个指令字节后PC自动加一,为取下一个指令字节做好准备。

当不是顺序执行的时候,PC的内容将是要转移的目标地址码。

4、堆栈指针S——8位

。。。。。。

5、标志寄存器P——8位

image

实际使用的时候只使用了其中的7位,第五位未使用。

1)C——进位标志

做加法运算的时候,若最高位有进位,则C位置1,否则置0;
做减法运算的时候,若最高位有差位时。则C位置0,否则置1。
逻辑运算的时候,C位置0.

2)Z——零标志

本次操作后,若结果为0,则Z位置1,否则Z为1。

3)I——中断禁止(屏蔽)标志

此标志为0,则表示准许中断;
此标志为1,则表示禁止中断。(非屏蔽中断不受此约束)

4)D——十进制运算标志

0——令ALU作二进制运算
1——令ALU作十进制运算

在6502中有专门的指令对D进行操作。此操作只对后续的加减指令有作用。

5)B——BANK指令标志

执行了BANK指令之后?B=1 并且程序中止。

6)V——溢出标志

溢出 置 1,否则 置 0。

7)N——符号标志

无溢出的时候(V=0):运算结果为负数时N=1;为正数时N=0
有溢出的时候(V=1):运算结果为负数时N=0;为正数时N=1

总结:

对标志位应该掌握以下几点:

  • 每个指令对标志位的影响不相同
  • 寄存器P中各标志位的状态一般是指当前指令执行后的状态。所以标志位常常在执行条件转移作为条件判断的依据。
  • 6502MPU还可以用专门的指令来修改某些标志位,进行复位或者置位。例如CLC,设C=0。
posted @ 2021-12-07 22:26  Abraverman  阅读(838)  评论(0编辑  收藏  举报