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语言编写可读性强,但是占用的资源会多。
凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。