汇编冒泡排序
来源:互联网 发布:淘宝阿迪达斯旗舰店 编辑:程序博客网 时间:2024/04/30 17:10
DATA SEGMENTARRAY DW 100 DUP(?)MESS1 DB 0DH,0AH,'PLEASE INPUT THE NUMBER OF THE INTEGER YOU WANT TO INPUT(<100)',0DH,0AH,'$'MESS2 DB 0DH,0AH,'PLEASE INPUT A INTEGER',0DH,0AH,'$'MESS4 DB 0DH,0AH,'THE SORTED ARRAY',0DH,0AH,'$'BUFFER DB 81,?,80 DUP(?)LEN DW ?MD DW 10INDEX DW ?TIMES DW ?BLANK DB ' ','$'LINEBREAK DB 0AH,0DH,'$'LETTER DB '0123456789ABCDEF'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA DX,MESS1 MOV AH,09H INT 21H LEA DX,BUFFER ;输入要输入数字个数 MOV AH,0AH INT 21H LEA SI,BUFFER ;下面将要输入个数从字符转化为数字,实际上下面输入的时候也用到,写成子程序会简单很多 MOV CL,[SI+1] MOV CH,0 ADD SI,2 MOV AX,0 TRANS:MUL MD MOV DL,[SI] SUB DL,'0' MOV DH,0 ADD AX,DX INC SI LOOP TRANS MOV LEN,AX MOV CX,LEN GETN:LEA DX,MESS2 ;将输入数字转化为十几数值存在数组里,注意计算下标的时候dw下标是db数组的二倍 MOV AH,09H INT 21H LEA DX,BUFFER MOV AH,0AH INT 21H MOV AX,LEN MOV INDEX,AX SUB INDEX,CX PUSH CX LEA SI,BUFFER MOV BL,[SI+1] MOV BH,0 MOV CX,BX ADD SI,2 MOV AX,0 LOP0:MUL MD MOV DL,[SI] SUB DL,'0' MOV DH,0 ADD AX,DX LOOP LOP0 PUSH AX MOV AX,INDEX MOV BX,2 MUL BX MOV SI,AX POP AX MOV ARRAY[SI],AX POP CX LOOP GETN CMP LEN,1 JZ OVER MOV CX,LEN ;下面是冒泡排序 DEC CX ;外层循环的次数 总个数减一 LOP1:PUSH CX ;把外层循环的次数记录先保护,然后用当前数值做内层循环的次数 LEA SI,ARRAY MOV DX,0 ;标记,记录这一次外层循环中是否发生了数值交换,如果没有,就可以跳出 LOP2:MOV AX,[SI+2] ;相当于a[j+1] 和a[j]进行比较 CMP AX,[SI] JNB GOON ;如果a[j]<=a[j+1] 不用交换 XCHG AX,[SI] MOV [SI+2],AX MOV DX,1 ;有数值交换就将标志置为一 GOON: ADD SI,2 LOOP LOP2 POP CX CMP DX,0 JZ OVER LOOP LOP1 OVER: LEA DX,MESS4 MOV AH,09H INT 21H MOV CX,LEN LEA SI,ARRAY LOP3:PUSH CX MOV TIMES,0 MOV AX,[SI] OP:MOV DX,0 DIV MD PUSH DX INC TIMES CMP AX,0 JNZ OP ADD SI,2 LEA DX,BLANK MOV AH,09H INT 21H MOV CX,TIMES OUTPUT:POP AX MOV AH,0 LEA BX,LETTER XLAT MOV DL,AL MOV AH,02H INT 21H LOOP OUTPUT POP CX LOOP LOP3 MOV AX,4C00H INT 21HCODE ENDSEND START
这个程序没有解决负数的问题,如果要写的话就是每次判断第一个的字符是不是'-',然后取后面的数值,是负数的话最后neg一下,输出的时候neg取反成为正数,最后输出的时候先输出一个'-',太麻烦了实在不想写
还有就是冗余的问题,由于担心子程序会改变各个寄存器的状态没敢用,最后想象先PUSH一下最后POP就好了,那样看起来会简单许多
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
不贴图难受的分割线
阅读全文
0 0
- 冒泡排序 汇编
- 汇编冒泡排序
- 汇编--冒泡排序
- 汇编实现冒泡排序
- 汇编实现冒泡排序
- 【汇编】 冒泡排序。。。
- 汇编冒泡排序
- 汇编---冒泡排序
- 汇编实现冒泡排序
- 汇编写冒泡排序
- MIPS汇编:冒泡排序
- 汇编冒泡排序
- 汇编-冒泡排序
- 汇编冒泡排序
- 汇编编写的 冒泡排序
- 汇编——冒泡排序
- 汇编版,冒泡排序法
- S3C2440冒泡排序(汇编)
- TPS波动各种原因总结,做过的项目大概总结下有5中以上情况...
- 树莓派(RPi) CentOS7扩展内存卡剩余空间
- 【ML学习笔记】10:机器学习中的数学基础7(张集,秩,维度,行阶梯形)
- 不过的小东东
- Multiple People Tracking by Lifted Multicut and Person Re-identification
- 汇编冒泡排序
- spring 核心与源码解析(1):IoC之BeanFactory
- EOJ Monthly 2017.12
- leetcode题解-86. Partition List
- 欢迎使用CSDN-markdown编辑器
- 跟随鼠标移动
- 二叉树 深度优先搜索(DFS)、广度优先搜索(BFS)
- 线性约束最小方差准则
- pat考试-1138