汇编-循环结构程序设计和子程序设计
循环结构程序设计和子程序设计
- 实验内容
- 算法描述
- 实验结果
- 源程序清单
实验内容
设DATA1开始的内存单元中,存放着一串带符号字数据,要求采用冒泡排序算法(Bubble Sort)按照从小到大的顺序排序并将排好序的数据存在DATA2开始的单元。
设DATA1开始的内存单元中,存放着一串带符号字数据,要求采用冒泡排序算法(Bubble Sort)按照从小到大的顺序排序并将排好序的数据存在DATA2开始的单元(循环程序部分已完成)。然后在显示器输出排好序的数据,中间用’,’隔开。
输出数据使用子程序方式。
算法描述
第一部分冒泡排序:
冒泡排序的思想就是执行两重循环,外重循环表示需要执行多少趟,一个数组长度为n的话,只需执行n-1趟,内层循环进行比较,如果当前访问的值比下一个要访问的值大,那么就和下一个值进行交换,反之就直接访问下一个值,重新执行上述操作。然后内层循环每一趟会把可访问的内容中的最大值放到末端,比如第一次内层循环会把最大的值放入第n个位置,然后下次只用访问前n-1个数了,仍然执行相同的操作,知道完成排序,落实到汇编代码就是,外层用loop指令,内层自定义条件循环,实验里面自处理了五个数,所以外层循环只需遍历4次,所以将CX 赋值为4,内层循环使用BX计数,内层进行的操作是让当前位置的值和下一个位置的值进行比较大小,BX累计次数,如果BX内的值小于CX就继续执行,反之执行loop指令,这样即可完成冒泡排序
第二部分将排序结果显示在屏幕上:
选用的是二号功能,在屏幕上显示单个字符,因为ASCII码中只有0~9的数字,所以像655这样的多位数字就需要将其分解,所以整个子程序的流程是:
(1)从DATA2中读取一个数字
(2)判断数字是否为负数,如果是负数先在屏幕上显示“-”,然后将数字取反
(3)如果数字在0~9,直接在屏幕上显示数字,然后从DATA2中取下一个数字,如果到DATA2中数据取完,结束子程序
(4)如果数字在10~99之间,将十位上数字输出,使用除法,将十位与个位分离,执行完毕后执行(3)
(5)如果数字在100~999之间,将百位上的数字输出,使用除法得到百位上的数字,然后执行(4)
(6)如果数字在1000~9999之间,将千位上的数字输出,使用除法得到千位上的数字,然后执行(5)
如果数字在10000以上,将万位上的数字输出,使用除法得到万位上的数字,然后执行(6)
实验结果
执行结果
源程序清单
DSEG SEGMENT
DATA1 DW 80,88,52,19,-45
DATA2 DW 5 DUP(0)
DSEG ENDS
CSEG SEGMENTASSUME CS:CSEG,DS:DSEG
FIRST PROCLEA SI,DATA2MOV CX,5
HHH: MOV BX,[SI]CMP BX,0JL DOIT
TWOS: CMP BX,10JGE ONESMOV AH,2MOV DL,BLADD DL,30HINT 21HADD SI,2CMP CX,1JLE TTTMOV AH,2MOV DL,','INT 21H
TTT: LOOP HHHJMP ENDSS
ONES: MOV AX,BXMOV DL,10DIV DLMOV BL,AHMOV AH,2MOV DL,ALADD DL,30HINT 21HJMP TWOS
DOIT: NEG BXMOV AH,2MOV DL,'-'INT 21HJMP TWOS
ENDSS: RET
FIRST ENDP
BEGIN: MOV AX,DSEGMOV DS,AXMOV ES,AXMOV CX,4
START: MOV BX,0LEA SI,DATA1
ONE: MOV AX,[SI]CMP AX,[SI+2]JLE TWOMOV DX,[SI+2]MOV [SI],DXMOV [SI+2],AX
TWO: ADD SI,2INC BXCMP BX,CXJB ONELOOP START
THREE: MOV CX,5LEA SI,DATA1LEA DI,DATA2CLDREP MOVSWCALL FIRSTMOV AX,4C00HINT 21H
CSEG ENDSEND BEGIN
汇编-循环结构程序设计和子程序设计相关推荐
- 用python循环结构计算派的值_Python程序设计实验报告四:循环结构程序设计(设计型实验)...
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名姚彩琴学号3190505129 成绩 日期 2020.4.8 指导老师修宇 [实验名称]实验四 循环结构程序设 ...
- c语言循环设计思想结构,C语言程序设计_05循环结构程序设计讲述.pptx
C语言程序设计_05循环结构程序设计讲述 第5章 循环结构程序设计5.1 while循环结构5.2 do-while循环结构5.3 for循环结构5.4 与循环有关的控制语句5.5 3种循环语句的比较 ...
- c语言设计第六章答案,c语言第六章 循环结构程序设计(习题册答案)
第六章 循环结构程序设计 基础练习(A) 一.选择题 1.C语言中while和do-while循环的主要区别是(A). A) do-while的循环体至少无条件执行一次 B) while的循环控制条件 ...
- 汇编语言实验5:循环结构程序设计
<汇编语言程序设计>实验报告 实验五 循环结构程序设计 1. 实验目的 2. 实验任务 3. 实验步骤 3.1 循环结构题目设计 3.2 编写代码 3.3 代码分析 3.4 运行测试 4. ...
- c语言已知祖父年龄70,实验三循环结构程序设计.doc
实验三循环结构程序设计 实验三 循环结构程序设计 一.实验目的 (1) 掌握while.do~while.for语句的使用. (2) 掌握循环体内使用break.continue语句的作用. (3) ...
- c语言循环程序模板,循环结构程序设计C语言程序
循环结构程序设计C语言程序Tag内容描述: 1.第5章 循环结构程序设计,C 语言程序设计,北京航空航天大学 交通科学与工程学院 徐国艳,2019/7/12,2,循环的基本概念 不同形式的循环控制 多 ...
- c加加高级语言循环结构,高级C语言循环结构程序设计.ppt
1,高级语言程序设计,孟宇龙计算机科学与技术学院mengyulong@,2,第5章循环结构程序设计,本章需要掌握的内容掌握3种基本循环.掌握多重循环.掌握continue和break的使用.编写循环结 ...
- c语言循环结构程序设计教学,高级C语言循环结构程序设计教学教材演示幻灯片.ppt...
演示文稿演讲PPT学习教学课件医学文件教学培训课件 * 高级语言程序设计 孟宇龙 计算机科学与技术学院 mengyulong@hrbeu.edu.cn * 第5章 循环结构程序设计 本章需要掌握的内容 ...
- c语言 用计数控制的循环实现正数累加求和,C语言循环结构程序设计实验五
福建农林大学实验报告 系(教研室):信息与机电工程系专业:机械设计制造及其自动化年级:2010 实验课程:C语言程序设计姓名:学号:实验室号: 计算机号:实验时间:2012.11.5 指导教师签字:成 ...
最新文章
- jenkins 中 Poll SCM 和 Build periodically 的区别
- fastreport调用frf文件直接打印_来吧~~ 这里提供自助打印~
- linux i o的使用情况,Linux下使用iostat 监视I/O状态
- 易度甘特图的功能介绍和开发手册
- html5 canvas图文编辑器源码_5个微信编辑器,再也不用为公众号发愁啦
- 前端学习(592):使用snippets辅助debugging
- 【Elasticsearch】Elasticsearch gateway 流程分析
- 机器学习在B站推荐系统的应用实践
- VMware虚拟机的网络设置
- 中南大学计算机网络期末试卷,中南大学计算机网络期末复习试卷1
- 本训练中心主任致互联网技术学员
- pads 2007的概述
- 【Android】ListView控件总结
- Unity3D灯光与渲染学习之(二):全局、烘焙以及混合光照
- 中兴新支点操作系统上的快捷键
- 【ABAP】 Smartforms 字符串中上标/下标打印实现
- 如何将多个excel表格合并成一个_相同表头的多个Excel表格合并成一个Excel表的方法...
- RJ45接头 与 RJ48 接头
- 解析华为OSPF协议
- python建立题库随机抽题,用Python读取Excel题库随机组成Word版本试卷