单片机汇编语言—冒泡排序

更新时间:2023-08-28 00:01:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

这个是简单的单片机冒泡排序,利用汇编语言编写

实验报告:实验二:51单片机设计程序

专业班级:2011级信息工程 姓名:高 祥 学号:1195111009

一、实验目的

1. 掌握Keil集成开发环境基本使用方法;

2. 掌握学林51mini仿真器和下载(编程)器的基本使用方法。

二、实验说明

通过实验了解单片机系统开发的基本流程,掌握开发工具,为进一步设计、调试单片机系统打下基础。

三、实验内容及步骤

1)、数据排序程序设计(仿例题4-8)

对20个数字进行排序,利用冒泡法进行排序

实验代码

M EQU 20 ;此处是对M值进行赋值操作

TAB EQU 30H ;对标号TAB进行赋值操作

ORG 0000H ;汇编起始地址命令

MOV 30H,#01H

MOV 31H,#03H

MOV 32H,#02H

MOV 33H,#1AH

MOV 34H,#2BH

MOV 35H,#2AH

MOV 36H,#5CH

MOV 37H,#3CH

MOV 38H,#2EH

MOV 39H,#4BH

MOV 3AH,#3EH

MOV 3BH,#19H

MOV 3CH,#09H

MOV 3DH,#28H

MOV 3EH,#45H

MOV 3FH,#50H

MOV 40H,#62H

MOV 41H,#71H

MOV 42H,#6CH

MOV 43H,#82H ;以上是对20个数字从30H开始赋值,也可在单片中修改地址 SORT: MOV R4,#M-1 ;利用冒泡排序发,每一轮只要比较M-1次即可

CLR F0 ;互换标示位F0清0

MOV R0,#TAB ;取第一个数字

指导老师 张

这个是简单的单片机冒泡排序,利用汇编语言编写

LOOP: MOV A,@R0

MOV B,A

INC R0

MOV A,@R0

MOV R2,A

CLR C

SUBB A,B

JNC LOOP2

MOV A,R2

SETB F0

MOV A,B

XCH A,@R0

DEC R0

XCH A,@R0

INC R0 ;对R1加一处理,从而有效查找数字 ;间接寻址方式,来查找第二个数字 ;标志位Cy清零处理 ;对A及R2数字进行比较,结果进入A之中 ;标志位为0,则转移 ;互换标志位F0置1 ;两个数互换

LOOP2:DJNZ R4,LOOP ;减一不为零,则跳转,此处是为了观察事都一轮比较完成 JB F0,SORT;若寻址位F0为1,则转移,此处功能为标记是否要进行下一轮交换 SJMP $ ;转移指令,原地踏步

END

流程框图

这个是简单的单片机冒泡排序,利用汇编语言编写

运行结果

赋值阶段:

运行之后:

实验说明:此程序是模仿例题4-8编写而成,实验主要是观察R4的变化情况,来观察一轮是否结束!

2):已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序执行后, A=(80H);SP=(40H);(41H)=(50H);(42H)=(80H);PC=(8050H)。 实验代码

ORG 0000H

MOV 41H,#0FFH

MOV 42H,#0FFH

MOV A,#02H

MOV SP,#42H

POP DPH

POP DPL

MOV DPTR,#0030H

RL A

MOV B,A

MOVC A,@A+DPTR

PUSH Acc

MOV A,B

INC A

MOVC A,@A+DPTR

PUSH Acc

sjmp $

ORG 0030H

DB 10H,80H,30H,80H,50H,80H

END

这个是简单的单片机冒泡排序,利用汇编语言编写

运行结果

3)试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数。并将查找到的结果存入41H单元。

实验代码

AJMP MAIN

ORG 0030h

main: MOV R0 , #20H

MOV R1 , #20H

MOV 41H ,#00H

loop: MOV A , @R0

cjne A,#00H, loop1

INC 41H

loop1: INC R0

DJNZ R1,loop

sjmp $

END

这个是简单的单片机冒泡排序,利用汇编语言编写

流程框图 运行结果

本文来源:https://www.bwwdw.com/article/n1ii.html

Top