单片机汇编:16个数比较大小,按从大到小的顺序进行排列并存放在30H~3FH单元中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机汇编:16个数比较大小,按从大到小的顺序进行排列并存放在30H~3FH单元中相关的知识,希望对你有一定的参考价值。
参考技术A DATA SEGMENTBUF DB 10,16,15,1,48,79,15,46,14,13,5,8,7,9,26,100
COUNT EQU $-BUF
DATA ENDS
ESTA SEGMENT
BUF1 DB COUNT DUP(?)
ESTA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:ESTA
START: MOV AX,DATA
MOV DS,AX
MOV AX,ESTA
MOV ES,AX
LEA SI,BUF
LEA DI,BUF1
MOV CX,COUNT-1
CALL _CMP
MOV AH,4CH
INT 21H
_CMP PROC
PUSH SI
PUSH DI
LEA SI,BUF
LEA DI,BUF1
XOR DX,DX
XOR AX,AX
L_START: CMP DI,15
JA EXIT
CMP AL,BYTE PTR [SI]
JA L1
MOV DL,BYTE PTR [SI]
MOV BYTE PTR [SI],AL
MOV AL,DL
L1: INC SI
CMP SI,COUNT
JB L_START
CLD
STOSB
XOR AX,AX
LEA SI,BUF
ADD SI,DI
JMP L_START
EXIT:
POP SI
POP CX
RET
_CMP ENDP
CODE ENDS
END START
急C#(从键盘输入三个数)从大到小的顺序输出
参考技术A voidmain()
int[]
lst
=
new
int[3];
for
(int
i
=
0;
i
<
3;
i++)
console.writeline("请输入您要进行排序的第0个数字:",
i);
lst[i]
=
convert.toint32(console.readline());
sort(lst);
foreach(int
i
in
lst)
console.writeline(i);
console.readline();
public
static
void
sort(int[]
list)
int
i,
j,
temp;
bool
done
=
false;
j
=
1;
while
((j
<
list.length)
&&
(!done))
done
=
true;
for
(i
=
0;
i
<
list.length
-
j;
i++)
if
(list[i]
>
list[i
+
1])
done
=
false;
temp
=
list[i];
list[i]
=
list[i
+
1];
list[i
+
1]
=
temp;
j++;
---------------------------
这就是冒泡法了啊 参考技术B 我就说下大概思路:
三个数分别为xyz,另一数为A,先令A=x,接着让A和y比较,如果y大于A,则A=y,再让A和Z比较,若大于A则A=z,输出A,在比较剩余两个,如此周转。 参考技术C 相信楼主是刚刚学习编程
冒泡排序
下面是用C#写的列子(C#里数组有sort()方法排序,这里仅作示例)
int[] inta = 2, 3, 1 ;
int i=0;
for (i = 1; i < inta.Length; i++)
int temp = inta[i - 1];
if (temp < inta[i])
inta[i - 1] = inta[i];
inta[i] = temp;
string ret = string.Empty;
for (i = 0; i < inta.Length; i++)
ret += inta[i].ToString();
MessageBox.Show(ret);本回答被提问者采纳 参考技术D 冒泡排序
1 楼的就行了
我估计你这程序是想在控制台做的
你只用加一个console.readline();接收一下用户输入的三个数就行了 第5个回答 2009-05-06 写个排序不就完了。冒泡或者比较。基本的。
以上是关于单片机汇编:16个数比较大小,按从大到小的顺序进行排列并存放在30H~3FH单元中的主要内容,如果未能解决你的问题,请参考以下文章
将数组8,23,4,16,77,-5,53,100中的元素按从大到小的顺序排列,最少需要交换几次?我知道答案是5次