短立即寻址(单指令字)
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 采用立即寻址方式的PRT的操作码 8位常数=99 长立即数寻址(双指令字) 第一指令字
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 采用长立即寻址方式的ADD指令的操作码 (12位) 位移次数=2(4位)
第二指令字
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16位常数=16384=4000h
2、直接寻址
状态寄存器(ST0) D15~D13 ARP D12 D11 D10 D9 OV OVM 1 INTM D8 ~ D0 数据页面指针DP 指令寄存器(IR) D15 ~ D8 D7 8MSB 指令操作码 页 面(9MSB) 偏移量(7LSB)
3、间接寻址 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 8MSBs 1 ARU N NAR ARU 辅助寄存器更新代码,决定当前辅助寄存器是否和如何进行增或减。 N规定是否改变ARP值,(N=0,不变) NAR下一个辅助寄存器值 ARU 执行的算术运算 6 0 0 0 5 0 0 1 4 0 1 0 * *- *+ 0 D6 ~ D0 7 LSB 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 *BR0- *0- *0+ *BR0+
4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); 4.3.1.2、减法指令(5条); 4.3.1.3、乘法指令(2条);
4.3.1.4、乘加与乘减指令(6条); 4.3.1.5、其它算数指令(3条);
4.3.1.6、移位和循环移位指令(4条); 4.3.1.7、逻辑运算指令(4条); 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条) 4.3.2.2、临时寄存器指令(5条) 4.3.2.3、乘积寄存器指令(6条) 4.3.2.4、辅助寄存器指令(5条) 4.3.2.5、状态寄存器指令(9条) 4.3.2.6、堆栈操作指令(4条)
4.3.3、存储器与I/O操作指令(8条) 4.3.3.1、数据移动指令( 4条) 4.3.3.2、程序存储器读写指令(2条) 4.3.3.3、I/O操作指令(2条) 4.3.4、程序控制指令(15条) 4.3.4.1、程序分支或调用指令(7条) 4.3.4.2、中断指令(3条) 4.3.4.3、返回指令(2条) 4.3.4.4、其它控制指令(3条)
4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); ▲ ADD
▲ ADDC(带进位加法指令)
▲ ADDS(抑制符号扩展加法指令)
▲ ADDT(移位次数由TREG指定的加法指令) 4.3.1.2、减法指令(5条); ★ SUB(带移位的减法指令) ★ SUBB(带借位的减法指令) ★ SUBC(条件减法指令) ★ SUBS(减法指令)
★ SUBT(带移位的减法指令,TREG决定移位次数) 4.3.1.3、乘法指令(2条); ★ MPY(带符号乘法指令) ★ MPYU(无符号乘法指令) 4.3.1.4、乘加与乘减指令(6条);
★ MAC(累加前次积并乘)(字数2,周期3) ★ MAC(累加前次积并乘) ★ MPYA(累加-乘指令) ★ MPYS(减-乘指令) ★ SQRA(累加平方值指令) ★ SQRS(累减并平方指令) 4.3.1.5、其它算数指令(3条); ★ ABS(累加器取绝对值指令) ★ NEG(累加器取补码指令) ★ NORM(累加器规格化指令 ) 返回
4.3.1.6、移位和循环移位指令(4条); ▲ SFL(累加器内容左移指令) ▲ SFR(累加器内容右移指令)
▲ROL(累加器内容循环左移指令) ▲ROR(累加器内容循环右移指令) 返回
4.3.1.7、逻辑运算指令(4条); ▲ AND(逻辑与指令) ▲ OR(逻辑或指令) ▲ XOR(逻辑异或指令) ▲ CMPL(累加器取反指令) 返回
4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条)
▲ LACC(装载累加器指令)
▲ LACT(装载累加器)*按TREG低4位指定的次数移位 ▲ LACL(装载累加器低16位指令) ▲ ZALR(装载累加器指令)
▲ SACL(移位并存储累加器低半部) ▲ SACH(移位并存储累加器高半部) 返回
4.3.2.2、临时寄存器指令(5条) ▲ LT(装载TREG指令)
▲ LTA(装载TREG并累加上次乘积指令) ▲ LTS (装载TREG并减去上次乘积指令)
▲ LTD(装载TREG并累加上次乘积及数据移动指令) ▲ LTP(装载TREG和累加器指令) 返回
4.3.2.3、乘积寄存器指令(6条)
▲ PAC (乘积寄存器内容载入累加器) ▲ APAC (PREG与累加器相加) ▲ SPAC(累加器和乘积寄存器相减) ▲ LPH(装载PREG高16位指令) ▲ SPL(存储PREG低16位指令) ▲ SPH(存储PREG高16位指令) 返回
4.3.2.4、辅助寄存器指令(5条)
★ LAR(装载当前辅助寄存器AR) ★ SAR(存储辅助寄存器指令) ★ MAR(修改当前辅助寄存器)
★ SBRK(从当前辅助寄存器减去短立即数) 返回
4.3.2.5、状态寄存器指令(9条) ★ LST(装载状态寄存器) ★ SST(存储状态寄存器)
★ SETC(控制位置“1”指令) ★ SETC(控制位置“1”指令) ★ LDP(装载数据指针DP指令) ★ BIT(位测试指令)
★ BITT(测试由TREG指定bit code指令) ★ CMPR(比较当前辅助寄存器AR和AR0) 返回
4.3.2.6、堆栈操作指令(4条)
★ PUSH(累加器低16位进栈指令)
★ POP(栈顶内容弹出至累加器低16位指令) ★ POP(栈顶内容弹出至累加器低16位指令) ★ POPD(弹栈至数据存储器指令) 返回
4.3.3、存储器与I/O操作指令(8条) 4.3.3.1、数据移动指令( 4条)
▲ DMOV(数据存储器内部数据移动指令) ▲ SPLK(存储长立即数至数据存储器指令) ▲ BLDD(数据存储器内部的数据块移动)
▲ BLPD(从程序存储器到数据存储器的数据块传送) 4.3.3.2、程序存储器读写指令(2条)
★ TBLR(读程序存储器数据到数据存储器) ★ TBLW(写程序存储器) 4.3.3.3、I/O操作指令(2条) ★ IN(数据输入指令) ★ OUT(数据输出指令) 4.3.4、程序控制指令(15条) 4.3.4.1、程序分支或调用指令(7条) ★ B(无条件转移指令)
★ BANZ(辅助寄存器内容不等于零转移) ★ CALL(无条件子程序调用指令) ★ BACC(按累加器内容转移指令)
★ CALA(由累加器指定地址的子程序调用指令) ★ CC(条件调用指令)
4.3.4.2、中断指令(3条) ★ INTR(软中断指令) ★ TRAP(软件陷阱中断) ★ NMI(非屏蔽中断)
4.3.4.3、返回指令(2条)
★ RET(无条件从子程序或中断返回) ★ RETC(条件返回指令)
4.3.4.4、其它控制指令(3条) ★ RPT(重复执行下条指令) ★ NOP(空操作) ★ IDEL(暂停) 返回
因篇幅问题不能全部显示,请点此查看更多更全内容