AT&T汇编之冒泡排序

汇编语言实现冒泡排序 文章目录题目简述思路代码总结 题目简述 给定10个数,使用汇编语言,实现10个数的冒泡排序,使之成为升序 思路 本题中,我们需要使用条件转移指令,比较指令(CMP),交换指令(XCHG)。值得一提的是,CMP和XCHG的两个操作数不能同时为内存中的数据(本文章将不详细讲解原因,想知道原因的可以自己去百度哦),但可以一个是寄存器,一个是内存数据。所以,在比较和交换数据的时候,我们需要将其中一个内存数据放到寄存器中。 思路: 1.本题采用双字节存储,首先用cx记录外套循环次数,每次大循环后,次数-1,每次将c 阅读详情

冒泡排序,这个已经很多年没有写过的算法,今天没事干用AT&T汇编实现了一遍,下面就来说说怎么用汇编来实现这个冒泡排序算法。

示例数组: 11, 9, 8, 8, 7, 10

冒泡排序的思想就是两两交换,直到数组有序为止。

过程分析:

1st:   9, 11
	   9, 8, 11
	   ...
	   9, 8, 8, 7, 10, 11     冒泡出了一个最大的数字11
2nd:   8, 9
	   8, 8, 7, 9, 10, 11     冒泡出了第二大的数字10(这里比较巧合,9正好是第三大的数字,无视)
3rd:   8, 7, 8, 9, 10, 11     第三大9
4th:   7, 8, 8, 9, 10, 11     8
5th:   7, 8, 8, 9, 10, 11     没有发生交换,已然有序,直接终结算法

每次交换一轮可冒泡出一个最大的数字,对于长度为N的数组,只需交换N-1轮即可。
每交换一轮,下一轮会少一次交换。
如果某一轮没有发生交换,说明数组已经有序,直接终结算法。

综上,需要用双重循环,O(N^2)的算法来实现。

首先声明,本文对于数组有两种表示法,seq表示法,下标从1开始;index表示法,下标从0开始。伪代码一律用seq表示法,实现代码由于使用C++或者ASM,故需要转换为index表示法。

##方法1:

首先我们用seq表示法和index表示法来求出i和j的界限:

** seq_i(1, len-1)

#seq: i=1,max_j=len-1  i=2,max_j=len-2   =>  max_j=len-i
** seq_j(1, len-i) <=> index_j(0, <len-i)

伪代码:

BUBBLE_SORT(A)
	len = A.length
	swap = false
	for i in 1..len-1 do
		for j in 1..len
AT&T汇编---第一个linux汇编程序 前一阵子开始为了探索程序底层的奥秘,重新学习了汇编语言,主要是linux的主要的语法AT&T语法格式!参考数目:--《Professional AssemblyLanguage》 (美)Richard Blum著本来我想自己翻译来看,不过看到有本书翻译的很好,就不自己献丑了!--《汇编语言程序设计》机械工业出版社  (美)Richard Blum著 ,马朝晖等译 阅读详情

相关推荐

Pspice开关电源仿真:从零实现反激式电源设计实战案例

通过Pspice仿真工具,手把手实现反激式开关电源的设计与优化,深入剖析关键参数设置与波形分析,帮助掌握Pspice在电源开发中的实际应用技巧。

weixin_35756690的博客 1153

32位ALU设计(verilog实现)

32位ALU设计 ​ 算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。算术逻辑单元是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。 设计思路 设计实现 仿真测试 文章目录32位ALU设计一、设计

Destiny的博客 4万+

BrainVision Recorder 和 BrainVision Analyzer 2.2 安装

本篇为《EEG处理》系列博客的第二篇,该系列博客主要记录EEG信号处理的学习过程中的软件安装和学习过程,方便以后查阅。本篇为BrainVision Recorder 和 BrainVision Analyzer 2.2 的安装过程。 BrainVision Recorder 和 BrainVision Analyzer 2.2 安装安装前奏Brain Vision Analyzer分析软件 安装Brain Vision Recorder记录软件 安装推荐几款个人使用的科研软件 安装前奏 Brain V

梁小憨憨的博客 5059

PLC集群管理:C#上位机实现10台以上分布式PLC的集中监控与指令下发

本文介绍了一套基于C# WPF开发的PLC集群管理系统,用于解决现代工业自动化产线中分布式PLC监控难题。系统采用三层解耦架构,支持100台以内不同品牌PLC的集中管理,具备批量数据采集、指令下发、实时报警等功能。核心创新点包括:1)基于异步IO的连接池管理;2)统一通信接口设计;3)寄存器合并优化算法;4)三级优先级指令队列。实际应用表明,系统数据采集延迟低于100ms,指令下发成功率99.9%,有效解决了传统单PLC监控模式存在的效率低下问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 506

本地部署 OpenClaw:让 AI 真正“干活”的开源智能体,从核心概念到实战全流程

在大模型遍地开花的今天,我们早已习惯与 AI 聊天,但真正能**接管本地任务、自动化工作流**的“数字员工”却寥寥无几。OpenClaw 正是这样一款开源利器——它不仅是可本地运行的 AI 私人助理,更像一个“AI 操作系统内核”,能读写文件、执行终端命令、控制浏览器,所有数据本地存储,兼顾隐私与效率。而 Skills 作为它的标准化插件系统,更是让这份能力无限扩展。 本文将从核心概念拆解入手,再分系统给出**保姆级本地部署步骤**,包含环境准备、安装配置、技能安装与验证,甚至覆盖新手最易踩的坑,让你一次

ZhangJiqun&191cm&85kg 2500

第八届传智杯WPS智能办公能力挑战赛练习题库

本文是关于WPS Office软件操作知识的选择题汇总,内容涵盖WPS文字、表格和演示三大组件的常用功能。主要包括:云文档协同编辑、文本框插入、幻灯片打印设置、数据排序与筛选、函数应用(如SUMIF、COUNT)、动画效果设置、格式刷使用、页眉页脚设置、单元格引用类型等基础操作要点。同时涉及计算机基础概念如二进制、ROM存储器等。题目以单选和多选形式呈现,附带详细答案解析,全面检验用户对WPS办公软件的功能掌握程度和实际操作能力,适用于办公软件技能培训和水平测试。

qq_73044452的博客 1423

【系统分析师】2025年下半年真题:论文及解题思路

摘要 本文探讨软件测试技术的应用,重点关注静态测试与动态测试的比较。静态测试在不运行程序的情况下,通过审查、走查等方式分析需求、设计文档和代码,能早期发现高层次缺陷,降低修复成本。动态测试通过实际运行程序,使用单元测试、集成测试等方法验证功能性能,是发现运行时错误的唯一途径。二者在缺陷类型、介入阶段和修复成本上具有互补性,建议项目实践中结合使用以提升软件质量。

数据知道的博客 5785

AutoSAR实验视频讲解:相关资料下载

AutoSAR实验视频讲解:闪烁一颗LED实验【相关资料下载】 总目录 为了方便大家自己的实验顺利进行,这里我们准备了一些实验中可能用到的资料供大家使用 介绍 这里主要是三个文件: MyApp_Core.0是我们的用户代码,在工程集成那集将会讲解 McalConfig.arxml就是我们的Mcal导出文件,用于导入到DaVinci中生成代码 CAN.dbc文件是我们的通信矩阵文件 以上几个文件都是简单的配置,不具有实际项目的实用性,大家仅供参考 // 顺便吐槽一句:百度网盘的吃相真的难看 下载连接

雪云飞星的博客 6668

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: AT&T汇编之使用C库函数
FreeeLinux
博客等级 码龄11年 421粉丝 356原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值