PIC16系列单片机汇编指令集-包括部分伪指令-很有帮助(整理的)2011
- 格式:doc
- 大小:30.00 KB
- 文档页数:6
一、数据传送类指令(8种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;P55PUSH (Push onto Stack) 入栈;PUSH directPOP (Pop from Stack) 出栈;POP directXCH (Exchange) 字节交换;XCH A,源/@RiXCHD (Exchange low-order Digit) 低半字节交换;同上SWAP (Swap) 低4位与高4位交换;SWAP A MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVC A,@A+DPTR/PC MOVX (Move External RAM) 对外部RAM的数据传送;MOVX @DPTR,A MOVX A,@DPTR/@Ri MOVX @Ri,A二、算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;INC(Increment) 加1;INC A/Rn/direct/@Ri/源/DPTRDA(Decimal Adjust) 十进制调整;SUBB(Subtract with Borrow) 带借位减法;DEC(Decrement) 减1;DEC A/Rn/direct/@Ri/源MUL(Multiplication、Multiply) 乘法;MUL AB 高B,低A。
Cy=0 大于256,OV=1 DIV(Division、Divide) 除法;DIV AB 商A,余B。
Cy=0 OV=B(同上)三、逻辑运算类指令(9种助记符)CLR(Clear) 清零;CLR ACPL(Complement) 取反;CPL ARL(Rotate left) 循环左移;(同上)RLC(Rotate Left throught the Carry flag) 带进位循环左移;(同上)RR(Rotate Right) 循环右移;(同上)RRC (Rotate Right throught the Carry flag) 带进位循环右移;(同上)ANL(AND Logic) 逻辑与;ANL A,#data/Rn/direct/@Ri ANL direct,A/#dataORL(OR Logic) 逻辑或;ORL A,#data/Rn/direct/@Ri ANL direct,A/#dataXRL(Exclusive-OR Logic) 逻辑异或;(同上)四、位操作指令(6种助记符)MOV 位数据传送指令;MOV C,bit MOV bit,CCLR 位清零;C bitSETB(Set Bit)位置1;C bitCPL位取反;(同上)ANL位逻辑运算指令;ANL C,bit//bitORL位逻辑或运算指令;(同上)五、控制转移类指令(18种助记符)AJMP(Absolute Jump)绝对转移;AJMP addr11/ LABELLJMP(Long Jump)长转移;(同上)SJMP(Short Jump)短转移;SJMP rel/ LABELJMP间接转移指令; JMP @A+DPTRJZ (Jump if Zero)结果为0则转移;JZ rel/ LABELJNZ (Jump if Not Zero) 结果不为0则转移;(同上)CJNE (Compare Jump if Not Equal)比较不相等则转移;CJNE A,direct,rel/ LABEL CJNE A/Rn/@Ri,#data,rel/ LABELJC (Jump if the Carry flag is set)有进位则转移;JC rel/ LABELJNC (Jump if Not Carry)无进位则转移;(同上)JB (Jump if the Bit is set)位为1则转移;JB bit, rel/ LABELJNB (Jump if the Bit is Not set) 位为0则转移;(同上)JBC(Jump if the Bit is set and Clear the bit) 为1则转移,并清除该位;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;DJNZ Rn,rel/ LABEL DJNZ direct,rel/ LABELLCALL(Long subroutine Call)子程序长16调用;LCALL addr16/ SUBROUTINEACALL(Absolute subroutine Call)子程序绝对11调用;(同上)RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;NOP (No Operation) 空操作;8种常用伪指令1.ORG 16位地址;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。
PIC指令介绍2006-12-24 03:03:05来源:嵌入式技术网关键字: PIC指令系统<a target='_blank' href='/www/delivery/ck.php?n=826cd67'><img border='0' alt='' src='/www/delivery/avw.php?zoneid=212&n=826cd67' /></a>工作以来一直使用ST的单片机,其他的单片机虽大致了解但从未认真看过,近几日恰好无事,决定熟悉一下PIC的单片机,于是想将自己从网上或这书本上的东西转下来,予以同一样的初学者共同参考。
PIC的指令系统PIC 8位单片机共有三个级别,有相对应的指令集。
基本级PIC 系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。
其指令向下兼容。
一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。
1 标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。
在程序汇编时,已赋以指令存储器地址的具体数值。
汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。
标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。
在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。
指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。
书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。
LIST P=16C71TEMPC EQU0CH;定義通用寄存器TEMPD EQU0DHTEMPE EQU0EHPABUF EQU20HPBBUF EQU21HCOUNT EQU0FH;計數寄存器MSDTIME EQU10H;高2位顯示數寄存器LSDTIME EQU11H;低2位顯示數寄存器;FLAG EQU12H;定義FLAG寄存器位KEYHIT EQU0DEBNCEON EQU1NOENTER EQU2SERVKEY EQU3ADOVER EQU4;A/D轉換溢出標志位;DEBNCE EQU13H;去抖動計數器EQU14HEQU15H;放通道數EQU16H;4通道A/D結果地址(16H-19H);H-BYTE EQU20H;二進制結果高位寄存器L-BYTE EQU21H;二進制結果低位寄存器R0EQU22H;最高位BCD數寄存器R1EQU23HR2EQU24H;最低位BCD數寄存器COUNT EQU26HTEMP EQU27HWBUFFER EQU2FH;W緩沖寄存器SBUFFER EQU2EH;STATUS緩沖寄器PCL EQU2;INCLUDE"P16CXX,EQU";ORG0GOTO START;ORG4;中斷向量MOVWF WBUFFER;將W內容存入緩沖器(保護現場)SWAPF WBUFFERSWAPF STATUS,WMOVWF SBUFFER;將STATUS內容存入緩沖器CALL SERV-INT;進行中斷處理SWAPF SBUFFER,WMOVWF STATUS;恢復STATUS(恢復現場)SWAPF WBUFFER,W;恢復W內容RETFIE;START;主程序開始CALL INPORTS;I/O口初始化CALL INAD;A/D初始化CALL INTIMERS;定時器初始化LOOP BTFSC FLAG,;要進行鍵處理否?CALL SERVICEKEY;是,進行鍵處理BTFSC FLAG,ADOVER;A/D轉換完否?CALL SERVICEAD;是,進行A/D數據處理GOTO LOOP;否,循環等待;SERVICEKEY;鍵處理子程序BCF FLAG,;清按鍵標志MOVF NEWKEY,W;取鍵值SUBLW3;判健值>3否?BTFSS STATUS,C;小於3則跳轉RETURN;大於3返回MOVF NEWKEY,WMOVWF DISPCH;更新通道LOADMOVLW ADTABLE;取A/D結果數據表的首地址ADDWF NEWKEY,W;加偏移量MOVWF FSR;存入FSR寄存器MOVF INDF,W;取A/D值MOVWF L-BYTECLRF H-BYTECALL B2-BCDMOVF R2,W取低兩位顯示值MOVWF LSDTIME;存入低2位顯示數寄存器MOVF R1,W取高兩位顯示值MOVWF MSDTIME;存入高2位顯示數寄存器RETURN;;存A/D結果(0通道->ADTABLE,1通道->工ADTABLE+1,…)SERVICEADMOVF ADCON0,W;讀ADCON0MOVWF TEMPC;存入TEMPCMOVLW B'00001000';選下一個通道ADDWF ADCON0,WBTFSC ADCON0,5;通道數<=3否?MOVLW B'11000000';否,重選0通道MOVWF ADCON0MOVLW ADTABLEMOVWF FSR;A/D結果數據表首址-->FSRRRF TEMPCRRF TEMPCRRF TEMPC,W;通道數-->WANDLW3;屏蔽高6位ADDWF FSR;加偏移量至數據表MOVF ADRES,W;取A/D結果MOVWF INDF;存入FSR指定的寄存器BCF FLAG,ADOVER;清A/D溢出標志CALL LOAD RETURN ;INPORTS;I/O 口初始化BSF STATUS,RP0;選寄存器區1MOVLW 3MOVWF ADCON1;設置RA <0~3>為數字 I /O 口CLRF TRISA ;設置RA <0~4>為輸出CLRF TRISB ;設置RB <0~7>為輸出BCF STATUS,RP0;選寄存器區0CLRF RA CLRF RB ;置所有輸出口為低□電平BSF RA,3;使能最高顯示數字位RETURN ;CLRF MSDTIME ;清高位寄存器CLRF LSDTIME ;清低位寄存器CLRF DISPCH ;選通道0CLRF FLAG ;清標志BSF STATUS,RP0;選寄存器區1MOVLW B'0000100'MOVWF OPTION_R ;設RTCC 分頻比為1:32BCF STATUS,RP0;選寄存器區0MOVLW B'00100000';允許RTCC 中斷MOVWF INTCON MOVLW .96;設RTCC 初值MOVWF RTCC ;開始計時RETFIE ;SERV_INTBTFSC INTCON,RTIF ;是RTCC 中斷否?GOTO SERVRTCC ;是,進行中斷處理CLRF INTCON ;清中斷寄存器BSF INTCON,RTIF RETURN ;SERVRTCCMOVLW .96MOVWF RTCC ;設RTCC 初值BCF INTCON,RTIF ;清中斷標志BTFSC RA,0CALL SCANKEYS ;掃描鍵盤BTFSC RA,3CALL SAMPLEAD CALL DISPLAY ;進行數據顯示RETURN ;BTFSS FLAG,DEBNCEO N ;清抖動否?GOTO SCAN1;否,轉SCAN1INTIMERS ;內部振蕩,RTCC 預分頻比1:32,RTCC 每5ms 中斷一次SCANKEYS ;4*4鍵盤矩陣掃描,鍵值(0~F)-->NEWKEY,掃描速率20ms(4.069MHz)DECFSZDEBNCE ;DEBNCE 內容減1RETURNBSFFLAG,DEBNCEO N ;清DEBNCEON 位RETURNSCAN1CALLSAVEPORTS ;存I/O 口值MOVLWB'11101111'MOVWFTEMPD SCANNEXT MOVFRB,W ;讀RB 口值BCFINTCON,RBIF ;清RB 口中斷標志位RRFTEMPD ;TEMPD 內容右移BTFSSSTATUS,C ;是否有進位位?GOTONOKEY ;無,轉NOKEY MOVFTEMPD,W ;有,讀輸出數MOVWFRB ;送RB 口輸出NOPBTFSSINTCON,RBIF ;RB 口電平變化否?GOTOSCANNEXT ;無,轉SCANNEXT BTFSCFLAG,KEYHIT ;有,鍵釋放否?GOTOSKRETURN ;沒有,轉SKRETURN BSFFLAG,KEYHIT ;是,設釋放標志位SWAPFRB,W ;取RB 口數MOVWFTEMPE ;存入TEMPE 寄存器CALLKEYVALUE ;取健值MOVWFNEWKEY ;鍵值存入NEWKEY 寄存器BSFFLAG,SERVKEY BSFFLAG,DEBNCEO N ;設置FLAG 的標志位MOVLW4MOVWFDEBNCE ;裝入消抖動初值SKRETURN CALLRESPORTS ;存儲 I/O 口值RETURN;NOKEY BCFFLAG,KEYHIT ;清KEYHIT 標志位GOTOSKRETURN KEYVALUECLRFTEMPC BTFSSTEMPD,3;檢測第一列GOTOROWVALEND INCFTEMPC BTFSSTEMP,2;檢測第二列GOTOROWVALEND INCFTEMPC BTFSSTEMPD,1;檢測第三列GOTOROWVALEND INCFTEMPC ROWVALENDBTFSSTEMPE ,0;是第一行否?GOTOGETVALCOM ;是,取0,1,2,3BTFSSTEMP ,1;是第二行否?GOTOGET4567;是,取4,5,6,7BTFSS TEMPE ,2;是第三行否?GOTO GET89AB;是,取8,9,A,BGETCDEF BSF TEMPC,2;設置最高位GET89AB BSF TEMPC,3GOTO GETVALCOMGET4567BSF TEMPC,2GETVALCOM MOVF TEMPC,WADDWF PCLRETLW0HRETLW1HRETLW2HRETLW3HRETLW4HRETLW5HRETLW6HRETLW7HRETLW8HRETLW9HRETLW0AHRETLW0BHRETLW0CHRETLW0DHRETLW0EHRETLW0FHSAVEPORTS ;在鍵盤掃描期間保存RA口和RB口狀態MOVF RA,W;讀RA口數值MOVWF PABUF;存入緩沖器CLRF RA;禁止所有的接收MOVF RB,W;讀RB口數值MOVWF PBBUF;存入緩沖器MOVLW0FFH;使RB口全部輸出高電平MOVWF RBBSF STATUS,RP0;選寄存器區1BCF OPTION R,7;RB口弱上拉使能MOVLW B'11110000'MOVWF TRISB;設置RB口高4位輸入,低4位輸出BCF STATUS,RP0;選寄存器區0RETURNRESPORTS ;在鍵盤掃描後恢復RA口和RB口狀態MOVF PBBUF,W;取RB口數值MOVWF RBMOVF PABUF,W;取RA口數值MOVWF RABSF STATUS,RP0BSF OPTION-R,7;關閉RB口弱上拉CLRF TRISA;設置RA口為輸出CLRF TRISB;設置RB口為輸出BCF STATUS,RP0RETURN;DISPLAY MOVF RA,W;送接收數到WCLRF RA;禁止所有數據接收ANDLW0FH;屏蔽高4位MOVWF TEMPC;存接收值到TEMPCBSF TEMPC,4;預置最低顯示數RRF TEMPC;右移取下一位BTFSS STATUS,C;進位位C=1?BCF TEMPC,3;否,重置低顯示位BTF SCTEMPC,0;是否最高位?GOTO UPDATAMSD;是,取最高位值BTFSC TEMPC,1;是否第3位GOTO UPDATA3LED;是,取第3位值BTFSC TEMPC,2;是否第2位GOTO UPDATA2LED;是,取第2位值UPDATALSDMOVF LSDTIME,W;最低數送WANDLW0FH;屏蔽高4位GOTO DISPLAYOUT;數據顯示UPDATA2LEDSWAPF LSDTIME,W;第2位數送WANDLW0FHGOTO DISPLAYOUTUPDATA3LEDMOVF MSDTIME;第3位數送WANDLW0FHGOTO DISPLAYOUTUPDATAMSDSWAPF MSDTIME,W;最高位數送WANDLW0FHDISPLAYOUTCALL LSDTABLE;取段碼值MOVFWF RB;由RB口輸出顯示MOVF TEMPC,W;取接收值送WMOVFWF RARETURN;LEDTABLEADDWF PCL;加偏移量到PC低位RETLW B'00111111';顯示0的段碼RETLW B'00000110';顯示1的段碼RETLW B'01011011';顯示2的段碼RETLW B'01001111';顯示3的段碼RETLW B'01100110';顯示4的段碼RETLW B'01101101';顯示5的段碼RETLW B'01111101';顯示6的段碼RETLW B'00000111';顯示7的段碼RETLW B'01111111';顯示8的段碼RETLW B'01100111';顯示9的段碼RETLW B'01110111';顯示A的段碼RETLW B'00111100';顯示B的段碼RETLW B'00111001';顯示C的段碼RETLW B'01011110';顯示D的段碼RETLW B'01111001';顯示E的段碼RETLW B'01110001';顯示F的段碼;INAD MOVLW B'11000000';選內部RC振蕩MOVWF ADCON0RETURN;SAMPLEADCALL SAVEPORTSCALL DOAD;進行A/D轉換ADDONE BTFSC ADCON0,2;A/D轉換完否GOTO ADDONE;沒完則循環等待BSF FLAG,ADOVER;設置A/D溢出標志CALL RESPORTS;恢復I/O口狀態RETURN;DOAD CLRF RB;滅LED顯示BSF STATUS,RP0MOVLW0FHMOVWF TRISA;設置RA口低4位輸入BCF STATUS,RP0BSF ADCON0,0;啟動A/DMOVLW0.125CALL WAIT;等待BSF ADCON0,2;置A/D結束標志RETURN;WAIT MOVWFNEXT DECFSZGOTORETURN;B2-BCD BCF STATUS,0;清進位位MOVLW0.16MOVWF COUNT;設計數器初值CLRF R0CLRF R1CLRF R2LOOP16RLF L-BYTERLF H-BYTERLF R2RLF R1RLF R0DECFSZ COUNTGOTO ADJDEC;十進制轉BCD碼RETLW0;ADJDEC MOVLW R2MOVWF FSRCALL ADJBCD;調轉BCD碼子程序;MOVLW R1MOVWF FSRCALL ADJBCD;調轉BCD碼子程序;MOVLW R0MOVWF FSRCALL ADJBCD;調轉BCD碼子程序;GOTO LOOP16;ADJBCD MOVLW3ADDWF INDF,WMOVWF TEMPBTFSC TEMP,3;測試低4位結果>7否?MOVWF INDFMOVLW30ADDWF INDF,WMOVWF TEMPBTFSC TEMP,7;測試高4位結果>7否?MOVWF INDFRETLW0;END。
PIC16系列单片机汇编指令集-包括部分伪指令-很有帮助(整理的)2011.txt大人物的悲哀在于他们需要不停地做出选择;而小人物的悲哀在于他们从来没有选择的机会。
男人因沧桑而成熟,女人因成熟而沧桑。
男人有了烟,有了酒,也就有了故事;女人有了钱,有了资色,也就有了悲剧。
当D不写时默认是放到F中吗?好像是.
更新:1,PIC16没有同或指令;
面向字节
ADDWF F,D ;寄存器加法指令,F+W→D 影响C,DC,Z 进位C为1表示有进位
INCF F,D ;寄存器加1指令F+1→D
SUBWF F,D ;减法指令F-W→D 影响C,DC,Z 进位C为0表示有借位.则F<W 那么W等于多少呢?
DECF F,D ;寄存器减1指令F-1→D 影响Z
ANDWF F,D ;F里的内容和W里的内容相与结果存入F(d=1)或(d=0),F∧W→d,影响Z 不带进位的加法,在PIC18系列中才有带进位加法指令.
IORWF F,D ;F内容和W内容相或,F∨W→d,影响Z
XORWF F,D ;F内容与W内容异或F⊕W→D, 位异或,影响Z位即是只要相异就为真
0⊕1=1和1异或则取反0⊕0=0和0异或则保持不变
1⊕1=01⊕0=1
面向常数
ADDLW K ;常数加法指令,8位立即数和W内容相加,结果存入W K+W→W,影响C,DC,Z
SUBLW K ;8位立即数减掉W内容,存入W, K-W→W,影响C,DC,Z
ANDLW K ;常数逻辑与K∧W→W 影响Z
IORLW K ;常数逻辑或K∨W→W 影响Z
XORLW K ;常数逻辑异或K⊕W→W 影响Z
CLRW ;寄存器W被清零
CLRWDT ;看门狗定时器清零(若已赋值,同时清零预分频器)
CLRF F ;寄存器F清零指令
BCF F,b ;把寄存器F的第b位清零 Bit Clear F
MOVLW K ;传送立即数(或常数,标号)至工作寄存器W MOVE Literal to W
TRIS F ;把W的内容送I/O口控制寄存器F Load TRIS Register ;好像没有这个指令;
MOVWF ;是MOVE W的内容TO F,(W内容保持不变),如MOVWF 6 (F6表示RB口) 不影响状态位.
MOVF F,D ;D=0,F内容送W. D=1,F内容送寄存器影响Z
NOP ;空操作,PC加1,占用一个机器周期
GOTO K ;无条件跳转指令,将指令转移到指定地址,“K"常与程序中的标号联系起来。
DECFSZ F,D ;寄存器内容减1存入W(D=0)或F(D=1)中,若指令执行结果减1不为零,指令顺序执行
;为零时,就间跳下一条指令后再执行(等效顺序执行一条空指令NOP).实际指令中,
;当D=1时该项常略去。
Decrement f,Skip of not 0 影响Z
INCFSZ F,D ;F内容加1,结果不为零则顺序执行,为零则指令间跳执行。
(FF+1就会变为0)影响Z
RETLW K ;(带立即数的)子程序返回指令,该指令代表子程序返回,返回前先把8位立即数送W
SWAPF F,D ;寄存器F的高4位与低4位交换,结果存入W(D=0)或F(D=1)中。
用于中断现场保护。
CALL K ;子程序调用指令,K为立即数地址,不同型号芯片的实现方法不尽相同,其共同点是首先将返回地址((PC)+1)压栈保护,再转入所调用的子程序入口地址执行
( MCS-51相似)
COMF F,D ;寄存器内容取反指令(每一位都取反);寄存器F内容取反后送入W(D=0)或F自身(D=1)
BSF F,b ;位置1指令,寄存器F的b位置1 Bit Set F
BTFSC F,b ;测试寄存器F位"b",如为0,跳过下一条指令,为1顺序执行(该指令引用两个指令周期)
Bit Test, Skip if Clear
BTFSS F,b ;位测试F(b)=1就间跳执行,如F(b)=0则顺序执行。
Bit Test, Skip if Set RLF F,D ;将F寄存器带进位C循环左移,结果存入F本身(d=1)或W(d=0);
RRF F,D ;将F寄存器带C循环右移,结果存入F本身(d=1)或W(d=0);
RETURN ;子程序返回指令,将堆栈顶单元内容弹出并送入PC,从而返回主程序断点处。
RETFIE ;中断服务子程序返回指令,将堆栈顶单元内容弹出送入PC,从而返回主程序断点处,同时
将全局中断使能位GIE置1,重新开放中断,栈顶→PC,1→GIE
SLEEP ;该指令执行后,单片机进入低功率睡眠模式,时基电路停振0→PD非,1→TO 非,
0→WDT,0→WDT预分频器,影响状态位TO非,PD非。
PIC伪指令
ORG 格式:<标号>ORG<地址表达式
;ORG用于指定该伪指令后面的源程序存放的起始地址,也就是汇编后的目标机器码存放的首地址。
ORG后面不带地址参数则默认为0;若ORG后面带标号则地址参数也赋值给该标号。
在一个源程序中,可以根据需要多次使用ORG伪指令来定位。
END ;告诉MPASM结束对源程序(asm)的汇编,即使后面还有语句,也不给予汇编。
源程序必须
有END,而且只能有一个,且在程序最后。
EQU 格式:〈标号〉EQU<表达式>
给标号或寄存器赋值,标号一旦由EQU赋值,其值便不能再重新定义。
LIST 列表选择指令
格式:LIST<选择项>,...,<选择项>
用来设置各种汇编参数以控制汇编过程,或对列表文件进行格式化,此伪指令的所有参数只
能在一行内完成,参数的数值都由十进制设置。
如LIST f=1NHX8M, r=DEC, p=16F84
固化编程文件格式设置常数数制的基数(如HEX,DEC)设置单片机类型
PROCESSOR<处理器类型>
用于选择单片机的型号
INCLUDE 包含其它外部源文件。
格式:INCLUDE"文件名"
INCLUDE<文件名>
用于把指定文件读入源程序中作为源程序代码的一部分,直到检测到文件结束符时
为止,再恢复到原源程序的代码处,此伪指令可允许嵌套使用,最多可嵌套6层。
如举例:include"c:\pic\sysdefs.inc"
include<picreg.h>
一、在35条指令中,5条实现无条件跳转的必然引起程序执行顺序发生改变的指令(GOTO, CALL
,RETURN ,RETLW,RETFIE)为两个指令周期.
二、有可能引起程序执行顺序发生改变的4条条件跳转指令(DECFSZ,INCFSZ,BTFSC,BTFSS),执行时间
随条件而定,当条件为真发生跳转时需要占用2个指令周期,当条件为假不发生跳转时仅占用一个
指令周期。
三、其余的全部仅仅占用一个指令周期。