微机原理实现冒泡排序

article/2025/9/18 3:45:59

微机原理实现冒泡排序

废话不说先放题目
在这里插入图片描述

实验目的

1) 学会从键盘中读取输入,并将其ASCII码进行转化。
2) 利用所学的冒泡排序对数组进行输出
3)学会使用中断程序进行字符的输出。

实验所用仪器及使用方法

Windows + emu8086仿真软件
打开emu8086软件,复制代码点击run(运行),然后在终端中输入自己想要排序的一个数组,***切记不要输入除了数字和空格和回车的其他字符。***程序以自己输入回车键结束

实验基本原理及步骤(或方案设计及理论计算)

  1. 数据读取并且转化
    2)使用双循环冒泡排序对输入的数据进行排序
    3)调用数字输出函数计算得到每一位(十进制)的ASCII码,并从高位入栈,然后再循环出栈并且输出就可以得到10进制数在屏幕上进行显示。

实验结果与分析(图表等)

由于自己设定的输入数字在255以内,所以没有输入更大的数字。在小于255的数字排序下,程序都可以正确的运行,上图是实验代码正确性过程中中截取的一张照片,上面一行为输入,第二行为降序输出。
在这里插入图片描述
只要自己输入的数据在0~255以内,并且输入的数字不超过100个数字,那么测试的结果一般是没有什么问题的。

代码附录

 DATA   SEGMENT       ;定义数据段buf db 100 dup(0)n db 0printInt_div dw 100,10,1printInt_res db 0,0,0,"$"
DATA   ENDS
CODE   SEGMENT               ;定义代码段ASSUME  CS: CODE,DS:DATA
START: MOV  AX,DATA     MOV  DS,AXcall getIntmov bx,0lp1:mov di,bxinc dilp2:mov al,buf[bx]mov cl,buf[di]cmp al,cljae elsmov buf[bx],clmov buf[di],alels:inc dimov ax,dimov ah,alcmp ah,n   ;内循环below and equal njbe lp2inc bxcmp bl,njb lp1mov al,10call putcharmov ch,0mov cl,nmov bx,0lp3:mov ah,0mov al,buf[bx]call putIntmov al,' 'call putcharinc bxloop lp3MOV AH,4CHINT 21H    
putchar:pushfpush DXmov DX,AXmov AH,02Hint 21hpop DXpopfretgetInt: ;普通输入数字返回输入的数字ax(zf=1),,,特殊情况(esc键和tab键zf=0)esc键返回ax=0(zf=0),tab返回ax=1(zf=0);可以用jz判断是否发生了特殊情况。用ax区分发生了esc还是tabpush BX  ;保护现场push DX push CX ;此处不能pushf,因为flags是返回值mov AX,0 ;初始化 mov BX,0mov CX,0mov DX,0
getInt_XUNHUAN:mov AH ,01Hint 21H ; 输入一个字符,一定存储在 AL 中cmp  AL,0DH ; 判断回车符 jz  getInt_RESULT ;    zf=0 判断是回车cmp  AL,30Hjb   getInt_OTHER_ERROR  ; < 0cmp  AL,39H ;<= 9 && > 0jbe  getInt_SUM_TO_AX   jmp  getInt_XUNHUAN ;继续循环 getInt_SUM_TO_AX: mov AH,0 ;清除 AX 高位push AX  ;保存 AXmov AX,CX  ;将原先的值乘以 10 ,实质上乘起来的值放在了 CX 中 mov BX,10mul BX mov DX,0mov CX,AX pop AXsub AL,30Hmov bx,0mov bl,nadd CX,AXmov buf[bx],cl jmp  getInt_XUNHUAN    getInt_OTHER_ERROR:
;        cmp al,20h      ;在这里只考虑输入数字和空格 enter键
;        je if_space
;        jmpcmp cx,0je if_0  ;cx等0mov dl,ninc dlmov n,dlmov cx,0jmp  getInt_XUNHUAN          ;cx不等0if_0:cmp n,0jne not_n_0not_n_0:mov dl,ninc dlmov n,dl    jmp  getInt_XUNHUAN                            getInt_RESULT:cmp cx,0jne if_not_0mov AX,CXpop BX  ;恢复现场pop DX pop CXret  if_not_0:mov dl,ninc dlmov n,dlmov AX,CXpop BX  ;恢复现场pop DX pop CXret putInt:pushfpush axpush bxpush cxpush dxpush dipush si    	                 mov     cx,0  ddiv:mov     dl,10            div     dl   ;除法指令的被除数是隐含操作数,此处为dx:ax,商ax,余数dxadd     ah,30H           ;商加上48即可得到相应数字的ASCII码        inc     cx                                                        mov     dl,ahmov     ah,0push    dxcmp     al,0   ;al是商                      jne    ddivleadzero:pop     dx    mov     ah,02hint     21h   ;调用DOS功能,该功能为显示DS:DX地址处的字符                       loop    leadzeropop sipop dipop dxpop cxpop bxpop axpopf     RET
CODE  ENDS                    ;代码段结束
END  START              ;汇编结束 

http://chatgpt.dhexx.cn/article/SJ32hkRK.shtml

相关文章

MIPS实现冒泡排序

程序目标 从键盘输入10个无符号字数并从大到小进行排序&#xff0c;排序结果在屏幕上显示出来。 准备工作 编程的入门级知识&#xff1a;循环、冒泡排序、内存和堆栈的概念MIPS语法&#xff1a;程序基本结构汇编语言&#xff1a;不同寄存器作用、数据存储、系统调用编辑器&a…

c语言数组实现冒泡排序

数组实现冒泡排序 什么是冒泡拍排序用数组实现总结 什么是冒泡拍排序 首先&#xff0c;需要了解一下什么是冒泡排序&#xff0c;定义&#xff1a;冒泡排序&#xff08;Bubble Sort&#xff09;也是一种简单直观的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个…

汇编实现排序——冒泡排序

冒泡排序算法的运作如下&#xff1a;&#xff08;从后往前&#xff09; 1.比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。 2.对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。…

冒泡排序与qsort排序

先来比较两者的优缺点&#xff1a; 冒泡排序qsort排序优简单&#xff0c;稳定效率高&#xff0c;适用性广劣适用性差&#xff0c;速度慢较为复杂 一、冒泡排序&#xff1a; 底层思路&#xff1a; 如此循环9轮得到 知道了思路就可以写代码了 #include<stdio.h> void bubbl…

易语言冒泡排序

冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成。这个算…

实现冒泡排序函数

#1 冒泡排序思想 假设我们现在又是个乱序的数字&#xff0c;10 2 3 4 1 6 8 5 9 7&#xff0c;要对这十个数字进行升序排序&#xff08;越往右数字越大&#xff09;&#xff0c;我们可以这样子做&#xff1a; 取出最左边的数字&#xff08;10&#xff09;&#xff0c;然后依次…

用汇编实现冒泡排序

对应的C语言代码如下&#xff1a; int number[6]{12,3,2,5,6,7}; for(int i0;i<6;i) {for(int j0;j<6;j) {if(a[i]<a[j]) {int tempa[i];a[i]a[j];a[j]temp;}} } 汇编代码&#xff08;从大到小排列&#xff09;&#xff1a; DATA SEGMENTBUF DB 12,3,2,5,6,7 …

c语言冒泡排序while循环,冒泡排序算法,C语言冒泡排序算法详解

冒泡排序是最简单的排序方法&#xff0c;理解起来容易。虽然它的计算步骤比较多&#xff0c;不是最快的&#xff0c;但它是最基本的&#xff0c;初学者一定要掌握。 冒泡排序的原理是&#xff1a;从左到右&#xff0c;相邻元素进行比较。每次比较一轮&#xff0c;就会找到序列中…

冒泡排序与qsort函数详解

提及到排序&#xff0c;冒泡排序算是一个很基础的排序了。那么冒泡排序到底是什么呢&#xff1f;冒泡排序在什么情况下使用呢&#xff1f;qsort函数又是什么呢&#xff1f;接下来我给大家通过举例来详细解释一下。 引入 这里给大家一个题目&#xff0c;大家可以简单思考一下&am…

模仿qsort功能实现一个冒泡排序

目录 1.简单介绍qsort 2.模仿qsort实现冒泡排序 qsort函数原型 void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*)); 一些解释: 1.base:指向要排序数组的第一个对象 类型为void* 2.num:base所指向数组的元素总数…

字符串的冒泡排序

字符串的冒泡排序 本题要求使用冒泡排序法对任意给定的N个字符串按从小到大排序&#xff0c;输出扫描完第K&#xff08;K<N&#xff09;遍后的中间结果序列。 输入格式&#xff1a; 输入在第1行中给出N和K&#xff08;1≤K<N≤100&#xff09;&#xff0c;此后N行&…

冒泡排序(C语言)

文章目录 1. 冒泡排序如何实现1.1 冒泡排序函数的错误设计1.2 数组名是什么&#xff1f;1.3 冒泡排序函数的正确设计 1. 冒泡排序如何实现 往往我们在写代码的时候&#xff0c;会将数组作为参数传个函数&#xff0c;比如&#xff1a;我要实现一个冒泡排序&#xff08;这里要讲算…

模仿qsort实现一个冒泡排序的通用算法

&#x1f4a5;qsort函数介绍&#x1f4a5;冒泡排序介绍&#x1f4a5;什么是冒泡排序的通用算法&#x1f4a5;模仿qsort的一个冒泡排序的通用算法&#x1f4a5;结语 &#x1f525;qsort函数介绍 在一些编程题中经常需要你按照某个指标按照从小到大或从大到小输出一些数据&#x…

c语言冒泡排序数组指针,c语言冒泡排序,指针,数组

冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面…

汇编——实现冒泡排序+讲解

题目描述&代码 有一个首地址为A的N字数组&#xff0c;编写程序采用冒泡排序使该数组中的数按照从大到小的次序整序。 数据存储在A的数组中&#xff08;即内存中&#xff09;&#xff0c;我们需要利用冒泡排序实现从大到小排序。 ;description data SEGMENT USE16a dw …

实现一个通用的冒泡排序 - C语言

一、前言 在对一组数组进行排序是&#xff0c;我们经常用到冒泡排序&#xff0c;它是一种较简单的排序算法。 冒泡排序的原理如下&#xff1a; 比较相邻的两个元素。如果第一个比第二个大&#xff0c;就交换它们两个。对每一对相邻元素做同样的工作&#xff0c;从开始第一对到…

第三次项目需求文档

北京理工大学大学疫苗接种系统 文章目录 一.UML图1.用例图2.类图3.活动图4.顺序图 二.需求规格说明文档1.需求和功能说明1.1.获取的功能需求.2.功能划分1.2.1.登录界面1.2.2.预约服务1.2.3.接种查询 2.工作量展示2.1.需求获取2.1.1.项目前景和范围2.1.2.涉众分析2.1.4.面谈 2.…

项目文档编写规范

此文件是 项目文档编写规范 的 readme 编写范例&#xff0c;点击 我要改进 即可查看其 Markdown 内容。 项目概述 产品名称&#xff1a;LaraBBS 项目代号&#xff1a;larabbs 官方地址&#xff1a; https://learnku.com/laravel/t/6592 LaraBBS 是一个简洁的论坛应用…

项目文档管理

项目文档管理&#xff08;Project Documents Management&#xff09; 目录 [隐藏 ] 1 项目文档管理的概述 2 文档管理在项目进程中的重要作用 3 如何建立项目文档管理规定 4 参考文献 <script type"text/javascript"> if (window.showTocToggle) { var …

项目文档如何管理?

在项目进行过程中&#xff0c;会产生很多相关文档文件。通常会散落的分布在不同员工的设备中以及聊天记录中&#xff0c;这种管理方式不仅增大了文件丢失的风险&#xff0c;而且不利于团队文件协作&#xff0c;以及项目经验知识沉淀。 项目文件的管理是项目管理中不可缺少的一…