实验名称: KeilC的使用与汇编语言上机操作 专业班级 光电王大珩1101
姓名:杜双成 学号: U201110354 序号 6
联系方式 133xxxxxxxx
一、任务要求
熟悉KeilC环境,通过在KeilC环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。
1.掌握KeilC环境的使用
1)字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。
2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。
2. 编写两个十六位数的加法程序。
有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2.
3.编写两BCD码加法程序。
二、设计思路
2题,赋值后,利用数据指针DPTR,取两数低位相加,存和于R4,再取两数低位相加,存和于R3,存进位位于R2。
3题,本题的关键是在加法后面紧跟着用用DA A指令调整BCD码
三、资源分配
2,两数初值分别存于片内RAM中的20H~21H和30H~31H,运算结果存于R2(进位位)、R3(高八位)和R4(低八位),工作寄存器R0和R1用作地址指针。
3,设两位BCD码的高位和地位分别存于30H~32H单元中,40H~42H单元中。结果存于50H~52H单元中。
四、流程图
1、字节拆分、合并程序
2、数据块填充程序
3、两个十六位数的加法程序
4,BCD码加法。
五、源代码 (含文件头说明、资源使用说明、语句行注释) 1,字节拆分、合并程序
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP, #40H ;赋堆栈指针
MOV 30H, #49H ;30H单元赋值
MOV R0, #32H ;R0指针赋值
MOV @R0, #0 ;32H单元清零
MOV A, 30H
XCHD A, @R0 ;拆分字节
ORL 32H, #30H ;转换为ASCII
SWAP A
ORL A, #30H ;转换为ASCII MOV 31H, A ;结果存于31H单元 MOV A, 31H ;从31H单元取值
ANL A, #0FH ; SWAP A
MOV 33H, A ;MOV A, 32H ; ANL A, #0FH ; ORL 33H, A ;HERE: SJMP HERE ; END
2、数据块填充程序
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP,#40H
FILL: CLR A ;AMOV R0, #00H
;
MOV DPTR, #7000H FILL1: MOVX @DPTR, A
INC A
;AINC
DPTR
; INC R0 ;
CJNE R0, #00H, FILL1 ;HERE: SJMP HERE
转换为BCD 结果存于33H单元
从32H单元取值 转换为BCD 合并字节 踏步
寄存器清零
设循环计数器
;设数据指针 传送到片外RAM
内容加1
修改数据指针
修改循环计数器
判断是否结束 ;原地踏步
;
END
3、两个十六位数的加法程序
ORG 0000H LJMP MAIN ORG 0100H
MAIN:
CLR C ;
MOV 20H,#07H ; MOV 21H,#16H MOV 30H,#10H MOV 31H,#28H
MOV R0,#20H MOV R1,#30H MOV A,@R0 ; ADD A,@R1 ; MOV R4,A ; INC R0 ; INC R1 MOV A,@R0 ; ADDC A,#00H ; ADD A,@R1 ; MOV R3,A ; CLR A ADDC A,#00H ; MOV R2,A ;
HERE:
SJMP HERE ;进位清零 赋值 ;置数据指针 取第一个数低位 两数低位相加 存“和”低位 修改指针 取第一个数高位 处理低位相加进位两数高位相加 存“和”高位 处理高位相加进位最终进位存于R2 踏步
END
4,BCD码加法
ORG 0000H
CLR C ;进位位清0
MOV A,30H
ADD A,40H
DA A
MOV 50H,A
MOV A,31H
MOV A,41H
ADDC A,41H
DA A
MOV 51H,A
MOV A,32H
MOV A,42H
DA A
MOV 52H,A
HERE:
SJMP HERE
............
六、程序测试方法与结果、软件性能分析
1、 字节拆分、合并程序
字节合并
2、据块填充程序
3、两个十六位数的加法程序
七、心得与体会
通过这次试验首先是掌握了软件的基本操作,如何添加一个工程,和如何及时修改编程中出现的问题。同时,通过程序的编译过程认识到各个指令系统的作用,加深了对个个指令的理解和认识。
八,课后思考题
1,怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?
答:工作寄存器与SFR的内容在调试阶段的“Register窗口”查看,外围设备的内容在“Peripherals项目”中查看,也可以通过相对应的固定地址在“Memory 1窗口”中查看。Disassembly 窗口用于设置断点。
2,字节拆分、合并还有哪些方法,举一例说明。
答:还可以用如下方法进行拆分(合并方法相同):
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP, #40H ;赋堆栈指针
MOV 30H, #49H
MOV A, 30H
XCHD A, #03H
SWAP A ;BCD码高位转换为ASCII码
MOV 31H, A
MOV A, 30H
XCHD A, #30H ;BCD码低位转换为ASCII码
MOV 32H, A ;拆分结束
3,若按递减1规律填充数据块,应如何修改程序?
答:将指令“INC A”改为“DEC A”。
4,若从7010H单元开始,连续填充20个字节,应该如何修改程序? 答:FILL与FILL1模块改为如下代码:
FILL: CLR A
MOV R0, #00H
MOV DPTR, #7010H
FILL1: MOVX @DPTR, A
INC A
INC DPTR
INC R0
CJNE R0, #13H, FILL1
5,若完成双字节BCD码加法,应如何修改程序?
答:每执行一次“ADD A,@R1”指令后,加上一条指令“DA A”,进行修正。
第二篇:毕业实习报告格式相关要求和就业证明函的相关要求
毕业实习报告格式示例:
在XXX公司从事XXX岗位的毕业实习报告(三号黑体)
08市场开发与营销(1)班 xxx
【实习目的】(四号宋体)
通过本次实习使我能够从理论高度上升到实践高度,更好的实现理论和实践的结合,为我以后的工作和学习奠定初步的知识……
【实习内容】(四号宋体)
在老师的带领下我们从五月十一号到五月十七号在南京金城摩托车集团进行了为期五天的实习,在这次实习中有新鲜有陌生但更多的是体会到了以后进入企业工作的话,我们现在还有很多很多的不足。…..
………
毕业实习报告排版说明:
实习报告版式左右边距为3cm,装订线为0.5cm,上下边距为2.5cm,页码在页面右下方设置。用白色A4纸打印,左侧装订,不需装帧。实习报告中的一级标题用三号黑体;二级标题用四号宋体加粗;三级标题用小四号加粗仿宋体;正文用小四号仿宋体;行间距采用
1.5倍行距。
毕业实习报告完成以后连同封面打印装订好,连同实习鉴定表(一式两份),和安徽省高等学校就业证明函一起用邮政EMS快递寄送给班主任。
毕业实习报告的相关要求
毕业实习报告是对自己毕业实习期间实习内容全面,系统的总结回顾。实习报告的标题为:“在XXX公司从事XXX岗位的毕业实习报告”,具体内容包括:实习目的、实习内容、实习结果和实习总结或体会四个部分, 全文字数 不少于3000字。
(一)实习目的:介绍实习的目的、意义、实习单位的概况及发展情况,实习要求等内容。这部分内容通常以前言或引言形式,不单列标题及序号。
(二)实习内容:先介绍实习安排概况,包括时间、内容、地点等;然后按照安排顺序逐项介绍具体内容,以记叙或白描手法为基调,在完整介绍实习内容基础上对自己认为有重要意义或需要研究解决的问题重点介绍,其它一般内容则简述。
(三)实习结果:围绕实习目的要求,重点介绍对实习中发现的问题的分析和思考,提出解决问题的对策和建议等。分析、讨论及对策建议要有依据。分析讨论的内容及推理过程是实习报告的重要内容之一,包括所提出的对策和建议,是反映或评价实习报告水平的重要依据。
(四)实习总结或体会:用自己的语言对实习的效果进行评价,着重介绍自己的收获,体会内容较多时可列出小标题,逐一汇报。总结或体会的最后部分应针对实习中发现的自身不足之处简要地提出今后学习的努力方向。
三、毕业实习鉴定表的相关要求
毕业实习鉴定表是同学们校外顶岗实习成绩的证明性文件。大家在实习结束时要请实习单位的指导教师(或者是部门主管)在“实习单位鉴定意见”栏填写实习评语,并在“实习单位(盖章)”栏盖章(可以是是公司章或者人事部门公章,但业务或部门章不行),同时给出“实习成绩”栏的成绩等级。
高等学校毕业生就业证明函的相关要求
高等学校毕业生就业证明函是高等学校毕业生顺利走上工作岗位的一个证明性文件。在填写证明函是要注意以下几点:学校和专业名称要写全称;应该是2013届而不是2010级等等;日期要写为二○一三年某月某日;章要为公司章或者人事部门公章,但业务或部门章不行。