冒泡排序算法的运作如下:(从后往前)

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

以下为实现代码:

S0 SEGMENT STACK

DW 30 DUP(?)

TOP LABEL WORD

S0 ENDS

S1 SEGMENT

TIP DB "Input ten number and separate the numbers with space:", 0DH, 0AH, 24H

ARY DW 20 DUP(0)

CRLF DB 0DH, 0AH, 24H

N DW 0

S1 ENDS

S2 SEGMENT

ASSUME SS:S0, DS:S1, CS:S2, ES:S1

P PROC FAR

MOV AX, S0

MOV SS, AX

LEA SP, TOP

MOV AX, S1

MOV DS, AX

MOV AX, S1

MOV ES, AX

LEA DX, TIP

MOV AH, 9

INT 21H

LEA SI, ARY

XOR DX, DX

MOV BL, 10

MOV CX, 10

INPUT: MOV AH, 1

INT 21H

CMP AL, 20H ;空格分隔字符

JE SAVE

;输入十进制数,将数存入SI对应的内存单元

MOV DL, AL

MOV AX, [SI]

MUL BL

SUB DL, 30H

ADD AL, DL

MOV [SI], AX

JMP INPUT

SAVE:

ADD SI, 2

LOOP INPUT

;数组保存完毕

LEA SI, ARY

MOV DI, SI

ADD DI, 2

MOV CL, 9

MOV CH, 9

CMPA: MOV BX, [DI]

CMP BX, [DI-2]

JA CON

MOV DX, [DI-2]

PUSH DX

MOV [DI-2], BX

POP DX

MOV [DI], DX

CON: ADD DI, 2

DEC CH

CMP CH, 0

JNE CMPA

CALL PRINT

MOV DI, SI

ADD DI, 2

DEC CL

MOV CH, CL

CMP CL, 1

JNE CMPA

;以下为十进制输出ARY中的数

EXIT: MOV AH, 4CH

INT 21H

P ENDP

PRINT PROC NEAR

PUSH SI

PUSH CX

PUSH AX

PUSH DX

LEA DX, CRLF

MOV AH, 9

INT 21H

LEA SI, ARY

MOV CX, 10

L1: MOV AX, [SI]

MOV N, AX

CALL OUTPUT

ADD SI, 2

MOV DX, 20H

MOV AH, 2

INT 21H

LOOP L1

POP DX

POP AX

POP CX

POP SI

RET

PRINT ENDP

OUTPUT PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

XOR CX, CX

MOV AX, N

MOV BX, 10

L2: XOR DX, DX

DIV BX

PUSH DX

INC CX

CMP AX, 0

JNE L2

L3: POP DX

ADD DX, 30H

MOV AH, 2

INT 21H

LOOP L3

POP DX

POP CX

POP BX

POP AX

RET

OUTPUT ENDP

S2 ENDS

END P

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

c51汇编语言冒泡排序,汇编实现冒泡排序的方法示例相关推荐

  1. Java黑皮书课后题第7章:**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法。编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字

    **7.18(冒泡排序)使用冒泡排序算法编写一个排序方法.编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字 题目 题目描述 冒泡排序法 / 下沉排序法 破题 代码 运 ...

  2. MIPS汇编实现冒泡排序法

    要求: 利用MIPS汇编实现冒泡排序法 初始化数据为:8,6,3,7,1,0,9,4,5,2 代码实现与解释: 数据: 主函数 排序函数: SWAP函数(交换数组当中两个元素) 输出函数: 运行程序: ...

  3. keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法

    前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...

  4. keil延时c语言程序设计,Keil C51程序设计中几种精确延时方法

    引言 单片机因具有体积小.功能强.成本低以及便于实现分布式控制而有非常广泛的应用领域[1].单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖.数据传输等操作都要在程序中插入一 ...

  5. STC8H8K系列汇编和C51实战——实现键控不同方式数码管动态显示(C51版和汇编版)

    51和汇编分别实现键控不同方式数码管动态显示 前言 一.实验名称 二.实验内容与要求 三.代码 1.51部分 2. 汇编部分 总结 系列文章--STC8H8K系列汇编51实战 前言 个人对这个实验的汇 ...

  6. 【汇编语言】汇编实验IDE(集成开发环境):RadASM的安装和使用说明

    0 前言 本文适合8086CPU的指令集. 对于重要的专业基础课程,汇编语言,做实验是必不可少的,但是由于汇编语言本身的缺陷,现代计算机并不能直接运行汇编语言程序,因此,一般老师会要求我们 使用虚拟机 ...

  7. 汇编语言基础--汇编操作指令概述

    本文是接续"汇编语言基础--机器级数据存储",主要介绍汇编指令的构造.寻址和指令主要分类. 操作指令 指令的基本要素:       在"计算机处理器(CPU)基础&quo ...

  8. php冒泡排序 优点,php冒泡排序是什么意思

    在php的排序方法中,有一种排序可以和生活中的理念结合在一起.我们观察泡泡往上升的时候,从下到上的泡泡是越来越大的,所以冒泡排序的理念正式如此,同时也是它名称的由来.下面我们就冒泡排序的概念和原理进行 ...

  9. 冒泡排序、冒泡排序动画、冒泡排序代码、冒泡排序教程

    冒泡排序.冒泡排序动画.冒泡排序代码.冒泡排序教程 点击下载代码 推箱子代码 碰撞检测穿马路.小人过马路 魔幻粒子.火焰动画 开心消消乐 16宫格的翻牌消除游戏 我的世界小人行走代码 超级玛丽 赣极方 ...

最新文章

  1. VMware下安装Ubuntu不支持1920X1080分辨率问题
  2. Matlab 预防性维修,使用 MATLAB 进行预测性维护简介
  3. 如何在Hybris commerce里创建一个media对象
  4. android 首页布局变换,Android XML布局与View之间的转换
  5. 怀旧服开新服务器消息,怀旧服B测已经开启 全新内容爆料汇总
  6. 为什么说“大公司的技术顽疾根本挽救不了”?
  7. 引起 Edge 浏览器远程代码漏洞的幕后黑手已出现!
  8. springboot源码解析autoconfigure之AopAutoConfiguration
  9. HTML资产负债表和收入支出表(可动态更新)
  10. LISnlogn写法
  11. GNN在推荐系统的应用——>GC-MC与STAR-GCN
  12. 哪里买linux虚拟主机的,怎样购买虚拟主机
  13. 软考科目那么多,该报哪个?
  14. 隐匿的风暴,Saas海啸正瞄准企业IT业务
  15. LC并联谐振电路的原理
  16. 丁磊、马云、马化腾的个性差异
  17. 计算机科学与基础 简答题,计算机科学基础习题与解析
  18. 更改awr快照保存时间_如何更改OS X中屏幕快照的保存位置
  19. 华为前副总裁李玉琢:华为无法培养出企业家
  20. 如何写出一流期刊文章

热门文章

  1. Linux 入门级 常用命令 日常记录
  2. FMDB数据库损坏 database disk image is malformed, code:11
  3. 23考研660数一数二数三221题,微分方程
  4. 网络地址转换NAT和代理服务器
  5. 手写数字体识别,用保存的模型跑自己的图片
  6. 化学实验室大型仪器设备管理系统
  7. 银行卡密码键盘 SM4 ECB模式+ANSI X9.8 格式标准(带主账号信息)PIN 加解密示例
  8. 软卧车厢购票性别分配:技术实现与社会效应
  9. Https完全协议详解
  10. Ubuntu 安装openjdk