编辑: 学冬欧巴么么哒 | 2016-05-15 |
说明文档的更改,恕不另行通知. M8Rxxx 指令集说明 Version 1.04
2014 年11 月上海磐芯电子有限公司SHANGHAI MASSES ELECTRONIC Co., Ltd. M8Rxxx 指令集说明 -
2 - 修正记录 版本 日期 描述 Ver1.02 2014-5-15 补全指令说明 Ver1.03 2014-10-8 勘误 Ver1.04 2014-11-24 删除 ADCIA 指令 M8Rxxx 指令集说明 -
3 - 目录 目录.3
1 M8RXXX 指令集简述.5 1.1 概述.5 1.2 符号说明
5 2 M8RXXX 指令集表.6
3 M8RXXX 指令说明.8 ADDAR R,D.8 ADCAR R,D.8 SUBAR R,D.8 SBCAR R,D.8 SUBRA R,D.8 SBCRA R,D.8 ANDAR R,D.9 ORAR R,D.9 XORAR R,D.9 COMR R,D.9 MOVR R,D.9 MOVAR R
9 CLRR R
10 SWAPR R,D.10 RLR R,D
10 RLRNC R,D.10 RRR R,D
10 RRRNC R,D.10 DECR R,D.11 DJZR R,D.11 INCR R,D.11 JZR R,D.11 JNZR R,D
11 DJNZR R,D
11 JCMPAR R.12 JNCMPAR R
12 JGAR R.12 JLAR R.12 XCHAR R.12 JBTS0 R,B
12 JBTS1 R,B
13 BCLR R,B
13 BSET R,B
13 ADDIA I
13 M8Rxxx 指令集说明 -
4 - SUBIA I.13 SBCIA I.13 SUBAI I.14 SBCAI I.14 ANDIA I
14 ORIA I.14 XORIA I
14 MOVIA I
14 RETIA I.14 JCMPAI I.14 JNCMPAI I.15 RLA.15 RLANC
15 RRA
15 RRANC.15 DECA.15 DJZA.15 INCA.15 JZA.16 RETIE
16 RETURN.16 NOP.16 RDT.16 DAA.16 DSA.16 PUSH
16 POP
17 CLRWDT.17 CALL I.17 GOTO I.17 M8Rxxx 指令集说明 -
5 -
1 M8Rxxx指令集简述 1.1 概述 M8Rxxx系列指令集是一种精简指令集(RISC),指令宽度为16位,由操作码和0~2个操作数组成. 指令按照功能可分为5类,即字节操作指令、位操作指令、立即数指令、分支指令、特殊控制指令. 每个指令周期由
4 个振荡周期组成,除非条件测试结果为真或指令执行改变了程序计数器的值,否 则执行所有的指令都只需要一个指令周期.对于上诉两种特征情况,指令执行需要两个指令周期. 任何一条指定文件寄存器作为指令一部分的指令都进行读-修改-写操作.读寄存器、修改数据并根 据指令或目标标识符"d"存储结果.即使是写寄存器的指令也将先对改寄存器进行读操作. 1.2 符号说明 符号 范围 说明 符号 范围 说明 R/r 0-0x1ff 寄存器地址 C - 进位标志 A - ACC 寄存器 DC - 半进位标志 B/b 0-7 位地址 Z - 零标志 I/i 0-0xff 立即数 d 0-1 目的操作数定义 K/k 0-0x1fff 标号 GIE - 总中断使能位 TOS - 栈顶 stkp - 堆栈指针 PC - PC 指针 M8Rxxx 指令集说明 -
6 -
2 M8Rxxx指令集表 指令集表中,d=1,目的操作数为 R;
d=0,目的操作数为 A 指令类型 助记符 指令说明 周期数 影响标志位 备注 寄存器操作指令ADDAR R,d R+A ? d
1 Z,DC,C ADCAR R,d R+A+C ? d
1 Z,DC,C SUBAR R,d A-R ? d
1 Z,DC,C SBCAR R,d A-R- C ? d
1 Z,DC,C SUBRA R,d R-A ? d
1 Z,DC,C SBCRA R,d R-A- C ? d
1 Z,DC,C ANDAR R,d R&A ? d
1 Z ORAR R,d R|A ? d
1 Z XORAR R,d R^A ? d
1 Z COMR R,d R ? d
1 Z MOVR R,d R ? d
1 Z MOVAR R A ? R
1 - CLRR R
0 ? R
1 Z SWAPR R,d R 半字节交换? d
1 - RLR R,d R[7] ? C,{R[6:0],C}? d
1 C RLRNC R,d {R[6:0],0}? d
1 - RRR R,d R[0] ? C,{C,R[7:1]} ? d
1 C RRRNC R,d {0,R[7:1]} ? d
1 - DECR R,d R-1 ? d
1 Z DJZR R,d R-1 ? d,SKIP if
0 1(2) - INCR R,d R+1 ? d
1 Z JZR R,d R+1 ? d,SKIP if
0 1(2) - JNZR R,d R+1 ? d, SKIP if !0 1(2) Z,C (*1) DJNZR R,d R-1 ? d, SKIP if !0 1(2) Z,C (*1) JCMPAR R SKIP if A=R 1(2) Z,C (*1) JNCMPAR R SKIP if A≠R 1(2) Z,C (*1) JGAR R SKIP if A≥R 1(2) Z,C (*1) JLAR R SKIP if A