单片机双字节BCD码乘法(7页).doc

上传人:1595****071 文档编号:35598166 上传时间:2022-08-22 格式:DOC 页数:7 大小:94KB
返回 下载 相关 举报
单片机双字节BCD码乘法(7页).doc_第1页
第1页 / 共7页
单片机双字节BCD码乘法(7页).doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《单片机双字节BCD码乘法(7页).doc》由会员分享,可在线阅读,更多相关《单片机双字节BCD码乘法(7页).doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-集 美 大 学计 算 机 工 程 学 院实 验 报 告课程名称单片机应用技术实验名称双字节BCD码乘法以及数据排序实验实验类型设计型 姓名学号日期地点成绩教师评语:1. 实验目的与要求1. 进一步熟悉51汇编指令,掌握汇编语言的设计和调试方法。2. 设计十进制乘法程序,了解如何调用系统提供的内置数码显示,键盘输入子程序。3. 熟悉如何高效方法对数据排序2. 实验设备STAR系列实验仪、PC机、星研集成软件环境3. 实验内容1.从键盘上输入4位被乘数,乘数,实现4位十进制数的乘法,结果显示在数码管上。2.调试状态下借助星研集成软件直接修改RAM30H-3FH的单元,数值任意,然后对其排序,检查

2、排序结果。4. 实验硬件电路及接线E5区:A0A3区:A0E5区:A、B、C、DG5区:A、B、C、D5,程序流程图6,程序源代码EXTRN CODE(DISPLAY8,GETBCDKEY)BUFFER1DATA 30H;键盘输入缓冲区BUFFER2DATA 40H;8字节显示缓冲区BUFFER3 DATA 50H;结果地址BUFFER4 DATA 60H;栈缓冲区 ORG 0000HLJMP MAIN ORG 0100H MAIN:CLR PSW.1 MOV R0,#BUFFER1 MOV A,#04HLCALL GetBCDKey MOV R0,#BUFFER4+3 MOV A,BUFFE

3、R1LCALL DECOMP DEC R0 MOV A,BUFFER1+1LCALL DECOMP MOV R0,#BUFFER4+3LCALL BCD2B MOV R6,BUFFER3 ;BUFFER3为低4位 MOV R7,BUFFER3+1 ;BUFFER3+1为高4位CLR PSW.1 MOV R0,#BUFFER1 MOV A,#04HLCALL GetBCDKey MOV R0,#BUFFER4+3 MOV A,BUFFER1LCALL DECOMP DEC R0 MOV A,BUFFER1+1LCALL DECOMP MOV R0,#BUFFER4+3LCALL BCD2B MO

4、V R5,BUFFER3+1 MOV R4,BUFFER3 MOV R0,#BUFFER3LCALL MLTY MOV R3,BUFFER3 MOV R2,BUFFER3+1 MOV R1,BUFFER3+2 MOV R0,BUFFER3+3LCALL B2BCD MOV R0,#BUFFER2+7 MOV A,R4LCALL DECOMP DEC R0 MOV A,R5LCALL DECOMP DEC R0 MOV A,R6LCALL DECOMP DEC R0 MOV A,R7LCALL DECOMP MOV R0,#BUFFER2+7CLR C MOV A,R0SUBB A,#00 JN

5、Z SHOW MOV BUFFER2+7,#10H SHOW: MOV R0,#BUFFER2LCALL DISPLAY8SJMP $ DECOMP: ;A中压缩BCD码转化成非压缩BCD码,结果存放在R0结束的两个字节,高位放H位BCD低位放L位BCD PUSH ACCSWAP AANL A,#0FH MOV R0,A POP ACCANL A,#0FH DEC R0 MOV R0,A RET BCD2B: ;R0结束的4位BCD码转化成二进制存在BUFFER3开始的两个字节 MOV BUFFER3,#00H MOV BUFFER3+1,#00H MOV R3,#4 ;四个字节LOOP:CL

6、R C MOV A,BUFFER3RLC A MOV BUFFER3,A MOV BUFFER3+2,A MOV A,BUFFER3+1RLC A MOV BUFFER3+1,A ;结果左移一位 MOV BUFFER3+3,A MOV R2,#2LOOP1:CLR C MOV A,BUFFER3RLC A MOV BUFFER3,A MOV A,BUFFER3+1RLC A MOV BUFFER3+1,A ;结果左移一位DJNZ R2,LOOP1;整体左移2位CLR C MOV A,BUFFER3+2 ;取移一位的值 ADD A,BUFFER3 MOV BUFFER3,A MOV A,BUFF

7、ER3+3ADDC A,BUFFER3+1 MOV BUFFER3+1,A ;结果*10 MOV A,R0 ;先取12的1后取2 DEC R0CLR C ADD A,BUFFER3 MOV BUFFER3,A MOV A,#00HADDC A,BUFFER3+1 MOV BUFFER3+1,A ;结果*10+1DJNZ R3,LOOP RET MLTY: MOV A,R6 MOV B,R4 MUL AB MOV R0,A MOV R3,B MOV A,R7 MOV B,R4 MUL AB ADD A,R3 MOV R3,A MOV A,BADDC A,#00H MOV R2,A MOV A,R

8、6 MOV B,R5 MUL AB ADD A,R3 INC R0 MOV R0,A MOV A,R2ADDC A,B MOV R2,A MOV R1,#00H JNC NEXT INC R1 NEXT: MOV A,R7 MOV B,R5 MUL AB ADD A,R2 INC R0 MOV R0,A MOV A,BADDC A,R1 INC R0 MOV R0,A RET;字节二进制数转十进制数;R0R1R2R3为二进制数,R4R5R6R7为压缩BCD码B2BCD:CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,A MOV B,#32LOOPB2: CLR

9、C MOV A,R3RLC A MOV R3,A MOV A,R2RLC A MOV R2,A MOV A,R1RLC A MOV R1,A MOV A,R0RLC A MOV R0,A MOV A,R7ADDC A,R7DA A MOV R7,A MOV A,R6ADDC A,R6DA A MOV R6,A MOV A,R5ADDC A,R5DA A MOV R5,A MOV A,R4ADDC A,R4DA A MOV R4,ADJNZ B,LOOPB2 RET END2.冒泡排序ORG 1000H BUBBLE: MOV R0,#30H MOV R2,#64 CLR 7FH DEC R2 BULOOP: MOV 20H,R0 MOV A,R0 INC R0 MOV 21H,R0 CJNE A,21H,LOOP LOOP: JC BUNEXT MOV R0,20H DEC R0 MOV R0,21H INC R0 SETB 7FHBUNEXT: DJNZ R2, BULOOP JB 7FH,BUBBLE SJMP $ END-第 7 页-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁