指令名 相关属性&解释
ABCD Binary-Coded Decimal码求和运算
运算: 原操作数(10进制)+目的操作数(10进制)+X 置入 目的操作数
语法: ABCD Dy,Dx
ABCD -(Ay),-(Ax)
操作数长度:B
条件码(标志位): X — 置与C位相同。
N — 未定义。
Z — 结果不为零则置0;其它情况不变。
V — 未定义。
C — 如果有进位/借位则置1;其它情况置0。
ADD Add 求和
运算: 原操作数+目的操作数 置入 目的操作数
语法: ADD <ea>,Dn
ADD Dn,<ea>
操作数长度:B、W、L
条件码(标志位): X — 置与C位相同。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
ADDA Add Address 求和(地址)
运算: 原操作数+目的操作数 置入 目的操作数
语法: ADDA <ea>,An
操作数长度:W、L
条件码(标志位):不受影响。
ADDI Add Immediate 求和(立即数)
运算: 立即数+目的操作数 置入 目的操作数
语法: ADDI #<data>,<ea>
操作数长度:B、W、L
条件码(标志位): X — 置与C位相同。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
ADDQ Add Quick 求和
运算: 立即数+目的操作数 置入 目的操作数
语法: ADDI #<data>,<ea>
操作数长度:B、W、L
条件码(标志位):当目的操作数是地址寄存器的时候不受影响。
X — 置与C位相同。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
ADDX Add Extended 求和(扩展)
运算: 原操作数+目的操作数 置入 目的操作数
语法: ADDX Dy,Dx
ADDX -(Ay),-(Ax)
操作数长度:B、W、L
条件码(标志位): X — 置与C位相同。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
AND AND Logical 求逻辑与
运算: 原操作数 “与” 目的操作数 置入 目的操作数
语法: AND <ea>,Dn
AND Dn,<ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
ANDI AND Immediate 求逻辑与(立即数)
运算: 立即数 “与” 目的操作数 置入 目的操作数
语法: ANDI #<data>,<ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
ANDI to CCR CCR AND Immediate 标志器存器、立即数求逻辑与
运算: 立即数 “与” 标志器存器 置入 标志器存器
语法: ANDI #<data>,CCR
操作数长度:B
条件码(标志位): X — 如果立即数的4位为0则置0;其它情况不变。
N — 如果立即数的3位为0则置0;其它情况不变。
Z — 如果立即数的2位为0则置0;其它情况不变。
V — 如果立即数的1位为0则置0;其它情况不变。
C — 如果立即数的0位为0则置0;其它情况不变。
ASL,ASR Arithmetic Shift 算术位移
运算: 目的操作数按计数位移 置入 目的操作数
语法: ASL/ASR Dx,Dy
ASL/ASR #<data>,Dy
ASL/ASR <ea>
操作数长度:B、W、L
条件码(标志位): X — 存放最后一位被移出的数字。位移计数为0则不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果在移动过程中最高位发生改变则置1;其它情况置0。
C — 存放最后一位被移出的数字;位移计数为0则置0。
Bcc Branch Conditionally 条件分支
运算: 如果条件成立,程序计数器+位移值 置入 程序计数器
语法: Bcc <label>
操作数长度:B、W相应指令 分支条件(0:顺序执行、1:转移) 英文解释 中文解释
BHI !C&&!Z High 高于转移
BLS C||Z Low or Same 低于或相同转移
BCC !C Carry Clear 无进/借位转移
BCS C Carry Set 有进/借位转移
BNE !Z Not Equal 不为零(不相等)转移
BEQ Z Equal 为零(相等)转移
BVC !V Overflow Clear 无溢出转移
BVS V Overflow Set 有溢出转移
BPL !N Plus 非负数转移
BMI N Minus 负数转移
BGE N&&V||!N&&!V Greater or Equal 大于等于(不小于)转移
BLT N&&!V||!N&&V Less Than 小于转移
BGT N&&V&&!Z||!N&&!V&&!Z Greater Than 大于转移
BLE Z||N&&!V||!N&&V Less or Equal 小于等于(不大于)转移
BCLR Test a Bit and Clear 测试并置0某个位
运算: 测试(目的操作数的位号)置入 Z ;
0 置入 目的操作数的该位
语法: BCLR Dn,<ea>
BCLR #<data>,<ea>
操作数长度:B、L
条件码(标志位): Z — 如果结果为零则置1;其它情况置0。
其它位不受影响。
BRA Branch Always 无条件分支
运算: 程序计数器+位移值 置入 程序计数器
语法: BRA <label>
操作数长度:B、W
条件码(标志位):不受影响。
BSET Test Bit and Set 测试并置1某个位
运算: 测试(目的操作数的位号)置入 Z ;
1 置入 目的操作数的该位
语法: BSET Dn,<ea>
BSET #<data>,<ea>
操作数长度:B、L
条件码(标志位): Z — 如果结果为零则置1;其它情况置0。
其它位不受影响。
BSR Branch to Subroutine 分支到子程序
运算: 动态堆栈指示器-4 置入 动态堆栈指示器;
程序计数器 置入 动态堆栈指示器中的地址;
程序计数器+位移值 置入 程序计数器
语法: BSR <label>
操作数长度:B、W
条件码(标志位):不受影响。
BTST Test a Bit 测试某个位
运算: 测试(目的操作数的位号)置入 Z
语法: BTST Dn,<ea>
BTST #<data>,<ea>
操作数长度:B、L
条件码(标志位): Z — 如果结果为零则置1;其它情况置0。
其它位不受影响。
CHK Check Register Against Bounds 检查数据寄存器是否越界
运算: 如果 Dn<0 或者 Dn>原操作数
语法: CHK <ea>,Dn
操作数长度:W
条件码(标志位): X — 不受影响。
Z — Dn < 0 则置1;Dn > 有效地址 则置0。
其它位未定义。
CLR Clear an Operand 操作数置0
运算: 0 置入 目的操作数
语法: CLR <ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 置0。
Z — 置1。
V — 置0。
C — 置0。
CMP Compare 比较
运算: 目的操作数-原操作数 置入 条件位
语法: CMP <ea>,Dn
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
CMPA Compare Address 比较(地址)
运算: 目的操作数-原操作数 置入 条件位
语法: CMPA <ea>,Dn
操作数长度:W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
CMPI Compare Immediate 比较(立即数)
运算: 目的操作数-立即数 置入 条件位
语法: CMPI #<data>,Dn
操作数长度:W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
CMPM Compare Memory 比较(内存)
运算: 目的操作数-原操作数 置入 条件位
语法: CMPM (Ay)+,(Ax)+
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
DBcc Test Condition,Decrement,and Branch 测试条件-自减-分支,即循环控制
运算: 如果条件为“假”,Dn-1 置入 Dn ;
如果 Dn>-1,程序计数器+位移值 置入 程序计数器
语法: DBcc Dn,<label>
操作数长度:W
条件码(标志位):不受影响。相应指令 分支条件(0:顺序执行、1:转移) 英文解释 中文解释
DBHI !C&&!Z High 高于循环
DBLS C||Z Low or Same 低于或相同循环
DBCC !C Carry Clear 无进/借位循环
DBCS C Carry Set 有进/借位循环
DBNE !Z Not Equal 不为零(不相等)循环
DBEQ Z Equal 为零(相等)循环
DBVC !V Overflow Clear 无溢出循环
DBVS V Overflow Set 有溢出循环
DBPL !N Plus 非负数循环
DBMI N Minus 负数循环
DBGE N&&V||!N&&!V Greater or Equal 大于等于(不小于)循环
DBLT N&&!V||!N&&V Less Than 小于循环
DBGT N&&V&&!Z||!N&&!V&&!Z Greater Than 大于循环
DBLE Z||N&&!V||!N&&V Less or Equal 小于等于(不大于)循环
DIVS Signed Divide 有符号数除法
运算: 目的操作数÷原操作数 置入 目的操作数
语法: DIVS.W <ea>,Dn32/16 fi 16r-16q
操作数长度:W、L
条件码(标志位): X — 不受影响。
N — 如果商为负数则置1;其它情况置0;如果发生溢出或除数为0则为定义。
Z — 如果商为零则置1;其它情况置0。如果发生溢出或除数为0则为定义。
V — 如果发生溢出则置1;如果除数为0则为定义;其它情况置0。
C — 置0。
EOR Exclusive-OR Logical 逻辑异或
运算: 原操作数“异或”目的操作数 置入 目的操作数
语法: EOR Dn,<ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
EORI Exclusive-OR Immediate 逻辑异或(立即数)
运算: 立即数“异或”目的操作数 置入 目的操作数
语法: EORI #<data>,<ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
EORI to CCR Exclusive-OR Immediate to Condition Code 标志器存器、立即数求逻辑异或
运算: 立即数“异或”标志器存器 置入 标志器存器
语法: EORI #<data>,CCR
操作数长度:B
条件码(标志位): X — 如果立即数的4位为0则置0;其它情况不变。
N — 如果立即数的3位为0则置0;其它情况不变。
Z — 如果立即数的2位为0则置0;其它情况不变。
V — 如果立即数的1位为0则置0;其它情况不变。
C — 如果立即数的0位为0则置0;其它情况不变。
EXG Exchange Registers 寄存器数据交换
运算: 两个操作数交换
语法: EXG Dx,Dy
EXG Ax,Ay
EXG Dx,Ay
操作数长度:L
条件码(标志位):不受影响。
EXT Sign-Extend 符号扩展
运算: 目的操作数符号扩展 置入 目的操作数
语法: EXT.W Dnextend byte to word
EXT.L Dnextend word to long word
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
ILLEGAL Take Illegal Instruction Trap 非法指令中断
运算: 管理(控制&中断)堆栈指示器-4 置入 管理堆栈指示器;
程序计数器 置入 管理堆栈指示器中的地址;
管理(控制&中断)堆栈指示器-2 置入 管理堆栈指示器;
非法指令向量地址 置入 程序计数器
语法: ILLEGAL
操作数长度:Unsized
条件码(标志位):不受影响。
JMP Jump 跳转
运算: 目的操作数地址 置入 程序计数器
语法: JMP <ea>
操作数长度:Unsized
条件码(标志位):不受影响。
JSR Jump to Subroutine 跳转到子程序
运算: 动态堆栈指示器-4 置入 动态堆栈指示器;
程序计数器 置入 动态堆栈指示器中的地址
语法: JSR <ea>
操作数长度:Unsized
条件码(标志位):不受影响。
LEA Load Effective Address 载入有效地址
运算: 有效地址 置入 地址寄存器
语法: LEA <ea>,An
操作数长度:L
条件码(标志位):不受影响。
LINK Link and Allocate 链接&分配
运算: 动态堆栈指示器-4 置入 动态堆栈指示器;
地址寄存器 置入 动态堆栈指示器中的地址;
动态堆栈指示器 置入 地址寄存器;
地址寄存器+位移值 置入 地址寄存器
语法: LINK An,#<displacement>
操作数长度:W
条件码(标志位):不受影响。
LSL,LSR Logical Shift 逻辑位移
运算: 目的操作数按计数位移 置入 目的操作数
语法: LSL/LSR Dx,Dy
LSL/LSR #<data>,Dy
LSL/LSR <ea>
操作数长度:B、W、L
条件码(标志位): X — 存放最后一位被移出的数字。位移计数为0则不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 存放最后一位被移出的数字;位移计数为0则置0。
MOVE Move Data from Source to Destination 传递数据(原操作数->目的操作数)
运算: 原操作数 置入 目的操作数
语法: MOVE <ea>,<ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
MOVEA Move Address 传递地址
运算: 原操作数 置入 目的操作数
语法: MOVEA <ea>,An
操作数长度:W、L
条件码(标志位):不受影响。
MOVE to CCR Move to CCR 传递到标志寄存器
运算: 原操作数 置入 标志寄存器
语法: MOVE <ea>,CCR
操作数长度:W
条件码(标志位): X — 如果立即数的4位为0则置0;其它情况不变。
N — 如果立即数的3位为0则置0;其它情况不变。
Z — 如果立即数的2位为0则置0;其它情况不变。
V — 如果立即数的1位为0则置0;其它情况不变。
C — 如果立即数的0位为0则置0;其它情况不变。
MOVE from SR Move from the SR 传递(从堆栈寄存器)
运算: 堆栈寄存器 置入 目的操作数
语法: MOVE SR,<ea>
操作数长度:W
条件码(标志位):不受影响。
MOVEM Move Multiple Registers 传递(多个寄存器)
运算: 寄存器 置入 目的操作数;
原操作数 置入 寄存器
语法: MOVEM <list>,<ea>
MOVEM <ea>,<list>
操作数长度:W、L
条件码(标志位):不受影响。
movem.l D0-D1, -(A7) 入盏
movem.l (A7)+, D0-D1 出盏
MOVEP Move Peripheral Data 传递(外围数据???)
运算: 原操作数 置入 目的操作数
语法: MOVEP Dx,(d16,Ay)
MOVEP (d16,Ay),Dx
操作数长度:W、L
条件码(标志位):不受影响。
MOVEQ Move Quick 传递(???)
运算: 立即数 置入 目的操作数
语法: MOVEQ #<data>,Dn
操作数长度:L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
MULS Signed Multiply 有符号数乘法
运算: 原操作数×目的操作数 置入 目的操作数
语法: MULS.W <ea>,Dn16×16 fi 32
操作数长度:W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果有溢出则置1;其它情况置0。
C — 置0。
MULU Unsigned Multiply 无符号数乘法
运算: 原操作数×目的操作数 置入 目的操作数
语法: MULU.W <ea>,Dn16×16 fi 32
操作数长度:W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果有溢出则置1;其它情况置0。
C — 置0。
NBCD Negate Decimal with Extend 求负(扩展BCD码)
运算: 0-目的操作数(10进制)-X 置入 目的操作数
语法: NBCD <ea>
操作数长度:B
条件码(标志位): X — 置与C位相同。
N — 未定义。
Z — 结果不为零则置0;其它情况不变。
V — 未定义。
C — 如果有进位/借位则置1;其它情况置0。
NEG Negate 求负
运算: 0-目的操作数 置入 目的操作数
NEGX Negate with Extend 求负(扩展)
运算: 0-目的操作数 置入 目的操作数
语法: NEGX <ea>
操作数长度:B、W、L
条件码(标志位): X — 置与C位相同。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果不为零则置0;其它情况不变。
V — 如果发生溢出则置1;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
NOP No Operation 空指令
运算: None
语法: NOP
操作数长度:Unsized
条件码(标志位):不受影响。
NOT Logical Complement 求补
运算: 目的操作数求补 置入 目的操作数
语法: NOT <ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
OR Inclusive-OR Logical 逻辑或
运算: 原操作数“或”目的操作数 置入 目的操作数
语法: OR <ea>,Dn
OR Dn,<ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
ORI Inclusive-OR Immediate 逻辑或(立即数)
运算: 立即数“或”目的操作数 置入 目的操作数
语法: ORI #<data>,<ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
ORI to CCR Inclusive-OR Immediate to CCR 标志器存器、立即数求逻辑或
运算: 原操作数“或”标志器存器 置入 标志器存器
语法: ORI #<data>,CCR
操作数长度:B
条件码(标志位): X — 如果立即数的4位为0则置0;其它情况不变。
N — 如果立即数的3位为0则置0;其它情况不变。
Z — 如果立即数的2位为0则置0;其它情况不变。
V — 如果立即数的1位为0则置0;其它情况不变。
C — 如果立即数的0位为0则置0;其它情况不变。
PEA Push Effective Address 有效地址压栈
运算: 动态堆栈指示器-4 置入 动态堆栈指示器;
有效地址 置入 动态堆栈指示器中的地址
语法: PEA <ea>
操作数长度:L
条件码(标志位):不受影响。
ROL,ROR Rotate (Without Extend) 循环移动
运算: 目的操作数按计数循环移动 置入 目的操作数
语法: ROL/ROR Dx,Dy
ROL/ROR #<data>,Dy
ROL/ROR <ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 存放最后一位被移出的数字;位移计数为0则置0。
ROXL,ROXR Rotate with Extend 循环移动(扩展)
运算: 目的操作数按计数循环移动 置入 目的操作数
语法: ROXL/ROXR Dx,Dy
ROXL/ROXR #<data>,Dy
ROXL/ROXR <ea>
操作数长度:B、W、L
条件码(标志位): X — 存放最后一位被移出的数字。位移计数为0则不受影响。
N — 最高(有效)位为1则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 置0。
C — 存放最后一位被移出的数字;位移计数为0则置入扩展位的值。
RTR Return and Restore CCR 返回并恢复标志寄存器,即出栈
运算: 动态堆栈指示器中的地址 置入 标志寄存器;
动态堆栈指示器+2 置入 动态堆栈指示器;
动态堆栈指示器中的地址 置入 程序计数器;
动态堆栈指示器+4 置入 动态堆栈指示器
语法: RTR
操作数长度:Unsized
条件码(标志位):由堆栈中取值。
RTS Return from Subroutine 从子程序中返回,即回到主程序
运算: 动态堆栈指示器中的地址 置入 程序计数器;
动态堆栈指示器+4 置入 动态堆栈指示器
语法: RTS
操作数长度:Unsized
条件码(标志位):不受影响。
SBCD Subtract Decimal with Extend 相减(扩展BCD码)
运算: 目的操作数(10进制)-原操作数(10进制)-X 置入 目的操作数
语法: SBCD Dx,Dy
SBCD -(Ax),-(Ay)
操作数长度:B
条件码(标志位): X — 置与C位相同。
N — 未定义。
Z — 结果不为零则置0;其它情况不变。
V — 未定义。
C — 如果有进位/借位则置1;其它情况置0。
Scc Set According to Condition 按条件置位
运算: 如果条件成立,目的操作数置1;否则置0
语法: Scc <ea>
操作数长度:B
条件码(标志位):不受影响。相应指令 分支条件(0:顺序执行、1:转移) 英文解释 中文解释
SHI !C&&!Z High 高于置1
SLS C||Z Low or Same 低于或相同置1
SCC !C Carry Clear 无进/借位置1
SCS C Carry Set 有进/借位置1
SNE !Z Not Equal 不为零(不相等)置1
SEQ Z Equal 为零(相等)置1
SVC !V Overflow Clear 无溢出置1
SVS V Overflow Set 有溢出置1
SPL !N Plus 非负数置1
SMI N Minus 负数置1
SGE N&&V||!N&&!V Greater or Equal 大于等于(不小于)置1
SLT N&&!V||!N&&V Less Than 小于置1
SGT N&&V&&!Z||!N&&!V&&!Z Greater Than 大于置1
SLE Z||N&&!V||!N&&V Less or Equal 小于等于(不大于)置1
SUB Subtract 相减
运算: 目的操作数-原操作数 置入 目的操作数
语法: SUB <ea>,Dn
SUB Dn,<ea>
操作数长度:B、W、L
条件码(标志位): X — 置入C位的值。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;如果除数为0则为定义;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
SUBA Subtract Address 相减(地址)
运算: 目的操作数-原操作数 置入 目的操作数
语法: SUBA <ea>,An
操作数长度:W、L
条件码(标志位):不受影响。
SUBI Subtract Immediate 相减(立即数)
运算: 目的操作数-立即数 置入 目的操作数
语法: SUBI #<data>,<ea>
操作数长度:B、W、L
条件码(标志位): X — 置入C位的值。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;如果除数为0则为定义;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
SUBQ Subtract Quick 相减(???)
运算: 目的操作数-立即数 置入 目的操作数
语法: SUBQ
操作数长度:B、W、L
条件码(标志位): X — 置入C位的值。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;如果除数为0则为定义;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
SUBX Subtract with Extend 相减(扩展)
运算: 目的操作数-原操作数-X 置入 目的操作数
语法: SUBX Dx,Dy
SUBX -(Ax),-(Ay)
操作数长度:B、W、L
条件码(标志位): X — 置入C位的值。
N — 如果结果为负数则置1;其它情况置0。
Z — 如果结果为零则置1;其它情况置0。
V — 如果发生溢出则置1;如果除数为0则为定义;其它情况置0。
C — 如果有进位/借位则置1;其它情况置0。
SWAP Swap Register Halves 数据寄存器高低位数据交换
运算: 数据寄存器的 31~16位 与 15~0 位交换
语法: SWAP Dn
操作数长度:W
条件码(标志位): X — 不受影响。
N — 如果32位的最高(有效)位为1则置1;其它情况置0。
Z — 如果32位的结果为零则置1;其它情况置0。
V — 置0。
C — 置0。
TAS Test and Set an Operand 测试并置数
运算: 目的操作数测试 置入 标志寄存器;
1 置入 目的操作数的7位
语法: TAS <ea>
操作数长度:B
条件码(标志位): X — 不受影响。
N — 如果当前操作数最高(有效)位为1则置1;其它情况置0。
Z — 如果操作数为零则置1;其它情况置0。
V — 置0。
C — 置0。
TRAP Trap 中断
运算: 1 置入 堆栈寄存器的S位
管理(控制&中断)堆栈指示器-4 置入 管理堆栈指示器;
程序计数器 置入 管理堆栈指示器中的地址;
管理堆栈指示器-2 置入 管理堆栈指示器;
堆栈寄存器 置入 管理堆栈指示器中的地址;
地址向量 置入 程序计数器
语法: TRAP #<vector>
操作数长度:Unsized
条件码(标志位):不受影响。
TRAPcc Trap on Condition 条件中断
运算: 条件为真则中断
语法: TRAPcc
TRAPcc.W #<data>
TRAPcc.L #<data>
操作数长度:Unsized 或 W、L
条件码(标志位):不受影响。相应指令 分支条件(0:顺序执行、1:转移) 英文解释 中文解释
TRAPHI !C&&!Z High 高于中断
TRAPLS C||Z Low or Same 低于或相同中断
TRAPCC !C Carry Clear 无进/借位中断
TRAPCS C Carry Set 有进/借位中断
TRAPNE !Z Not Equal 不为零(不相等)中断
TRAPEQ Z Equal 为零(相等)中断
TRAPVC !V Overflow Clear 无溢出中断
TRAPVS V Overflow Set 有溢出中断
TRAPPL !N Plus 非负数中断
TRAPMI N Minus 负数中断
TRAPGE N&&V||!N&&!V Greater or Equal 大于等于(不小于)中断
TRAPLT N&&!V||!N&&V Less Than 小于中断
TRAPGT N&&V&&!Z||!N&&!V&&!Z Greater Than 大于中断
TRAPLE Z||N&&!V||!N&&V Less or Equal 小于等于(不大于)中断
TRAPV Trap on Overflow 溢出中断
运算: V=1时中断
语法: TRAPV
操作数长度:Unsized
条件码(标志位):不受影响。
TST Test an Operand 测试一个操作数
运算: 目的操作数测试 置入 标志寄存器
语法: TST <ea>
操作数长度:B、W、L
条件码(标志位): X — 不受影响。
N — 如果操作数为负数则置1;其它情况置0。
Z — 如果操作数为零则置1;其它情况置0。
V — 置0。
C — 置0。
UNLK Unlink 解除链接
运算: 地址寄存器 置入 动态堆栈指示器;
动态堆栈指示器中的地址 置入 地址寄存器;
动态堆栈指示器+4 置入 动态堆栈指示器
语法: UNLK An
操作数长度:Unsized
条件码(标志位):不受影响。
ANDI to SR AND Immediate to the Status Register 立即数、堆栈寄存器求逻辑与
运算: 如果管理堆栈为真值,原操作数“与”堆栈寄存器 置入 堆栈寄存器;否则中断
语法: ANDI #<data>,SR
操作数长度:W
条件码(标志位): X — 如果立即数的4位为0则置0;其它情况不变。
N — 如果立即数的3位为0则置0;其它情况不变。
Z — 如果立即数的2位为0则置0;其它情况不变。
V — 如果立即数的1位为0则置0;其它情况不变。
C — 如果立即数的0位为0则置0;其它情况不变。
EORI to SR Exclusive-OR Immediate to the SR 立即数、堆栈寄存器求逻辑异或
运算: 如果管理堆栈为真值,原操作数“异或”堆栈寄存器 置入 堆栈寄存器;否则中断
语法; EORI #<data>,SR
操作数长度:W
条件码(标志位): X — 如果立即数的4位为0则置0;其它情况不变。
N — 如果立即数的3位为0则置0;其它情况不变。
Z — 如果立即数的2位为0则置0;其它情况不变。
V — 如果立即数的1位为0则置0;其它情况不变。
C — 如果立即数的0位为0则置0;其它情况不变。
MOVE to SR Move to the SR 传递(到堆栈寄存器)
运算: 如果管理堆栈为真值,原操作数 置入 堆栈寄存器;否则中断
语法: MOVE <ea>,SR
操作数长度:W
条件码(标志位):按照原操作数置数。
MOVE to USP Move User Stack Pointer 传递(用户堆栈寄存器)
运算: 如果管理堆栈为真值,用户堆栈寄存器 置入 地址寄存器
或地址寄存器 置入 用户堆栈寄存器;否则中断
语法: MOVE USP,An
MOVE An,USP
操作数长度:L
条件码(标志位):不受影响。
ORI to SR Inclusive-OR Immediate to the SR 立即数、堆栈寄存器求逻辑或
运算: 如果管理堆栈为真值,原操作数“或”堆栈寄存器 置入 堆栈寄存器;否则中断
语法: ORI #<data>,SR
操作数长度:W
条件码(标志位): X — 如果立即数的4位为0则置0;其它情况不变。
N — 如果立即数的3位为0则置0;其它情况不变。
Z — 如果立即数的2位为0则置0;其它情况不变。
V — 如果立即数的1位为0则置0;其它情况不变。
C — 如果立即数的0位为0则置0;其它情况不变。
RESET Reset External Devices 重置外部设备
运算: 如果管理堆栈为真值,……;否则中断
语法: RESET
操作数长度:Unsized
条件码(标志位):不受影响。
RTE Return from Exception 从异常中返回
运算: 如果管理堆栈为真值,
动态堆栈指示器中的地址 置入 堆栈寄存器;
动态堆栈指示器+2 置入 动态堆栈指示器;
动态堆栈指示器中的地址 置入 程序控制器;
动态堆栈指示器+4 置入 动态堆栈指示器;
Restore State and Deallocate Stack According to (SP) ???
否则中断
语法: RTE
操作数长度:Unsized
条件码(标志位):Set according to the condition code bits
in the status register value restored from the stack.
STOP load Status Register and Stop
运算: 如果管理堆栈为真值,立即数 置入 堆栈寄存器,STOP;否则中断
语法: STOP #<data>
操作数长度:Unsized
条件码(标志位):按照立即数置数。