MCS-51实验指导书(2)

2018-12-29 23:34

实验三 拼字程序

一、实验目的

进—步掌握汇编语言设计和调试方法。

二、实验内容

把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节。

三、程序框图

四、实验步骤

单步或用断点方式运行程序,检查2002H内容变化情况。 ORG 0680H SE03: MOV DPTR,#2000H MOVX A,@DPTR

ANL A,#0FH ;(2000H)内容屏敝高位 SWAP A ;交换 MOV B,A ;保存 INC DPTR

MOVX A,@DPTR ;(2001H)内容送A ANL A,#0FH ;屏敝高位 ORL A,B ;或 INC DPTR

MOVX @DPTR,A ;送2002H SJMP $ END

实验四 数据区传送子程序

一、实验目的

掌握RAM中的数据操作。

二、实验内容

把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。

三、程序框图

5

四、实验步骤

在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如0200H), R6、R7中输入字节数(例如01FFH),运行程序,检查0000-01FFH中内容是否和0200-03FFH中内容完全—致。

ORG 07B0H

MOV R2,#00H MOV R3,#00H MOV R4,#02H MOV R5,#00H MOV R6,#01H MOV R7,#0FFH SE22: MOV DPL,R3

MOV DPH,R2 ;建立源程序首址 MOVX A,@DPTR ;取数 MOV DPL,R5

MOV DPH,R4 ;目的地首址 MOVX @DPTR,A ;传送 CJNE R3,#0FFH,LO42 INC R2

LO42: INC R3 ;源地址加1 CJNE R5,#0FFH,LO43 INC R4

LO43: INC R5 ;目地址加1 CJNE R7,#00H,LO44

CJNE R6,#00H,LO45 ;字节数减1 SJMP $ NOP LO44: DEC R7 SJMP SE22 LO45: DEC R7 DEC R6

SJMP SE22 ;未完继续 END

6

实验五 数据排序实验

一、实验目的

熟悉8032指令系统,掌握程序设计方法。

二、实验内容

编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。

三、程序框图

四、实验步骤

把8032中RAM 50H-5AH中放入不等的数据,运行本实验程序后检查50-5AH中内容是否按从小到大排列。(注意数据是在CPU内部存储区存放,注意寻址方式。)

五、思考

1.修改程序把50H-5AH中内容按从大到小排列; 2.如果改为有符号数,如何修改。 ORG 09B0H QUE: MOV R3,#50H

QUE1: MOV A,R3 ;指针送R0 MOV R0,A

MOV R7,#0AH ;长度送R7 CLR 00H ;标志位为0 MOV A,@R0 QL2: INC R0 MOV R2,A CLR C MOV 22H,@R0

CJNE A,22H,QL3 ;相等吗? SETB C QL3: MOV A,R2

JC QL1 ;大于交换位置

7

SETB 00H XCH A,@R0 DEC R0 XCH A,@R0

INC R0 ;大于交换位置 QL1: MOV A,@R0 DJNZ R7,QL2

JB 00H,QUE1 ;一次循环中有交换继续 SJMP $ ;无交换退出 END

实验六 查找相同数个数

一、实验目的

熟悉汇编语言编程。

二、实验内容

在2000—200FH中查出有几个字节是零,把个数放在2010H中。

三、程序框图

四、实验步骤

在2000—200FH的几个单元中填入零,运行本程序后检查2010H中是几个单元数。

五、思考

修改程序,查找其它内容。 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,#2010H MOV A,R1

8

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

实验七 无符号双字节快速乘法子程序

一、实验目的

掌握MCS-51汇编语言程序设计方法。

二、预备知识

本程序是利用单字节的乘法指令,根据下面的公式进行乘法运算的:

8

8

(R2R3)*(R6R7)=((R2)*2+(R3))*((R6)*2+(R7)) =(R2)*(R6)*2+((R2)*(R7)+(R3)*(R6))*2+(R3)*(R7)

三、实验内容

将(R2R3)和(R6R7)中双字节无符号整数相乘,积送R4 R5 R6 R7中。

16

8

四、程序框图

五、实验步骤

在R2R3和R6R7中输入无符号整数,连续或单步运行本实验程序后检查R4 R5 R6 R7 中内容。

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)高字节

9


MCS-51实验指导书(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数电实验报告 白炽灯的双开关控制及日光灯的安装

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: