微机原理上机实践:字形排序与冒泡法

版权申诉
5星 · 超过95%的资源 3 下载量 158 浏览量 更新于2024-07-07 2 收藏 521KB DOC 举报
“西电微机原理上机.doc”文档主要涉及微机原理中的编程实践,具体是使用汇编语言编写程序,实现一个字型数据的冒泡排序。该程序的目的是对缓冲区BUFFER中的100个随机生成的字进行升序排序,并以特定格式输出排序后的数据及其原始顺序。 在描述中,作者提到了遇到的问题和学习经验。首先,他们通过流程图理解了程序设计的步骤,包括生成随机数、冒泡排序算法的应用以及子函数的编写和调用。在实践中,作者发现直接套用字节型的冒泡排序方法在处理字型数据时会出现错误,因为冒泡排序只对AL寄存器中的数值进行了排序,而不是实际的随机数。此外,作者还意识到在字型与字节型数据处理上的混淆,以及一些其他的小错误,需要进一步改进。 程序的运行结果显示了排序前后的数据,并通过代码展示了整个排序过程。代码中定义了栈段、数据段和代码段,并初始化了缓冲区BUFFER,填充了100个由X值计算得到的随机字。接着,程序使用冒泡排序算法对这些字进行排序,这里采用了一种循环嵌套的方式来实现。在排序过程中,外层循环控制总的遍历次数,内层循环则执行比较和交换操作。排序完成后,程序通过调用不同的子程序(DISPAX、XIAOYU、XUHAO、DAYU和DISPCR)来显示排序结果和原始序号。 这个上机实验涵盖了以下几个关键知识点: 1. **汇编语言编程**:使用汇编语言编写程序,涉及到数据类型、内存访问、寄存器操作以及流程控制结构。 2. **内存管理**:定义和使用栈段、数据段和代码段,以管理和访问不同类型的内存区域。 3. **随机数生成**:通过X值的计算生成随机数,这在实际编程中常用作模拟随机行为。 4. **冒泡排序算法**:理解并实现冒泡排序,用于对字型数据进行升序排列,包括比较和交换元素的逻辑。 5. **子函数编写和调用**:创建和调用子程序以实现特定功能,如数据的显示。 6. **数据类型处理**:识别和处理字型数据与字节型数据的区别,特别是在运算指令中的应用。 7. **错误调试**:通过运行结果分析问题,如发现冒泡排序在处理字型数据时的错误,并提出改进方案。 8. **中断调用**:虽然文中未直接涉及,但通常在微机原理中会学习到中断的概念,它是处理外部事件或系统服务的一种方式。 9. **ASCII码回显**:在显示数据时可能涉及ASCII码的转换和回显,这是字符输出的常见操作。 通过这个上机实验,学生可以深入理解微机原理中的实际编程应用,提高对计算机底层工作原理的理解。