汇编语言-冒泡排序

  数组排序
1. 题目: 将一个数组的所有元素排序后输出
2.要求:给定一个数组,数组包含10个整型元素,将其按照从小到大的顺序排列后输出,要求排序的算法用子程序来实现。
例如,输入的数组元素为1,3,-9,5,12,0,-3,-12,24,34,那么输出是:-12,-9,-3,0,1,3,5,12,24,34。


  1 ; Example assembly language program --
2 ; Author: karllen
3 ; Date: revised 05/2014
4
5 .386
6 .MODEL FLAT
7
8 ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
9
10 INCLUDE io.h ; header file for input/output
11
12 cr EQU 0dh ; carriage return character
13 Lf EQU 0ah ; line feed
14
15 .STACK 4096 ; reserve 4096-byte stack
16
17 .DATA
18 i DWORD ?
19 j DWORD ?
20 temp DWORD ?
21 promot1 BYTE "Please Enter ten numbers to sort from min to max",cr,Lf,0
22 array DWORD 10 DUP(?)
23 promot2 BYTE "The numbers that are sorted is",cr,Lf,0
24 value BYTE 11 DUP(?)
25 BYTE cr,Lf,0
26
27 .CODE
28
29 sortArray PROC NEAR32
30 push ebp ;建立堆栈
31 mov ebp,esp
32
33 mov i,0
34 mov edx,10
35 ; mov ebx,[ebp+8] ;取得数组地址
36 sortFirst:
37 mov ebx,[ebp+8]
38 inc i
39 cmp i,9
40 jg endsortFirst ;大于9则跳转,
41
42 sub edx,i ;求edx-i
43 mov j,0
44 sortSecond:
45 inc j
46 cmp j,edx
47 jg endsortSecond ;大于10-i则转移
48 mov eax,[ebx]
49 mov ecx,[ebx+4]
50
51 cmp eax,ecx ; cmp [ebx],[ebx+4]
52 jl endCMP ;[ebx]<[ebx+4]则转移
53
54 mov edx,eax
55 mov [ebx],ecx
56 mov [ebx+4],edx
57
58
59 ;swap
60 endCMP:
61 add ebx,4
62 mov edx,10
63 jmp sortSecond
64
65 endSortSecond:
66 jmp sortFirst
67 endsortFirst:
68
69 pop ebp
70 ret
71
72 sortArray ENDP
73
74 _start:
75
76 output promot1
77 mov ecx,0
78 lea ebx,array
79
80 doFirstWhile:
81 inc ecx
82 cmp ecx,10
83 jg endFirstWhile ;大于10则结束
84
85 input value,11
86 atod value
87 mov [ebx],eax
88 add ebx,4
89 jmp doFirstWhile
90 endFirstWhile:
91
92 lea eax,array
93 push eax
94 call sortArray
95 add esp,4
96
97 output promot2
98 mov ecx,0
99 lea ebx,array
100
101 doSecondWhile:
102 inc ecx
103 cmp ecx,10
104 jg endSecondWhile
105 dtoa value,[ebx]
106 output value
107 add ebx,4
108 jmp doSecondWhile
109
110 endSecondWhile:
111
112 INVOKE ExitProcess, 0 ; exit with return code 0
113
114 PUBLIC _start ; make entry point public
115
116 END ; end of source code


汇编语言-冒泡排序,布布扣,bubuko.com

时间: 2024-10-17 04:40:09

汇编语言-冒泡排序的相关文章

汇编语言 实现的从小到大的冒泡排序

汇编实现的从小到大的冒泡排序 主函数由C语言实现,sort函数用汇编语言写 #include <stdio.h> int buffer[256];      //数据缓冲区 int  bufferlen=0;     //数据缓冲区数据个数 extern sort(int *buffer,int bufferlen);    //汇编函数sort接口 //********从键盘录入数据******** int InputDataFromKeyBoard(int *pBuffer) { int

汇编语言学习系列 冒泡排序实现

假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位). #include<stdio.h> void swap(int *p, int *q) { int tmp = *p; *p = *q; *q = tmp; } int main() { int a[] = {3, 0, 5, 1, 4, 6, 2, 9, 8, 7}; int i ,j; for(i = 0; i < 10; i++) { for(j = i + 1; j < 10;j++) { if

在Radasm下,汇编语言实现冒泡排序

.686p.model flat,stdcallOption casemap:none include windows.incinclude kernel32.incinclude masm32.incincludelib "d:\vs\msvcrt.lib" includelib masm32.libincludelib kernel32.libprintf PROTO C:dword,:varargscanf PROTO C:dword,:vararg .data hello db

汇编语言基本概念汇总

汇编语言应该是我们现在学的最"低级"的语言了,因为现在不会再有人去学机器语言了.而汇编语言还在一些硬件或者嵌入式设备上使用并开发着.以下资料是为了大学的汇编考试整理的资料,现在与大家分享,希望能给大家提供帮助. 汇编语言程序设计汇总 计算机主要由运算器.控制器.存储器和输入输出设备五大部件构成. 字长word是指微处理器内部一次可以并行处理二进制代码的位数,它与微处理器内部寄存器以及CPU内部数据总线宽度是一致的,字长越长,所表示的数据精度就越高. 内存是由若干个存储单元组成,每个单元

存储器的保护(一)——《x86汇编语言:从实模式到保护模式》读书笔记18

本文是原书第12章的学习笔记. 说句题外话,这篇博文是补写的,因为让我误删了,可恶的是CSDN的回收站里找不到! 好吧,那就再写一遍,我有坚强的意志.司马迁曰:“文王拘而演<周易>:仲尼厄而作<春秋>:屈原放逐,乃赋<离骚>:左丘失明,厥有<国语>:孙子膑脚,<兵法>修列:不韦迁蜀,世传<吕览>……”好了,不煽情了,进入正题. 第12章的代码如下. 1 ;代码清单12-1 2 ;文件名:c12_mbr.asm 3 ;文件说明:硬盘主引

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定

汇编语言入门:流程控制

流程控制:顺序,分支,循环 程序计数器PC中存储当前执行的程序在EM中的位置 汇编里面,用比较.跳转实现流程控制. 1.顺序:PC+1(不一定加一,看指令长度) 2.分支循环,直接赋给PC值,执行指定地址的程序 有时候需要程序有一定的流程控制能力,它不是老老实实按照顺序来执行的,中间可能会跳过一些代码 修改PC值,不可用MOV指令,PC是特殊的寄存器,特殊对待,跳转指令修改其值. 跳转指令: 1 ja 大于时跳转 2 jae 大于等于 3 jb 小于 4 jbe 小于等于 5 je 相等 6 j

php实现冒泡排序

一个程序应包括:对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure).对操作的描述:即操作步骤,也就是算法(algorithm).Nikiklaus Wirth提出的公式:程序=数据结构+算法作为一个程序员必须得懂点算法啊,就从最简单的开始吧=>冒泡排序 维基百科的说法 冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列