16位汇编实现三大基本排序

最近得补补16, 32, 64位的汇编,还是16位的汇编好玩尤其是使用debug调试的时候:)

选择排序

;把数据从大到小排列
;选择法排序

assume		cs:code,ds:data
data		segment
	BUFFER	db  1 dup(12h,31h,22h,44h,18h,99h,10h,2h,64h)
data		ends

code		segment
	 start:mov		ax,data
		   mov		ds,ax
		   
		   
		   mov		si,offset BUFFER
		   mov		cx,9
		   dec		cx
		   
		s0:push		cx
		   mov		di,si
		   mov		al,[di]
		   mov		bx,di
		   		   
		s1:inc		di
		   cmp		al,[di]
		   jna		p
		   mov		al,[di]
		   mov		bx,di
		 p:loop 	s1
		   xchg		[si],al
		   xchg		[bx],al
		   inc		si
		   pop		cx
		   loop		s0
		   
		   mov		ax,4c00h
		   int		21h
		   
code		ends
end		start

冒泡排序

		   
;冒泡法排序

assume 		cs:code,ds:data

data		segment
		BUFFER		db	 12h,31h,22h,44h,18h,99h,10h,2h,64h
data		ends

code		segment

    start:mov		ax,data
	      mov		ds,ax
		  
		  mov		si,offset BUFFER
		  mov		cx,9
		  dec		cx
		  
		s:push		cx
		  mov		di,si
		  
	   s0:mov		bl,[di]
		  cmp		bl,[di+1]
		  jna		s1
		  xchg		bl,[di+1]
		  xchg		bl,[di]
	   s1:inc		di
		  loop		s0
		  pop		cx
		  loop		s

		  mov		ax,4c00h
		  int 		21h
		  
code		ends
end		start

插入排序

;插入法排序
;(有序系列扩大排序)
assume			cs:code,ds:data		
data		segment
	BUFFER	db	12h,31h,22h,44h,18h,99h,10h,2h,64h
data		ends

code		segment

  start:mov 		ax,data
		mov			ds,ax
		
		mov			si,offset BUFFER
		inc			si
		mov			cx,8
		
	 s1:mov			bx,si			;随着循环的进行有序序列不断扩大
	  s:mov			al,[si]
		cmp			al,[si-1]
		ja			s0
		xchg		al,[si-1]
		xchg		al,[si]
		cmp			si,1
		jna			s0
		dec			si
		jmp			s
		
	 s0:mov			si,bx
	    inc 		si
		loop		s1
		
		
		mov			ax,4c00h
		int   		21h
		
code 		ends
end		start
posted @   怎么可以吃突突  阅读(695)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示
主题色彩