16位汇编实现三大基本排序
发布日期:2021-05-19 04:41:15 浏览次数:19 分类:博客文章

本文共 1467 字,大约阅读时间需要 4 分钟。

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

选择排序

;把数据从大到小排列;选择法排序assume		cs:code,ds:datadata		segment	BUFFER	db  1 dup(12h,31h,22h,44h,18h,99h,10h,2h,64h)data		endscode		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		endsend		start

冒泡排序

;冒泡法排序assume 		cs:code,ds:datadata		segment		BUFFER		db	 12h,31h,22h,44h,18h,99h,10h,2h,64hdata		endscode		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		endsend		start

插入排序

;插入法排序;(有序系列扩大排序)assume			cs:code,ds:data		data		segment	BUFFER	db	12h,31h,22h,44h,18h,99h,10h,2h,64hdata		endscode		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 		endsend		start
上一篇:逆向工程初步160个crackme-------3
下一篇:Masm32sdk安装指南

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月18日 04时12分24秒