史上最牛最完整的汇编语言冒泡排序程序Word文档下载推荐.docx
- 文档编号:5270625
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:9
- 大小:16.31KB
史上最牛最完整的汇编语言冒泡排序程序Word文档下载推荐.docx
《史上最牛最完整的汇编语言冒泡排序程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《史上最牛最完整的汇编语言冒泡排序程序Word文档下载推荐.docx(9页珍藏版)》请在冰点文库上搜索。
*************************$'
DIR5DB'
pleasechooseu(up)ord(down):
DIR6DB'
inputerror$'
COUNT=100
WTEMPDW?
ARRAYDWCOUNTDUP(?
);
用来保管输入的数据
CRLFDB13,10,'
实现回车换行的功能,13→0DH,回车;
10→0AH,换行
LENDW?
保管实际输入的数据的个数
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
SUBAX,AX;
置AX为0
PUSHAX
MOVAX,DATA;
将数据段的地址送到DX中
MOVDS,AX
READ:
M_DIRECTDIR1;
宏调用,在屏幕上提示输入要输入的数据的个数
CALLP_GETNEW;
调用子法式P-GETNEW,输入要输入的数据的个数
MOVCX,AX
MOVLEN,AX
LEABX,ARRAY
MOVAH,09;
调用09号功能,实现回车换行
LEADX,CRLF
INT21H;
屏幕提示输入要排序的数据
M_DIRECTDIR2
GETNUMBER:
输入数据并保管到ARRAY中
MOV[BX],AX
ADDBX,2
LOOPGETNUMBER
SORT:
MOVCX,LEN;
排序法式部份
DECCX
MOVAH,09H
M_DIRECTDIR5
COMPARE:
MOVAH,01H
CMPAL,'
U'
判断是升序排序还是降序排序
JZUP;
输入的字符是U或u跳转到升序排序法式
u'
JZUP
D'
输入的字符是D或d跳转到降叙排序法式
JZDOWN
d'
UP:
MOVDI,CX;
升序排序法式
MOVBX,0
LOOP1:
MOVAX,ARRAY[BX]
CMPAX,ARRAY[BX+2]
JNGECONTINUE1
XCHGAX,ARRAY[BX+2]
MOVARRAY[BX],AX
CONTINUE1:
ADDBX,2
LOOPLOOP1
MOVCX,DI
LOOPUP
JMPOUTPUT;
排序完后跳转到输出法式部份
DOWN:
降序排序法式
LOOP2:
JGECONTINUE2
CONTINUE2:
LOOPLOOP2
LOOPDOWN
OUTPUT:
回车换行
M_DIRECTDIR3
为输出法式设置好入口参数
MOVBX,OFFSETARRAY
WRITE:
MOVAX,[BX];
输出排好序的数据
MOVWTEMP,AX;
将入口参数寄存到共享变量中
CALLP_OUTPUT
MOVDL,20H;
显示空格,将两个输出的数据分开
MOVAH,02H
LOOPWRITE
隔离两次输入排序输出的作用
M_DIRECTDIR4
实现循环输入数据并排序输出
LOOPREAD
RET
MAINENDP
从键盘上输入一个数据的子法式
P_GETNEWPROC
PUSHBX;
出口参数:
AX=补码暗示的二进制数
PUSHCX;
说明:
负数用“-”引导,数据范围是+32767~-32768
PUSHDX
XORBX,BX;
BX保管结果
XORCX,CX;
CX为正负标识表记标帜,0为正,-1为负
MOVAH,1;
输入一个字符
+'
是“+”,继续输入字符
JZREAD1
-'
是“—,设置-1标识表记标帜
JNZREAD2
MOVCX,-1
READ1:
继续输入字符
READ2:
0'
不是0~9之间的字符,则输入数据结束
JBREAD3
9'
JAREAD3
SUBAL,30H;
是0~9之间的字符,则转换为二进制数
利用移位指令,实现数值乘10:
BX←BX*10
SHLBX,1
MOVDX,BX
ADDBX,DX
MOVAH,0
ADDBX,AX;
已输入数值乘10后,与新输入的数值相加
JMPREAD1;
READ3:
CMPCX,0;
是负数,进行求补
JZREAD4
NEGBX
READ4:
MOVAX,BX;
设置出口参数
POPDX
POPCX
POPBX
RET;
子法式返回
P_GETNEWENDP
用冒泡法排序的子法式(从年夜到小)
P_SORTPROC
RET;
P_SORTENDP
数据输出子法式
P_OUTPUTPROC
PUSHAX;
入口参数:
共享变量WTEMP
PUSHBX
MOVAX,WTEMP;
取出显示的数据
TESTAX,AX;
判断数据是零、正书还是负数
JNZWRITE1
MOVDL,'
是‘0’,显示‘0’后退出
MOVAH,2
JMPWRITE5
WRITE1:
JNSWRITE2;
是负数,显示“-”
MOVBX,AX;
AX数据暂存于BX
MOVAX,BX
NEGAX;
数据求补(绝对值)
WRITE2:
MOVBX,10
10压入仓库,做为推退出标识表记标帜
WRITE3:
CMPAX,0;
数据(商)为零,转向显示
JZWRITE4
SUBDX,DX;
扩展被除数DX.AX
DIVBX;
数据除以10
ADDDL,30H;
余数(0~9)转换为ASCⅡ码
PUSHDX;
数据各位先低位后高位压入仓库
JMPWRITE3
WRITE4:
POPDX;
数据各位先高位后低位弹出仓库
CMPDL,10;
是结束标识表记标帜10,则退出
JEWRITE5
MOVAH,2;
进行显示
JMPWRITE4
WRITE5:
POPAX
MOVDL,20H
P_OUTPUTENDP
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 史上最牛最 完整 汇编语言 冒泡 排序 程序