6502指令集(英文).docx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 6502 指令 英文
- 资源描述:
-
6502/6510/8500/8502 Opcode matrix: imm = #$00 zp = $00 zpx = $00,X zpy = $00,Y izx = ($00,X) izy = ($00),Y abs = $0000 abx = $0000,X aby = $0000,Y ind = ($0000) rel = $0000 (PC-relative) x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF 0x BRK 7 ORA izx 6 KIL SLO izx 8 NOP zp 3 ORA zp 3 ASL zp 5 SLO zp 5 PHP 3 ORA imm 2 ASL 2 ANC imm 2 NOP abs 4 ORA abs 4 ASL abs 6 SLO abs 6 1x BPL rel 2* ORA izy 5* KIL SLO izy 8 NOP zpx 4 ORA zpx 4 ASL zpx 6 SLO zpx 6 CLC 2 ORA aby 4* NOP 2 SLO aby 7 NOP abx 4* ORA abx 4* ASL abx 7 SLO abx 7 2x JSR abs 6 AND izx 6 KIL RLA izx 8 BIT zp 3 AND zp 3 ROL zp 5 RLA zp 5 PLP 4 AND imm 2 ROL 2 ANC imm 2 BIT abs 4 AND abs 4 ROL abs 6 RLA abs 6 3x BMI rel 2* AND izy 5* KIL RLA izy 8 NOP zpx 4 AND zpx 4 ROL zpx 6 RLA zpx 6 SEC 2 AND aby 4* NOP 2 RLA aby 7 NOP abx 4* AND abx 4* ROL abx 7 RLA abx 7 4x RTI 6 EOR izx 6 KIL SRE izx 8 NOP zp 3 EOR zp 3 LSR zp 5 SRE zp 5 PHA 3 EOR imm 2 LSR 2 ALR imm 2 JMP abs 3 EOR abs 4 LSR abs 6 SRE abs 6 5x BVC rel 2* EOR izy 5* KIL SRE izy 8 NOP zpx 4 EOR zpx 4 LSR zpx 6 SRE zpx 6 CLI 2 EOR aby 4* NOP 2 SRE aby 7 NOP abx 4* EOR abx 4* LSR abx 7 SRE abx 7 6x RTS 6 ADC izx 6 KIL RRA izx 8 NOP zp 3 ADC zp 3 ROR zp 5 RRA zp 5 PLA 4 ADC imm 2 ROR 2 ARR imm 2 JMP ind 5 ADC abs 4 ROR abs 6 RRA abs 6 7x BVS rel 2* ADC izy 5* KIL RRA izy 8 NOP zpx 4 ADC zpx 4 ROR zpx 6 RRA zpx 6 SEI 2 ADC aby 4* NOP 2 RRA aby 7 NOP abx 4* ADC abx 4* ROR abx 7 RRA abx 7 8x NOP imm 2 STA izx 6 NOP imm 2 SAX izx 6 STY zp 3 STA zp 3 STX zp 3 SAX zp 3 DEY 2 NOP imm 2 TXA 2 XAA imm 2 STY abs 4 STA abs 4 STX abs 4 SAX abs 4 9x BCC rel 2* STA izy 6 KIL AHX izy 6 STY zpx 4 STA zpx 4 STX zpy 4 SAX zpy 4 TYA 2 STA aby 5 TXS 2 TAS aby 5 SHY abx 5 STA abx 5 SHX aby 5 AHX aby 5 Ax LDY imm 2 LDA izx 6 LDX imm 2 LAX izx 6 LDY zp 3 LDA zp 3 LDX zp 3 LAX zp 3 TAY 2 LDA imm 2 TAX 2 LAX imm 2 LDY abs 4 LDA abs 4 LDX abs 4 LAX abs 4 Bx BCS rel 2* LDA izy 5* KIL LAX izy 5* LDY zpx 4 LDA zpx 4 LDX zpy 4 LAX zpy 4 CLV 2 LDA aby 4* TSX 2 LAS aby 4* LDY abx 4* LDA abx 4* LDX aby 4* LAX aby 4* Cx CPY imm 2 CMP izx 6 NOP imm 2 DCP izx 8 CPY zp 3 CMP zp 3 DEC zp 5 DCP zp 5 INY 2 CMP imm 2 DEX 2 AXS imm 2 CPY abs 4 CMP abs 4 DEC abs 6 DCP abs 6 Dx BNE rel 2* CMP izy 5* KIL DCP izy 8 NOP zpx 4 CMP zpx 4 DEC zpx 6 DCP zpx 6 CLD 2 CMP aby 4* NOP 2 DCP aby 7 NOP abx 4* CMP abx 4* DEC abx 7 DCP abx 7 Ex CPX imm 2 SBC izx 6 NOP imm 2 ISC izx 8 CPX zp 3 SBC zp 3 INC zp 5 ISC zp 5 INX 2 SBC imm 2 NOP 2 SBC imm 2 CPX abs 4 SBC abs 4 INC abs 6 ISC abs 6 Fx BEQ rel 2* SBC izy 5* KIL ISC izy 8 NOP zpx 4 SBC zpx 4 INC zpx 6 ISC zpx 6 SED 2 SBC aby 4* NOP 2 ISC aby 7 NOP abx 4* SBC abx 4* INC abx 7 ISC abx 7 "*" : add 1 cycle if page boundary is crossed. add 1 cycle on branches if taken. Logical and arithmetic commands: Opcode imp imm zp zpx zpy izx izy abs abx aby ind rel Function N V B D I Z C ORA $09 $05 $15 $01 $11 $0D $1D $19 A:=A or {adr} * * AND $29 $25 $35 $21 $31 $2D $3D $39 A:=A&{adr} * * EOR $49 $45 $55 $41 $51 $4D $5D $59 A:=A exor {adr} * * ADC $69 $65 $75 $61 $71 $6D $7D $79 A:=A+{adr} * * * * SBC $E9 $E5 $F5 $E1 $F1 $ED $FD $F9 A:=A-{adr} * * * * CMP $C9 $C5 $D5 $C1 $D1 $CD $DD $D9 A-{adr} * * * CPX $E0 $E4 $EC X-{adr} * * * CPY $C0 $C4 $CC Y-{adr} * * * DEC $C6 $D6 $CE $DE {adr}:={adr}-1 * * DEX $CA X:=X-1 * * DEY $88 Y:=Y-1 * * INC $E6 $F6 $EE $FE {adr}:={adr}+1 * * INX $E8 X:=X+1 * * INY $C8 Y:=Y+1 * * ASL $0A $06 $16 $0E $1E {adr}:={adr}*2 * * * ROL $2A $26 $36 $2E $3E {adr}:={adr}*2+C * * * LSR $4A $46 $56 $4E $5E {adr}:={adr}/2 * * * ROR $6A $66 $76 $6E $7E {adr}:={adr}/2+C*128 * * * Move commands: Opcode imp imm zp zpx zpy izx izy abs abx aby ind rel Function N V B D I Z C LDA $A9 $A5 $B5 $A1 $B1 $AD $BD $B9 A:={adr} * * STA $85 $95 $81 $91 $8D $9D $99 {adr}:=A LDX $A2 $A6 $B6 $AE $BE X:={adr} * * STX $86 $96 $8E {adr}:=X LDY $A0 $A4 $B4 $AC $BC Y:={adr} * * STY $84 $94 $8C {adr}:=Y TAX $AA X:=A * * TXA $8A A:=X * * TAY $A8 Y:=A * * TYA $98 A:=Y * * TSX $BA X:=S * * TXS $9A S:=X PLA $68 A:=+(S) * * PHA $48 (S)-:=A PLP $28 P:=+(S) * * * * * * PHP $08 (S)-:=P Jump/Flag commands: Opcode imp imm zp zpx zpy izx izy abs abx aby ind rel Function N V B D I Z C BPL $10 branch on N=0 BMI $30 branch on N=1 BVC $50 branch on V=0 BVS $70 branch on V=1 BCC $90 branch on C=0 BCS $B0 branch on C=1 BNE $D0 branch on Z=0 BEQ $F0 branch on Z=1 BRK $00 (S)-:=PC,P PC:=($FFFE) 1 1 RTI $40 P,PC:=+(S) * * * * * * JSR $20 (S)-:=PC PC:={adr} RTS $60 PC:=+(S) JMP $4C $6C PC:={adr} BIT $24 $2C N:=b7 V:=b6 Z:=A&{adr} * * * CLC $18 C:=0 0 SEC $38 C:=1 1 CLD $D8 D:=0 0 SED $F8 D:=1 1 CLI $58 I:=0 0 SEI $78 I:=1 1 CLV $B8 V:=0 0 NOP $EA Flags of the status register: The processor status register has 8 bits, where 7 are used as flags: N = negative flag (1 when result is negative) V = overflow flag (1 on signed overflow) # = unused (always 1) B = break flag (1 when interupt was caused by a BRK) D = decimal flag (1 when CPU in BCD mode) I = IRQ flag (when 1, no interupts will occur (exceptions are IRQs forced by BRK and NMIs)) Z = zero flag (1 when all bits of a result are 0) C = carry flag (1 on unsigned overflow) Hardware vectors: $FFFA = NMI vector (NMI=not maskable interupts) $FFFC = Reset vector $FFFE = IRQ vector Illegal opcodes: Opcode imp imm zp zpx zpy izx izy abs abx aby ind rel Function N V B D I Z C SLO $07 $17 $03 $13 $0F $1F $1B {adr}:={adr}*2 A:=A or {adr} * * * RLA $27 $37 $23 $33 $2F $3F $3B {adr}:={adr}rol A:=A and {adr} * * * SRE $47 $57 $43 $53 $4F $5F $5B {adr}:={adr}/2 A:=A exor {adr} * * * RRA $67 $77 $63 $73 $6F $7F $7B {adr}:={adr}ror A:=A adc {adr} * * * * SAX $87 $97 $83 $8F {adr}:=A&X LAX $A7 $B7 $A3 $B3 $AF $BF A,X:={adr} * * DCP $C7 $D7 $C3 $D3 $CF $DF $DB {adr}:={adr}-1 A-{adr} * * * ISC $E7 $F7 $E3 $F3 $EF $FF $FB {adr}:={adr}+1 A:=A-{adr} * * * * ANC $0B A:=A&#{imm} * * * ANC $2B A:=A&#{imm} * * * ALR $4B A:=(A&#{imm})/2 * * * ARR $6B A:=(A&#{imm})/2 * * * * XAA² $8B A:=X&#{imm} * * LAX² $AB A,X:=#{imm} * * AXS $CB X:=A&X-#{imm} * * * SBC $EB A:=A-#{imm} * * * * AHX¹ $93 $9F {adr}:=A&X&H SHY¹ $9C {adr}:=Y&H SHX¹ $9E {adr}:=X&H TAS¹ $9B S:=A&X {adr}:=S&H LAS $BB A,X,S:={adr}&S * * ¹ = unstable in certain matters ² = highly unstable (results are not predictable on some machines) A = Akkumulator X = X-Register Y = Y-Register S = Stack-Pointer P = Status-Register +(S) = Stack-Pointer relative with pre-increment (S)- = Stack-Pointer relative with post-decrement Combinations of two operations with the same addressing mode: SLO {adr} = ASL {adr} + ORA {adr} RLA {adr} = ROL {adr} + AND {adr} SRE {adr} = LSR {adr} + EOR {adr} RRA {adr} = ROR {adr} + ADC {adr} SAX {adr} = store A&X into {adr} LAX {adr} = LDA {adr} + LDX {adr} DCP {adr} = DEC {adr} + CMP {adr} ISC {adr} = INC {adr} + SBC {adr} note to SAX: the A&X operation is a result of A and X put onto the bus at the same time. Combinations of an immediate and an implied command: ANC #{imm} = AND #{imm} + (ASL) ANC #{imm} = AND #{imm} + (ROL) ALR #{imm} = AND #{imm} + LSR ARR #{imm} = AND #{imm} + ROR XAA #{imm} = TXA + AND #{imm} LAX #{imm} = LDA #{imm} + TAX AXS #{imm} = A&X minus #{imm} into X SBC #{imm} = SBC #{imm} + NOP note to ANC: this command performs an AND operation only, but bit 7 is put into the carry, as if the ASL/ROL would have been executed. note to ARR: part of this command are some ADC mechanisms. following effects appear after AND but before ROR: the V-Flag is set according to (A and #{imm})+#{imm}, bit 0 does NOT go into carry, but bit 7 is exchanged with the carry. note to XAA: DO NOT USE!!! Highly unstable!!! note to LAX: DO NOT USE!!! On my C128, this opcode is stable, but on my C64-II it loses bits so that the operation looks like this: ORA #? AND #{imm} TAX. note to AXS: performs CMP and DEX at the same time, so that the MINUS sets the flag like CMP, not SBC. Combinations of STA/STX/STY: AHX {adr} = stores A&X&H into {adr} SHX {adr} = stores X&H into {adr} SHY {adr} = stores Y&H into {adr} note: sometimes the &H drops off. Also page boundary crossing will not work as expected (the bank where the value is stored may be equal to the value stored). Combinations of STA/TXS and LDA/TSX: TAS {adr} = stores A&X into S and A&X&H into {adr} LAS {adr} = stores {adr}&S into A, X and S note to LAS: is called as "propably unreliable" in one source. Bit configuration does not allow any operation on these ones: NOP = has no effects NOP #{imm} = fetches #{imm} but has no effects NOP {adr} = fetches {adr} but has no effects KIL = halts the CPU. the data bus will be set to #$FF Aliases used in other illegal opcode sources: SLO = ASO SRE = LSE ISC = ISB ALR = ASR SHX = A11 (A11 was a result of only having tested this one on adress $1000) SHY = A11 LAS = LAR KIL = JAM, HLT The 6502 bugs: Zeropage index will not leave zeropage when page boundary is crossed: LDX #$01 LDA $FF,X ...will fetch from adress $0000 and not $0100 as indexed. Indirect adressing modes are not able to fetch an adress which crosses the page boundary: Four examples to illustrate this: LDA ($FF),Y LDX #$00 LDA ($FF,X) LDX #$FF LDA ($00,X) ... will all fetch the low-byte from $00FF and the high-byte from $0000 JMP ($12FF) ... will fetch the low-byte from $12FF and the high-byte from $1200 The N, V and Z flags do not work correctly in BCD mode: N will always carry bit 7. V will always be ((U eor N) nand (U eor V)) (while U is bit 7 of operand 1, V is bit 7 of operand 2 and N is the N flag after the ADC is performed). please note that SBC is truly ADC with an inverted operand! Z will be 0 when the non-BCD operation WOULD have resulted in $00, no matter what value the result of the BCD operation is. example to Z: SED CLC LDA #$80 ADC #$80 ... results in A=$60, but the Z flag is 1. BCD and non BCD values: Since only nibble values from 0 to 9 are valid in BCD, it's interesting to see what happens when using A to F: $00+$0F=$15 (an easy way to convert a hex-digit into BCD...) $00+$1F=$25 (can be claimed as being "ok" since 10+$0F=25) $10+$1F=$35 ("ok") $05+$1F=$2A (a non-BCD result, still somewhat "ok" since 5+10+$0F=20+$0A) $0F+$0A=$1F ("ok", since $0F+$0A=$0F+10) $0F+$0B=$10 (now, this is plain bullshit!) Different versions of the 6502: In the C64/C128 series of computers, slightly modified versions of the 6502 were used. The modifications did not affect the functiona展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




6502指令集(英文).docx



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/12011933.html