#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(a[i] > a[j]){
swap(&a[i], &a[j]);
}
}
}
int k;
for(k = 0; k < 10; k++)
{
printf("%d\n", a[k]);
}
return 0;
}
.section .data
array: .int 3, 0, 5, 1, 4, 6, 2, 9, 8, 7
len: .int 10
format: .asciz "%d\n"
.section .text
.global _start
_start:
pushl %ebp
movl %esp, %ebp
subl $20, %esp #allocate space
movl $array, %eax
movl %eax, (%esp) #store &array on the stack
movl len, %eax
movl %eax, 4(%esp) #store len on the stack
call sort
call parray
movl $0, (%esp) #deallocate space
call exit
sort: #3, 0, 5, 1, 4, 6, 2, 9, 8, 7
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp #allocate space
movl 8(%ebp), %edx #get &array
movl 12(%ebp), %ebx #get len
movl $0, %ecx #init i=0
cmp %ecx, %ebx
jle .done
leal 1(%ecx), %eax #init j=i+1
cmp %eax, %ebx
jle .L1
.L2:
movl (%edx, %ecx, 4), %esi #get a[i]
movl (%edx, %eax, 4), %edi #get a[j]
cmp %edi, %esi
jl .C1
leal (%edx, %ecx, 4), %esi
movl %esi, (%esp)
leal (%edx, %eax, 4), %esi
movl %esi, 4(%esp)
call swap
inc %eax
cmp %eax, %ebx
jle .L1
jmp .L2
.C1:
inc %eax
cmp %eax, %ebx
jle .L1
jmp .L2
.L1:
inc %ecx
cmp %ecx, %ebx
jle .done
leal 1(%ecx), %eax #init j=i+1
cmp %eax, %ebx
jle .L1
jmp .L2
swap:
pushl %ebp
movl %esp, %ebp
pushl %eax
pushl %ebx
pushl %ecx
pushl %edx
movl 8(%ebp), %edx #get p
movl 12(%ebp), %ecx #get q
movl (%edx), %ebx
movl (%ecx), %eax
movl %eax, (%edx)
movl %ebx, (%ecx)
popl %edx
popl %ecx
popl %ebx
popl %eax
popl %ebp
ret
.done:
addl $20, %esp
popl %ebx
popl %ebp
ret
parray: #打印数组
pushl %ebp
movl %esp, %ebp
push %ebx
movl 8(%ebp), %edx #get &array
movl 12(%ebp), %ebx #get len
movl $0, %ecx
cmp %ecx, %ebx
jle .done2
.loop:
movl (%edx, %ecx, 4), %eax
call print
inc %ecx
cmp %ecx, %ebx
jg .loop
.done2:
popl %ebx
popl %ebp
ret
print:
pushl %edx
pushl %ecx
pushl %eax
pushl $format
call printf
addl $8, %esp
popl %ecx
popl %edx
ret
相关推荐
### Win32汇编语言实现冒泡排序 #### 一、背景 随着现代软件开发的不断进步和发展,大型软件项目通常不再使用汇编语言作为主要编程语言,这主要是因为汇编语言编写耗时且不易维护。然而,在某些特定场景下,如硬件...
在汇编语言中实现冒泡排序,需要对汇编语言的基本语法、数据处理以及循环结构有深入的理解。 在汇编语言中,我们首先需要定义一个存储输入数字的数组。由于题目要求输入10个有符号十进制整数,我们可以分配一段内存...
汇编语言编写的冒泡排序,代码简单明了,容易看懂
汇编语言编写的冒泡排序程序代码,从小到大排序,并以十进制字符串的形式输出排序结果。
用汇编语言编写的冒泡排序,从键盘上输入若干数字,进行冒泡排序后将结果显示在屏幕上
MIPS-汇编语言-冒泡排序-含伪代码以及完整注释,可以直接使用
综上所述,通过汇编语言实现冒泡法排序是一个很好的学习汇编基础知识和算法实现的过程。从标签中我们可以看出,这个主题涵盖了汇编语言的基础知识,排序算法的原理,以及详细的解释,非常适合想要在IT领域深化学习的...
本实验的主要目的是掌握汇编语言的基本编程技术,包括子程序编程、函数嵌套、循环嵌套、串处理等,并通过冒泡排序算法的实现来加深对汇编语言的理解。 二、实验内容 本实验的主要内容包括: 1. 程序设计 程序由 1...
总之,这份课程设计报告不仅提供了汇编语言下冒泡排序程序的具体实现方案,更重要的是,它引导学生通过实践学习,掌握了汇编语言编程的基础,理解了算法设计的核心思想,为今后更深层次的计算机科学学习打下了坚实的...
x8086汇编语言实现冒泡排序,实现原理BCD码加ASCII码,输入个数任意,最大支持四位数
通过对程序代码的详细解析,我们可以更深入地理解冒泡排序的工作机制以及如何在汇编语言环境中实现这样的排序算法。对于学习计算机科学的学生或者从事相关领域的开发者而言,这不仅是一次编程实践的体验,也是对...
**冒泡排序是一种基础但实用的排序算法,其基本思想是通过不断交换相邻的逆序元素,逐步将待排序序列...通过对这段代码的分析,你将进一步理解ARM汇编语言如何实现冒泡排序的逻辑,并可能学习到一些特定的优化技巧。
汇编语言程序代码20个带符号数最大,最小,平均值问题
汇编语言冒泡排序汇编语言冒泡排序汇编语言冒泡排序
标题与描述概述的知识点是关于使用汇编语言实现冒泡排序算法的过程。在这个特定的上下文中,代码示例展示了如何在汇编语言中编写程序来输入一个数字序列,使用冒泡排序对其进行排序,并输出排序后的结果。下面将深入...
采用汇编语言冒泡法排序 本资源主要介绍了使用汇编语言实现冒泡法排序的过程,同时也包括8255的初始化程序和8259A的初始化编程。 Knowledge Point 1:汇编语言冒泡法排序 冒泡法排序是一种简单的排序算法,通过...
内容概要:本文详细介绍了如何使用 x86 汇编语言实现冒泡排序算法。首先阐述了冒泡排序的基本原理和步骤,然后通过具体的代码示例展示了汇编语言的编写过程,最后提供了环境准备、编译运行的方法以及验证结果的建议...
本篇汇编代码实现了ARM架构下的冒泡排序算法,通过巧妙利用ARM汇编语言中的各种指令来完成排序任务。这种排序方式虽然简单,但对于理解低级别编程和处理器架构具有重要意义。此外,通过实践这类代码,可以加深对ARM...
在keil中汇编语言实现冒泡排序,实现一个数的冒泡排序方法,这个是汇编源代码,大家可以借鉴一下
### 汇编语言冒泡法排序 #### 知识点概述 本篇文章将详细介绍如何在汇编语言中实现冒泡排序算法,并通过一个具体的示例程序来展示其工作原理。该程序包含了丰富的注释,有助于读者更好地理解和学习汇编语言中的...