汇编语言:冒泡排序算法
题目描述
自定义一组有首地址为data的10个字的数组,请利用冒泡排序算法来编写程序,使该数组中的数按照从小到大的次序有序化。(注:10个字可以自己定义。)

datas segmentdata1 dw 7,5,3,2,6,9,10,1,8
datas ends

冒泡排序是一种较为简单的排序算法,需要使用嵌套循环。每一个外循环会将未排序数据中的最大值排到末尾,每一个小循环会将相邻两个数比较大小,从而使较大的数下沉,较小的数上浮。
本题中,我们需要使用条件转移指令,比较指令(CMP),交换指令(XCHG)。值得一提的是,CMP和XCHG的两个操作数不能同时为内存中的数据,但可以一个是寄存器,一个是内存数据。所以,在比较和交换数据的时候,我们需要将其中一个内存数据放到寄存器中。
(代码中有注释,可直接看代码)

思路:
将循环次数放入CX(设需要排序的数据有N个,则需要执行N-1个循环,即此时应MOV CX,9)。
1.CX-1判断CX是否符合循环条件,当CX=0时,程序结束;否则,SI置零,BX置2倍的CX作为小循环的判断条件(若数据使用DB定义则无需使用BX,可直接使用CX);
2.将DATA1[SI]放入AX寄存器中,并与DATA1[SI+2]作比较(由于本体数据定义时DW,所以用+2,若使用DB定义数据则应+1),若小于等于,则执行第3步;否则交换DATA1[SI]和DATA1[SI+2];
3.比较SI和BX,相等时执行第1步,否则,SI+2,跳转到第二步。
以上就是一个较为简单的冒泡排序法步骤,接下来看代码:

DATAS SEGMENTDATA1 DW 7,5,3,2,6,9,10,1,8
DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS
START:MOV AX,DATASMOV DS,AXMOV CX,9
L1:                     ;最外层循环MOV SI,0          ;设置SI为零         CMP CX,0            ;判断循环是否结束JE EXITDEC CX              ;cx-1MOV BX,CXADD BX,CX         ;将bx置为cx的2倍,用来判断SI结束时的大小;若数据以字节定义,则只需要将bx置为cx即可
L2:MOV AX,DATA1[SI] ;不能直接比较内存中的数字,所以我们需要将其中一个数字放到寄存器AX中CMP AX,DATA1[SI+2]   ;比较两个数JLE L3                ;小于等于的话,则直接跳到下一对数据的比较XCHG AX,DATA1[SI+2]    ;若大于,则通过两个XCHG语句,交换两内存中的数字XCHG AX,[SI];内层循环结束时跳到外层循环
L3:CMP SI,BXJE L1ADD SI,2           ;si+2,开始下一对数的比较JMP L2
EXIT:MOV AH,4CHINT 21H
CODES ENDSEND START

排序结果
冒泡排序前运行前内存数据内容:

冒泡排序后:

冒泡排序运行正确,此题目完成!

汇编语言:冒泡排序算法将10个数按从小到大顺序排列相关推荐

  1. 计算机编程输入3个数排序,汇编语言 输入10个数排序并输出的实现

    一:题目描述 在键盘输入任意10个数 按从小到大排序后,在计算机屏幕上先输出来.要有结果提示(字符串显示). 将10个数做累加,结果在计算机屏幕显示累加和. 二:伪指令的定义 1.数据段 ATAS S ...

  2. c语言输入10个数从小,C语言中,从键盘输入10个数,从小到大排列输出,怎

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:C语言中,从键盘输入10个数,从小到大排列输出,怎么写啊,最好注回答:#includestdio.h void swap(int * ...

  3. 10个数冒泡排序法c语言代码,输入10个数用冒泡法排序

    输入10个数,用冒泡排序法按由小到大顺序排序并输如下参考: #包括< stdio, h > Intmain() { Inta[10]={0}: IntI=0,j=0,t=0: For (I ...

  4. 输入10个数,根据提示进行从小到大输出或从大到小输出

    Description 从键盘输入一个字符和10个整数,若输入字符是'A',将这10个数按从小到大的顺序输出:若输入字符是'D',则按从大到小输出:若输入其他字符,就结束. Input 多组测试数据, ...

  5. 【经典算法实现 3】冒泡排序算法(单向冒泡,双向冒泡)

    [经典算法实现 3]冒泡排序算法 及 算法优化 一.单向冒泡排序算法 O(n^2)(从小到大) 1. 核心算法实现 2. 代码实测 二.双向冒泡排序算法 O(n^2)(从小到大) 1. 核心算法实现 ...

  6. Java | 用Java实现冒泡排序算法

    冒泡排序算法 冒泡排序算法思路:(以从小到大为例) 从第一个元素开始,相邻的两个元素比较,若前者比后面的大,则两者交换顺序: 一次比较后,从第二个元素开始,相邻的仍遵循大者后移的规律完成一轮遍历: 一 ...

  7. c语言找出最大值和最小值并按降序排输出,C语言用排序法给十个数降序排列,用C语言编写,输入10个数按降序排列...

    问题标题 C语言用排序法给十个数降序排列,用C语言编写,输入10个数按降序排列 2019-6-4来自ip:14.161.145.86的网友咨询 浏览量:562 手机版 问题补充: C语言用排序法给十个 ...

  8. 10个数冒泡排序流程图_(立下flag)每日10道前端面试题01

    1 对象数组如何去重? 开始的时候一脸懵逼,心里想着每个对象的内存地址本身就不一样,去重的意义何在,非要去重的话,那只能通过JSON.stringify序列化成字符串(这个方法有一定的缺陷)后进行对比 ...

  9. 10个数冒泡排序流程图_C语言 | 冒泡排序

    "要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人-万中无一" --包租婆这道理放在C语言学习上也一并受用.在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语 ...

最新文章

  1. Numpy入门教程:04. 数学函数
  2. DBCP数据库连接打满原因分析
  3. 简单聊下中台概念与发展
  4. yolov5-face无关键点测试
  5. (五)Java工具类ArrayUtils详解
  6. FreeRTOS 之五 动态内存管理(heap_1.c)详解
  7. [SCOI2012]滑雪 (最小生成树 Kruskal)
  8. 使用Tomcat部署应用
  9. gcovr 安装_Kudu 1.8.0 编译安装配置
  10. 机器学习中的Numpy库基础——向量、矩阵和数组
  11. android语言切换快捷键,Android的语言设置两种方法
  12. 使用PHPExcel实现Excel文件的导入和导出(模板导出)
  13. java编译成exe_java编译成exe
  14. 8uftp,什么是8uftp
  15. Github desktop界面全白怎么办?[已解决]
  16. 打开Chrome浏览器显示“喔唷 崩溃啦”错误的解决方法
  17. Clion安装及相关环境(MinGW和OpenOCD)的配置及利用Clion点亮led灯
  18. 电话簿管理系统(超详细)
  19. 2022计算机考研统考的院校有哪些,2022考研初试科目都有哪些?
  20. 【OpenSEES新材料/单元开发教程】第一讲 综述

热门文章

  1. android+qq登录测试,对于android的第三方(QQ登录,微信登录等的)测试时的签名配置...
  2. Java黑皮书课后题第5章:**5.17(显示金字塔)编写程序,提示用户输入一个在1到15之间的整数,然后显示一个金字塔形状的图案
  3. Java黑皮书课后题第2章:*2.8(当前时间)程序清单2-7给出了显示当前格林尼治时间的程序。修改这个程序,提示用户输入相对于GMT的时区偏移量,显示在这个特定时区的时间
  4. 自制一个 简易jQuery 的 API
  5. JAVA web 会话技术CookieSession
  6. 通过zookeeper连接hive beeline
  7. JavaScript中闭包实现的私有属性的getter()和setter()方法
  8. ndroid网络(4):HttpClient必经之路----使用线程安全的单例模式HttpClient,及HttpClient和Application的融合...
  9. 在ASP.NET MVC 4中使用Kendo UI Grid
  10. ASM上的备份集如何转移到文件系统中