华科光电 单片机第一次试验报告Word文档格式.docx

上传人:b****6 文档编号:19266858 上传时间:2023-01-04 格式:DOCX 页数:11 大小:278.28KB
下载 相关 举报
华科光电 单片机第一次试验报告Word文档格式.docx_第1页
第1页 / 共11页
华科光电 单片机第一次试验报告Word文档格式.docx_第2页
第2页 / 共11页
华科光电 单片机第一次试验报告Word文档格式.docx_第3页
第3页 / 共11页
华科光电 单片机第一次试验报告Word文档格式.docx_第4页
第4页 / 共11页
华科光电 单片机第一次试验报告Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

华科光电 单片机第一次试验报告Word文档格式.docx

《华科光电 单片机第一次试验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《华科光电 单片机第一次试验报告Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

华科光电 单片机第一次试验报告Word文档格式.docx

在低位相加时,使用ADD指令即可,而在高位相加时,应考虑进位,故使用ADDC指令,考虑到高位相加也可能产生进位,故分配另一个地址存放。

三、资源分配

根据题目的条件,将加数与被加数分别存放在以20H、30H开始的数据区中,然后将二者之和存放于寄存器R3(高8位)、R4(低8位),进位位存放于R2中。

四、流程图

五、源代码(含文件头说明、资源使用说明、语句行注释)

Filename:

test01.asm

Description:

两个16位数加法的程序

Date:

2013/09/30

Designed:

haha

Sourceused:

20H:

加数A的低位

21H:

加数A的高位

30H:

加数B的低位

31H:

加数B的高位

R4:

和的低位

R3:

和的高位

R2:

和的进位位

ORG0000H

LJMPSTART

ORG0100H

START:

MOV20H,#78H;

将加数存放到相应的内存中

MOV21H,#56H

MOV30H,#76H

MOV31H,#98H

MOVR0,#20H;

以R0作为被加数的地址索引

MOVR1,#30H;

以R1作为加数的地址引索引

MOVA,@R0

ADDA,@R1;

低字节相加

MOVR4,A;

存放低字节之和至寄存器R4

INCR0

INCR1:

地址索引加1

MOVA,@R0

ADDCA,@R1;

高字节相加带进位位

MOVR3,A;

高字节之和存入R3

CLRA;

将A清零

ADDCA,#00H

MOVR2,A;

将进位位存入R2

END

六、程序测试方法与结果、软件性能分析

测试方法:

手动输入两个加数,运行程序,观察结果是否正确。

在调试过程中,跟踪A、R4、R3、R2的值,看是否与预期相同。

结果:

各项指标均与预期相同,程序正确。

截图如下

附加:

思考题

1.怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?

Disassembly窗口有何作用?

答:

点击调试后,在左侧Register窗口中可以清晰的看到,工作寄存器R0-R7,特殊功能寄存器SFW,和PSW中的内容。

再右下角Memory窗口中,输入d:

0x____可以看片内RAM的内容;

输入x:

0x____可以查看片外RAM的内容。

输入c:

0x____可以查看程序代码空间内容。

Disassembly窗口的作用是显示每一步指令的执行情况,包括源代码的储存位置机器码和相应的助记符。

2.字节拆分、合并还有哪些方法,举一例说明。

可以使用逻辑运算类指令屏蔽高四位和第四位,再对第四位和高四位进行操作,然后利用SWAP指令,就可以完成字节的拆分和合并。

不妨设20H单元中有待操作数86H,要将其字节拆分,高四位存于R3,低四位存于R4,接着进行字节的合并,将合并后的结果存于R2中,源代码如下:

MOV20H,#86H;

20H单元赋初值

MOVA,20H;

20H单元的内容赋给A

ANLA,#0FH;

高四位清零

MOVR4,A;

低四位存于R4

MOVA,20H;

20H单元内容赋给A

ANLA,#0F0H;

低四位清零

SWAPA;

低四位移至高四位

MOVR3,A;

结果存于R3,字节拆分结束

SWAPA;

移回低四位

ADDA,R4;

A中的内容与R4的内容相加

MOVR2,A;

结果存于R2中,字节合并完成

HERE:

SJMPHERE

END

调试结果如下:

字节拆分字节合并

3.若按递减一的规律填充数据块,应如何修改程序

答:

程序的修改后的源代码如下:

START:

MOVA,#0FFH;

将立即数OFFH存入累加器A

MOVR0,#00H;

RO指向00H

MOVDPTR,#7000H;

DPTR指向7000H

FILL:

MOVX@DPTR,A;

传递到片外RAM

DECA;

A减一

INCDPTR;

数据指针加一

INCR0;

修改循环计数器

CJNER0,#00H,FILL;

判断是否结束

HERE:

SJMPHERE;

原地踏步

END

调试截图如下:

4.若从7020H单元开始,连续填充10个字节,应该如何修改程序?

CLRA;

累加器A清零

MOVR0,#0AH;

设计数器初值

MOVDPTR,#7020H;

设数据指针初值

FILL:

MOVX@DPTR,A;

传送到片外RAM

INCA;

累加器A加一

INCDPTR;

数据指针加一

DJNZR0,FILL;

判断是否结束

HERE:

SJMPHERE;

原地踏步

结果如图

5.若完成双字节BCD码加法,应如何修改程序?

不妨设第一个BCD码存于40H,41H;

第二个存于45H,46H

程序代码:

ORG000H

MOVA,40H;

将加数低8位存入A

ADDA,45H;

两者低8位相加,和存于A

DAA;

二-十进制转化

MOV50H,A;

和的低8位存于50H

MOVA,41H;

将加数高位存于A

ADDCA,46H;

两者高8位相加,和存于A

二—十进制转化

MOV51H,A;

和的高位存于51H

SJMPHERE

七、心得与体会

通过本次试验,了解了keil软件的安装与使用,强化了各种转移指令,运算指令的应用。

基本熟悉了汇编语言的格式与使用规则,受益匪浅。

在独立完成实验的同时,锻炼了我们保持冷静,独立思考的能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1