微机实验报告Word文档格式.docx

上传人:b****6 文档编号:16001126 上传时间:2022-11-17 格式:DOCX 页数:11 大小:134.81KB
下载 相关 举报
微机实验报告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

(通过R0的进位控制)

3.两个十六位数加法程序:

把第一个十六位无符号数的地八位和高八位分别存于20H和21H中,把第二个十六位无符号数的地八位和高八位分别存于30H和31H中,对20H和30H中的两个低八位进行ADD加法操作,结果存于R4中;

然后对21H和31H中的两个高八位进行ADDC带进位的加法操作,结果存于R3中.然后将累加器A清零,并和#00H进行ADDC带进位的加法操作,结果产生进位数并存于R2中,程序结束。

三、资源分配

 

1.字节拆分、合并程序:

片内30H单位存放原BCD码,31H和32H存放拆分后的两个ASCII码,33H存放合并后的BCD码。

2.数据块填充程序:

R0作为计数器,DPTR作为数据指针,片外RAM空间从7000H开始填充。

3.两个十六位数加法程序:

20H,21H:

第一个数的低八位和高八位30H,31H:

第二个数的低八位和高八位R4:

加法结果的低八位R3:

加法结果的高八位R2:

加法结果的进位

四、流程图

1.字节拆分、合并程序2.数据块填充程序3.两个十六进制数相加程序

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

1.字节拆分、合并程序

Filename:

Description:

1字节BCD码转换为2字节ASCII

2字节ASCII码转化为1字节BCD码

Sourceused:

30H:

BCDdata

31H,32H:

ASCIIdata

31H,32H->

33H

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOVSP,#40H;

赋堆栈指针

MOV30H,#49H;

30H单元赋值

MOVR0,#32H;

R0指针赋值

MOV@R0,#0;

32H单元清零

MOVA,30H

XCHDA,@R0;

拆分字节

ORL32H,#30H;

转换为ASCII

SWAPA

ORLA,#30H;

MOV31H,A;

结果存于31H单元

MOVA,31H;

从31H单元取值

ANLA,#0FH;

转换为BCD

SWAPA

MOV33H,A;

结果存于33H单元

MOVA,32H;

从32H单元取值

ORL33H,A;

合并字节

HERE:

SJMPHERE;

踏步

END

将片外RAM7000H-70FFH单元按一定规律填充

R0:

计数器

DPTR:

片外数据指针

ORG0000H

LJMPMAIN

ORG0100H

MOVSP,#40H

FILL:

CLRA;

A寄存器清零

MOVR0,#00H;

设循环计数器

MOVDPTR,#7000H;

设数据指针

FILL1:

MOVX@DPTR,A;

传送到片外RAM

INCA;

A内容加1

INCDPTR;

修改数据指针

INCR0;

修改循环计数器

CJNER0,#00H,FILL1;

判断是否结束

SJMPHERE;

原地踏步

ORG0000H

LJMPMAIN

CLRC;

进位清零

MOV20H,#11H;

赋值

MOV21H,#19H

MOV30H,#90H

MOV31H,#09H

MOVR0,#20H;

置数据指针

MOVR1,#30H

MOVA,@R0;

取第一个数低位

ADDA,@R1;

两位数低位相加

MOVR4,A;

存“和”低位

ADDCA,#00H;

处理地位相加进位

INCR0;

修改指针

INCR1

取第一个数高位

ADDCA,@R1;

两数高位相加

MOVR3,A;

存“和”高位

CLRA

ADDCA,#00H;

处理高位相加进位

MOVR2,A;

最终进位存于R2

SJMPHERE;

END

六、程序测试方法与结果

测试方法:

单步调试观察寄存器变量和片内RAM的存储空间。

结果如图:

性能分析:

该程序能很方便地实现将一个BCD码拆分为两个ASCII码以及将两个ASCII码合并成一个BCD码的功能。

利用程序的运行和停止控制来观察最终的寄存器变量和片内RAM的存储空间。

从寄存器变量DPTR最后的取值(7100H)

来看,该程序能实现片外RAM从7000H到70FFH的数据填充。

程序中利用R0从00H到FFH的计数中产生的进位很巧妙地控制了循环的次数。

3.两个十六进制数相加

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

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

结果:

输入两个十六进制数为1911H和0990H,得出合数为22A1H,进位为0,各项指标均与预期相同,程序正确。

七、思考题

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

Disassembly窗口有何作用?

(1)选择Debug下的Start/StopDebugSession,在界面的左侧会出先程序代码的空间地址内容

(2)Disassembly窗口可以显示编译之后的汇编代码

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

(1)字节拆分可以利用与运算ANL,例如将30H单元中的数据从中间拆分,低字节存于31H,高字节存于32H:

MOVA,30H

ANLA,#0FH

MOV31H,A

MOVA,30H

ANLA,#F0H

MOV32H,A

(2)合并字节可以利用或运算ORL,例如将31H单元中的数据和32H单元中的数据合并,结果存放于30H中:

MOVA,31H

SWAPA

ORLA,32H

MOV30H,A

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

修改后程序如下

MOVR0,#FFH;

MOVDPTR,#70FFH;

DECA;

A内容减1

DECDPTR;

DECR0;

CJNER0,#FFH,FILL1;

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

MOVSP,#40H

MOVR0,#00H;

MOVDPTR,#7020H;

INCDPTR;

CJNER0,#10H,FILL1;

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

ORG0000H

ORG0100H

MOVSP,#40H

MOV20H,#0ABH

MOV21H,#99H

MOV30H,#0CDH

MOV31H,#0EFH

MOVA,20H

ADDA,30H

DAA

MOVR4,A

MOVA,21H

ADDCA,31H

MOVR3,A

CLRA

ADDCA,#00H

MOVR2,A

SJMP$

END

本人承诺:

本报告内容真实,无伪造数据,无抄袭他人成果。

本人完全了解学校相关规定,如若违反,愿意承担其后果。

签字:

年月日

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

当前位置:首页 > 法律文书 > 调解书

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

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