汇编实验(循环程序设计)(排序以及找非负数)

这里的排序,用的是冒泡排序。

首先,先是说一下找非负数的想法,负数“TEST 80H”之后不为0,我们可以用这个性质来做。

;(1)FIND POSITIVE NUMBER
	LEA SI, FIRST
	LEA DI, SECOND
	MOV CX, N
LLP:	MOV AL, [SI]
	TEST AL, 80H
	JNZ GO
	MOV [DI], AL
	INC DI
	INC BL	;BX用来记录有多少正数
GO:	INC SI
	LOOP LLP

我们可以这样子去实现。

接下去就是排序的做法了,我们可以利用冒泡排序来完成这个,就是N-1次简单的比较就可以完成任务了,每次比较会让从1到N-1的每个元素和后面的比较大小,然后转移即可。

STACK SEGMENT PARA 'STACK'
DB 100 DUP(?)
STACK ENDS

DATA SEGMENT

DATA ENDS

ASSUME DS: SEG1, CS: SEG2

SEG1 SEGMENT
FIRST DB 5, -8, 3, 9, -2, -5, 7, -9, 0, 5, 4, 9, -6, 1, -1, 8, -3, 6, 2, -7, 0, -4
N EQU $-FIRST
SECOND DB 30 DUP(?)
SEG1 ENDS

SEG2 SEGMENT
START:
	MOV AX, SEG1
	MOV DS, AX
	MOV ES, AX
XOR BL, BL
;(1)FIND POSITIVE NUMBER
	LEA SI, FIRST
	LEA DI, SECOND
	MOV CX, N
LLP:	MOV AL, [SI]
	TEST AL, 80H
	JNZ GO
	MOV [DI], AL
	INC DI
	INC BL	;BX用来记录有多少正数
GO:	INC SI
	LOOP LLP

;(2)SORT SLOVE
	DEC BL
	;38 ROW
	MOV DX, 13
XOR AX, AX ;INIT()
LOP1:
	DEC DX
	MOV CX, DX
	LEA SI, SECOND
LOP2:
	MOV AL, [SI]
	INC SI
	MOV AH, [SI]
	CMP AL, AH
	JA EXC
	LOOP LOP2
EXC:	MOV [SI], AL
	MOV [SI - 1], AH
	LOOP LOP2
	CMP DX, 0
	JNZ LOP1
LAST:
SEG2 ENDS
	END START

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wuliwuliii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值