8051单片机,汇编实现的冒泡排序

51单片机C语言:冒泡排序算法 在嵌入式系统中,特别是在51单片机的开发中,经常需要对数据进行排序。冒泡排序是一种简单但有效的排序算法,适用于小规模数据。本教程将深入讲解冒泡排序的原理,并提供基于51单片机的C语言实现代码,附带详细的注释。 阅读详情
ORG 0000H 
MOV 50H,#02H
MOV 51H,#10H
MOV 52H,#24H
MOV 53H,#14H
MOV 54H,#11H
MOV 55H,#36H
MOV 56H,#30H
MOV 57H,#25H
MOV 58H,#22H
MOV 59H,#26H  

/*将 02H、10H、24H、14H、11H、36H、30H、25H、22H、26H 分别寄存排序*/

LJMP MAIN
ORG 0030H                 

MAIN:  MOV R1,#50H           
       MOV R2,#09H
       MOV B,#09H       
       CLR 40H
       LCALL LOOP1
LOOP4: MOV R1,#50H
       MOV A,B
       SUBB A,#01H
       MOV B,A
       MOV R2,B
       CLR 40H   /*将次数减一次后放在B寄存器保存。*/
LOOP1: MOV A,@R1
       INC R1
       MOV 30H,@R1
       CJNE A,30H,LOOP2
LOOP2: JC LOOP3  /*比较前面一个数大于后面的数发生交换*/
       MOV @R1,A
       DEC R1
       MOV @R1,30H
       INC R1
       SETB 40H  /* 实现30H上的数与40H上的数进行交换*/
LOOP3: DJNZ R2,LOOP1
       JB 40H,LOOP4
       SJMP $
       END  
单片机C语言编程优势与应用解析 C语言作为系统级编程的核心语言,凭借其接近硬件的特性和高效执行性能,在嵌入式开发领域占据主导地位。其指针操作和内存管理能力为底层硬件控制提供了直接支持,而模块化设计则大幅提升了代码复用率。在单片机开发中,C语言通过寄存器映射实现硬件抽象,平衡了开发效率与执行性能,特别适合外设驱动开发、实时算法实现等场景。随着现代单片机支持C++、Rust等高级语言,开发工具链也在持续演进,但C语言仍是资源受限环境下最可靠的选择。 阅读详情

相关推荐

单片机开发与调试的要点及工具解析

在单片机开发与调试的领域中,诸多要点如同精密仪器的零部件,共同维系着整个系统的高效运转。从硬件的搭建到软件的编写,从开发工具的选择到调试过程中的注意事项,每一步都需要开发者全神贯注、精心雕琢。以下单片机开发要点。

1073

单片机中的冒泡排序(汇编语言)

总结起来就是: 1.N个数要分选N-1次 2.第i次分选的次数为N-i次 汇编程序: ORG 1000H MOV PSW,00H MOV R7,#100-1;总共的分选次数 LOOP0:MOV R0,#40H ; Loop0是大循环,主要负责分选,一次又一次 MOV R1,#41H MOV 02H,R7;这里确定了第i次分选的次数 CLR F0 LOOP1:MOV A,@R0 ; loop1是小循环,主要负责判断本次分选是否结束 CJNE A.

DongZhaoCheng 3998

单片机冒泡排序

单片机C51 汇编语言下的 冒泡排序 将RAM中的 几个单字节无符号整数从小到大排列

51单片机汇编实现冒泡排序

今天为了复习课本上面的程序,就实地检验了下这个程序,当年可是学过微机原理里的冒泡排序的,结果移植平台后又是如此麻烦,呵呵,网上贴吧,论坛,知道,文库上面拜托你们的程序能不能靠谱点!!! 第一种常见的错误就是程序写的一团糟,天马行空,弄了几个位地址和中间变量,外加两个循环,程序早飞了,真是让我们程序员惭愧啊 第二种错误是由于大多参考课本上题目:将以40H为首地址的N个数据进行排序,然后几十行代码

我的梦 1万+

基于BFQ19S的共射振荡器设计(克拉泼电容三点式)

根据理论,设计出如下LC振荡器: 一、设计初期是使用= 400Mhz作为目标值计算的, 但由于计算值与实际值有差别,所以使用计算值附近的元器件代替使用;最终该电路的L1=82nH , D1 = 5.6pF, C11=18pF, C12 = 18pF ; 另外R3= 600Ω, R4取27k , C9取10pF; 该电路实际的震荡频率为主要为L1,D1 决定,所以其震荡频率约为 == 235Mhz; 二、由于实际得到的频率比目标频率低太多,所以调整电路使其能达到400M左...

rzchong1988的专栏 3704

echarts 生成中国陕西省份(或其他省份)的地图,大屏使用

效果图: 一、首先第一步需要下载echarts和获取到陕西身份的地图信息。 1.下载echarts链接(官网): Apache ECharts 2.生成指定省份的地图数据信息,数据可以在阿里云获取。 DataV.GeoAtlas地理小工具系列 如图,点击左圈需要的省份,这里我选择的是陕西省,然后点击右圈复制下载链接,得到一个json格式的数据,可以在json转换网站转成js格式。 Json在线解析格式化-Json在线校验Json格式化压缩-Jsons在线工具 转成js格.

PrimaryColor 3889

51单片机学习之冒泡排序

在前面两篇文章中,对单片机有了初步的了解,下面将介绍利用汇编语言实现冒泡排序。一、本篇文章将使用的指令介绍MOV 传送字或字节INC 加1,类比与C语言++DEC 减1,类比与C语言--JC 有进位/借位时转移,cy端为进位/借位标志位;当进位/借位时cy为1CJNE 比较不等转移指令DJNZ 减一不为0跳转指令SJMP 短跳转指令CLR 清零指令JB 无符号小于则跳转XCH 交换两个操作数的值指令SETB 置1。

z317920的博客 3207

嵌入式下载故障排查:ST-LINK与GD32 Programmer典型问题解决

嵌入式固件烧录是MCU开发的关键环节,其本质依赖于调试器(如ST-LINK、GD-Link)与目标芯片间的协议通信、驱动加载及硬件接口协同。原理上,SWD/JTAG协议需在正确时序、电平与供电条件下完成设备枚举、ID读取与Flash编程;技术价值在于保障量产烧录稳定性与调试可重复性;典型应用场景涵盖STM32/GD32教学开发、工业控制板量产调试及Windows 11新系统适配。本文聚焦ST-LINK-V2在Keil MDK中的下载失败和GD32 All In One Programmer的DLL加载异常两

weixin_35006125的博客 153

51单片机汇编_冒泡法排序

从大到小: ORG 0000h LJMP MAIN ORG 0030H MAIN: MOV 30H,#10H MOV 31H,#02h MOV 32H,#7H MOV 33H,#5H MOV 34H,#3H MOV 36H,#1H MOV R6,#7 MOV R7,#7 MOV R0,#30H lop0:mov R6,#7 MOV R0,#30H LOP1:MOV A,@R0 INC R0 MOV B,@R0 CJNE A,B,COM COM: JNC NEXT XCH A,B DEC R0

Fine的优快云博客 7285

在Modelsim中手动添加仿真库

缘由:在使用rom ip核的时候发现仿真需要altera_mf库的支持,而我的ModelSim没有这个库,所以想写一篇手动添加仿真库的文章方便自己以后使用:首先新建一个库,名字叫做altera_mf:然后编译对应的库文件:这里altera_mf.v文件是在quartus安装路径下quartus\eda\sim_lib文件夹下,点击编译后退出:最后在modelsim->example文件夹下可以找到编译好的库文件:

欢迎一起交流问题! 3402

51单片机定时器的原理、应用与编程实现

本文系统介绍了51单片机定时器的基本原理与应用。首先阐述了定时器的工作原理,包括定时模式和计数模式的区别。然后详细讲解了定时器的四种工作模式(方式0-方式3)及其适用场景,并分析了相关寄存器(TMOD、TCON、THx/TLx)的功能设置。文章还给出了定时器编程的具体步骤,包括初始化、计数初值计算和示例代码。最后通过LED闪烁、PWM波形产生、脉冲计数等实际应用案例,展示了定时器的多样化应用。掌握这些知识对嵌入式系统开发具有重要意义。

2501_91227323的博客 1522

零基础学习8051单片机(十一)

本次对8051单片机指令系统进行回顾和巩固

2401_82720146的博客 1043

S-function入门及案例详解(3)——S-function进阶案例

目录1.案例描述2.案例详解3.输出波形4.对输入参数进行Mask打包 1.案例描述 设计一个蹦极系统 h为离地面高度,输入参数为长度、质量、离地面高度。 2.案例详解 步骤1.可以修改sfuntmpl函数的名称(这里修改为bengji),并在括号内增加输入参数 参数len,weight,dist分别表示长度、质量、离地面高度;长度用来初始化x0,质量用来初始化m,离地面高度用来初始化h。 function [sys,x0,str,ts,simStateCompliance] = bengji(t,x,u

Wendy的博客 1万+

C51 汇编语言冒泡排序的实现

片外RAM中起初存储的数字序列为。将排序好的序列再从大到小排,第三趟时则已完成排序。

m0_73422904的博客 2046

[nvidia-GB200-安装]ubuntu24.04高端GPU gb200 570.158.01驱动安装解读及gb200一键化安装脚本,复制即可安装

【代码】[nvidia-GB200]高端GPU gb200 驱动安装解读及gb200一键化安装脚本,复制即可安装。

jundao1997的专栏 872

PX4实战(十):PX4导航模块(Navigator)详解

本文将对 PX4 固件 v1.14.3 版本中的 Navigator(导航)模块进行详尽的技术剖析。作为飞行控制栈中的高层决策核心,Navigator 模块承担着将抽象的任务指令转化为具象的底层控制设定点的关键职责。本文基于对 src/modules/navigator 目录下源代码的深究研究与架构反推,详细阐述了该模块的文件组织结构、基于状态机的控制逻辑、uORB 异步通讯机制、核心任务模式(Mission)与返航模式(RTL)的实现细节,以及地理围栏(Geofence)与任务可行性检查(Feasibil

PX4-SLAM-PNC 668

汇编程序:冒泡排序

汇编语言能实现冒泡排序等排序算法吧?当然可以,排序可不是什么复杂的东东。就在第7周,给大家补充一下cmp、jxxx、xchg指令,下面的冒泡就出来了。   assume cs:cseg, ds:dseg, ss:sseg sseg segment stack dw 10H dup (?) sseg ends dseg segment dw 123,5,9,11,33,6,9,76

迂者-贺利坚的专栏 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【51汇编示例】 51汇编实现冒泡法;

第一步准备阶段: 准备十个数字 M EQU 10 TAB EQU 30H MOV 30H,#04H MOV 31H,#03H MOV 32H,#05H MOV 33H,#06H MOV 34H,#09H MOV 35H,#08H MOV 36H,#15H MOV 37H,#10H ...

weixin_30922589的博客 248

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

嵌入式汇编编程实践:数据统计与处理的几种典型方法

注意无符号数运算时MUL指令的结果存储规则(A存低8位),这种结构在阈值报警系统中很常见。通过AUXR1寄存器切换数据指针DPTR0和DPTR1,实现2000H-2010H到2100H-2110H的块传输。通过ANL屏蔽高低四位、SWAP交换位置,配合CJNE实现十六进制到ASCII的智能转换(区分0-9和A-F)。平台提供在线的8051仿真环境,无需本地安装Keil即可测试指令执行流程,特别适合教学演示和算法原型验证。对于更复杂的数据排序需求(如第6题的降序排列),可基于现有案例扩展冒泡排序算法。

RubyWolf84的博客 430

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C51汇编求最大值

题目描述: 设在DAT开始的片内RAM中存放8个无符号字节数,求最大值,并将最大值存放在A中 输入数据: 55H,7BH,45H,80H,0F5H,0CH,23H,7BH最大值为:0F5H,所以A中应该保存0F5H 算法思想: 直接使用冒泡法即可,比较大小用减法和Cy来实现跳转 源代码: ORG 0000H LJMP INIT ORG 0100H INIT: ;初始化,...

qq_44658941的博客 283

蓝桥杯国赛DHT11温湿度传感器驱动:从时序破解到稳定读取实战

在嵌入式系统与物联网应用中,传感器是感知物理世界的关键部件,其核心在于通过特定的通信协议与微控制器进行可靠的数据交换。单总线协议作为一种节省IO资源的经典数字接口,其原理要求主机通过精确的时序控制来完成启动、应答和数据位读写。掌握其时序破解与状态机设计,对于构建健壮的数据采集系统具有重要技术价值,尤其在环境监测、智能家居等需要稳定获取温湿度数据的场景中。本文以蓝桥杯国赛常见的DHT11温湿度传感器为具体载体,深入剖析其单总线通信的底层细节,并提供从精准延时实现、驱动代码编写到软件滤波与抗干扰处理的完整工程实

weixin_34413802的博客 316

数据结构实验快速排序、冒泡排序算法(交换排序),使用STM32单片机测试(学计算机综合考试408悟单片机系列)

快速排序和冒泡排序均属于交换排序范畴,意味着其基本操作是交换两数。 快速排序,顾名思义快速的排序,毫无遮拦得介绍了自己得特征。而冒泡排序也正如其名称,如同养鱼冒泡一样慢条斯理锝排序。(说笑了,哈哈哈) 下面言归正传,介绍两种排序得原理和详细的测试过程。 首先,上考点 快速排序和冒泡排序的性质 算法名称 时间复杂度 空间复杂度 是否稳定 最好情况 平均情况 最坏情况 快速排序 O(n) O(n²) O(n²) O(

Fairchild_1947的博客 2284

c51语言写数据排序程序,单片机C语言 数据排序实验.doc

单片机C语言 数据排序实验实验二 数据排序实验一、实验目的1. 熟悉51指令系统,掌握程序设计方法。2. 掌握排序程序的设计方法。二、实验内容1. 本例程采用交换排序法将内部RAM 中的30~39H 单元中的10个单字节无符号二进制数按从小到大的次序排列,将排序后的数据中的最大的一个数和最小一个数去掉,求其他八个数的和,和放40H,41H中, 求这八个数的平均值,放在50H中。三、实验步骤1...

weixin_34534456的博客 2471

51单片机冒泡排序_采用冒泡法编写51单片机排序程序

试设计一个子程序,其功能为将(R0)指出的内部RAM中6个单字节正整数按从小到大的次序重新排列。悬赏分:10 - 解决时间:2010-5-7 22:59;========================================最佳答案:下列程序使用冒泡法排序,经过KEIL仿真测试通过。ORG 0000H;------------------------下面先准备6个数字MOV 40H, #...

weixin_35538624的博客 4299

4.汇编实现排序

用汇编实现排序 文章目录题目重述问题分析以及求解思路程序代码 题目重述 写一段程序将内部RAM从30H开始的十个无符号数按增序排序。 问题分析以及求解思路 汇编简单实现的冒泡排序法 程序代码 ORG 0000H MOV 30H,#35H MOV 31H,#57H MOV 32H,#65H MOV 33H,#0FFH MOV 34H,#01H MOV 35H,#47H MOV 36H,#87H MOV 37H,#0EH MOV 38H,#55H MOV 39H,#76H MAOPAO:MOV R7,

weixin_44108271的博客 1809

51单片机冒泡排序_冒泡排序___(51单片机编程)

;冒泡排序;十个数从小到大排序ORG 0000HMOV 60H,#02H;给60-69H存储单元送初值MOV 61H,#05HMOV 62H,#03HMOV 63H,#07HMOV 64H,#09HMOV 65H,#14HMOV 66H,#13HMOV 67H,#08HMOV 68H,#01HMOV 69H,#12HMOV R0,#60HMOV R1,#61HL2:MOV A,@R0MOV 50H...

weixin_39639174的博客 1473
上一篇: SQL编程(1)--创建表
下一篇: 汇编语言实现跑马灯 8051单片机
EncodedStar
博客等级 码龄10年 2614粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值