片机汇编语言程序设计(II)

片机汇编语言程序设计(II)

ID:40656337

大小:201.60 KB

页数:35页

时间:2019-08-05

片机汇编语言程序设计(II)_第1页
片机汇编语言程序设计(II)_第2页
片机汇编语言程序设计(II)_第3页
片机汇编语言程序设计(II)_第4页
片机汇编语言程序设计(II)_第5页
资源描述:

《片机汇编语言程序设计(II)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、4.2.5分支程序设计分支程序的特点是程序中包含有转移指令。按是否通过条件判断来进行转移无条件转移条件转移按转移分支数目单分支程序多分支程序11。单分支程序利用条件转移指令实现条件成立否?YN2【例】求单字节有符号二进制数的补码。待求数据在内部RAM的30H单元,结果存放在内部35H一般这类功能程序作为子程序NEG_SUB:PUSHACCPUSHPSWMOVA,30HJNBACC.7,NCHMOVC,ACC.7CLRACC.7CPLAADDA,#1NEG01:MOV35H,A;保存结果POPACCPOPPSWRET3对于多字节求补码?一般使用间接寻址。例

2、如对4字节补码,待求数据在30H开始内部RAM,结果存放在同一地址。主程序使用寄存器0区,子程序使用1区。同样先判断符号开始开始保护现场R0#30hR0=(R0)+3A@R0ACC.7=1?Acc.7=0@R0(A)R0=R0-3R2#4SETBCA@R0CPLAADDCA,#0(R0)(A)R0(R0)+1(R2)-1=0?恢复现场retNEG_SENDNEG_S014最高位=1,负数取最高位恢复地址指向最低位符号位取反,最高位存回去循环次数=4置C=1,完成+1运算从最低字节开始取反,带进为+0运算,由于最低位已使C=1,故可实现最低位

3、+1修改地址指向下一字节保存该字节结果循环判断开始保护现场R0#30hR0=(R0)+3A@R0ACC.7=1?Acc.7=0@R0(A)R0=R0-3R2#4SETBCA@R0CPLAADDCA,#0(R0)(A)R0(R0)+1(R2)-1=0?恢复现场retNEG_SENDNEG_S02NEG_S015代码NEG_SUB:PUSHACCPUSHPSWSETBRS0;置1区CLRRS1MOVR0,#33HMOVA,@R0JBACC.7,NEG_S01LJMPNEG_SENDNEG_S01:CLRACC.7MOV@R0,AMOVR0,#3

4、0HMOVR2,#4SETBCNEG_S02:MOVA,@R0CPLAADDCA,#0MOV@R0,AINCR0DJNZR2,NEG_S02NEG_SEND:POPPSWPOPACCRET恢复PSW,就恢复工作寄存器0区6例求符号函数的值1当X>0Y=0当X=0的值。-1当X<0编程说明:设变量X存放在40H单元中,函数Y存放在41H单元中。此程序为三分支程序。程序流程图如图所示。2。二分支转移7利用单重转移可是实现多重转移结果用原码表示。8程序代码如下:START:MOVA,40HJZCOMPJNBACC.7,POSTMOVA,#81H;表示-1SJM

5、PCOMPPOST:MOVA,#01H;表示+1COMP:MOV41H,AEND+数09条件1条件2条件3条件4功能分支1功能分支2功能分支3功能分支4功能分支5功能分支53多分支转移程序104。散转11例如,K的最大值一般为128。【例】用单片机作四则运算。编程说明:在单片机系统中,设置+、-、×、÷四个运算键,这四个运算键的键值分别为0、1、2、3(键值存放在寄存器(R2中),当其中一个按键按下时,进行相应的运算。P1口输入被加数、被减数、被乘数或被除数,以及运算结果的低8位或商。P3口输入加数、减数、乘数或除数,,以及结果的高8位或余数。键号存放在

6、累加器A中。程序流程图如图所示。12数字分别存放在两个数据缓冲区,运算符号用编码存放在KB_BUF,开始Sp#00D0H初始化KB_SUBAKB_BUFAKB_BUFAKB_BUFAKB_BUFAKB_BUFDISP_SUBM_LOOPT_END13参考程序如下:ORG0LJMPSTARTORG0100HSTART:MOVSP,#0D0HLCALLINIT_SUB;初始化子程序M_LOOP:LCALLKB_SUB;键盘处理子程序,数字键;存放在数字缓冲区中,运算符号存放在KB_BUF,MOVDPTR,#TABLECLRCMOVA,KB_BUF

7、ANDA,#03HMOVB.#614MULABJMP@A+DPTRTABLE:LCALLADD_SUB;调加法子程序LJMPT_ENDLCALLSUB_SUB;调减子程序LJMPT_ENDLCALLMUL_SUB;调乘法子程序LJMPT_ENDLCALLDIV_SUB;调除法子程序LJMPT_ENDT_END:LCALLDISP_SUBLJMPM_LOOP15各功能子程序ADD_SUB:…RETSUB_SUB:…RETMUL_SUB:…RETDIV_SUB: …RETEND16【例】利用查表的方法编写Y=X2(X=0,1,2…9)的程序。编程说明:设变量

8、X的值存放在内存30H单元中,变量Y的值存入内存31H单元。先用查表指令MOVC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。