PIC单片机入门_汇编/混编/C编比较

1.问题描述:


对RAM中从30h开始的50个单元清零。


2.汇编方法


 COUNT EQU 20H               ;指定20H寄存器为循环变量

FSR   EQU 04H               ;指定FSR为04H

INDF  EQU 00H               ;指定INDF为00H

      MOVLW  D’50          ;给循环变量赋初值

      MOVWF  COUNT   

      MOVLW   30H           ;将30H →FSR

      MOVWF    FSR        

NEXT  CLRF   INDF           ;间接寻址   

      INCF  FSR,1           ;地址指针内容加1,指向下一单元 

      DECFSZ  COUNT,1       ;计数值减1,结果为0就 

                            ;跳过下一条指令到STOP处

      GOTO  NEXT            ;跳转回去并执行下一次循环 

STOP  GOTO  STOP            ;停机

3.混编方法


 #include

char COUNT;   //定义全局变量

main(){ 

    COUNT=50;     

    FSR=0x30;

  #asm

        INDF   EQU 00H    

  NEXT  CLRF   INDF 

        INCF  _FSR, F

        DECFSZ  _COUNT,F  

        GOTO  NEXT

  #endasm

  while(1){  ; 

 }

}

注意:只要是C语言中定义的变量,在汇编中对其寻址时一定要用下划线。

4.C语言编程


 #include

char COUNT;   //定义全局变量

main(){ 

COUNT=50;     

FSR=0x30;

INDF=0;

NEXT:  INDF=0;

       FSR++;

       if (COUNT-- >0) 

       goto NEXT;

while(1){  ;   }

}

注意:用C语言编写可读性强,但是占用的资源会多。


通知公告
编辑观点
理事会
参考资料
版权声明

凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。

《网络安全与数据治理》(原《信息技术与网络安全》)编辑部