(31) 逻辑“或”操作指令(3条)
语法规则 OR A,R
指令编码0100rrrrrr
操作内容 A∨R→A
影响标志 Z;零标志受影响。
功能说明 将A寄存器中的值和R寄存器中的值进行逻辑或,再存入A寄存器。
语法规则 OR R,A
指令编码01001rrrrrr
操作内容 A∨R→R
影响标志 Z;零标志受影响。
功能说明 将A寄存器中的值和R寄存器中的值进行逻辑或,再存入R寄存器。
语法规则 OR A,K
指令编码11001kkkkkkkk
操作内容 A∨K→A
影响标志 Z;零标志受影响。
功能说明 将A寄存器中的值和立即数K进行逻辑或,再存入A寄存器中。
(32) 子程序返回指令
语法规则 RET
指令编码01010
操作内容 [堆栈顶部]→PC
影响标志 无
功能说明 从子程序中返回,自动将栈顶的断点地址载入程序计数器PC。
(33) 中断返回指令
语法规则 RETI
指令编码01011
操作内容 [栈顶]→PC,1→
影响标志 无
功能说明 从中断服务子程序中返回,自动将堆栈最顶端的断点地址载入程序计数器PC中,同时将总中断使能位置1,放开所有的中断请求。
(34) 子程序返回并给A赋值指令
语法规则 RETL K
指令编码11100kkkkkkkk
操作内容 K→A,[栈顶]→PC
影响标志 无
功能说明 从子程序返回,自动将堆栈最顶端的断点地址载入程序计数器PC中,并同时将立即数载入A寄存器中。
(35) 带进位位循环左移送A指令
语法规则 RLCA R
指令编码011010rrrrrr
操作内容 R(n)→A(n+1),R(7)→C,C→A(0)
影响标志 C;进位标志受影响。
功能说明 将所指定的寄存器的内容,连同进位标志一起向左移1位,并将结果存于A寄存器。见图1。

(36) 带进位位循环左移指令
语法规则 RLC R
指令编码011011rrrrrr
操作内容 R(n)→R(n+1),
R(7)→C,C→R(0)
影响标志 C;进位标志受影响。
功能说明 将所指定的寄存器的内容,连同进位标志向左移1位,结果存入原寄存器。
(37) 带进位位循环右移送A指令
语法规则 RRCA R
指令编码01100rrrrrr
操作内容 R(n)→A(n-1),R(0)→C,C→A(7)
影响标志 C;进位标志受影响。
功能说明 R寄存器的内容连同C(进位标志)右移1位,并将结果存于A寄存器,见图2。

(38) 带进位位循环右移指令
语法规则 RRC R
指令编码011001rrrrrr
操作内容 R(n)→R(n-1),R(0)→C,C→R(7)
影响标志 C;进位标志被影响。
功能说明 所指定的寄存器的内容,连带着进位标志接向右移1位,见图3。

(39) 睡眠指令
语法规则 SLEP
指令编码011
操作内容 00H→WDT,00H→WDT的分频器,0→,1→
影响标志 和标志位受到影响。
功能说明 看门狗定时器及其分频器(如果分频器划归WDT使用)一起被清零;节电标志位被清零;看门狗超时溢出标志位被置1;系统时钟振荡器停振;CPU进入睡眠(节电)状态。
(40) 减法指令(3条)
语法规则 SUBA,R
指令编码010rrrrrr
操作内容 R-A→A
影响标志 Z,C,DC;零标志、进位标志和辅助进位标志都会受影响。
功能说明 将R寄存器中的值减去A寄存器中的值,再存到A寄存器中。
语法规则 SUBR,A
指令编码0101rrrrrr
操作内容 R-A→R
影响标志 Z,C,DC;零标志、进位标志和辅助进位标志都会受影响。
功能说明 将R寄存器中的值减去A寄存器中的值,再存回R寄存器中。
语法规则 SUBA,K
指令编码11101kkkkkkkk
操作内容 K-A→A
影响标志 Z,C,DC;零标志、进位标志和辅助进位标志都会受影响。
功能说明 将从立即数K的值中减去A寄存器的值,再存回A寄存器中。
(41) 半字节交换送A指令
语法规则 SWAPA R
指令编码01100rrrrrr
操作内容 R(3~0)→A(7~4)
R(7~4)→A(3~0)
影响标志 无
功能说明 将所选定的寄存器的高4位同低4位互换,并将结果存于A寄存器。见图4。

(42) 半字节交换指令
语法规则 SWAP R
指令编码011001rrrrrr
操作内容 R(3~0)←→R(7~4)
影响标志 无
功能说明 将所选定的寄存器的高4位同低4位互换。并将结果存回R寄存器。见图5。

(43) 查表指令
语法规则 TAB
指令编码010
操作内容 PC+A→PC,PC(9~8)不变
影响标志 Z,C,DC;零标志、进位标志和辅助进位标志都会受到PC低8位计算结果的影响。
功能说明 将累加器A的数据与程序计数器PC内的地址相加,结果存回PC,但是PC的比特9和比特8维持不变。本指令与RETL K指令配合,适用于查表程序的编制。
(44) 看门狗复位指令
语法规则 WDTC
指令编码0100
操作内容 00H→WDT,00H→WDT的分频器,0→,1→
影响标志 和标志位受到影响。
功能说明 看门狗定时器及其分频器(如果分频器划归WDT使用)一起被清零;节电标志位被置1;看门狗超时溢出标志位被置1。
(45) 逻辑“异或”指令(3条)
语法规则 XOR A,R
指令编码0110rrrrrr
操作内容 AR→A
影响标志 Z;零标志受影响。
功能说明 将A寄存器的内容和R寄存器的内容进行异或运算,并且将结果存入A寄存器中。
语法规则 XOR R,A
指令编码01101rrrrrr
操作内容 AR→R
影响标志 Z;零标志受影响。
功能说明 将A寄存器的内容和R寄存器的内容进行异或运算,并且将结果存入R寄存器中。
语法规则 XOR A,K
指令编码11011kkkkkkkk
操作内容 AK→A
影响标志 Z;零标志受影响。
功能说明 将A寄存器的值和立即数K值进行异或运算,并将结果存入A寄存器中。
在EM78P447S的指令系统中,设计了5种寻址方式:立即寻址、直接寻址、隐含寻址、间接寻址和比特寻址。下期笔者再为您详细讲解。
对本系列文章内容有何疑问,欢迎E-mail至yanglin...@163.net。
本期有奖问答的题目是:
1. 已知:累加器A = 0xF5。在分别执行以下3条指令之后,会产生什么结果?
⑴ AND A,0x0F;结果A = _________。
⑵ OR A, 0x0F;结果A = _________。
⑶ XOR A,0x0F;结果A = _________。
分析对比3种执行结果,在位操作方面(即针对某一位或某几位的置1、清0或取反操作),可以得到什么启发?
2. 已知:累加器和两个通用寄存器的内容分别为A = 0xAB、R8 = 0xEF和R9 = 0xCD。在执行以下程序片段之后,会产生什么结果?
SWAPA 0x08
SWAPA 0x09
SWAPA 0x08
结果:A = ?,R8 = ?,R9 =?
第2期有奖问答的获奖名单见下页。
(大海创作室)