- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 二、BCD码与二进制数之间的转换 在计算机中,十进制数要用BCD码来表示。通常,用四位二进制数表示一位BCD码,用1个字节表示2位BCD码(称为压缩型BCD码)。 例 双字节二进制数转换成BCD码。 设(R2R3)为双字节二进制数,(R4R5R6)为转换完的压缩型BCD码。 十进制数B与一个8位的二进制数的关系可以表示为: 只要依十进制运算法则,将 bi(i=7,6,… …,1,0)按权相加,就可以得到对应的十进制数B。(逐次得到:b7×20;b7×21+b6×20;b7×22+b6×21+b5×20 ;…)。 * DCDTH:CLR A ; MOV R4,A ;R4清0 MOV R5,A ;R5清0 MOV R6,A ;R6清0 MOV R7,#16 ;计数初值 LOOP:CLR C ; MOV A,R3 ; RLC A ; MOV R3,A ;R3左移一位并送回 MOV A,R2 ; RLC A ; MOV R2,A ;R2左移一位并送回 MOV A,R6 ; ADDC A,R6 ; DA A ; MOV R6,A ;(R6)乘2并调整后送回 MOV A,R5 ; ADDC A,R5 ; DA A ; MOV R5,A ;(R5)乘2并调整后送回 MOV A,R4 ; ADDC A,R4 ; DA A ; MOV R4,A ;(R4)乘2并调整后送回 DJNZ R7,LOOP ; * 思考题及习题 1、80C51单片机汇编语言有何特点? 2、利用80C51单片机汇编语言进行程序设计的步骤如何? 3、常用的程序结构有哪几种?特点如何? 4、子程序调用时,参数的传递方法有哪几种? 5、什么是伪指令?常用的伪指令功能如何? 6、设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位数相加的程序。 7、编写一段程序,把外部RAM中1000H~1030H的内容传送到内部RAM的30H~60H中。 8、编写程序,实现双字节无符号数加法运算,要求 (R1R0)+(R7R6)→(61H60H)。 * 9、若80C51的晶振频率为6MHz,试计算延时子程序的延时时间。。 DELAY:MOV R7,#0F6H LP:MOV R6,#0FAH DJNZ R6,$ DJNZ R7,LP RET 10、在内部RAM 的21H单元开始存有一组单字节不带符号数,数据长度为30H,要求找出最大数存入BIG单元。 11、编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位数分别存放在内部RAM的50H、51H、52H中。 12、编写子程序,将R1中的2个十六进制数转换为ASCII码后存放在R3和R4中。 13、编写程序,求内部RAM中50H~59H十个单元内容的平均值,并存放在5AH单元。 * 三、多分支程序 例9 根据R7的内容转向相应的处理程序。 设R7的内容为0~N,对应的处理程序的入口地址分别为PP0~PPN。 程序段如下: START:MOV DPTR,#TAB ;置分支入口地址表首址 MOV A,R7 ;分支转移序号送A ADD A,R7 ;分支转移序号乘以2 MOV R3,A ;暂存于R3 MOVC A,@A+DPTR ;取高位地址 XCH A,R3 INC A MOVC A,@A+DPTR ;取低位地址
文档评论(0)