微机原理及应用实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理及应用实验报告

班级:

姓名:

学号:

中南大学

机电工程学院精密测控实验室

实验二软件程序设计

1.实验目的:

1、掌握MCS-51单片机指令系统及用汇编语言编程技巧;

2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。

2.实验内容:

1、编写排序程序并上机调试通过。

已知8031内部RAM60H~69H单元中,依次存放了

FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按

递减次序排序,即最大数放在60H中,最小数放在69H中。

2.、编写多字节加法程序并上机调试通过。

8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH

单元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地

址的区域中(低字节在前)。

3.实验设备名称、型号:

4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单:

程序1、编写排序程序并上机调试通过。

已知8031内部RAM60H~69H单元中,依次存放了

FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按递

减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次后,最小的那个数就会沉底,

在下一次比较时将减少一次比较次数。如果一次比较完毕,没有发生交换,说明已

经按照从大到小的顺序排列了。则可以退出循环,结束程序。

程序结构框图和程序代码如下:

ORG 1000H

TEM DATA 50H

MOV R7 , #9

MOV 60H , #0FFH

MOV 61H , #99H

MOV 62H , #77H

MOV 63H , #0CCH

MOV 64H , #33H

MOV 65H , #0DDH

MOV 66H , #88H

MOV 67H , #0BBH

MOV 68H , #44H

MOV 69H , #0EEH

LOOP0: CLR F0

MOV A , R7

MOV R6, A

MOV R0 , #60H

MOV R1, #60H

INC R1

LOOP1: MOV A , @R0

MOV TEM , A

MOV A , @R1

CJNE A ,TEM , NEXT

SJMP NOCHA

NEXT: JC NOCHA

SETB F0

MOV @R0 , A

XCH A , TEM

MOV @R1 , A

NOCHA:INC R0

INC R1

DJNZ R6, LOOP1

JNB F0, HAL

DJNZ R7, LOOP0

HAL: SJMP $

END

程序2:编写多字节加法程序并上机调试通过。

8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单

元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地

址的区域中(低字节在前)。

解:改程序由三个字节数相加,其结果不会超过4个字节,可以采用循环求和的办法,吧加数和被加数依次从低位带进位相加,当然加最低位时必须先对进位位清零。

可以采用线性结构,也可以采用循环结构。我在设计该程序采用单重循环,结

构简单,特别是当相加的数较长时,优势更加明显。

程序结构框图和源代码如下:

ORG 1000H

MOV 20H,#××H

MOV 21H,#××H

MOV 22H,#××H

MOV 2AH,#××H

MOV 2BH,#××H

MOV 2CH,#××H

MOV R0 #20H

MOV R1 #2AH

MOV R7 #03H

CLR C

LOOP0: MOV A ,@R0

MOV B ,@R1

ADDC A ,B

MOV @R0 ,A

INC R0

INC R1

DJNZ R7 ,LOOP0

NEXT : JNC HAL

INC R0

MOV @R0 ,#01H

HAL: SJMP $

END

5.思考题

1、如果题目1改为递增排序,如何修改程序,为什么?

答:将NEXT中的指令中的JC 指令换为JNC指令即可

2、如果题目1改为从30H单元开始的16个单元中无符号数排序,改哪几条指令?

答:改变R7的值为15,将值赋予30H到3FH上就可以了

3、如果题目2改为从50H开始的4字节数与60H开始的四字节数相加,如何修改?

答:MOV R0 #20H 改为MOV R0 #50H

MOV R1 #2AH 改为MOV R1 #60H

MOV R7 #03H 改为MOV R7 #04H

4、写出题目2中你处理最高位进位的相应指令。

答:NEXT : JNC HAL

INC R0

MOV @R0 ,#01H

HAL: SJMP $

5、循环程序中为何常用间接寻址方式(@Ri,@DPTR)?

答:因为间接寻址可以实现程序的循环,便于编写程序。

相关文档
最新文档