汇编语言实验5:循环结构程序设计
《汇编语言程序设计》实验报告
- 实验五 循环结构程序设计
- 1. 实验目的
- 2. 实验任务
- 3. 实验步骤
- 3.1 循环结构题目设计
- 3.2 编写代码
- 3.3 代码分析
- 3.4 运行测试
- 4. 实验总结
实验五 循环结构程序设计
1. 实验目的
- 掌握汇编语言程序设计的基本方法和技能
- 掌握汇编语言源程序的编辑汇编连接和执行的完整过程
- 掌握汇编过程中各种命令的作用及使用方法
- 掌握汇编语言中的循环结构程序设计
2. 实验任务
- 熟悉汇编语言环境,熟练汇编语言的编写
- 学习循环结构的汇编语言程序的设计和调试
- 加深对汇编语言循环结构的理解
- 加深对汇编语言整体的认识和把握
- 掌握在汇编语言中循环结构的实现方法和流程
3. 实验步骤
3.1 循环结构题目设计
- 编写计算1+2+3+…+99+100的程序,要求把结果存放于WORD类型变量X中 。
- 从STR1为起始地址的30个字符,依次传送到以STR2为起始地址的连续字节存储单元中。
- 在BLOCK单元开始的存储区中,连续存放着30个学生的课程成绩,统计其中各个分数段的学生人数:90~100 80~89 70~79 60~69 60分以下的学生数分别存放到S9 S8 S7 S6 S5中。
3.2 编写代码
代码一
DATAS SEGMENT;此处输入数据段代码 SUM DW ?
DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;此处输入代码段代码XOR AX,AX ;AX清0MOV CX,100
again:ADD AX,CX ;从100倒序累加到AXLOOP againMOV SUM,AXMOV AH,4CHINT 21H
CODES ENDSEND START
代码二
DATAS SEGMENT;此处输入数据段代码 STR1 DB 'ABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789'STR2 DB 30 DUP(?)
DATAS ENDS
STACKS SEGMENT;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV SI,OFFSET STR1 ;源地址指针MOV DI,OFFSET STR2 ;目的地址指针MOV CX,30 ;设置循环次数
again:MOV AL,[SI]MOV [DI],ALINC SI ;指针+1INC DI ;指针+1LOOP againMOV AH,4CHINT 21H
CODES ENDSEND START
代码三
DATAS SEGMENT;此处输入数据段代码 BLOCK DB 20,30,100,50,65,49,25,22,39,98,56,77,63,30,66,75,41,88,12,77,78,69,55,66,68,88,6,82,92,63,76COUNT EQU 30S9 DB 0S8 DB 0S7 DB 0S6 DB 0S5 DB 0
DATAS ENDS
STACKS SEGMENT;此处输入堆栈段代码
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;此处输入代码段代码MOV BX,OFFSET BLOCK ;源地址指针MOV CX,COUNT ;循环次数30
again:MOV AL,[BX] ;取出数据送至ALCMP AL,100 ;与100比较 JA exit ;大于100 直接结束CMP AL,90 ;与90比较JAE L9 ;大于等于90 到L9CMP AL,80 ;与80比较JAE L8 ;大于等于80 到L8CMP AL,70 ;与70比较JAE L7 ;大于等于70 到L7CMP AL,60 ;与60比较JAE L6 ;大于等于60 到L6
L5:INC S5 ;S5+1JMP L10 ;转L10循环
L6:INC S6 ;S6+1JMP L10 ;转L10循环
L7:INC S7 ;S7+1JMP L10 ;转L10循环
L8:INC S8 ;S8+1JMP L10 ;转L10循环
L9:INC S9 ;S9+1
L10:INC BX ;BX+1到下一数据LOOP again ;执行循环
exit:MOV AH,4CHINT 21H
CODES ENDSEND START
3.3 代码分析
代码一
利用循环实现从1到100相加,首先将AX寄存器清零,设置CX值为100,循环again,将CX值加到AX上,每次CX-1,最后将AX值赋值到SUM内存单元中存储结果。
代码二
首先将源地址存放到SI,将目的地址存放到DI,设置CX值即循环次数为字符串长度,然后将[SI]即源地址指针指向的内容通过AL转存到[DI]指针的地址处。
代码三
Block源地址指针存放到BX寄存器中,设置CX寄存器值为COUNT,即数据的个数,通过循环again,依次确定每个数据的范围,将对应存储地址单元的内容加1,最终得到执行结果。
3.4 运行测试
图表 1 代码一测试
图表 2 代码二测试
图表 3 代码三测试
4. 实验总结
- 成功运行了汇编语言代码测试,熟悉了汇编语言运行环境。
- 掌握了汇编语言程序设计循环结构设计的基本方法和技能。
- 通过本次实验,对循环结构的设计有了新的认识和更深的了解,了解到语句之间如何进行嵌套及在汇编语言中面对特殊情况时如何跳出循环或忽略本次循环,了解到循环结构程序的执行过程。
- 在题目设计和实现的过程中,也遇到了很多的问题,认识到了自己的很多不足,对于新的问题,没有自己的解题思路,出现了的问题自己不知道出现在哪里,最终认识到自己还是练习的太少,导致汇编语言不太熟练,所以在以后更要对自己的缺陷进一步学习和强化。
汇编语言实验5:循环结构程序设计相关推荐
- 周信东c语言实验二实验报告,实验三 循环结构程序设计参考答案
C语言实操课循环结构答案 实验三 循环结构程序设计(参考答案) 1.设计程序sy3-1.c ,要求打印小学九九乘法表. 算法分析: 根据九九乘法表可知,该表共有9行,第i行有i个表达式,而且表达式中的 ...
- c语言已知祖父年龄70,实验三循环结构程序设计.doc
实验三循环结构程序设计 实验三 循环结构程序设计 一.实验目的 (1) 掌握while.do~while.for语句的使用. (2) 掌握循环体内使用break.continue语句的作用. (3) ...
- 高级语言程序设计实验c,高级语言程序设计-实验四 循环结构程序设计
实验四循环结构程序设计(2学时) 目的要求 (1)掌握C语言for.while.do-while循环编程. (2)掌握在程序设计过程中用循环的方法实现各种算法(如穷举.迭代.递推等). (3)巩固所学 ...
- c语言程序设计循环结构求奇数和,C语言程序设计实验报告循环结构程序设计.doc...
C语言程序设计实验报告循环结构程序设计 C语言实验报告 课程__C程序设计_实验名称_循环结构程序设计__第 页 共 页 系 别__电气工程______________________ 实 验 日 期 ...
- c语言实验原理或流程图,实验2循环结构程序设计实验报告.doc
广 州 大 学 实 验 报 告 学 院 商学院 专业.班级 11电子商务 姓名.学号 任雨桐 1113800001 课程名称 C程序设计 项目名称 循环结构设计 实验时间:2012年 4 月 10 日 ...
- 实验五 循环结构程序设计 → 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打, 仅供参考)
实验6.1 //程序功能:输入一个整数n,求1/1-2/3+3/5-4/7+5/9-6/11+--的前n项之和 #include <stdio.h>int main() {int i, n ...
- c语言选择循环实验报告,C语言程序设计实验报告选择与循环结构程序设计.doc
C语言程序设计实验报告选择与循环结构程序设计.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的 ...
- 用python循环结构计算派的值_Python程序设计实验报告四:循环结构程序设计(设计型实验)...
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名姚彩琴学号3190505129 成绩 日期 2020.4.8 指导老师修宇 [实验名称]实验四 循环结构程序设 ...
- C语言实验报告4云南大学,C语言循环结构程序设计实验报告.doc
C语言循环结构程序设计实验报告.doc 云南大学数学与统计学实验教学中心实验报告课程名称程序设计和算法语言学期 20122013学年下学期成绩指导教师学生姓名学生学号实验名称循环结构程序设计实验编号四 ...
最新文章
- 【Collection、泛型】
- 服务器怎样共享文件夹共享文件夹,服务器怎样共享文件夹共享文件夹
- Android开发编码规范pdf文件下载
- C++Builder 2010深入TApplication类之属性
- Windows 10 版本信息
- 【华为云技术分享】华为云文档数据库服务DDS监控告警全新优化
- js 表单设计器_准备迎接Vue3,使用Vue Composition API生成干净可扩展的表单
- AngularJS的ng-click阻止冒泡
- 原生js实现网站倒计时效果 给网站添加一个活动倒计时效果 线报活动结束提示效果
- 错误排查:Cloudera Manager Agent 的 Parcel 目录位于可用空间小于 10.0 吉字节 的文件系统上。 /opt/cloudera/parcels...
- java水彩画效果滤镜,把动物照片转成水彩画效果的PS滤镜教程
- 一种更简单的求最小平方均值函数(MSE)的方法 -- 梯度下降法。
- 关于文件命名和整理的小技巧
- mysql vs创建表_MYSQL基础三--表的操作一
- 计算机视觉快速入门一 —— 图像基本操作(二)
- 11. 盛最多水的容器(java实现)--2种解法(左右夹逼,暴力)LeetCode
- Win RT再遭宏碁唱衰 微软被迫调整策略
- 衣服上的标签是如何做出来的?
- railgun游戏服务端架构
- 640万被盗的PlayStation账户在Dark Web上销售