资源描述:
《单片机第4章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言程序设计4.1概述4.2简单程序4.3分支程序4.4循环程序4.6子程序的设计及调用4.7程序设计举例4.5查表程序下页4.1概述一、汇编语言和高级语言相比具有下列优点:①占用的内存单元和CPU资源少②执行速度快③有效的利用计算机的专有特性。④适合实时控制⑤可计算程序运行时间上页下页回目录专有特性MOVP1,A如:输出操作二、汇编语言程序设计的步骤:①建立数学模型②确定算法③制定流程图④确定数据结构⑤写出源程序⑥上机调试三、汇编语言程序的结构①定义有关字符名②定义程序的起始地址③程序主体④汇编结束标志上页下页回目录例1:内部RAM从DA
2、TA1单元有一数据块,存放若干无符号数,第一单元为数据块长度,求这些无符号数之和。;首址送R0;长度送R1;检查长度是否为零;为零则结束;不为零则开始运算;加一个数;长度减1不为零则转移;存和起始地址程序主体汇编结束标志标号注释上页下页回目录MOVR1,DATA1CJNER1,#0,NEXTORG2000HSTART:MOVR0,#DATA1HERE:SJMP$NEXT:CLRALOOP:INCR0ADDA,@R0DJNZR1,LOOPMOVSUM,ASJMPHEREDATA1DATA20HSUMDATA1FHEND上页下页回目录四、评价程序质量的标
3、准:①程序的执行时间②程序所占用的内存字节数目③程序的逻辑性、可读性④程序的兼容性、可扩展性⑤程序的可靠性时间空间概念4.2简单程序简单程序的特点:既无分支,又无循环,按照顺序执行例4-2:将一个字节内的两个BCD码拆开并变成ASCII码,存入两个RAM单元。BCD码放在内RAM的20H,转换后高半字节放到21H,低字节放22H。BCDHBCDL00110011RAM21H22H20H方法1:BCD码0~9对应的ASCII码为30H~39H转换时,将20H中的BCD码拆开,高四位置为“0011”即可。BCDHBCDL上页下页回目录可完成一定的基本功能
4、,是编写复杂程序的基础ASCII码程序:0011BCDH00000000MOVR0,#22HMOV@R0,#0MOVA,20HXCHDA,@R0ORL22H,#30HSWAPAORG1000HORLA,#30HMOV21H,ASJMP$END;R022H;22H0;两个BCD数送A;BCDL数送22H;完成转换;BCDH数送A的低4位;完成转换;存数BCDHBCDLBCDL00000011BCDHBCDLRAM21H22H20H0000BCDH0011A上页下页回目录@R0;原地踏步,相当与停机方法1小结:以上程序用了8条指令,15个内存字节,执行时
5、间为9个机器周期。方法2:采用除10H取余法将两个BCD数拆开BCDHBCDLA000100000000BCDH0000BCDLBABDIVAB上页下页回目录ORL,#30HAB0011BCDH0011BCDL程序:MOVA,20HMOVB,#10HDIVABORLB,#30HMOV22H,BORLA,#30HORG1000HMOV21H,ASJMP$END;取BCD码至A;完成转换;存ASCII码;完成转换;存ASCII码;除10H取余,使BCDHA、BCDLBBCDHBCDLA000100000000BCDH0000BCDLBABDIVAB001
6、10011BCDHBCDLRAM21H22H20H上页下页回目录方法2小结:以上程序用了7条指令,16个内存字节,执行时间为13个机器周期。双字节求补设:两个字节原码数存在R1、R0中求补后结果,存在R3、R2中。例4-3:方法:求补采用“模-原码”的方法上页下页回目录即用“0”去减“原码”R0R1原码-)R2R300H00H程序:CLRCCLRASUBBA,R0MOVR2,ACLRASUBBA,R1ORG1000HMOVR3,ASJMP$END;CY0;A0;低字节求补;送R2;A清零;高字节求补;送R3上页下页回目录将内部RAM的20H单元中的8
7、位无符号二进制数,转换为3位BCD码,并将结果存放在FIRST(百位)和SECOND(十位、个位)两个单元中。例4-4:解:可将被转换数除以100,得百位数;余数除以10得十位数;最后余数即为个位数。编程如下:例如:255(十进制)除以100,得2(百位数)余数除以10,得5(十位数)最后余数5即为个位数上页下页回目录55H程序(设(20H)=0FFH):;取数;除数B;除100;百位BCD;除10;除数10→B;十位数送高位;A为十位、个位BCDMOVA,20HMOVB,#64HDIVABMOVFIRST,AMOVB,#0AHDIVABORG100
8、0HSWAPAORLA,BMOVSECOND,ASJMP$FIRSTDATA21HSECONDDATA22H