当前位置:文档之家› 汇编指令

汇编指令

•应用
注册
用户名密码
•HOHO
•照片PK
•分享
•投票
•测试
•礼物
•开心部落
•汽车工厂
•七彩鱼
更多•网页游戏
分享
•热门分享
•最新分享
•好友的分享
•我的分享
如何分享?问题反馈
shxc_3的分享
分享
PIC常用汇编指令
PIC常用汇编指令
常用指令
1.寄存器加1指令:INCF
【格式】INCF F,d
【功能】寄存器F加1
【说明】
(1)INCF是Increment F的缩写;
(2)在PIC系列8位单片机中,常用符号F代表片内的各种寄存器和F的序号地址;(3)d=0时,结果存入W;d=1时,结果存入F。

【实例】INCF PORTC,1 ;将PORTC加1
2.寄存器减1指令:DECF
【格式】DECF F,d
【功能】寄存器F减1
【说明】
(1)DECF是Decrement F的缩写;
(2)d=0时,结果存入W;d=1时,结果存入F。

【实例】ENCODER EQU 0X21
……
DECF ENCODER,1 ;将ENCODER减1
3.寄存器清零指令:CLRF
【格式】CLRF F
【功能】寄存器清零
【说明】
(1)CLRF是Clear F的缩写;
(2)F寄存器被清为全0,使状态位Z=1。

【实例】CLRF TRISC ;对TRISC 清零
4.W清零指令:CLRW
【格式】CLRW
【功能】寄存器W清零
【说明】
(1)CLRW是Clear W的缩写;
(2)W为PIC单片机的工作寄存器;
(3)W寄存器被清为全0,使状态位Z=1。

【实例】CLRW ;W=00H
5.F寄存器传送指令:MOVF
【格式】MOVF F,d
【功能】将F寄存器内容传送到F或W
【说明】
(1)MOVF是Move F的缩写;
(2)当d=1时,传到F本身;当d=0时,传到W;
(3)影响状态位Z
【实例】MOVF PORTB,0 ;PORTB口内容送W MOVWF PORTA;W内容即PORTB口内容送PORTA
6.W寄存器传送指令:MOVWF
【格式】MOVWF F
【功能】W寄存器传送
【说明】
(1)MOVWF是Move W to F的缩写;
(2)将W寄存器内容传到F,W内容不变;
(3)不影响状态位。

【实例】MOVLW 0x0B ;送0BH送W
MOVWF PORTB ;送W内容到PORTB口
7.递增跳转指令:INCFSZ
【格式】INCFSZ F,d
【功能】递增跳转
【说明】
(1)INCFSZ是Increment F,Skip if 0的缩写;
(2)F寄存器内容加1后,当d=1时结果存入F,当d=0时存入W;(3)若结果为0则跳过下一条指令,否则顺序执行;
(4)影响状态位Z。

【实例】
LOOP INCFSZ COUNT1,1 ;COUNT1加1,结果存到COUNT1 GOTO LOOP;结果不为零,循环
MOVWF COUNT2 ;结果为零时,执行该语句
8.递减跳转指令:DECFSZ
【格式】DECFSZ F,d
【功能】递减跳转
【说明】
(1)DECFSZ是Decrement F,Skip if 0的缩写;
(2)F寄存器内容减1,结果存入F本身(d=1)或W(d=0);(3)如果结果为0则跳过下一条指令,否则顺序执行;
(4)影响状态位Z;
(5)实际指令中,当d=1时,该项常常被略去。

DELAY MOVLW 25 ;延时子程序
MOVWF N ;给N赋值25
LOOP DECFSZ N,1 ;N-1送回N并判结果=0?是!跳出循环GOTO LOOP ;否!循环回去
RETURN ;返回
9.位置1指令:BCF
【格式】BCF F,B
【功能】位清0
【说明】
(1)BCF是Bit Clear F的缩写;
(2)符号B是表示片内某个8位数据寄存器F的位号(或位地址);
(3)指令的意思是:将寄存器的第B位清0。

【实例】BCF REG1,2 ;把寄存器REG1的第2位清零
10.位清零指令:BSF
【格式】BSF F,B
【功能】位置1
【说明】(1)BSF是Bit Set F的缩写;
(2)将寄存器F的第B位置1。

【实例】BSF STATUS,RP0 ;设置文件寄存器的体1
11.位测试为零跳转指令:BTFSC
【格式】BTFSC F,B
【功能】位测试为0跳转
(1)BTFSC是Bit Test,Skip if Clear的缩写;
(2)测试F寄存器的第B位,若F(B)=0则调到下一条指令,否则顺序执行。

【实例】
BTFSC PORTB,0 ;检测PORTB口中的第0位是否为0?
;是!跳过下一条指令
GOTO CHECK ;否!则转到标号为CHECK的语句
CALL DELAY ;PORTB的第0位是1则直接执行该语句,调用延时子程序
12.位测试为1跳转指令:BTFSS
【格式】BTFSS F,B
【功能】位测试位1跳转指令
【说明】
(1)BTFSS是Bit Test F,Skip if Set的缩写;
(2)测试F寄存器的第B位,若F(B)=1,则跳转到下一条指令,否则顺序执行。

【实例】
BTFSS PORTB,0 ;检测PORTB口中的第0位是否为1?是!
;跳过下一条指令
GOTO CHECK ;否!则转到标号为CHECK的语句
CALL DELAY ;PORTB的第0位是1则直接执行该句,调用延时子程序
13.常数传送指令:MOVLW
【格式】MOVLW K
【功能】常数传送
【说明】(1)MOVLW是Move literal to W的缩写;
(2)将8位立即数传送到W寄存器,k表示常数、立即数和标号;(3)不影响状态位
【实例】MOVLW 0x1E ;常数30送W
14.子程序调用指令:CALL
【格式】CALL K
【功能】子程序调用
【说明】
(1)CALL是CALL subroutine的缩写;
(2)K为立即地址;
(3)不影响状态位。

【实例】
CALL DELAY ;调用延时子程序
DELAY ……;延时子程序DELAY
……
RETURN
15.无条件跳转指令:GOTO
【格式】GOTO K
【功能】无条件跳转
【说明】
(1)GOTO是Go to address的缩写;
(2)指令中的K,常与程序中的标号联系起来;
(3)不影响状态位。

【实例】STOP GOTO STOP ;循环执行GOTO语句,从而停机
16.子程序返回指令:RETURN
【格式】RETURN
【功能】子程序返回
【说明】
(1)RETURN是Return from Subroutine的缩写;
(2)将堆栈顶端单元内容弹出并送入PC,从而返回主程序断点处;(3)不影响状态位。

【实例】SUB MOVLW 01H ;子程序
……
RETURN ;子程序返回
17.空操作指令:NOP
【格式】NOP
【功能】空操作
【说明】
(1)NOP是No Operation的缩写;
(2)不产生任何操作,仅使PC加1,消耗一个指令周期NOP;(3)不影响状态位。

【实例】MOVLW 0xOF;送OFH到W
MOVWF PORTB ;W内容写入B口
NOP;空操作
MOVF PORTB,W ;读操作
PIC汇编语言常用伪指令
1.符号名赋值伪指令:EQU
【格式】符号名EQU nn
【功能】符号名赋值
【说明】
(1)给符号名或寄存器赋值,符号名一旦由EQU赋值,其值就不能再重新定义;
(2)nn是一个长度不同的二进制数值。

【实例】COUNT EQU 100 ;定义COUNT为常数100
2.程序起始地址伪指令:ORG
【格式】ORG nnnn
【功能】程序起始地址
【说明】
(1)用于指定该伪指令后面的源程序存放的起始地址,也就是汇编后的机器码目标程序在单片机的程序存贮器中开始存放的首地址;
(2)nnnn是一个13为长的地址参数。

【实例】ORG 0x00 ;程序汇编地址从00H开始
3.程序结束伪指令:END
【格式】END
【功能】程序结束
【说明】
(1)指令末的伪指令END是通知汇编程序MPASM结束对源程序的汇编,即使后面还有语句,也不再予以汇编;
(2)在一个源程序中必须有END伪指令;
(3)只能有一个END;
(4)放在整个程序的最后。

【实例】直接在程序末尾使用,从而结束程序
zx0710
shxc_3
shxc_3的博客相关分享:
•用VB编写OPC客户端访问WINCC(一)•VDD、VSS、VCC、VEE到底是怎么区别?•PIC单片机实例9:PC机与单片机串行全双工通...•有缘---无份
评论(0)
帮助中心|空间客服|投诉中心|空间协议|联系我们
2006-2011 © Baidu。

相关主题