汇编语言计算平均数:去除最大最小值
3星 · 超过75%的资源 需积分: 45 64 浏览量
更新于2024-09-12
4
收藏 28KB DOC 举报
"该资源是一个使用汇编语言编写的程序,用于计算并显示10个10以下的数字(去掉了最大和最小值)的平均数。程序通过debug进行了调试,作者是160409108,日期为2011年11月12日。程序首先显示提示信息,让用户输入10个数字,然后利用冒泡排序法对这些数字进行排序,去掉最大值和最小值,最后计算剩下的8个数字的平均数,并将结果以保留3位小数的形式显示在显示器上。"
在这个汇编语言程序中,主要涉及以下几个知识点:
1. **数据段(Data Segment)**:
- `DATASEGMENT` 和 `DATAENDS` 定义了一个数据段,用于存储程序中的常量、变量等数据。`BUFDB?` 表示定义了一个字节大小的缓冲区,用于存放用户输入的数字,`TABLEDB?` 用于存储经过处理后的数值。
2. **地址组织(ORG10H)**:
- `ORG10H` 指定了程序在内存中的起始地址,这里的 `10H` 是16进制表示,转换成10进制是16。
3. **字符串操作**:
- `BUF1DB 'PLEASEENTER10NUMBERS$'` 和 `BUF2DB 'THEAVERAGEIS$'` 分别定义了两个字符串常量,用于显示提示信息和结果。
4. **中断调用(Interrupts)**:
- `INT21H` 被用来调用DOS中断,这里用到的是9号功能(`MOVAH,9`)显示字符串,2号功能(`MOVAH,02H`)输出字符,1号功能(`MOVAH,1`)读取用户输入。
5. **循环结构**:
- `LP1:` 和 `LOOPLP1:` 以及 `STOP:` 是程序中的循环结构,用于接收10个用户输入的数字。
6. **数学运算**:
- `SUBAL,30H` 用于将ASCII码转换为十进制数。
- `ADDAL,[SI]` 用于累加数组中的数字。
- `DIVCL` 用于除法运算,AX作为被除数,CL作为除数,商在AL中,余数在AH中。
7. **冒泡排序法(Bubble Sort)**:
- 程序使用冒泡排序法对输入的10个数字进行排序,通过 `LOP1:` 和 `LOP0:` 以及 `JLENEXT` 来实现比较和交换。
8. **条件判断**:
- `JLENEXT` 和 `JZSTOP` 等跳转指令用于控制流程,根据比较结果决定是否继续执行或结束循环。
9. **存储器操作**:
- `MOVSI,OFFSET BUF` 和 `MOVDI,OFFSET TABLE` 分别设置源和目的指针,用于遍历数组。
- `MOV[DI],AL` 和 `MOV[DI],AH` 用于将计算结果存储到特定内存位置。
10. **结果处理**:
- 程序通过 `DIVCL` 计算平均值,结果分别存放在 `AL`(商)和 `AH`(余数)中,最后将结果显示在屏幕上。
这个程序展示了如何在汇编语言环境中实现基本的用户交互、数据处理、排序算法和结果输出等功能,对于学习汇编语言编程的学生来说,是一个很好的实践案例。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-04-29 上传
2010-08-05 上传
2014-04-23 上传
127 浏览量
likfire
- 粉丝: 0
- 资源: 4
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析