注册 登录
编程论坛 汇编论坛

冒泡排序,要求数据从键盘输入

mengfanzhen1 发布于 2007-07-03 21:58, 3657 次点击
冒泡排序,要求数据从键盘输入
12 回复
#2
mengfanzhen12007-07-03 21:59

这是老师布置得题,大家帮以下忙

#3
菜鸟上路2007-07-04 09:10
首先把输入的数据存入一数组,然后对数组排序
#4
herbert_19872007-07-04 17:34
嗯,算法很简单,楼主要自己动手做才会有进步的
#5
aipb20072007-07-04 17:35
写来看看
让我见识下汇编怎么写排序!
#6
herbert_19872007-07-04 17:57

;code by lys
assume cs:codesg,ds:datasg,ss:stack

datasg segment
s dw 1,3,8,5,-1,2,7,9,4,6
datasg ends

stack segment
dw 0,0,0,0,0,0
stack ends

codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,12
mov cx,LENGTHOF s -1

L1: push cx
mov bx,0
mov cx,LENGTHOF s -1 ;这里cx=字符个数-1 !

L2:
mov ax,[bx]
cmp ax,[bx+2]
jle C1 ;有符号数用g,l 无符号数用a,b
xchg ax,[bx+2]
mov [bx],ax

C1:
add bx,2
loop L2
pop cx
loop L1
mov ax,4c00h
int 21h
codesg ends
end start

转载的哈, 你慢慢看...

#7
魔城侠客2007-07-04 21:07
其实排序还是简单的
主要是把输出的字符转换成数据保存起来比较麻烦
#8
jyll862007-07-04 21:12
网上都有~!
#9
魔城侠客2007-07-04 21:22

输入的数据以空格为标记,表示一个新的数开始
将AX置0,一个新的数据输入的第一个字符转换为十进制后,将AX乘以10加以转换后的十进制保存在AX中,依次保存以后的几位数,遇到空格就表示这个数结束,将AX的数据保存到内存中
将全部数据保存完后,就可以利用上面的排序进行冒泡排序
如果还要将排好的数据输出,还要将每个数的每位转换 为ASCII码一个个输出

#10
mengfanzhen12007-07-04 22:21
谢谢大家了啊,用了一下午的时间把这个问题给解决啦.嘎嘎~~~
#11
zboy2007-07-07 23:23
好的 顶一个啊
#12
zhulei19782007-07-14 10:44
(转载)一个汇编的冒泡排序程序:
ORG 00H 程序开始地址
MOV R1,#20H 将地址20保存到寄存器R1
MOV R2,#7 将常数7保存到寄存器R2,这里是总循环次数
PRE1:
CJNE R2,#0,PRE2 比较R2中的数,如果和0不相等,转到PRE2
SJMP LOOP2 如果相等,转到LOOP2,大循环结束
PRE2:
MOV R3,R2 将R2中的值赋给R3寄存器
START:
MOV A,@R1 将R1中间接寻址的值赋到累加寄存器中
INC R1 R1自增1
DEC R3 R3自减1
CJNE A,@R1,LOOP1 比较累加寄存器中的值和R1间接寻址的值,不相等转LOOP1
SJMP LOOP3 相等转LOOP3
LOOP1:
JC LOOP3 如果累加寄存器的值比R1间接寻址的值小,转LOOP3
XCH A,R4 如果大,交换两者的值,用R4做临时存放
XCH R4,@R
XCH R4,A
SJMP LOOP3 交换结束,转LOOP3
LOOP3:
CJNE R3,#0,START 比较R3和0,如果不相等,转START
DEC R2 如果相等,R2自减1
SJMP PRE1 跳转到PRE1
LOOP2:
END 程序结束

[此贴子已经被作者于2007-7-17 8:15:56编辑过]

#13
deeing2008-04-28 22:41
??
你为什么又不把你写好的代码摆上来共享一下呢?
1