6502芯片:指令集(一)(The Instruction Se

2021-05-12  本文已影响0人  苹果王子刘泽庆

6502芯片有一组相对基础的指令集,很多指令包含相似的功能(例如:内存访问,算术计算等)。下面这些表单列出了6502芯片使用的全部56条指令集。

存取操作指令(Load/Store Operations)

这些指令用来在内存和某一个寄存器之间传输一个字节的数据,读取(Load)指令操作根据所传输的数据来设置负位标志(Negative Flag,简写为N)和零标志(Zero Flag,简写为Z)。存储(Store)指令执行不会影响标志位的值。

指令名称 指令功能 影响标志位
LDA 读取(加载)累加器(Load Accumulator) N,Z
LDX 读取(加载)X寄存器(Load X Register) N,Z
LDY 读取(加载)Y寄存器(Load Y Register) N,Z
STA 存储到累加器(Store Accumulator)
STX 存储到X寄存器(Store X Register)
STY 存储到Y寄存器(Store Y Register)

寄存器传输指令(Register Transfers)

这些指令可以将X和Y寄存器中的内容传输到累加器中,并根据传输情况适当的设置负位标志(N)和零标志(Z)。

指令名称 指令功能 影响标志位
TAX 将数据从累加器传输到X寄存器(Transfer accumulator to X ) N,Z
TAY 将数据从累加器传输到Y寄存器(Transfer accumulator to Y ) N,Z
TXA 将数据从X寄存器传输到累加器(Transfer X to accumulaoter) N,Z
TYA 将数据从Y寄存器传输到累加器(Transfer Y to accumulaoter) N,Z

堆栈操作指令(Stack Operations)

6502微处理器支持256字节堆栈,这个堆栈的内存地址固定在$0100$01FF之间。一个特殊的8位寄存器S用于跟踪堆栈空间的下一个空闲字节。将字节压入堆栈就是将值存储在当前空闲位置(例如$0100,S),然后堆栈指针从栈顶位置向下递减。弹出堆栈操作与压入堆栈过程相反。

堆栈寄存器只能通过与X寄存器相互传递数据实现访问。它的值可以通过压入/弹出指令、子程序调用和返回、中断和中断返回来自动修改。

指令名称 指令功能 影响标志位
TSX 将数据从栈指针传输到X寄存器(Transfer stack pointer to X) N,Z
TXS 将数据从X寄存器传输到栈指针(Transfer X to stack pointer )
PHA 将数据从累加器压入堆栈(Push accumulator on stack)
PHP 将处理器状态压入堆栈(Push processor status on stack)
PLA 从堆栈中弹出数据到累加器(Pull accumulator from stack) N,Z
PLP 从堆栈中弹出处理器状态(Pull processor status from stack) All
上一篇下一篇

猜你喜欢

热点阅读