汇编语言程序设计实验:查找最小奇数、删除数组0元素、十六进制转ASCII
需积分: 9 160 浏览量
更新于2024-09-12
2
收藏 34KB DOC 举报
"汇编语言程序设计实验,包含三个实验:寻找数组中最小奇数、删除数组中0元素并压缩、十六进制数转ASCII码"
在汇编语言程序设计中,实验通常用来帮助理解基本操作和流程。以下是对给定文件中三个实验的详细解释:
1. **寻找数组中最小奇数**:
- 这个实验的目标是找到以`ARRAY`为首地址的10字数组中的最小奇数,并将其存储在`DX`寄存器中。
- 代码首先初始化`DS`段寄存器,使其指向数据段(`DATAS`)。
- 使用`LEA SI, ARRAY`来设置`SI`寄存器指向数组的首地址。
- `CX`寄存器设置为10,作为循环计数器,表示数组的长度。
- `DX`初始化为`0xFFFFH`,用于暂存最小奇数。
- `NEXT`循环中,`MOV AX, [SI]`加载数组元素到`AX`,然后使用`TEST AX, 0001H`检查是否为奇数。如果为偶数,则跳过比较 (`JZ AGAIN`)。
- 如果是奇数,就与当前最小值进行比较(`CMP DX, AX`),如果小于或等于最小值,则更新最小值(`JBE AGAIN`)。
- 循环结束后,`AX`寄存器包含最小奇数,程序通过`INT 21H`调用退出。
2. **删除数组中所有0元素并压缩**:
- 此实验旨在删除`ARRAY`数组中的所有0元素,并将后续元素向前移动,最后用0填充剩余空间。
- 首先,`AL`寄存器初始化为0,`DI`指向数组首地址,`CX`设置为100,表示数组长度。
- 使用`REPNE SCASB`指令在数组中查找非0元素,如果找到则跳转至`STOP`。
- `CX`不为0时,保存`DI`和`CX`,开始删除过程。
- `DEL`循环中,将当前元素移到前一个位置,然后递增`DI`,直到遍历完整个数组。
- 最后用0填充`DI-1`处的空位,恢复`CX`和`DI`,然后减`DI`并跳转回`NEXT`继续查找。
- 当数组无元素(`CX`为0)或所有元素都是0时,程序退出。
3. **十六进制数转ASCII码**:
- 实验目标是将`AX`寄存器中的十六进制数转换为ASCII码,并存入`MEM`数组的四个字节中。
- 这通常涉及到对`AX`的每一位进行处理,分别提取高四位和低四位,然后转换成对应的ASCII码。
- `AX`寄存器的高四位和低四位可以通过位移和与操作提取出来,然后转换成十进制数,再转换成ASCII码。
- ASCII码的数字字符'0'到'9'的值在48到57之间,因此转换后的数值需要加上48以得到正确的ASCII值。
- 每个转换后的ASCII码存放在`MEM`数组的相应位置。
通过这些实验,学习者可以深入理解汇编语言中的基本操作,如寻址、条件转移、循环、位操作以及数据转换等。同时,这些实验也强调了在实际编程中如何组织和优化代码,以实现特定功能。
2020-11-07 上传
2013-12-17 上传
2008-11-13 上传
点击了解资源详情
2024-11-10 上传
2024-11-10 上传
2024-11-10 上传
2024-11-10 上传
河水0
- 粉丝: 10
- 资源: 225
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码