25.0 指令集汇总
PIC18(L)F2X/4XK22 器件具有一个包含 75 条 PIC18 核
心指令的标准指令集,和一个包含 8 条新指令的扩展指
令集,扩展指令集用于优化递归代码或使用软件堆栈的
代码。本章后面的部分将讨论扩展指令集。
25.1 标准指令集
标准的 PIC18 指令集与以前的 PIC® MCU 指令集相比,
添加了很多增强功能,并保持了易于从这些 PIC® MCU
指令集移植的特点。大部分指令为单程序存储字指令
(16 位),只有 4 条指令需要两个程序存储单元。
每个单字指令都是一个 16 位字,由操作码(指明指令
类型)和一个或多个操作数 (指定指令操作)组成。
整个指令集具有高度的正交性,可以分为以下 4 种基本
类型:
• 字节操作类指令
• 位操作类指令
• 立即数操作类指令
• 控制操作类指令
表 25-2 为 PIC18 指令集汇总,列出了上述四类指令。
表 25-1 给出了操作码字段的说明。
大部分字节操作类的指令都含有三种操作数:
1. 文件寄存器 (由 “f”指定)
2. 保存结果的目标寄存器 (由 “d”指定)
3. 被访问存储区 (由 “a”指定)
文件寄存器标识符“f”指定了指令将会使用哪一个文件
寄存器。目标寄存器标识符“d”指定了操作结果的存
放位置。如果“d”为 0,操作结果存入 WREG 寄存器
中。如果“d”为 1,操作结果存入指令指定的文件寄存
器中。
所有位操作类指令都含有三种操作数:
1. 文件寄存器 (由 “f”指定)
2. 文件寄存器中的位 (由 “b”指定)
3. 被访问存储区 (由 “a”指定)
位域标识符“b”选择操作所影响的位的编号,而文件寄
存器标识符“f”则代表这些位所在的文件寄存器地址。
立即数操作类指令使用以下操作数:
• 要装入到文件寄存器中的立即数(由“k”指定)
• 要装入立即数的 FSR 寄存器(由 “f”指定)
• 不需要操作数 (由“—”指定)
控制类指令可以使用以下操作数:
• 程序存储器地址 (由“n”指定)
• CALL或 RETURN指令的模式 (由 “s”指定)
• 表读和表写指令的模式 (由“m”指定)
• 不需要操作数 (由“—”指定)
除了 4 条双字指令外,其他所有的指令都是单字指令。
双字指令将所需的信息保存在 32 位中。第二个字的高
4 位都是 1。如果第二个字作为一条指令执行,它会执
行为 NOP指令。
除非条件测试结果为真或者指令执行改变了程序计数器
的值,否则执行所有的单字指令都只需要一个指令周
期。对于上述两种特殊情况,指令执行需要两个指令周
期,在第二个指令周期中执行一条 NOP指令。
执行双字指令需要两个指令周期。
每个指令周期由 4 个振荡周期组成。因此,如果振荡器
频率为 4 MHz,正常的指令执行时间为 1 s。如果条件
测试结果为真或者指令执行改变了程序计数器的值,则
该指令的执行时间为 2 s。双字跳转指令(如果为真)
的执行则需要 3 s。
图 25-1 给出了指令的几种通用格式。所有示例均使用
“nnh”来表示十六进制数。
指令集汇总(见表25-2)列出了可被Microchip MPASMTM
汇编器识别的标准指令。
第 25.1.1 节“标准指令集”中对每条指令进行了介绍。 2011 Microchip Technology Inc. 初稿 DS41412D_CN 第 367 页