c51汇编语言冒泡排序,汇编实现冒泡排序的方法示例
冒泡排序算法的运作如下:(从后往前)
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汇编语言冒泡排序,汇编实现冒泡排序的方法示例相关推荐
- Java黑皮书课后题第7章:**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法。编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字
**7.18(冒泡排序)使用冒泡排序算法编写一个排序方法.编写一个测试程序,读取10个double型的值,调用这个方法,然后显示排序好的数字 题目 题目描述 冒泡排序法 / 下沉排序法 破题 代码 运 ...
- MIPS汇编实现冒泡排序法
要求: 利用MIPS汇编实现冒泡排序法 初始化数据为:8,6,3,7,1,0,9,4,5,2 代码实现与解释: 数据: 主函数 排序函数: SWAP函数(交换数组当中两个元素) 输出函数: 运行程序: ...
- keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法
前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...
- keil延时c语言程序设计,Keil C51程序设计中几种精确延时方法
引言 单片机因具有体积小.功能强.成本低以及便于实现分布式控制而有非常广泛的应用领域[1].单片机开发者在编制各种应用程序时经常会遇到实现精确延时的问题,比如按键去抖.数据传输等操作都要在程序中插入一 ...
- STC8H8K系列汇编和C51实战——实现键控不同方式数码管动态显示(C51版和汇编版)
51和汇编分别实现键控不同方式数码管动态显示 前言 一.实验名称 二.实验内容与要求 三.代码 1.51部分 2. 汇编部分 总结 系列文章--STC8H8K系列汇编51实战 前言 个人对这个实验的汇 ...
- 【汇编语言】汇编实验IDE(集成开发环境):RadASM的安装和使用说明
0 前言 本文适合8086CPU的指令集. 对于重要的专业基础课程,汇编语言,做实验是必不可少的,但是由于汇编语言本身的缺陷,现代计算机并不能直接运行汇编语言程序,因此,一般老师会要求我们 使用虚拟机 ...
- 汇编语言基础--汇编操作指令概述
本文是接续"汇编语言基础--机器级数据存储",主要介绍汇编指令的构造.寻址和指令主要分类. 操作指令 指令的基本要素: 在"计算机处理器(CPU)基础&quo ...
- php冒泡排序 优点,php冒泡排序是什么意思
在php的排序方法中,有一种排序可以和生活中的理念结合在一起.我们观察泡泡往上升的时候,从下到上的泡泡是越来越大的,所以冒泡排序的理念正式如此,同时也是它名称的由来.下面我们就冒泡排序的概念和原理进行 ...
- 冒泡排序、冒泡排序动画、冒泡排序代码、冒泡排序教程
冒泡排序.冒泡排序动画.冒泡排序代码.冒泡排序教程 点击下载代码 推箱子代码 碰撞检测穿马路.小人过马路 魔幻粒子.火焰动画 开心消消乐 16宫格的翻牌消除游戏 我的世界小人行走代码 超级玛丽 赣极方 ...
最新文章
- VMware下安装Ubuntu不支持1920X1080分辨率问题
- Matlab 预防性维修,使用 MATLAB 进行预测性维护简介
- 如何在Hybris commerce里创建一个media对象
- android 首页布局变换,Android XML布局与View之间的转换
- 怀旧服开新服务器消息,怀旧服B测已经开启 全新内容爆料汇总
- 为什么说“大公司的技术顽疾根本挽救不了”?
- 引起 Edge 浏览器远程代码漏洞的幕后黑手已出现!
- springboot源码解析autoconfigure之AopAutoConfiguration
- HTML资产负债表和收入支出表(可动态更新)
- LISnlogn写法
- GNN在推荐系统的应用——>GC-MC与STAR-GCN
- 哪里买linux虚拟主机的,怎样购买虚拟主机
- 软考科目那么多,该报哪个?
- 隐匿的风暴,Saas海啸正瞄准企业IT业务
- LC并联谐振电路的原理
- 丁磊、马云、马化腾的个性差异
- 计算机科学与基础 简答题,计算机科学基础习题与解析
- 更改awr快照保存时间_如何更改OS X中屏幕快照的保存位置
- 华为前副总裁李玉琢:华为无法培养出企业家
- 如何写出一流期刊文章