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 |