微机原理与应用综合实验—循环程序设计

合集下载

循环程序设计实验报告

循环程序设计实验报告

循环程序设计实验报告
实验名称:循环程序设计实验报告
实验目的:
本实验旨在通过编写循环程序,提高学生对循环结构的理解和应用
能力,并培养学生的编程思维和解决问题的能力。

实验要求:
1.熟悉循环结构的基本原理和应用场景。

2.掌握使用循环结构解决实际问题的方法。

3.能够分析和设计能够利用循环结构优化的程序。

4.完成实验报告,详细记录实验过程和结果。

实验内容:
1.实验环境和工具
介绍实验所使用的编程环境和工具,包括操作系统、编程语言和开
发工具等。

2.实验题目和要求
描述实验要求和题目,明确实验要求和要解决的问题。

3.实验设计
介绍实验的设计思想和方法,包括解决问题的整体思路和基本步骤。

4.实验步骤
按照设计思路和方法,详细描述实验的具体步骤,包括程序的编写、调试和运行等。

5.实验结果与分析
展示实验的运行结果,并对结果进行详细分析和解释。

6.实验总结
总结实验的过程和结果,提出实验中存在的问题和改进的方向。

附件:本实验涉及的附件包括但不限于实验源代码、实验数据和实
验报告等。

法律名词及注释:
1.版权:著作权法规定的个人或集体对作品享有的专有权利。

2.商标:商标法规定的商业标识,用以区分不同商家的商品或服务。

3.专利:专利法保护的发明创造,赋予发明人对其发明的独占权利。

微型计算机循环程序设计实验

微型计算机循环程序设计实验

深圳大学实验报告
课程名称:微机原理与接口技术
实验项目名称:循环程序设计实验
学院:信息工程学院
专业:电子信息工程
指导教师:骆剑平
报告人:罗沛鸿学号:2012130294 班级:电子3班实验时间:
实验报告提交时间:
循环程序设计实验
实验目的:
1:加深对循环结构的理解
2:掌握循环结构程序设计的方法以及调试方法
实验设备:
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套实验内容与步骤:
实验结果:
实验结论:
由此次试验,基本掌握了分支程序设计实验与循环程序设计实验,分支程序设计实验重点在于E命令与D指令的运用以及DX的使用,循环设计实验重点在于对循环结构的清晰认识,读懂程序。

注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。

2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

循环程序设计 实验报告

循环程序设计 实验报告

循环程序设计实验报告循环程序设计实验报告引言:循环程序设计是计算机科学中一项重要的技术,它能够让计算机在特定条件下重复执行一段代码,从而实现特定的功能。

本实验旨在通过编写循环程序,探索循环程序设计的原理和应用。

实验目的:1. 理解循环程序设计的概念和原理;2. 学会使用不同类型的循环结构,如for循环、while循环和do-while循环;3. 掌握循环程序设计在问题解决中的应用。

实验过程:1. 实验环境的搭建在实验开始前,我们需要搭建一个适合编写和运行循环程序的环境。

选择一款适合的集成开发环境(IDE),如Visual Studio、Eclipse等,并安装相应的编程语言环境,如C++、Java等。

2. 编写基本的循环程序首先,我们从最简单的循环结构开始,即for循环。

以C++语言为例,我们可以使用以下代码编写一个简单的for循环程序:```cpp#include <iostream>int main() {for (int i = 0; i < 10; i++) {std::cout << "Hello, World!" << std::endl;}return 0;}```上述代码中,for循环的三个部分分别表示循环变量的初始化、循环条件和循环变量的更新。

通过这个简单的循环程序,我们可以在控制台输出10次"Hello, World!"。

3. 使用循环解决实际问题循环程序设计在解决实际问题时非常有用。

我们可以通过循环来处理一系列数据、实现复杂的算法等。

下面以一个实际问题为例,演示如何使用循环程序设计进行问题求解。

假设有一个整数数组,我们需要找到数组中的最大值。

我们可以使用for循环遍历整个数组,并通过比较来找到最大值。

以下是一个使用C++语言实现的示例代码:```cpp#include <iostream>int main() {int arr[] = {5, 2, 8, 3, 1};int max = arr[0];for (int i = 1; i < 5; i++) {if (arr[i] > max) {max = arr[i];}}std::cout << "The maximum value is: " << max << std::endl;return 0;}```通过以上代码,我们可以找到数组中的最大值,并将其输出到控制台。

微机原理与接口技术 4循环

微机原理与接口技术 4循环

MOV SUM,AX
MOV CN,BX ;送结果
MOV AH,4CH
INT 21H
;返回DOS
ENDS
END START
2.多重循环程序设计
(混合控制法)
【例3】编写程序实现下列功能:统计 一个字符串对应的ASCII码串中二进制 “1”的个数。
【分析】 这需要循环嵌套,外循环对n个字符进行
循环操作,内循环对每个字符中的“1” 统计。
数据变大怎么办?
1.单循环程序设计
(条件控制法)
【例2】编写程序完成求1+2+3+……N的累 加和,直到累加和超过1000为止。统计被累 加的自然数的个数送CN单元,累加和送SUM。
【分析】 • 用寄存器处理比较快速。因为结果要求 送两种数,可分别用AX、BX操作。
DATA DATA
SEGMENT SUM DW ? CN DW ? ENDS
CODE START:
SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
;初始化
MOV AX,0
;0送AX
MOV BX,0
;0送BX
LP: CODE
INC BX
;BX加1
ADD AX,BX ;求累加和
CMP AX,1000 ;条件控制
JBE LP
;≤1000转
三、循环控制的方法
(1)计数控制法 (2)条件控制法 (3)混合控制法
1.单循环程序设计
(计数控制法)
【例1】设有两个长度为8个字节的无符号数分 别存放在以NUM1、NUM2为首地址的连续的内 存单元中,将两个数相加,并将结果存入SUM 内存单元中。

微机实验报告循环程序

微机实验报告循环程序

一、实验目的1. 理解循环程序的基本概念和作用。

2. 掌握C语言中循环语句(for、while、do-while)的用法。

3. 学会分析循环程序的结构,提高程序设计能力。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容本次实验主要设计以下循环程序:1. 打印1到100之间的所有整数。

2. 计算1到100之间所有整数的和。

3. 输入一个整数n,打印从1到n的斐波那契数列。

四、实验步骤1. 打印1到100之间的所有整数。

```c#include <stdio.h>int main() {int i;for (i = 1; i <= 100; i++) {printf("%d ", i);}printf("\n");return 0;}```2. 计算1到100之间所有整数的和。

```c#include <stdio.h>int main() {int i, sum = 0;for (i = 1; i <= 100; i++) {sum += i;}printf("The sum of 1 to 100 is: %d\n", sum);return 0;}```3. 输入一个整数n,打印从1到n的斐波那契数列。

```c#include <stdio.h>int main() {int n, a = 1, b = 1, c;printf("Enter an integer: ");scanf("%d", &n);printf("Fibonacci sequence up to %d is:\n", n);for (int i = 1; i <= n; i++) {if (i == 1 || i == 2) {printf("%d ", a);} else {c = a + b;a = b;b = c;printf("%d ", c);}}printf("\n");return 0;}```五、实验结果与分析1. 打印1到100之间的所有整数。

微机原理汇编实验-分支、循环及子程序设计实验

微机原理汇编实验-分支、循环及子程序设计实验

微机原理汇编实验-分支、循环及子程序设计实验学生实验报告实验课程名称:微机原理汇编实验开课实验室:年月日年级、专业、班学号姓名成绩实验项目名称分支、循环及子程序设计实验指导教师教师评语一、实验目的1.学习分支程序、循环结构程序的设计和调试方法。

2.学习子程序的定义和调试方法。

3.掌握分支、循环、子程序等程序的基本结构。

二、实验原理使用MASM汇编语言设计工具,设计简单的汇编语言程序并进行运行调试,以便掌握汇编语言设计、编写、调试和运行程序的方法。

三、实验仪器、材料1.软件MASM5.02.PC微机一台四、实验步骤1.输入程序并检查无误,经汇编、连接后生成.EXE文件。

2.使用DEBUG命令运行以上程序。

3.反复试几组数,考察程序的正确性。

五、实验源代码;-------------------------------------------------;程序名:Lab201;功能:实现对NUM中 -128~127; 的数进行负数统计;备注:负数的个数存放在BL中并在屏幕输出;-------------------------------------------------DSEG SEGMENT;定义需要统计的各个数值,数据值不能大于127,不能小于-128 NUM DB -100,-100,1,-100,30,-10,127,89,-128,20;统计数据的个数LENG EQU ($-NUM)DSEG ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV CX,LENGMOV BX,0000HMOV AX,DSEGMOV DS,AXMOV SI,OFFSET NUMAGAIN:MOV DL,[SI]CMP DL,0000HJL LITTELJMP BIGLITTEL:INC BL ;程序结束返回DOSADD SI,1LOOP AGAINJMP FINISHBIG:ADD SI,1LOOP AGAINJMP FINISH;---------------------------------- ;子程序名:TRANNUM;功能:将数值转换为数字; 字符输出;入口参数:DL;出口参数:无;---------------------------------- TRANNUM PROC NEARMOV AL,DLXOR AH,AHMOV CX,2MOV DL,10TRAN1:DIV DLXCHG AH,ALADD AL,'0'PUSH AXXCHG AH,ALMOV AH,0LOOP TRAN1MOV CX,2TRAN2:POP DXCALL DISPLAYLOOP TRAN2RETTRANNUM ENDP;----------------------------------;子程序名:DISPLAY;功能:将单个字符显示输出;入口参数:DL;出口参数:无;----------------------------------DISPLAY PROC NEARMOV AH,02HINT 21HRETDISPLAY ENDPFINISH:MOV DL,BLCALL TRANNUM ;调用子程序:TRANNUM MOV AH,4CH ;程序结束返回DOSINT 21HMAIN ENDPCODE ENDSEND START六、实验过程原始记录(数据图表、计算等)1、打开命令提示符:输入cmd2、输入:cd G:/asm/tos3、输入:G:5、输入:masm lab2016、输入:link lab2017、输入:lab201七、实验结果分析从程序代码分析,所给数值中有5个负数,运行程序后输出结果为05,说明程序能够实现其统计负数个数的功能。

最新微机原理实验之_分支程序、循环程序设计

最新微机原理实验之_分支程序、循环程序设计

实验三分支程序、循环程序设计实验一、实验目的1.掌握分支程序的结构。

2.掌握分支程序的设计、调试方法。

3.加深对循环结构的理解。

4.掌握循环结构程序设计的方法以及调试方法。

二、实验设备PC机一台,TD-PITE实验装置一套。

三、实验内容:设计一数据块间的搬移程序。

设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。

源数据块和目的数据块在存储中可能有三种情况,如图1所示。

图3-1 源数据块与目的数据块在存储中的位置情况对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。

但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图3-1(b)所示。

当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图3-1(c)所示。

参考流程:如图3-2所示。

图3-2 程序流程图实验程序STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX, 0010HMOV SI, 3100HMOV DI, 3200HCMP SI, DIJA A2ADD SI, CXADD DI, CXDEC SIDEC DIA1: MOV AL, [SI]MOV [DI], ALDEC SIDEC DIDEC CXJNE A1JMP A3A2: MOV AL, [SI]MOV [DI], ALINC SIINC DIDEC CXJNE A2A3: JMP A3CODE ENDSEND START实验步骤1. 按流程图编写实验程序,经编译、链接无误后装入系统;2. 用E命令在以SI为起始地址的单元中填入16个数;3. 运行程序,然后再停止运行;4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同;5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。

微机实验循环程序设计

微机实验循环程序设计

微机实验循环程序设计微机实验中的循环程序设计是计算机编程中的一个重要组成部分,它允许程序员编写能够重复执行特定任务的代码。

循环程序设计在处理大量数据或需要重复操作的场景中尤其有用。

以下是关于微机实验循环程序设计的一些基本介绍和示例。

循环程序设计的重要性循环程序设计可以显著提高编程效率,减少代码冗余。

通过循环,程序员可以避免编写大量重复的代码行,使得程序更加简洁和易于维护。

循环程序的基本概念循环程序主要由两个基本元素组成:循环条件和循环体。

循环条件决定了循环何时开始和结束,而循环体则是在每次循环迭代中执行的代码块。

常见的循环结构1. for循环:适用于已知循环次数的情况。

其基本语法为:```cfor (初始化表达式; 循环条件; 更新表达式) {// 循环体}```例如,使用for循环打印0到9的数字:```cfor (int i = 0; i < 10; i++) {printf("%d ", i);}```2. while循环:适用于循环次数未知,但需要在每次迭代后检查条件的情况。

其基本语法为:```cwhile (循环条件) {// 循环体}```例如,使用while循环打印用户输入的非负整数:```cint num;printf("请输入一个非负整数:");scanf("%d", &num);while (num >= 0) {printf("%d ", num);scanf("%d", &num);}```3. do-while循环:与while循环类似,但至少执行一次循环体。

其基本语法为:```cdo {// 循环体} while (循环条件);```例如,使用do-while循环确保至少读取一次用户输入:```cint num;printf("请输入一个整数:");scanf("%d", &num);do {printf("%d ", num);scanf("%d", &num);} while (num >= 0);```循环控制语句在循环程序设计中,有时需要提前退出循环或跳过当前迭代。

微机实验分支和循环程序设计实验

微机实验分支和循环程序设计实验

微机实验分支和循环程序设计实验微机实验三分支和循环程序设计实验一、分支程序设计实验1.实验目的1.掌握分支程序的结构。

2掌握分支程序的设计、调试方法。

2.实验设备微机一台3.内容设计一数据块间的搬移程序代码:DATA SEGMENT ;定义数据段ORG 2520H ;输入原数据存放地址 X DB 1,2,3,4,5,6,7 ;1234567的赋值COUNT EQU $-X ;计算数据串长度 ORG 2525H ;输入目的数据存放地址 Y DB 7 DUP(0) ;定义目的数据长度 DATA ENDS ;数据段结束STACK SEGMENT PARA STACK 'STACK' ;定义堆栈段 STAPN DB 100 DUP(?) ;定义100个字节空间 TOP EQU LENGTH STAPN STACK ENDSCODE SEGMENT ;定义代码段MAIN PROC FAR ;过程定义语句ASSUME CS:CODE,DS:DATA,SS:STACK ;段寄存器分别与哪些段有关START:MOV AX,STACK;设置堆栈寄存器MOV SS,AXMOV SP,TOPPUSH DS ;DS入栈保护SUB AX,AX ;AX=0PUSH AX ;段内偏移量0入栈MOV AX,DATA ;数据段基址赋给AXMOV DS,AXLEA AX,X ;取X的地址偏移量LEA BX,Y ;取Y的地址偏移量CMP AX,BX ;比较大小JC FE ;如果AX小于BX,则执行FEJMP FS ;否则执行FSFS: MOV SI,0 ;从前往后复制MOV DI,0MOV CX,COUNT ;确定复制次数CIRCLE1:MOV AL,X[SI] ;MOV不能实现两存储空间赋值,所以先把原始数据存入ALMOV Y[DI],AL ;将数据赋给YINC SI ;SI指向下一个数据INC DI ;DI指向下一个数据LOOP CIRCLE1 ;循环赋值JMP END1 ;循环结束退出 FE: MOV SI,COUNT ;从末尾开始赋值MOV DI,COUNTDEC SI ;指向最后一个数据DEC DIMOV CX,COUNT ;确定循环次数CIRCLE2: MOV AL,X[SI] ;MOV不能实现两存储空间赋值,所以先把原始数据存入ALMOV Y[DI],AL ;将数据赋给YDEC SI ;SI指向下一个数据DEC DI ;DI指向下一个数据LOOP CIRCLE2 ;循环赋值JMP END1 ;循环结束退出END1: RET ;返回dos MAIN ENDP ;MAIN过程结束CODE ENDS ;代码段结束END MAIN ;源代码结束运行结果:若从后往前传:若从前往后传:二、循环程序设计实验1.实验目的(1)加深对循环结构的理解。

微机原理实验(循环程序设计)

微机原理实验(循环程序设计)
3.学会了调试循环程序的方法。




教师签字年月日
备注:1.文件名命名方式为:学号+姓名+实验序号.DOC
2.将文件按附件形式添加后提交
DATA SEGMENT
DB 06H,12H,88H,82H,90H,22H,33H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DI,0000H
MOV CL,[DI]
XOR CH,CH
MOV BL,CH
INC DI
A0: MOV AL,[DI]
TEST AL,80H
JE A2
INC BL
A2: INC DI
LOOPA0
MOV [DI],BL
MOV AX,4C00H
INT 21H
CODE ENDS
END START




(1)用编辑软件如:EDIT,输入源程序,并保存,后缀名为.ASM。
-U ;先用反汇编来查看源程序装入的地址和数据段的地址

-G=xxxx:xxxx;从程序装入的地址处,开始运行程序
(5)查看实验结果。
(6)也可使用EMU8086软件进行调试








1.通过实验掌握了宏汇编命令的基本格式及对循环结构的理解。
2.熟悉并掌握了循环结构程序设计的方法。
2.求某数据区内负数的个数。
设数据区的第一个单元存放数据的个数,从第二个单元开始存放数据,在最后一个单元存放结果。

微机原理及应用实验报告

微机原理及应用实验报告

实验一 程序调试实验(顺序结构程序设计)一、实验目的: 1.学习及掌握汇编语言源程序的基本结构,明确程序中各段的功能和相互之间的关系。

2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

3、熟悉和掌握DEBUG 常用命令的使用 二、实验要求:1、上机前,要认真阅读前言和课本相关章节2、上机前,画好流程图,编写好程序3、上机时,注意出现的错误,记录下出错信息,翻译之4、完成好实验报告 三、实验内容:在内存TAB 开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0 ≤ X ≤ 15),求X 的平方值,并把结果存放在Y 单元中。

(2).分析X 平方的值是tab 为首地址且x 的值为有效地址中的值。

data segmentx db 8 y db ?data endsstack segment para'stack' db 100 dup(0) stack ends code segmentassume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax xor ax,ax mov al,x lea si,tab add si,ax mov al,[si] mov y,al mov ah,4ch int 21h code ends end start(3).程序调试:4.心得体会了解了顺序结构,掌握了程序的运行,调试。

实验二分支程序设计一、实验目的:熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。

掌握分支程序设计、编写、调试和运行的方法。

二、实验要求:1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序。

2、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。

二、实验内容1.判断X单元数据的奇偶性,若为奇数,将Y单元设置为0FFH,若为偶数,将Y单元清0。

循环程序设计实验报告

循环程序设计实验报告

循环程序设计实验报告循环程序设计实验报告1. 引言循环程序设计是计算机程序设计中的重要部分,通常用于重复执行一段代码。

本文档旨在介绍循环程序设计的基本概念、常见的循环结构以及在实际编程中的应用。

通过本次实验,我们将探索循环程序设计的原理和技巧,并通过编写具体的代码案例加深理解。

2. 循环程序设计的基本概念循环程序设计的基本概念包括循环变量、循环条件和循环体。

循环变量是在循环过程中被递增或递减的变量,用于控制循环的执行次数。

循环条件是一个布尔表达式,用于判断是否继续执行循环。

循环体是需要重复执行的代码块。

3. 常见的循环结构在实际编程中,常见的循环结构包括`for`循环、`while`循环和`do-while`循环。

3.1 `for`循环`for`循环是一种在已知循环次数的情况下使用的循环结构。

它由三个部分组成:循环变量初始化、循环条件和循环递增或递减操作。

以下是`for`循环的语法示例:markdownfor (初始化; 条件; 递增或递减) {// 循环体}3.2 `while`循环`while`循环是一种在未知循环次数的情况下使用的循环结构。

它只由循环条件组成,循环体会根据循环条件的真假决定是否执行。

以下是`while`循环的语法示例:markdownwhile (条件) {// 循环体}3.3 `do-while`循环`do-while`循环是一种至少执行一次循环体的循环结构。

它由循环体和循环条件组成,循环体会先执行一次,然后根据循环条件的真假决定是否继续执行。

以下是`do-while`循环的语法示例:markdowndo {// 循环体} while (条件);4. 循环程序设计的应用循环程序设计在实际编程中有广泛的应用,常用于处理重复性任务和迭代计算等场景。

以下是几个常见的循环应用实例:4.1 计算累加和markdownint sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}4.2 查找数组中的最大值markdownint array = {10, 5, 8, 3, 20};int max = array[0];for (int i = 1; i < array.length; i++) { if (array[i] > max) {max = array[i];}}4.3 打印九九乘法表markdownfor (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(i + \。

微机原理实验程序中国石油大学(华东)

微机原理实验程序中国石油大学(华东)

实验3 循环程序设计实验内容:1.数组X,Y,Z,。

X=32,-43,76,95,-1;Y=-78,127,-128,-125,88。

计算两数之和,送入数组S。

DATA SEGMENTX DB 32,-43,76,95,-1Y DB -78,127,-128,-125,88S DB 5 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX ,DATAMOV DS,AXMOV CX,5MOV SI,0FOR:MOV AL,X[SI]ADD AL,Y[SI]MOV S[SI],ALINC SILOOP FORCODE ENDSEND START2.两个多位十进制数,X=1357902468,Y=5790123467。

计算两数之和(BCD码)。

DATA SEGMENTX DB 68H,24H,90H,57H,13HY DB 67H,34H,12H,90H,57HS DB 5 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX ,DATAMOV DS,AXMOV CX,5MOV SI,0CLCFOR:MOV AL,X[SI]ADD AL,Y[SI]DAAMOV S[SI],ALINC SILOOP FORCODE ENDSEND START实验4 子程序调用变成设计实验内容:用子程序调用方法,现有数组X=32,-43,76,95,-1,-78,127,-128,-125,88 编程按递增顺序排序输出。

DATA SEGMENTX DB 32,-43,76,95,-1,-78,127,-128,-125,88ENDS SEGMENTCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX ,DATAMOV DS,AXCALL SUB1MOV AH,4CHINT 21HSUB1 PROC NEARMOV CX,9LP1:MOV BX,0MOV DX,CXLP2;MOV AL,X[BX]CMP AL,X[BX+1]JLE NEXTXCHG AL,X[BX+1]NEXT:INC BXDEC DXJNE LP2LOOP LP1RETSUB1 ENDPCODE ENDSEND START实验5 DOS功能调用实验内容:1.从键盘连续输入五个单个字符,然后再反向输出这5个字符。

西安交大微机原理实验三循环程序的设计

西安交大微机原理实验三循环程序的设计

实验三循环程序的设计一、实验目的1.掌握提示信息的使用方法和从键盘键入信息的用法2.掌握循环程序的设计方法二、实验内容编写程序,从键盘分别键入两个字符串,进行比较,若相同,则显示“MATC”H,否则,显示“NOMATC”H 。

三、实验原理强迫cpu 重复执行一指令序列的程序结构是循环程序。

循环程序结构分四部分:1、初始化部分2、循环处理部分3、循环控制部分4、结束部分。

四、程序代码CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATA SEGMENTMESS1 DB'INPUT STRING1:',0DH,0AH,'$'MESS2 DB'INPUT STRING2:',0DH,0AH,'$'MESS3 DB'NO MATCH',0DH,0AH,'$'MESS4 DB'MATCH',0DH,0AH,'$'MAXLEN1 DB 81 ACTLEN1 DB ?STRING1 DB 81 DUP(?)MAXLEN2 DB 81ACTLEN2 DB ?STRING2 DB 81 DUP(?)DATA ENDSSTACK SEGMENT PARA STACK 'STACK'STA DB 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,TOPMOV DX,OFFSET MESS1 MOV AH,09HINT 21HMOV AH,0AHMOV DX,OFFSET MAXLEN1 INT 21HCRLFMOV DX,OFFSET MESS2 MOV AH,09HINT 21HMOV AH,0AHMOV DX,OFFSET MAXLEN2 INT 21HCRLFMOV SI,OFFSET ACTLEN1 MOV BX,OFFSET ACTLEN2 MOV AL,[SI]CMP AL,[BX]JNE NOMA NOMATCH: MOV CX,[SI] AND CX,0FHNEXT:INC SIINC BXMOV AL,[SI]CMP AL,[BX]JNE NOMADEC CXCMP CX,0JNE NEXTMOV AH,09HMOV DX,OFFSET MESS4 INT 21HJMP DENDNOMA:MOV AH,09HMOV DX,OFFSET MESS3 INT 21HDEND:MOV AX,4C00HINT 21HEND START五、头验调试过程 1•调试字符串输入功能在edit 中输入代码,编译、链接后,用debug 的-u 命令反汇编生成的可执行文件 shiyan3.exa 首先调试字符串输入是否正确,设置断点如下所示:110778:0000 B06AG? MOU AX P G?6A U778:00G8 BED8 MOU DS, AX 077G :0GQ5 8EC0 ruu ES.AXGT?78:0OGV B88O07 MOU AX P 6?B00778: 0O0A BED0 rou SS,AX 0778:0OGC BC3Z0O MOU SF,G0QZ 0778:0OGF BAO0GG MOU DX.0000 Qf?78:001Z B409 MQU AH.09 0778:0614 CDZ1 IHT Z1 0778:0016 B4GA MOU AH (0A O7?a :O0ia BA35O0 MOU DX R6035 0778:001® CDZ1 IHT 21 O77O :0O1D B402 MOU AH 题 Q7?0: Q01T B20D MOU DLpOD -g43INPUT STHING1: xjtuINPUT 31H1INGZ : bjtuAX=0£GA BX=0OGG CX=0158 DX=O0GA SF=003ZBF=0O0G SI=0000 DI=0000DS=076A ES=G76A SS=O70e CS=Q776 IF=0GH3MU UP El PL HZ NA FO NC阴76:0643 EE3606MOUSI ,0036用-d 命令查看如下以上说明字符串输入部分工作正常。

微机循环程序设计实验报告

微机循环程序设计实验报告

微机循环程序设计实验报告微机循环程序设计实验报告引言在当今数字化时代,计算机技术的发展已经成为各个领域的核心。

作为计算机科学的基础,循环程序设计在软件开发中扮演着重要的角色。

本实验旨在通过微机循环程序设计,探索程序的优化和性能提升。

实验目的1. 了解循环程序设计的基本概念和原理。

2. 熟悉微机循环程序设计的编写方法和技巧。

3. 掌握循环程序的性能优化和调试方法。

4. 分析循环程序设计在实际应用中的价值和局限性。

实验过程1. 实验环境搭建在开始实验前,我们需要搭建一个合适的实验环境。

选择一款适合的集成开发环境(IDE),并安装相应的编译器。

在本实验中,我们选择了Visual Studio作为开发环境,C语言作为编程语言。

2. 编写简单的循环程序在掌握基本的编程语法后,我们开始编写简单的循环程序。

通过使用for循环,我们可以实现对某个任务的重复执行。

这样的程序通常用于处理大量数据或者进行复杂的计算。

通过编写简单的循环程序,我们可以更好地理解循环程序设计的基本原理。

3. 优化循环程序性能在编写循环程序的过程中,我们需要考虑程序的性能。

通过合理地选择循环结构和优化算法,我们可以提高程序的执行效率。

例如,我们可以使用并行化技术来加速程序的运行,或者使用循环展开来减少循环的次数。

通过不断地优化,我们可以使程序更加高效。

4. 调试循环程序循环程序设计中常常会出现一些错误,例如死循环、数组越界等。

为了找出并解决这些错误,我们需要使用调试工具。

通过逐步执行程序,并观察变量的值和程序的执行流程,我们可以找到错误的原因并进行修复。

实验结果与分析通过实验,我们成功编写了多个循环程序,并对其进行了性能优化和调试。

在程序执行过程中,我们发现了一些问题,例如循环次数过多导致程序执行时间过长,或者循环条件设置不当导致程序无法正常结束。

通过分析这些问题,我们可以得出以下结论:1. 循环程序设计是一种高效的编程方法,可以大大提高程序的执行效率。

实验1-循环程序设计

实验1-循环程序设计
微机原理与接口技术
实验一 循环程序设计
河南科技大学 电子信息工程学院
循环程循环结构) 掌握正确分配与使用寄存器。
实验环境
计算机安装8086汇编语言的编译器、链接器以及文本编 辑文件。
预习要求
了解各种循环指令的使用方法。
实验原理
开始
在程序设计中, 在程序设计中,经常需要对 某些操作重复进行多次, 重复进行多次 某些操作重复进行多次,这
准备部分
时用循环程序比较方便。 时用循环程序比较方便。 循环程序一般包括四个部分
循环准备部分(初始化) 循环工作部分(循环体)
调整部分 N 循环部分
调整部分(计数值调整) 循环出口判定(循环条件)
出口条件判断
Y 结束
循环指令
指令格式 LOOP OPRD LOOPZ OPRD LOOPE OPRD LOOPNZ OPRD LOOPNE OPRD JCXZ OPRD 功能说明 (CX) (CX)-1, , (CX)≠0时,转到OPRD 时 转到 (CX) (CX)-1, , (CX)≠0且ZF=1时,转到OPRD 且 时 转到 (CX) (CX)-1, , (CX)≠0且ZF=0时,转到 且 时 转到OPRD CX=0时,转到OPRD 时 转到
实验内容
设计要求
以GRADE为首地址的10个字类型数组中保存有学生成绩。建立一个 10个字的RANK数组,并根据GRADE中的学生成绩将学生名次填入 RANK数组中。(提示:一个学生的名次等于成绩高于等于该学生 提示: 提示 的人数加1)
思考题
LOOP、LOOPZ、LOOPNZ指令构成的循环体退出条件是什么? 循环是否可以嵌套?如果可以嵌套,多层循环之间能否交叉? 多层循环程序各层循环是否都可用LOOP指令作为循环控制?若可 以,需注意什么问题?

循环程序设计实验

循环程序设计实验

实验三分支、循环程序设计实验一、实验目的1.掌握分支程序的结构。

2.掌握分支程序的设计、调试方法。

3. 掌握循环结构程序设计、调试方法的方法。

二、实验设备TDN86/88教学实验系统一台。

三、实验内容及步骤1.已知有一个长x个字的数据块,存放在以0202H:1000H开始的存储区域内。

试编写一个完整的汇编语言程序,将该数据块复制到以0202H:1008H开始的存储区内。

(根据x的大小,判断从首地址,还是末地址传送)实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。

(2)在0202H:1000H开始的X个单元中依次存入数据,即:E0202:1000↙,并输入01、02、03、04、05、06、07、08……。

(3)G=0000:2000↙,运行以上程序(4)D0202:1008↙,显示结果为:01、02、03、04、05、06、07、08……。

(5)反复试几组数,考察程序的正确性。

2.在ADDR开始的单元中存放着一个字,将字中1的个数存入COUNT单元中。

算法:要测出1的个数就应逐位比较,可根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位去。

可以用测试字是否为0来作为结束条件,这样可缩短程序的执行时间,对不同的字循环次数不同,因此采用当型循环结构。

实验步骤(1)编制实验程序输入程序并检查无误,经汇编、连接后装入系统。

(2)用U0000:2000查看 MOV AX,XXXX(DATA)语句,即得到数据段段地址DS=XXXX用E命令EXXXX:0000↙,输入数据39,A3(3)G=0000:2000↙,运行实验程序。

(4)D XXXX:0002↙,显示应为结果________。

(5)反复试几组数,考察程序的正确性。

3.在当前数据段(DS决定),偏移地址为DATAB开始的顺序20个单元中,存放着某班80名同学某门考试的成绩。

编写程序统计大于等于90分;80-89分;70-79分;60-69分;小于60分的人数各位多少,并将结果放在同一数据段,偏移地址为BTRX开始的顺序单元中。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

94 A2:PUSH AX 95 MOV DL,' ' 96 MOV AH,2 97 INT 21H 98 POP AX 99 ADD AX,BX 100 SHL AX,1 101 RET 102 A3:PUSH AX 103 MOV DL,' ' 104 MOV AH,2 105 INT 21H 106 POP AX 107 SUB AX,BX 108 SHL AX,1 109 RET 110 111 RET 112 CHRAC ENDP 113 MOV AH,4CH 114 INT 21H 115 CODE ENDS 116 END MAIN
45 ;********************************************** 46 INPUTPRO PROC NEAR 47 PUSH CX ;保护现场 48 PUSH AX 49 PUSH BX 50 SHL AX,1 ;得到每一行输入的字符(‘*’、‘ ’)总数 51 MOV CX,0001H 52 LOP:CALL CHRAC 53 INC CX ;CX自加 54 CMP CX,AX 55 JNA LOP;判断相等就换行 56 POP BX 57 POP AX ;恢复现场 58 POP CX 59 RET 60 INPUTPRO ENDP 61 ;********************************************** 62 ;子程序:输入每一个‘*’和‘ ’和0AH(换行字符) 63 ;********************************************** 64 CHRAC PROC NEAR 65 CMP CX,AX 66 JZ A1; 67 MOV DL,'*' 68 69 SHR AX,1 ;满足空格的条件 70 SUB AX,BX 71 CMP CX,AX 72 JNA A2 73 ADD AX,BX 74 ADD AX,BX 75 CMP CX,AX 76 JNB A3 77 78 SUB AX,BX 79 SHL AX,1 80 PUSH AX 81 MOV AH,2 82 INT 21H 83 POP AX 84 RET 85 A1:PUSH AX 86 MOV DL,0DH 87 MOV AH,2 88 INT 21H 89 MOV DL,0AH 90 MOV AH,2 91 INT 21H 92 POP AX 93 RET
1.3 运行结果
注:以上代码,均由本人独立完成, 转载需注明出处 ,尊重原 创,人人有责。欢迎交流~
1 微机原理与应用综合实验—循环 程序设计
——南京理工大学2019秋季学期电子信息工程专业《微机原理与应用综合实 验》(1学分)
1.1 实验内容与要求
1.பைடு நூலகம் 实验代码
编程软件: emu8086 。
1 DATA SEGMENT 2 IN1 DB 'PLEASE INPUT THE NUMBER(数字0~9) :','$' 3 NUM DB 1 DUB(0) 4 DATA ENDS 5 CODE SEGMENT 6 ASSUME CS:CODE,DS:DATA 7 MAIN PROC FAR ;主过程 8 PUSH DS ;标准程序前奏 9 XOR AX, AX 10 PUSH AX 11 MOV AX,DATA 12 13 MOV DS,AX 14 LEA DX,IN1 15 MOV AH,9 16 INT 21H 17 18 LEA DX,NUM ; 111 19 MOV AH,1 20 INT 21H 21 ;MOV DL,AL ;与111不可同存 22 23 PUSH AX 24 MOV DL,0DH 25 MOV AH,2 26 INT 21H 27 MOV DL,0AH;光标换行,为输出做准备 28 MOV AH,2 29 INT 21H 30 POP AX 31 32 SUB AL,30H ;转换行数 33 AND AX,00FFH 34 MOV CX,0001H 35 36 SECOND:MOV BX,CX 37 CALL INPUTPRO 38 INC CX ;CX自加 39 CMP CX,AX 40 JNA SECOND 41 RET 42 MAIN ENDP 43 ;********************************************** 44 ;子程序:输入每一行的‘*’和‘ ’和0AH(换行字符)
相关文档
最新文档