概述
8086的汇编和51单片机的汇编差距还是有点的,最明显的区别就是更难。
经典冒泡法排序的算法思想还是一致贯通的,可参考51单片机汇编_冒泡法排序
冒泡法原理:
相邻作比较,直至找出正确顺序。
注意不要和选择排序的原理混淆,传送门:DOS汇编练习(8)——选择排序
程序1:(debug下调试)
DATA SEGMENT
DAT1 DB 08H,04H,09H,01H,60H,02H
LEN1 = $-DAT1
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,LEN1
DEC CX
WAI: ;外层循环控制趟数
PUSH CX ;注意每次必须在外层循环内PUSH CX
LEA SI,DAT1
NEI: ;内存循环控制比较次数
MOV AL,[SI]
INC SI ;相邻作比较
MOV BL,[SI]
CMP AL,BL
JBE NEXT ;从小到大排序,如果AL<BL则跳过,比较下一个相邻值
XCHG AL,BL
MOV BYTE PTR [SI],BL ;送回原来的地址
MOV BYTE PTR [SI-1],AL
NEXT:
;注意千万不能在这里加INC SI,否则SI每比较完一次多加一次
LOOP NEI ;CX-1
POP CX ;比较完一趟弹出CX原来的值
LOOP WAI ;CX-1
MOV AH,4CH
INT 21H
CODE ENDS
END START
程序2:(含显示功能)
huiche macro ;回车宏
mov ah,02h ;系统中断,显示功能
mov dl,0ah ;0aH是换行符的ASCII码
int 21h
mov ah,02h
mov dl,0dh ;是将DL中的ASCII码显示到屏幕
int 21h
endm
data segment
var db 51h,63h,45h,84h,03h
varlen = $-var ;定义数据长度,到$终止
str1 db "Before sorted:",0dh,0ah,"$"
str2 db "Sorted:",0dh,0ah,"$"
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,str1
mov ah,09h ;输出字符串功能,显示"Before sorted:"
int 21h
huiche
mov cx,varlen
lea bx,var
call dispbcd ;调用显示字符子程序
huiche
lea bx,var
mov cx,varlen
dec cx
wai: ;外层循环控制趟数
mov si,bx
mov di,bx
inc si
push cx ;这句的位置及其关键!不要不理解而放在了循环外面,否则会造成程序死循环
nei: ;内层循环控制一趟比较次数
mov al,[di] ;交换部分
cmp al,[si]
jb next ;判断是否交换
mov al,[si]
push ax
mov al,[di]
mov [si],al
pop ax
mov [di],al
next: ;不交换,往下计数
Inc si
inc di
loop nei ;一趟没比较完继续内层循环
pop cx ;cx计数器重新赋值
loop wai ;loop对cx减1,进行下一趟循环
huiche
lea dx,str2
mov ah,09h ;显示"Sorted:"
int 21h
huiche
lea bx,var
mov cx,varlen
call dispbcd
huiche
mov ah,4ch ;系统中断标志
int 21h
dispbcd proc near
disp:
mov dl,[bx]
mov ah,02h
rol dl,1
rol dl,1
rol dl,1
rol dl,1
and dl,0fh
or dl,30h
int 21h
mov dl,[bx]
and dl,0fh
or dl,30h
int 21h
inc bx
mov ah,02h
mov dl,"," ;用逗号隔开
int 21h
loop disp
ret
dispbcd endp
code ends
end start
结果显示:
程序1中,要换成从大到小排序,只需将JB(Below 小于则跳)换成JA(Above 大于则跳);
程序2中,要换成从大到小排序,只需将jb换成jnb。
最后
以上就是糊涂鲜花为你收集整理的dos汇编练习(2)——冒泡法排序完整版的全部内容,希望文章能够帮你解决dos汇编练习(2)——冒泡法排序完整版所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复