- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
;用汇编语言实现实现冒泡排序,并将排序后的数输出
DATASSEGMENT
A dw 100,344,3435,43433,3438,343,134,80,8,1000,65535,54,45
N=$-A ;计算数字所占的字节数
DATASENDS
CODESSEGMENT
ASSUMECS:CODES,DS:DATAS
START:MOV AX,DATAS
MOV DS,AX
MOV SI,0
;SI遍历数字
;前一个数的地址
MOV CX,N/ 2-1
;设置循环次数,
M(M=N/2) 个数需要,循环
M-1次
CALL BUBBLE;调用 BUBBLE将原来的数排序
;输出排序后的数
MOV CX,N/ 2 ;循环 M 次输出排序后的 M个数
MOV SI,0
;SI遍历排序后的数
MOV DI,0
;用 DI记录数字的位数
MOV BP,N+5;BP用于遍历存储的转化后的字符的位置
SHOW:PUSHCX
;循环次数入栈
MOV DX,0
;由于将要进行
16位除需要置高
16位为 0
MOV AX,[SI]
;低16位为排序后的数
CALL DTOC
;调用 DTOC将十进制数转换为字符串
CALL SHOW_STR;调用 SHOW_STR将一个数转化得到的字符串输出
ADD SI,2 ;下一个数
POP CX ;循环次数出栈栈
LOOP SHOW
MOV AH,4CH
INT 21H
;冒泡排序
BUBBLE PROC
L1: PUSHCX
;将循环次数入栈
LEASI,A
;SI遍历 DATAS数据段的数字
L2: MOV AX,A[SI]
;将前一个数存于
AX
CMP AX,A[SI+2] ;比较前后两个数
JBE NEXT ;如果前一个数小于或等于后一个数则继续本轮的比较
XCHGAX,A[SI+2];否则,交换前后两个数的位置
MOV A[SI],AX
NEXT:ADD SI,2
;下一个数
LOOP L2
;注意内层循环的次数已经确定了
POP CX
;将循环次数出栈
LOOP L1
RET
BUBBLE ENDP
;下一轮比较
将十进制数转换为字符串并储存起来
DTOC PROC
S:MOV CX,10 ;将除数 10,放入 CX中
CALL DIVDW ;调用 DIVDW程序
ADD CL,30H ;把数字转换为 ASCII码,这样就能显示了
MOV DS:[BP],CL ;把ASCII码放到内存中
INC DI ;用 DI记录循环的次数
PUSHAX ;将低 16位入栈
ADD AX,DX ;将高位与低位相加,接着判断是否已经除尽
JZ BACK
;除尽后返回调用处
POP AX
;将低 16位出栈
DECBP
;逆序存放转化后的字符,便于主程序调用
SHOW_STR
JMP S
BACK:POPAX
;为了得到正确的
IP值,需要出栈一次
RET
DTOC ENDP
;子程序定义开始 ,功能是分离被除数的各个位的数字
;公式: X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N
DIVDW PROC
PUSHAX
;低 16位入栈
MOV AX,DX
;将高 16位写入 AX,
MOV DX,0
;将高 16位置零
DIV CX
;将新的数除
10,
MOV BX,AX
;将商 int(H/N) 转移到 BX,默认余数
rem(H/N) 在DX
POP AX
;将低 16位出栈,
DIV CX
;将[rem(H/N)*65536+L]
除10,默认余数在
DX
MOV CX,DX
;将余数转移到
CX
MOV DX,BX
;将商 int(H/N) 转移到 dx,相当于 int(H/N)*65536
RET
DIVDW ENDP
;子程序定义结束
;实现字符串的输出
SHOW_STR PROC
S2:MOV AH,2 ;输出数字转化后的字符串
MOV DL,DS:[BP]
INT 21H
INC BP
;顺序输出
DECDI
;数字的位数减一
JZ OK
;字符串输出完了就结束
JMP S2
;否则继续输出
OK:MOV AH,2
MOV DL,0
INT 21H
RET
SHOW_STR ENDP
;输出空格
CODESENDS
ENDSTART
;实现冒泡排序,并将排序后的数输出
DATASSEGMENT
dw 100,344,3435,43433,3438,343,134,80,8,1000,65535,54,45
N=$-A;计算数字所占的字节数
DATASENDS
COD
您可能关注的文档
- 5岁宝宝短篇睡前故事大全.doc
- 2016新概念第一册Lesson19-20课堂与课后练习.doc
- CVT变速器优缺点与使用注意事项.doc
- H3CSecPath防火墙在双出口下通过策略路由实现负载分担的典型配置.doc
- VIP顾客维护的方案.doc
- 阿维菌素及甲维盐的区别.doc
- 安全生产事故遏制行动工作的总结.doc
- 八年级的生物下册学科教学计划与进度安排表.doc
- 八年级的物理下册作图题.doc
- 八年级的音乐测试题与参考答案.doc
- 深度解析(2026)《SNT 2497.23-2010 进出口危险化学品安全试验方法 第 23 部分:细胞器的分离实验方法》.pptx
- 深度解析(2026)《SNT 2517-2010 进境羽毛羽绒检疫操作规程》.pptx
- 深度解析(2026)《SNT 2755.2-2011 出口工业产品企业分类管理 第 2 部分:企业分类基本要求》.pptx
- 深度解析(2026)《SNT 2782-2011 原油中盐含量的测定 电测法》.pptx
- 深度解析(2026)《SNT 3016-2011 石脑油中汞含量测定 冷原子吸收光谱法》.pptx
- 深度解析(2026)《ISOTS 19567-12016 Photography — Digital cameras — Texture reproduction measurements — Part 1 Freque标准解读.pptx
- 深度解析(2026)《SNT 3082.5-2012 出口烟花爆竹产品检验规范 第 5 部分:喷花类》.pptx
- 深度解析(2026)《SNT 3086-2012 出境活鳗现场检疫监管规程》.pptx
- 深度解析(2026)《ISOTR 173022015 Nanotechnologies — Framework for identifying vocabulary development for nanotechnol标准解读.pptx
- 深度解析(2026)《SNT 2982-2011 牙鲆弹状病毒病检疫技术规范》.pptx
原创力文档


文档评论(0)