- 注册时间
- 2004-12-21
- 最后登录
- 1970-1-1
|
//注:关于一些字母的含义
//M(代表存储器)S(代表堆栈指针)
//标志寄存器P的8位(左高右低)
// 7 6 5 4 3 2 1 0
// N V B D I Z C
// C 是进位标志
// Z 是零标志(指令执行完毕后结果为0,那么Z=1,否则Z=0)
// I 是中断标志
// D 是十进制运算标志
// B 是软件中断指令标记(当我们执行INT(BRK)指令时就会被标记为1)
// 第5位空着不用
// V 是溢出标志(单字节溢出)
// N 是负数标志(八位二进制数的最高位)
-------------------
//■ 数据传输指令:
-------------------
* LD [A/X/Y] , ST [A/X/Y] //M <=> [A/X/Y]
* T [A|X/Y] / [S|X] //A <=> [X/Y] / S <=> X
-------------------
//■ 算数运算指令:
-------------------
* ADC , SBC //A[+/-]M[+/-]C => A
* IN [C/X/Y] , DE [C/X/Y] //[M/X/Y][+/-]1 => [M/X/Y]
-------------------
//■ 逻辑运算指令:
-------------------
* AND , ORA , EOR //A[∧/∨/≮]M => A
-------------------
//■ 置标志位指令:
-------------------
* CL [C/D/V/I] //0 => [C/D/V/I]
* SE [C/D/I] //1 => [C/D/I]
-------------------
//■ 比较运算指令:
-------------------
* CMP , CP[X/Y] //[A/X/Y]>M => C=1 & Z=0 ; [A/X/Y]<M => C=0 & Z=0 ; [A/X/Y]=M => Z=1
* BIT //[A∧M]=0 => Z=1 ; [A∧M]<>0 => Z=0 {N=M(bit7) , V=M(bit6)}
-------------------
//■ 移位运算指令:
-------------------
* ASL //C - { bit(7-6-5-4-3-2-1-0) } => bit7 - { bit(6-5-4-3-2-1-0)-"0" }
* LSR //C - { bit(7-6-5-4-3-2-1-0) } => bit0 - { "0"-bit(7-6-5-4-3-2-1) }
* ROL //C - { bit(7-6-5-4-3-2-1-0) } => bit7 - { bit(6-5-4-3-2-1-0)-C }
* ROR //C - { bit(7-6-5-4-3-2-1-0) } => bit0 - { C-bit(7-6-5-4-3-2-1) }
-------------------
//■ 堆栈操作指令:
-------------------
* P [H/L]|[A/P] //[A/P] => S+1 / S-1 => [A/P] *PLA { N ; Z }
-------------------
//■ 转移操作指令:
-------------------
* JMP //$data16 = M_1-M_2[+/-]2
* BEQ , BNE //Z=1 => $data16 , Z=0
* BC [S/C] //C=1 => $data16 , C=0
* BMI , BPL //N=1 => $data16 , N=0
* BV [S/C] //V=1 => $data16 , V=0
* JSR , RTS //JSR => $data16...RTS => JSR...
-------------------
//■ 中断操作指令:
-------------------
* INT(BRK) //$data16 ┳>$00_page
// ┗>$data16+1*($data16)
|
|