assembly x86(nasm)选择排序
2024-09-05 23:42:06
有一个首地址为NUM的N字无序无符号整数数组,编制程序采用选择排序法使该数组中的数按照从小到大的次序排序输出。
选择排序:
data segment
message db 'This is a program of Selection sort',0dh,0ah,'$'
NUM dw ,,,,, ;0ch,4eh,37h,4h,7dh,60h
count db $-NUM
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset message
mov ah,
int 21h
xor cx,cx
mov cl,count
shr cl,
dec cx ;比较n-1次
mov bx,
loop1:
push cx ;cx入栈,避免内循环改变cx的值
mov si,bx ;si为内层循环的初始值,相当于下标
mov ax,NUM[si] ;ax为关键字
loop2:
cmp ax,NUM[si+]
jg exchange ;ax>NUM[si+1]则NUM[si+1]设为当前最小值,交换
jmp done
exchange:
xchg ax,NUM[si+] ;暂时存在ax中
done:
add si,
loop loop2
mov NUM[bx],ax ;得到一个最小值, 前面的已经排好序
add bx,
pop cx
loop loop1
xor cx,cx
xor si,si
print: ;输出
mov ax,NUM[si]
loopb:
xor dx,dx
inc cl
mov bx,
div bx ;ax商,dx余
push dx ;余数入栈
cmp ax,
jne loopb
loopc:
pop dx
or dl,00110000b
mov ah,
int 21h
loop loopc
add si,
mov dl,20h
mov ah,2h
int 21h
mov bx,word ptr count
cmp si,bx
jb print
exit:
mov ah,4ch
int 21h
code ends
end start
最新文章
- IIS7 IIS8 中多个版本php共存的方法
- ExtJS学习之路第八步:Window组件
- iptables的详细介绍及配置方法*
- QTP获取系统时间并自定义格式
- 【原】使用ajax的get异常获取数据的时候,IE浏览器总是有缓存
- 使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
- Remove Duplicate Letters
- T - stl 的mapⅡ
- ios 第三方qq授权登陆,第一次登陆后,再次登陆,失效
- spring-android的使用【转】
- Tick and Tick------HDOJ杭州电(无法解释,直接看代码)
- TASKCTL产品功能清单-转载
- Python笔记(十一):多线程
- APIO 2014 回文串(Manacher+后缀自动机+倍增)
- Confluence 6 编辑和删除用户宏
- MongoDB调优-查询优化-MongoDB Profiler
- jenkins执行shell提示命令不存在
- 后台开发 - DPDK引发的图谱
- mongodb如何设置主键自增
- pthread_cond_wait和pthread_cond_signal以及互斥变量的使用情况