|
发表于 2009-10-20 10:14:30
|
显示全部楼层
6502汇编指令集!
-------------------------------addr :代表8位地址 addr16:代表16位地址 data :立即数-------------------------------
数据传送指令
LDA--由存储器取数送入累加器 M→A
符号码格式 指令操作码 寻址方式
LDA ($addr,X) A1 先变址X后间址
LDA $addr A5 零页寻址
LDA #$data A9 立即寻址
LDA $addr16 AD 绝对寻址
LDA ($addr),Y B1 后变址Y间址
LDA $addr,X B5 零页X变址
LDA $addr16,Y B9 绝对Y变址
LDA $addr16,X BD 绝对X变址
//LDX--由存储器取数送入累加器 M→X
符号码格式 指令操作码 寻址方式
LDX #$data A2 立即寻址
LDX $addr A6 零页寻址
LDX $addr16 AE 绝对寻址
LDX $addr,Y B6 零页Y变址
LDX $addr16,Y BE 绝对Y变址
//LDY--由存储器取数送入累加器 M→Y
符号码格式 指令操作码 寻址方式
LDY #$data A0 立即寻址
LDY $addr A4 零页寻址
LDY $addr16 AC 绝对寻址
LDY $addr,X B4 零页X变址
LDY $addr16,X BC 绝对X变址
//STA--将累加器的内容送入存储器 A--M
符号码格式 指令操作码 寻址方式
STA ($addr,X) 81 先变址X后间址
STA $addr 85 零页寻址
STA $addr16 8D 绝对寻址
STA ($addr),Y 91 后变址Y间址
STA $addr,X 95 零页X变址
STA $addr16,Y 99 绝对Y变址
STA $addr16,X 9D 绝对X变址
//STX--将寄存器X的内容送入存储器 X--M
符号码格式 指令操作码 寻址方式
STX $addr 86 零页寻址
STX $addr16 8E 绝对寻址
STX $addr,Y 96 零页Y变址
//STY--将寄存器Y的内容送入存储器 Y--M
符号码格式 指令操作码 寻址方式
STY $addr 84 零页寻址
STY $addr16 8C 绝对寻址
STY $addr,X 94 零页X变址
//寄存器和寄存器之间的传送
符号码格式 操作码 寻址方式 指令作用
TAX AA 寄存器寻址 将累加器A的内容送入变址寄存器X
TXA 8A 寄存器寻址 将变址寄存器X的内容送入累加器A
TAY A8 寄存器寻址 将累加器A的内容送入变址寄存器Y
TYA 98 寄存器寻址 将变址寄存器Y的内容送入累加器A
TSX BA 寄存器寻址 将堆栈指针S的内容送入变址寄存器X
TXS 9A 寄存器寻址 将变址寄存器X的内容送入堆栈指针S
算术运算指令
1. ADC--累加器,存储器,进位标志C相加,结果送累加器A A+M+C→A
符号码格式 指令操作码 寻址方式
ADC ($addr,X) 61 先变址X后间址
ADC $addr 65 零页寻址
ADC #$data 69 立即寻址
ADC $addr16 6D 绝对寻址
ADC ($addr),Y 71 后变址Y间址
ADC $addr,X 75 零页X变址
ADC $addr16,Y 79 绝对Y变址
ADC $addr16,X 7D 绝对X变址
注意:由于进位标志C页会参加运算,所以在做加法运算时,一般要在前面加指令 CLC,清除进位标志
2. SBC--从累加器减去存储器和进位标志C,结果送累加器 A-M-C→A
符号码格式 指令操作码 寻址方式
SBC ($addr,X) E1 先变址X后间址
SBC $addr E5 零页寻址
SBC #$data E9 立即寻址
SBC $addr16 ED 绝对寻址
SBC ($addr),Y F1 后变址Y间址
SBC $addr,X F5 零页X变址
SBC $addr16,Y F9 绝对Y变址
SBC $addr16,X FD 绝对X变址
注意:由于在做减法运算时,进位标志C会参与运算,所以在做减法前要先加指令 SEC,置进位标志
3. INC--存储器单元内容增1 M+1→M
符号码格式 指令操作码 寻址方式
INC $addr E6 零页寻址
INC $addr16 EE 绝对寻址
INC $addr,X F6 零页X变址
INC $addr16,X FE 绝对X变址
4. DEC--存储器单元内容减1 M-1→M
符号码格式 指令操作码 寻址方式
DEC $addr C6 零页寻址
DEC $addr16 CE 绝对寻址
DEC $addr,X D6 零页X变址
DEC $addr16,X DE 绝对X变址
5. 寄存器X,Y加1减1
符号码格式 指令操作码 寻址方式
INX E8 隐含寻址
DEX CA 隐含寻址
INY C8 隐含寻址
DEY 88 隐含寻址
逻辑运算指令
1.AND--寄存器与累加器相与,结果送累加器 A∧M→A
符号码格式 指令操作码 寻址方式
AND ($addr,X) 21 先变址X后间址
AND $addr 25 零页寻址
AND #$data 29 立即寻址
AND $addr16 2D 绝对寻址
AND ($addr),Y 31 后变址Y间址
AND $addr,X 35 零页X变址
AND $addr16,Y 39 绝对Y变址
AND $addr16,X 3D 绝对X变址
2.ORA--寄存器与累加器相或,结果送累加器 A∨M→A
符号码格式 指令操作码 寻址方式
ORA ($addr,X) 01 先变址X后间址
ORA $addr 05 零页寻址
ORA #$data 09 立即寻址
ORA $addr16 0D 绝对寻址
ORA ($addr),Y 11 后变址Y间址
ORA $addr,X 15 零页X变址
ORA $addr16,Y 19 绝对Y变址
ORA $addr16,X 1D 绝对X变址
3.EOR--寄存器与累加器相异或,结果送累加器 A≮M→A
符号码格式 指令操作码 寻址方式
EOR ($addr,X) 41 先变址X后间址
EOR $addr 45 零页寻址
EOR #$data 49 立即寻址
EOR $addr16 4D 绝对寻址
EOR ($addr),Y 51 后变址Y间址
EOR $addr,X 55 零页X变址
EOR $addr16,Y 59 绝对Y变址
EOR $addr16,X 5D 绝对X变址
置标志位指令
1. CLC--清除进位标志 0→C 机器码 18
2. SEC--置进位标志C 1→C 机器码 38
3. CLD--清除十进制运算标志D 0→D 机器码 D8
4. SED--置十进制运算标志D 1→D 机器码 F8
5. CLV--清除溢出标志V 0→V 机器码 B8
6. CLI--清除中断禁止指令I 0→I 机器码 58
7. SEI--置位中断禁止标志I 1→I 机器码 78 |
|