第3章指令集概述 表3-4: 逻辑指令 汇编语法 说明 字数周期数页码 AND f(,WREG(见注) 目的寄存器=f.AND.WREG 1 1 5-19 AND #lit10.Wn Wn lit10 .AND.Wn 1 5-20 AND Wb,#lit5.Wd Wd Wb .AND.lit5 7 5-21 AND Wb.Ws,Wd Wd Wb .AND.Ws 1 5-22 CLR f f=0x0000 1 5-75 CLR WREG WREG=0x0000 1 1 5-75 CLR Wd Wd=0x0000 1 1 5-76 COM f,WREG见驻) 目的寄存器= 1 1 5-80 COM Ws.Wd Wd =Ws 1 1 5-81 IOR f(,WREG见驻) 目的寄存器=f.IOR.WREG 1 1 5-128 IOR #lit10.Wn Wn lit10.IOR.Wn 7 5-129 IOR Wb.#lit5.Wd Wd Wb.IOR.lit5 人 5-130 IOR Wb.Ws.Wd Wd Wb .IOR.Ws 1 5-131 NEG f{,WREG见注) 目的寄存器=千+1 1 5-181 NEG Ws.Wd Wd Ws +1 1 5-182 SETM f f=0xFFFF 1 1 5-221 SETM WREG WREG =0xFFFF 1 1 5-221 SETM Wd Wd=0xFFFF 1 1 5-222 XOR f{,WREG见注) 目的寄存器=fXOR.WREG 1 1 5-259 3 XOR #lit10.Wn Wn lit10 .XOR.Wn 1 5-260 XOR Wb,#lit5.Wd Wd Wb .XOR.lit5 1 1 5-261 XOR Wb,Ws,Wd Wd Wb.XOR.Ws 人 5-262 注: 当指定可选的(,WREG}操作数时,指令的目的寄存器为WREG。当未指定{,WREG}时, 指令的目的寄存器是文件寄存器f。 2006 Microchip Technology Inc. 初稿 DS70157BCN第3-5页
2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 3-5 页 第 3 章 指令集概述 指令集概述 3 表 3-4: 逻辑指令 汇编语法 说明 字数 周期数 页码 AND f {,WREG}( 见注 ) 目的寄存器 = f .AND. WREG 1 1 5-19 AND #lit10,Wn Wn = lit10 .AND. Wn 1 1 5-20 AND Wb,#lit5,Wd Wd = Wb .AND. lit5 1 1 5-21 AND Wb,Ws,Wd Wd = Wb .AND. Ws 1 1 5-22 CLR f f = 0x0000 1 1 5-75 CLR WREG WREG = 0x0000 1 1 5-75 CLR Wd Wd = 0x0000 1 1 5-76 COM f {,WREG}( 见注 ) 目的寄存器 = f 1 1 5-80 COM Ws,Wd Wd = Ws 1 1 5-81 IOR f {,WREG}( 见注 ) 目的寄存器 = f .IOR. WREG 1 1 5-128 IOR #lit10,Wn Wn = lit10 .IOR. Wn 1 1 5-129 IOR Wb,#lit5,Wd Wd = Wb .IOR. lit5 1 1 5-130 IOR Wb,Ws,Wd Wd = Wb .IOR. Ws 1 1 5-131 NEG f {,WREG}( 见注 ) 目的寄存器 = f + 1 1 1 5-181 NEG Ws,Wd Wd = Ws + 1 1 1 5-182 SETM f f = 0xFFFF 1 1 5-221 SETM WREG WREG = 0xFFFF 1 1 5-221 SETM Wd Wd = 0xFFFF 1 1 5-222 XOR f {,WREG}( 见注 ) 目的寄存器 = f .XOR. WREG 1 1 5-259 XOR #lit10,Wn Wn = lit10 .XOR. Wn 1 1 5-260 XOR Wb,#lit5,Wd Wd = Wb .XOR. lit5 1 1 5-261 XOR Wb,Ws,Wd Wd = Wb .XOR. Ws 1 1 5-262 注: 当指定可选的 {,WREG} 操作数时,指令的目的寄存器为 WREG。当未指定 {,WREG} 时, 指令的目的寄存器是文件寄存器 f
dsPIC30F/33F程序员参考手册 表3-5: 循环移位指令 汇编语法 说明 宇数周期数页码 ASR fL,WREG(见注) 目的寄存器=f算术右移1位 1 5-24 ASR Ws,Wd Wd=Ws算术右移1位 1 5-25 ASR Wb,#lit4.Wnd Wnd=Wb算术右移it4位 1 5-27 ASR Wb,Wns,Wnd Wnd=Wb算术右移Wns位 1 1 5-28 LSR f{,WREG(见进) 目的寄存器=f逻辑右移1位 1 1 5-136 LSR Ws.Wd Wd=Ws逻辑右移1位 1 1 5-137 LSR Wb.#lit4.Wnd Wnd=Wb逻辑右移lit4位 1 1 5-139 LSR Wb,Wns,Wnd Wnd=Wb逻辑右移Wns位 1 1 5-140 RLC f{,WREG见注) 目的寄存器=f带进位位循环左移1位 1 1 5-204 RLC Ws.Wd Wd=Ws带进位位循环左移1位 1 5-205 RLNC f{,WREG见驻) 目的寄存器=f循环左移(不带进位位)1 1 5-207 位 RLNC Ws,Wd Wd=Ws循环左移(不带进位位)1位 1 5-208 RRC f,WREG见驻) 目的寄存器=f带进位位循环右移1位 1 5-210 RRC Ws.Wd Wd=Ws带进位位循环右移1位 1 1 5-211 RRNC f{,WREG见驻) f循环右移(不带进位位)1位 1 1 5-213 RRNC Ws,Wd Wd=Ws循环右移(不带进位位)1位 1 1 5-214 SL f{,WREG见驻) 目的寄存器=f左移1位 1 1 5-225 SL Ws.Wd Wd=Ws左移1位 1 5-226 SL Wb.#lit4.Wnd Wnd=Wb左移it4位 1 5-228 SL Wb.Wns,Wnd Whd=Wb左移Whs位 5-229 注: 当指定可选的{WREG}操作数时,指令的目的寄存器为WREG。当未指定{,WREG)时, 指令的目的寄存器是文件寄存器í。 DS70157BCN第3-6页 初稿 2006 Microchip Technology Inc
dsPIC30F/33F 程序员参考手册 DS70157B_CN 第 3-6 页 初稿 2006 Microchip Technology Inc. 表 3-5: 循环移位指令 汇编语法 说明 字数 周期数 页码 ASR f {,WREG}( 见注 ) 目的寄存器 = f 算术右移 1 位 1 1 5-24 ASR Ws,Wd Wd = Ws 算术右移 1 位 1 1 5-25 ASR Wb,#lit4,Wnd Wnd = Wb 算术右移 lit4 位 1 1 5-27 ASR Wb,Wns,Wnd Wnd = Wb 算术右移 Wns 位 1 1 5-28 LSR f {,WREG}( 见注 ) 目的寄存器 = f 逻辑右移 1 位 1 1 5-136 LSR Ws,Wd Wd = Ws 逻辑右移 1 位 1 1 5-137 LSR Wb,#lit4,Wnd Wnd = Wb 逻辑右移 lit4 位 1 1 5-139 LSR Wb,Wns,Wnd Wnd = Wb 逻辑右移 Wns 位 1 1 5-140 RLC f {,WREG}( 见注 ) 目的寄存器 = f 带进位位循环左移 1 位 1 1 5-204 RLC Ws,Wd Wd = Ws 带进位位循环左移 1 位 1 1 5-205 RLNC f {,WREG}( 见注 ) 目的寄存器 = f 循环左移 ( 不带进位位 ) 1 位 1 1 5-207 RLNC Ws,Wd Wd = Ws 循环左移 ( 不带进位位 ) 1 位 1 1 5-208 RRC f {,WREG}( 见注 ) 目的寄存器 = f 带进位位循环右移 1 位 1 1 5-210 RRC Ws,Wd Wd = Ws 带进位位循环右移 1 位 1 1 5-211 RRNC f {,WREG}( 见注 ) f 循环右移 ( 不带进位位 ) 1 位 1 1 5-213 RRNC Ws,Wd Wd = Ws 循环右移 ( 不带进位位 ) 1 位 1 1 5-214 SL f {,WREG}( 见注 ) 目的寄存器 = f 左移 1 位 1 1 5-225 SL Ws,Wd Wd = Ws 左移 1 位 1 1 5-226 SL Wb,#lit4,Wnd Wnd = Wb 左移 lit4 位 1 1 5-228 SL Wb,Wns,Wnd Wnd = Wb 左移 Wns 位 1 1 5-229 注: 当指定可选的 {,WREG} 操作数时,指令的目的寄存器为 WREG。当未指定 {,WREG} 时, 指令的目的寄存器是文件寄存器 f
第3章指令集概述 表3-6: 位操作指令 汇编语法 说明 字数周期数页码 BCLR f#物it4 位清零f 1 5-29 BCLR Ws#批it4 位清零Ws 1 1 5-30 BSET f,#6t4 位置1f 1 1 5-54 BSET Ws.#bit4 位置1Ws 1 1 5-55 BSW.C Ws.Wb 将C位写入Ws<Wb> 1 5-56 BSW.Z Ws.Wb 将Z位写入Ws<Wb> 1 1 5-56 BTG f.#bit4 将f进行位翻转 5-58 BTG Ws,#bit4 将Ws进行位翻转 5-59 BTST f.#bit4 位测试f 5-67 BTST.C Ws,#bit4 位测试Ws,并将被测试位的值存储到进 5-68 位标志位C中 BTST.Z Ws,#bit4 位测试Ws,并将被测试位的补码存储到 1 5-68 全零标志位Z中 BTST.C Ws.Wb 位测试W<Wb>,并将被测试位的值存储 1 5-69 到进位标志位C中 BTST.Z Ws.Wb 位测试Ws<Wb>,并将被测试位的补码存 5-69 储到全零标志位Z中 BTSTS f.#bit4 位测试f,然后将f中的该位置1 1 5-71 BTSTS.C Ws,#bit4 位测试Ws,并将被测试位的值存储到进 1 1 5-72 位标志位C中,然后将Ws中的该位置1 3 BTSTS.Z Ws.#bit4 位测试Ws,并将被测试位的补码存储到 1 1 5-72 全零标志位Z中,然后将Ws中的该位置 FBCL Ws,Wnd 从左边(MSb)查找位变化 1 5-116 FF1L Ws,Wnd 从左边(MSb)查找第一个1 1 5-118 FF1R Ws.Wnd 从右边(LSb)查找第一个1 1 5-120 2006 Microchip Technology Inc. 初稿 DS70157BCN第3-7页
2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 3-7 页 第 3 章 指令集概述 指令集概述 3 表 3-6: 位操作指令 汇编语法 说明 字数 周期数 页码 BCLR f,#bit4 位清零 f 1 1 5-29 BCLR Ws,#bit4 位清零 Ws 1 1 5-30 BSET f,#bit4 位置 1 f 1 1 5-54 BSET Ws,#bit4 位置 1 Ws 1 1 5-55 BSW.C Ws,Wb 将 C 位写入 Ws<Wb> 1 1 5-56 BSW.Z Ws,Wb 将 Z 位写入 Ws<Wb> 1 1 5-56 BTG f,#bit4 将 f 进行位翻转 1 1 5-58 BTG Ws,#bit4 将 Ws 进行位翻转 1 1 5-59 BTST f,#bit4 位测试 f 1 1 5-67 BTST.C Ws,#bit4 位测试 Ws,并将被测试位的值存储到进 位标志位 C 中 1 1 5-68 BTST.Z Ws,#bit4 位测试 Ws,并将被测试位的补码存储到 全零标志位 Z 中 1 1 5-68 BTST.C Ws,Wb 位测试 Ws<Wb>,并将被测试位的值存储 到进位标志位 C 中 1 1 5-69 BTST.Z Ws,Wb 位测试 Ws<Wb>,并将被测试位的补码存 储到全零标志位 Z 中 1 1 5-69 BTSTS f,#bit4 位测试 f,然后将 f 中的该位置 1 1 1 5-71 BTSTS.C Ws,#bit4 位测试 Ws,并将被测试位的值存储到进 位标志位 C 中,然后将 Ws 中的该位置 1 1 1 5-72 BTSTS.Z Ws,#bit4 位测试 Ws,并将被测试位的补码存储到 全零标志位 Z 中,然后将 Ws 中的该位置 1 1 1 5-72 FBCL Ws,Wnd 从左边 (MSb) 查找位变化 1 1 5-116 FF1L Ws,Wnd 从左边 (MSb) 查找第一个 1 1 1 5-118 FF1R Ws,Wnd 从右边 (LSb) 查找第一个 1 1 1 5-120
dsPIC30F/33F程序员参考手册 表3-7: 比较/跳过指令 汇编语法 说明 字数 周期数(见注)页码 BTSC f.#bit4 位测试「,如果为0则跳过 1 1(2或3) 5-60 BTSC Ws.#bit4 位测试Ws,如果为0则跳过 1 1(2或3) 5-62 BTSS f.#bit4 位测试f,如果为1则跳过 1 1(2或3) 5-64 BTSS Ws.#bit4 位测试Ws,如果为1则跳过 1 1(2或3) 5-65 CP 比较(f-WREG) 1 1 5-82 CP Wb,#lit5 比较(Wb-it5) 1 5-83 CP Wb.Ws 比较Wb-Ws) 1 1 5-84 CPO f 比较(f-0x0000) 1 1 5-85 CPO Ws 比较(Ws-0x0000) 1 1 5-86 CPB 带借位位比较仟-WREG-C) 1 1 5-87 CPB Wb.#lit5 带借位位比较(Wb-it5-C) 1 1 5-88 CPB Wb.Ws 带借位位比较Wb-Ws-C) 1 1 5-89 CPSEQ Wb.Wn 比较Wb-Wn),如果=则跳过 1 1(2或3) 5-91 CPSGT Wb,Wn 比较(Wb-Wn),如果>则跳过 1 1(2或3) 5-92 CPSLT Wb,Wn 比较(Wb-Wn),如果<则跳过 1 1(2或3) 5-93 CPSNE Wb,Wn 比较Wb-Wn),如果≠则跳过 1 1(2或3) 5-94 注: 如果未发生跳过,则条件跳过指令的执行时间为1个周期。如果单字指令发生跳过,则执 行时间为2个周期,而双字指令发生跳过,则执行时间为3个周期。 DS70157BCN第3-8页 初稿 2006 Microchip Technology Inc
dsPIC30F/33F 程序员参考手册 DS70157B_CN 第 3-8 页 初稿 2006 Microchip Technology Inc. 表 3-7: 比较 / 跳过指令 汇编语法 说明 字数 周期数 ( 见注 ) 页码 BTSC f,#bit4 位测试 f,如果为 0 则跳过 1 1 (2 或 3) 5-60 BTSC Ws,#bit4 位测试 Ws,如果为 0 则跳过 1 1 (2 或 3) 5-62 BTSS f,#bit4 位测试 f,如果为 1 则跳过 1 1 (2 或 3) 5-64 BTSS Ws,#bit4 位测试 Ws,如果为 1 则跳过 1 1 (2 或 3) 5-65 CP f 比较 (f – WREG) 1 1 5-82 CP Wb,#lit5 比较 (Wb – lit5) 1 1 5-83 CP Wb,Ws 比较 (Wb – Ws) 1 1 5-84 CP0 f 比较 (f – 0x0000) 1 1 5-85 CP0 Ws 比较 (Ws – 0x0000) 1 1 5-86 CPB f 带借位位比较 (f – WREG – C) 1 1 5-87 CPB Wb,#lit5 带借位位比较 (Wb – lit5 – C) 1 1 5-88 CPB Wb,Ws 带借位位比较 (Wb – Ws – C) 1 1 5-89 CPSEQ Wb, Wn 比较 (Wb – Wn),如果 = 则跳过 1 1 (2 或 3) 5-91 CPSGT Wb, Wn 比较 (Wb – Wn),如果 > 则跳过 1 1 (2 或 3) 5-92 CPSLT Wb, Wn 比较 (Wb – Wn),如果 < 则跳过 1 1 (2 或 3) 5-93 CPSNE Wb, Wn 比较 (Wb – Wn),如果 ≠ 则跳过 1 1 (2 或 3) 5-94 注: 如果未发生跳过,则条件跳过指令的执行时间为 1 个周期。如果单字指令发生跳过,则执 行时间为 2 个周期,而双字指令发生跳过,则执行时间为 3 个周期
第3章指令集概述 表3-8: 程序流指令 汇编语法 说明 字数周期数页码 BRA Expr 无条件转移 1 2 5-31 BRA Wn 计算转移 1 2 5-32 BRA C.Expr 如果进位(无借位),则转移 1 1(2)而 5-33 BRA GE.Expr 如果大于或等于,则转移 1 1(20 5-35 BRA GEU,Expr 如果无符号大于或等于,则转移 1 1(2)0 5-36 BRA GT.Expr 如果大于,则转移 1 1(2)m 5-37 BRA GTU,Expr 如果无符号大于,则转移 1 1(2)0 5-38 BRA LE,Expr 如果小于或等于,则转移 1(2) 5-39 BRA LEU,Expr 如果无符号小于或等于,则转移 1(2)0 5-40 BRA LT,Expr 如果小于,则转移 1(2)① 5-41 BRA LTU,Expr 如果无符号小于,则转移 1 1(2)0 5-42 BRA N.Expr 如果为负,则转移 1 1(2)0 5-43 BRA NC.Expr 如果无进位(有借位),则转移 1 1(2)而 5-44 BRA NN,Expr 如果非负,则转移 1 1(2)0 5-45 BRA NOV.,Expr 如果未溢出,则转移 1 1(2)而 5-46 BRA NZ,Expr 如果非零,则转移 1 1(2)0 5-47 BRA OA.Expr 如果累加器A溢出,则转移 1 1(2)① 5-48 BRA OB,Expr 如果累加器B溢出,则转移 1 1(2)四 5-49 BRA OV.Expr 如果溢出,则转移 1(2) 5-50 3 BRA SA,Expr 如果累加器A饱和,则转移 1(2)西 5-51 BRA SB,Expr 如果累加器B饱和,则转移 1(2)四 5-52 BRA Z,Expr 如果为零,则转移 1(20 5-53 CALL Expr 调用子程序 2 2 5-73 CALL Wn 间接调用子程序 1 n 5-74 DO #lit14,Expr 循环执行自下一条指令起到PC+Expr之间 2 2 5-107 的代码(t14+1)次 蔑 DO Wn,Expr 循环执行自下一条指令起到PC+Expr之间 2 5-109 的代码(Wn+1)次 GOTO Expr 跳转到地址 2 2 5-122 GOTO Wn 间接跳转到地址 2 5-123 RCALL Expr 相对调用 1 2 5-195 RCALL Wn 计算调用 1 2 5-196 REPEAT #it14 重复执行下一条指令t14+1)次 1 1 5-197 REPEAT Wn 重复执行下一条指令Wn+1)次 1 1 5-198 RETFIE 从中断返回 1 3(2)② 5-201 RETLW #lit10.Wn 从子程序返回,并将t10存储到Wn中 1 3(2)④ 5-202 RETURN 从子程序返回 1 3(2)② 5-203 注 1:如果未发生转移,则条件转移指令执行时间为1个周期:而若转移发生,则为2个周期。 2:RET0RN指令执行时间为3个周期,但如果有一个异常等待处理,则执行2个周期。 2006 Microchip Technology Inc. 初稿 DS70157BCN第3-9页
2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 3-9 页 第 3 章 指令集概述 指令集概述 3 表 3-8: 程序流指令 汇编语法 说明 字数 周期数 页码 BRA Expr 无条件转移 1 2 5-31 BRA Wn 计算转移 1 2 5-32 BRA C,Expr 如果进位 ( 无借位 ),则转移 1 1 (2)(1) 5-33 BRA GE,Expr 如果大于或等于,则转移 1 1 (2)(1) 5-35 BRA GEU,Expr 如果无符号大于或等于,则转移 1 1 (2)(1) 5-36 BRA GT,Expr 如果大于,则转移 1 1 (2)(1) 5-37 BRA GTU,Expr 如果无符号大于,则转移 1 1 (2)(1) 5-38 BRA LE,Expr 如果小于或等于,则转移 1 1 (2)(1) 5-39 BRA LEU,Expr 如果无符号小于或等于,则转移 1 1 (2)(1) 5-40 BRA LT,Expr 如果小于,则转移 1 1 (2)(1) 5-41 BRA LTU,Expr 如果无符号小于,则转移 1 1 (2)(1) 5-42 BRA N,Expr 如果为负,则转移 1 1 (2)(1) 5-43 BRA NC,Expr 如果无进位 ( 有借位 ),则转移 1 1 (2)(1) 5-44 BRA NN,Expr 如果非负,则转移 1 1 (2)(1) 5-45 BRA NOV,Expr 如果未溢出,则转移 1 1 (2)(1) 5-46 BRA NZ,Expr 如果非零,则转移 1 1 (2)(1) 5-47 BRA OA,Expr 如果累加器 A 溢出,则转移 1 1 (2)(1) 5-48 BRA OB,Expr 如果累加器 B 溢出,则转移 1 1 (2)(1) 5-49 BRA OV,Expr 如果溢出,则转移 1 1 (2)(1) 5-50 BRA SA,Expr 如果累加器 A 饱和,则转移 1 1 (2)(1) 5-51 BRA SB,Expr 如果累加器 B 饱和,则转移 1 1 (2)(1) 5-52 BRA Z,Expr 如果为零,则转移 1 1 (2)(1) 5-53 CALL Expr 调用子程序 2 2 5-73 CALL Wn 间接调用子程序 1 2 5-74 DO #lit14,Expr 循环执行自下一条指令起到 PC+Expr 之间 的代码 (lit14 + 1) 次 2 2 5-107 DO Wn,Expr 循环执行自下一条指令起到 PC+Expr 之间 的代码 (Wn+1) 次 2 2 5-109 GOTO Expr 跳转到地址 2 2 5-122 GOTO Wn 间接跳转到地址 1 2 5-123 RCALL Expr 相对调用 1 2 5-195 RCALL Wn 计算调用 1 2 5-196 REPEAT #lit14 重复执行下一条指令 (lit14 + 1) 次 1 1 5-197 REPEAT Wn 重复执行下一条指令 (Wn+1) 次 1 1 5-198 RETFIE 从中断返回 1 3 (2)(2) 5-201 RETLW #lit10,Wn 从子程序返回,并将 lit10 存储到 Wn 中 1 3 (2)(2) 5-202 RETURN 从子程序返回 1 3 (2)(2) 5-203 注 1:如果未发生转移,则条件转移指令执行时间为 1 个周期;而若转移发生,则为 2 个周期。 2:RETURN 指令执行时间为 3 个周期,但如果有一个异常等待处理,则执行 2 个周期