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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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】