单片机实验二 简单程序设计与调试

  • 格式:doc
  • 大小:48.00 KB
  • 文档页数:4

下载文档原格式

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

实验二简单程序设计与调试

一、实验目的与要求

本次实验的目的是通过给出的程序流程图,用MCS-51汇编语言编写程序,然后上机调试、执行程序。要求自己动手独立思考编程序。

二、验验设备

Dais单片机仿真实验仪一台,计算机一台,导线若干条.

三、实验内容

1、查找相同数的个数程序设计:在2000H~200FH查出有几个相同的数(例如可事先在2000H~200FH中设定几个零或其它数据),把统计的相同数据的个数放在2100H单元中。程序框图如图1所示。根据程序框图自己动手编写程序,然后上机编译、调试、执行。

图2 查找相同数个数程序流程图

2、无符号双字节快速乘法子程序算法:两个双字节无符号数被分别存放在R2R3和R6R7中。可把被乘数和乘数分解为:(R2)(R3)=(R2)•82+(R3);(R6)(R7)=(R6)•82+(R7)

(R2R3)(R6R7)=((R2)×82+(R3))((R6)×82+(R7))

=(R2)(R6)×162+(R2)(R7)×82+(R3)(R6)×82+(R3)(R7)

将(R2R3)和(R6R7)中双字节无符号整数相乘,积送R4 R5 R6 R7中。在R2R3和R6R7中输入无符号整数,以0970H为起始地址连续或单步运行本实验程序后检查R4 R5 R6 R7中内容。程序流程见图3所示。

图2 单字节乘法

参考程序

==== 查找相同数的个数====

ORG 0AA0H

L5800: MOV R0,#10H ;查找16个字节

MOV R1,#00H

MOV DPTR,#2000H

L5811: MOVX A,@DPTR

CJNE A,#00H,L5816 ;取出内容与00H相等吗?

INC R1 ;取出个数加1 L5816: INC DPTR

DJNZ R0,L5811 ;未完继续

MOV DPTR,#2100H

MOV A,R1

MOVX @DPTR,A;相同数个数送2100H L581E: SJMP L581E

END

; ===无符号双字节快速乘法子程序===

ORG 0970H

QKUL: MOV A,R3

MOV B,R7

MUL AB ;R3*R7

XCH A,R7 ;R7=(R3*R7)低字节

MOV R5,B ;R5=(R3*R7)高字节

MOV B,R2

MUL AB ;R2*R7

ADD A,R5

MOV R4,A

CLR A

ADDC A,B

MOV R5,A;R5=(R2*R7)高字节

MOV A,R6

MOV B,R3

MUL AB ;R3*R6

ADD A,R4

XCH A,R6

XCH A,B

ADDC A,R5

MOV R5,A

MOV PSW.5,C ;存CY

MOV A,R2

MUL AB ;R2*R6

ADD A,R5

MOV R5,A

CLR A

MOV ACC.0,C

MOV C,PSW.5 ;加上次加法的进位

ADDC A,B

MOV R4,A

SJMP $

END

五、思考题

1、简述指令MUL AB;XCH A,B;ADDC A,R5;的功能。

2、程序中ORG,END,SJMP $的功能什么?

六、实验报告要求

1、实验报告要求归纳总结本次做实验的方法及过程,分析多位数乘法程序编写方法。

2、注释程序。

3、回答思考题。