6502指令集<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
一、 算术运算类
1、 ADC带进位位加 ,指令格式:
寻址方式 | 调用格式 |
立即数寻址 | ADC #dd |
首页寻址 | ADC aa |
首页索引寻址 | ADC aa,X |
绝对寻址 | ADC aaaa |
绝对索引寻址 | ADC aaaa,X |
绝对索引寻址 | ADC aaaa,Y |
索引直接寻址 | ADC (aaaa,X) |
直接索引寻址 | ADC (aaaa),Y |
2、 SBC带进位位减 ,指令格式:
寻址方式 | 调用格式 |
立即数寻址 | SBC #dd |
首页寻址 | SBC aa |
首页索引寻址 | SBC aa,X |
绝对寻址 | SBC aaaa |
绝对索引寻址 | SBC aaaa,X |
绝对索引寻址 | SBC aaaa,Y |
索引直接寻址 | SBC (aaaa,X) |
直接索引寻址 | SBC (aaaa),Y |
3、 CMP 累加器与存储单元内容比较,即A – M,只影响标志位
寻址方式 | 调用格式 |
立即数寻址 | CMP #dd |
首页寻址 | CMP aa |
首页索引寻址 | CMP aa,X |
绝对寻址 | CMP aaaa |
绝对索引寻址 | CMP aaaa,X |
绝对索引寻址 | CMP aaaa,Y |
索引直接寻址 | CMP (aaaa,X) |
直接索引寻址 | CMP (aaaa),Y |
若结果为 负值,N=1;若结果为0,Z=0;若无借位,即A>=M,C=1;
4、 CPX 寄存器X与存储单元内容比较,即X – M,只影响标志位
寻址方式 | 调用格式 |
立即数寻址 | CPX #dd |
首页寻址 | CPX aa |
绝对寻址 | CPX aaaa |
若结果为 负值,N=1;若结果为0,Z=0;若无借位,即A>=M,C=1;
5、 CPY 寄存器Y与存储单元内容比较,即Y – M,只影响标志位
寻址方式 | 调用格式 |
立即数寻址 | CPY #dd |
首页寻址 | CPY aa |
绝对寻址 | CPY aaaa |
若结果为 负值,N=1;若结果为0,Z=0;若无借位,即A>=M,C=1;
6、 DEC 存储单元内容减1
寻址方式 | 调用格式 |
首页寻址 | DEC aa |
首页索引寻址 | DEC aa,X |
绝对寻址 | DEC aaaa |
绝对索引寻址 | DEC aaaa,X |
7、 DEX 寄存器X内容减1
8、 DEY 寄存器Y内容减1
9、 INC 存储单元内容加1
寻址方式 | 调用格式 |
首页寻址 | INC aa |
首页索引寻址 | INC aa,X |
绝对寻址 | INC aaaa |
绝对索引寻址 | INC aaaa,X |
10、 INX 寄存器X加1
11、 INY 寄存器Y加1
二、 逻辑运算类
1、 AND 与累加器A进行逻辑运算 与 ,结果存于A,指令格式为:
寻址方式 | 调用格式 |
立即数寻址 | AND #dd |
首页寻址 | AND aa |
首页索引寻址 | AND aa,X |
绝对寻址 | AND aaaa |
绝对索引寻址 | AND aaaa,X |
绝对索引寻址 | AND aaaa,Y |
索引直接寻址 | AND (aaaa,X) |
直接索引寻址 | AND (aaaa),Y |
2、 ORA与累加器A进行逻辑运算 或 ,结果存于A,指令格式为:
寻址方式 | 调用格式 |
立即数寻址 | ORA #dd |
首页寻址 | ORA aa |
首页索引寻址 | ORA aa,X |
绝对寻址 | ORA aaaa |
绝对索引寻址 | ORA aaaa,X |
绝对索引寻址 | ORA aaaa,Y |
索引直接寻址 | ORA (aaaa,X) |
直接索引寻址 | ORA (aaaa),Y |
3、 EOR 累加器与存储单元内容异或运算,结果放于A累加器,指令格式为:
寻址方式 | 调用格式 |
立即数寻址 | EOR #dd |
首页寻址 | EOR aa |
首页索引寻址 | EOR aa,X |
绝对寻址 | EOR aaaa |
绝对索引寻址 | EOR aaaa,X |
绝对索引寻址 | EOR aaaa,Y |
索引直接寻址 | EOR (aaaa,X) |
直接索引寻址 | EOR (aaaa),Y |
4、 ASL带进位位左移,指令格式为:
寻址方式 | 调用格式 |
累加器寻址 | ASL A |
首页寻址 | ASL aa |
首页索引寻址 | ASL aa,X |
绝对寻址 | ASL aaaa |
绝对索引寻址 | ASL aaaa,X |
5、 LSR 带进位位右移,指令格式为:
寻址方式 | 调用格式 |
累加器寻址 | LSR A |
首页寻址 | LSR aa |
首页索引寻址 | LSR aa,X |
绝对寻址 | LSR aaaa |
绝对索引寻址 | LSR aaaa,X |
6、 ROL带进位位循环左移,指令格式为:
寻址方式 | 调用格式 |
累加器寻址 | ROL A |
首页寻址 | ROL aa |
首页索引寻址 | ROL aa,X |
绝对寻址 | ROL aaaa |
绝对索引寻址 | ROL aaaa,X |
7、 ROR带进位位循环右移,指令格式为:
寻址方式 | 调用格式 |
累加器寻址 | ROR A |
首页寻址 | ROR aa |
首页索引寻址 | ROR aa,X |
绝对寻址 | ROR aaaa |
绝对索引寻址 | ROR aaaa,X |
三、 数据传送类
1、 LDA 将指定数据送入累加器A
寻址方式 | 调用格式 |
立即数寻址 | LDA #dd |
首页寻址 | LDA aa |
首页索引寻址 | LDA aa,X |
绝对寻址 | LDA aaaa |
绝对索引寻址 | LDA aaaa,X |
绝对索引寻址 | LDA aaaa,Y |
索引直接寻址 | LDA (aaaa,X) |
直接索引寻址 | LDA (aaaa),Y |
2、 LDX 将指定数据送入寄存器X
寻址方式 | 调用格式 |
立即数寻址 | LDX #dd |
首页寻址 | LDX aa |
首页索引寻址 | LDX aa,X |
绝对寻址 | LDX aaaa |
绝对索引寻址 | LDX aaaa,X |
3、 LDY 将指定数据送入寄存器Y
寻址方式 | 调用格式 |
立即数寻址 | LDY #dd |
首页寻址 | LDY aa |
首页索引寻址 | LDY aa,X |
绝对寻址 | LDY aaaa |
绝对索引寻址 | LDY aaaa,X |
4、 PHA 将累加器内容压入堆栈
5、 PHP 将状态标志位寄存器压入堆栈
6、 PLA 将累加器内容弹出堆栈
7、 PLP 将状态标志位寄存器弹出堆栈
8、 STA 将累加器内容传入指定存储单元
寻址方式 | 调用格式 |
首页寻址 | STA aa |
首页索引寻址 | STA aa,X |
绝对寻址 | STA aaaa |
绝对索引寻址 | STA aaaa,X |
绝对索引寻址 | STA aaaa,Y |
索引直接寻址 | STA (aaaa,X) |
直接索引寻址 | STA (aaaa),Y |
9、 STX 将寄存器X内容传入指定存储单元
寻址方式 | 调用格式 |
首页寻址 | STX aa |
首页索引寻址 | STX aa,Y |
绝对寻址 | STX aaaa |
10、 STY 将寄存器Y内容传入指定存储单元
寻址方式 | 调用格式 |
首页寻址 | STY aa |
首页索引寻址 | STY aa,X |
绝对寻址 | STY aaaa |
11、 TAX 累加器内容传入寄存器X
12、 TAY 累加器内容传入寄存器Y
13、 TXA 寄存器X内容传入累加器A
14、 TYA 寄存器Y内容传入累加器A
15、 TSX 堆栈内容传入寄存器X
16、 TXS 寄存器X内容传入堆栈
四、 控制跳转类
1、 BCC/BCS/BEQ/BMI/BNE/BPL/BVC/BVS,指令调用格式及转移条件为:
指令格式 | 转移条件 |
BCC aa | C=0 |
BCS aa | C=1 |
BNE aa | Z=0 |
BEQ aa | Z=1 |
BPL aa | N=0 |
BMI aa | N=1 |
BVC aa | V=0 |
BVS aa | V=1 |
2、 JMP 跳转到指定位置
寻址方式 | 指令格式 |
绝对寻址 | JMP aaaa |
直接寻址 | JMP(aaaa) |
3、 JSR 子程序跳转指令
4、 RTI 中断返回
5、 RTS 子程序返回
五、 布尔运算类
1、 BIT 累加器与存储单元进行 位与 测试,指令格式及结果为:
寻址方式 | 指令格式 | 指令执行结果 |
首页寻址 | BIT aa | If(A&M)==0,Z=1; If(A&M)!=0,Z=0; N=bit7 of M; V=bit6 of M; |
绝对寻址 | BIT aaaa |
2、 TST 判断某位是否为0
寻址方式 | 调用格式 |
首页寻址 | CLR aa,0 |
首页寻址 | CLR aa,1 |
首页寻址 | CLR aa,2 |
首页寻址 | CLR aa,3 |
首页寻址 | CLR aa,4 |
首页寻址 | CLR aa,5 |
首页寻址 | CLR aa,6 |
首页寻址 | CLR aa,7 |
若指定位为0,则置位进位标志位C
3、 CLC 清除进位标志位C
4、 CLD 清除十进制标志位D
5、 CLI 清除中断标志位I,即恢复中断功能
6、 CLV 清除溢出标志位V
7、 CLR 清除存储单元内容指定位
寻址方式 | 调用格式 |
首页寻址 | CLR aa,0 |
首页寻址 | CLR aa,1 |
首页寻址 | CLR aa,2 |
首页寻址 | CLR aa,3 |
首页寻址 | CLR aa,4 |
首页寻址 | CLR aa,5 |
首页寻址 | CLR aa,6 |
首页寻址 | CLR aa,7 |
8、 INV 存储单元内容指定位 取反
寻址方式 | 调用格式 |
首页寻址 | INV aa,0 |
首页寻址 | INV aa,1 |
首页寻址 | INV aa,2 |
首页寻址 | INV aa,3 |
首页寻址 | INV aa,4 |
首页寻址 | INV aa,5 |
首页寻址 | INV aa,6 |
首页寻址 | INV aa,7 |
9、 SEC 置位进位标志位C
10、SED 置位十进制标志位D
11、SEI 置位中断标志位I,即屏蔽中断功能
12、SET 置位存储单元内容指定位
寻址方式 | 调用格式 |
首页寻址 | SET aa,0 |
首页寻址 | SET aa,1 |
首页寻址 | SET aa,2 |
首页寻址 | SET aa,3 |
首页寻址 | SET aa,4 |
首页寻址 | SET aa,5 |
首页寻址 | SET aa,6 |
首页寻址 | SET aa,7 |
六、 其他
1、NOP 空操作
文章评论(0条评论)
登录后参与讨论