实验报告子程序设计实验

合集下载

《Python程序设计》综合实验实验报告

《Python程序设计》综合实验实验报告
turtle.fd(20)
def drawDate(date):
turtle.pencolor("red")
for i in date:
if i == '-':
turtle.write('年',font=("Arial", 18, "normal"))
turtle.pencolor("green")
koch(600,2) # 0阶科赫曲线长度,阶数
turtle.hideturtle()
main()截图:
四、实验总结:(实验中遇到的问题及解决方法,心得体会等)
通过学习我知道了:
1.函数是一段具有特定功能的可重用的语句组,函数可以看作是一段具有名字的子程序
2.函数能够完成特定的功能
3.使用函数有两个目的:降低编程难度和代码重用
turtle.left(angle)
koch(size/3, n-1)
def main():
turtle.setup(800,400)
turtle.speed(0) #控制绘制速度
turtle.penup()
turtle.goto(-300, -50)
turtle.pendown()
turtle.pensize(2)
else:
drawDigit(eval(i))
def main():
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-350)
turtle.pensize(5)
drawDate(datetime.datetime.now().strftime('%Y-%m=%d+'))

子程序设计实验报告

子程序设计实验报告

实验名称:子程序设计实验日期:2023年X月X日实验地点:XX大学计算机实验室实验目的:1. 理解子程序的概念和作用。

2. 掌握子程序的设计方法和调用方式。

3. 学会使用子程序提高程序的可读性和可维护性。

实验内容:一、实验背景子程序是程序设计中常用的一种结构,它可以将一段具有独立功能的代码封装起来,方便在其他程序中调用。

使用子程序可以提高程序的可读性、可维护性和模块化程度。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验步骤1. 创建一个新的C++项目,命名为“子程序设计”。

2. 在项目中创建一个头文件“Subroutine.h”,用于声明子程序。

3. 在头文件中声明两个子程序:`Add` 和 `Subtract`。

4. 在头文件中定义一个全局变量 `Result`。

5. 在源文件“Subroutine.cpp”中实现头文件中声明的子程序。

6. 在主函数中调用子程序,并输出结果。

7. 编译并运行程序,观察输出结果。

四、实验代码1. 头文件“Subroutine.h”:```cpp#ifndef SUBROUTINE_H#define SUBROUTINE_Hvoid Add(int a, int b);void Subtract(int a, int b); int Result;#endif // SUBROUTINE_H```2. 源文件“Subroutine.cpp”:```cpp#include "Subroutine.h"void Add(int a, int b) {Result = a + b;}void Subtract(int a, int b) { Result = a - b;}```3. 主函数“main.cpp”:```cpp#include <iostream>#include "Subroutine.h"int main() {int a = 10;int b = 5;Add(a, b);std::cout << "Add: " << Result << std::endl;Subtract(a, b);std::cout << "Subtract: " << Result << std::endl;return 0;}```五、实验结果与分析1. 编译并运行程序,输出结果如下:```Add: 15Subtract: 5```2. 分析:(1)在实验中,我们首先在头文件中声明了两个子程序 `Add` 和 `Subtract`,它们分别用于计算两个整数的和与差。

程序设计实践实验报告

程序设计实践实验报告

程序设计实践实验报告实验报告课程名称___ 程序设计实践______实验项目_______子程序设计实验仪器_______PC _____系别_ 计算机科学与工程____专业______软件工程__________班级/学号___B软工0701/2007011801学生姓名_____ XX____________实验日期____2009-3-26__________成绩_______________________指导教师_____XX______________.实验二子程序设计一、实验目的1. 学习和掌握参数传递的方法;2.学习和掌握递归调用;3.了解goto语句的使用;4.了解降低嵌套深度的方法;5.了解复杂度的度量。

二、实验要求1.通过编程实现,学习和理解参数传递和递归调用的使用。

2.使用goto语句编写程序,用非goto语句改写程序;3.了解减少嵌套层次和度量复杂度的方法。

三、实验内容和结果1. 参数传递(1)创建控制台应用程序项目(CLR)。

定义函数swap,swap函数有两个整型形参x,y,swap的功能为交换x和y的值,并依次显示出交换后的x,y的值。

主函数定义两个整型变量a,b,并赋不同的初值,依次显示a和b的值,调用swap 函数,a,b作为实参,再在主函数中依次显示a和b的值。

(值传递)编写并运行以上程序,分析运行结果,思考值传递中是否会改变实参的值。

(2)创建控制台应用程序项目,修改(1)中程序,使swap函数的参数为两个指向整型的指针,swap函数中交换指针所指向的内容;主函数中调用swap函数,交换整型变量a和b的值。

编写并运行修改后的程序,比较与(1)中程序运行结果的不同之处及原因。

(3)创建控制台应用程序项目,修改(1)中程序,采用引用方式传递函数的参数。

编写并运行修改后的程序,比较与(1)、(2)中程序运行结果的异同以及(2)、(3)程序中改写的难易程度。

int swap1(int x,int y){int temp;temp=x;x=y;y=temp;return 0;} //实参传递函数int swap2(int &x,int &y){int temp;temp=x;x=y;y=temp;return 0;}//形参传递函数int swap3(int *x,int *y){int temp;temp=*x;*x=*y;*y=temp;return 0;}//指针传递函数int main(){int a,b;Console::WriteLine ("plesae input a and b interger:");a=Int32::Parse(Console::ReadLine());b=Int32::Parse(Console::ReadLine());Console::WriteLine ("实参传递函数交换a和b:");Console::WriteLine ("起始a和b:"+a+" "+b);swap1(a,b);Console::WriteLine ("交换后a和b:"+a+" "+b);Console::WriteLine ("-------------------");Console::WriteLine ("形参传递函数交换a和b:");Console::WriteLine ("起始a和b:"+a+" "+b);swap2(a,b);Console::WriteLine ("交换后a和b:"+a+" "+b);Console::WriteLine ("++++++++++++++++");Console::WriteLine ("指针传递函数交换a和b:");Console::WriteLine ("起始a和b:"+a+" "+b);swap3(&a,&b);Console::WriteLine ("交换后a和b:"+a+" "+b);Console::WriteLine ( "%%%%%%%%%%%%%%%%%" );Console::ReadLine();return 0;}2.递归调用.使用递归时,请注意如下原则:a.确认递归能够停止(子程序中至少含有一条非递归的路径);b.把递归限制在一个子程序内;c.留心栈空间;使用递归前,先考虑可否用其他方式编写程序,可能效果更好。

子程序设计实验报告范文精简处理

子程序设计实验报告范文精简处理

子程序设计实验报告范文精简处理实验报告是对实验目的、流程、结果和结论等内容的详细描述和总结。

以下是一份精简处理的子程序设计实验报告范文,共计1245字。

#实验报告名称:子程序设计实验##一、实验目的1.熟悉子程序的定义和使用方法;2.掌握子程序设计的基本思路和技巧;3.实践并提高对程序模块化设计的理解和能力。

##二、实验设备和材料-计算机-C语言编程环境##三、实验方法与流程1.根据实验要求,在C语言编程环境中编写一个独立的子程序;2.使用该子程序计算并输出指定的结果;3.程序编写完成后,编译并运行该程序,观察结果是否符合要求。

##四、实验内容1. 设计一个名为`sum`的子程序,接受一个整型数组和数组长度作为参数,计算数组元素之和,并返回该和;2.编写主程序,使用该子程序求解一个整型数组的元素之和;3.输出求和结果,观察是否正确。

##五、实验结果与分析实验中,我们使用了一组测试数据进行验证。

首先,定义一个整型数组`arr`,其中包含5个元素:{1, 2, 3, 4, 5}。

然后,将该数组和数组长度传递给`sum`子程序进行求和操作。

经过运行,我们得到的结果是15,与我们预期的结果一致。

因此,可以判断子程序设计正确,并成功实现了数组元素之和的计算功能。

##六、实验总结通过本次实验,我们成功设计并实现了一个独立的子程序,在主程序中调用该子程序计算了一个整型数组的元素之和。

通过此次实验,我们进一步熟悉了子程序的定义和使用方法,掌握了子程序设计的基本思路和技巧,并提高了对程序模块化设计的理解和能力。

这对于今后的软件开发和编程工作具有重要意义。

##七、实验心得本次实验让我更加深入地理解了子程序设计的重要性和作用。

通过将功能模块化,我们可以方便地组织和管理程序代码,提高代码的复用性和可维护性。

在实际的软件开发中,子程序设计及其正确使用是非常关键的,能够大大提高开发效率和代码的可靠性。

因此,我会继续学习和掌握更多的子程序设计技巧,并应用于未来的编程工作中。

北京理工大学汇编实验五实验报告概要

北京理工大学汇编实验五实验报告概要

本科实验报告实验名称:子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。

二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名PROC [near/far] 过程体RET过程名ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法.说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET指令来完成。

.段内调用与返回:调用子程序指令与子程序同在一个段内。

因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。

3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU内部寄存器内容的保护和恢复。

一般利用堆栈实现现场保护和恢复的格式:过程名PROC[NEAR/FAR]PUSH AXPUSH BX..PUSH DX...POP DX...POP AXRET过程名ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。

2.存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。

子程序设计实验报告

子程序设计实验报告

子程序设计实验报告子程序设计实验报告1. 实验背景子程序是一种可重复使用的程序代码片段,能够被主程序调用执行。

本次实验旨在通过编写子程序来加深对子程序设计的理解,并能够熟练使用子程序进行程序的模块化设计。

2. 实验目的通过本次实验,我将掌握以下技能:- 理解子程序的概念和作用- 掌握子程序的定义和调用- 理解子程序的参数传递方式- 学会使用子程序进行程序的模块化设计3. 实验内容本次实验涉及三个任务,分别是:1. 编写一个计算两个数之和的子程序2. 编写一个计算阶乘的子程序3. 编写一个计算圆形面积的子程序4. 实验步骤4.1 编写计算两个数之和的子程序首先,我们需要编写一个子程序用来计算两个数之和。

以下是该子程序的代码示例:pythondef add_numbers(num1, num2):sum = num1 + num2return sum上述代码中,我们定义了一个名为`add_numbers`的子程序,该程序接收两个参数`num1`和`num2`,计算它们的和并返回结果。

4.2 编写计算阶乘的子程序接下来,我们需要编写一个子程序用来计算一个数的阶乘。

以下是该子程序的代码示例:pythondef factorial(n):if n <= 1:return 1else:return n factorial(n-1)上述代码中,我们定义了一个名为`factorial`的子程序,该程序接收一个参数`n`,计算`n`的阶乘并返回结果。

我们使用递归的方式实现了阶乘的计算。

4.3 编写计算圆形面积的子程序最后,我们需要编写一个子程序用来计算圆形的面积。

以下是该子程序的代码示例:pythondef calculate_circle_area(radius):pi = 3.14159area = pi radius radiusreturn area上述代码中,我们定义了一个名为`calculate_circle_area`的子程序,该程序接收一个参数`radius`,计算圆形的面积并返回结果。

子程序设计实验报告

子程序设计实验报告

子程序设计实验报告子程序设计实验报告1. 实验目的本实验旨在让学生通过设计和实现子程序,深入了解子程序的概念、使用方法和设计原则,培养学生的程序设计思维和编程能力。

2. 实验背景子程序是一个独立于主程序的独立程序段,它可以完成特定的任务并返回结果。

子程序可以被主程序调用多次,不仅可以提高程序的可读性和可维护性,还可以节省重复代码的编写和修改时间。

在实际的程序设计中,子程序被广泛应用于各种领域,如算法实现、功能模块划分、错误处理等。

3. 实验内容在这个实验中,我们将设计一个简单的子程序,实现一个猜数字的游戏。

游戏的规则是计算机随机一个1到100之间的整数,用户通过输入猜测的数字,计算机根据用户的猜测给出相应的提示,直到用户猜中为止。

实验要求:- 使用 Python 编程语言实现。

- 设计一个子程序,用于随机数。

- 设计一个子程序,用于接受用户输入并判断是否猜中。

- 设计一个子程序,用于给出猜测结果的提示。

4. 实验步骤4.1 设计子程序:随机数,我们需要设计一个子程序,用于一个1到100之间的整数。

可以使用 Python 的 random 模块中的 randint 函数来实现。

pythonimport randomdef generate_random_number():return random.randint(1, 100)4.2 设计子程序:接受用户输入并判断是否猜中接下来,我们设计一个子程序,用于接受用户输入的猜测数字,并判断是否猜中。

可以使用 Python 的 input 函数来接受用户输入,并使用 if 语句来判断用户猜测的数字是否与的随机数一致。

pythondef get_user_guess():guess = int(input(\。

实验六 子程序实验

实验六 子程序实验

实验六子程序实验(一)1.实验目的(1)掌握主程序与子程序之间的调用关系及其调用方法。

(2)掌握子程序调用过程中近程调用与远程调用的区别。

(3)掌握通过堆栈传送参数的方法。

2.实验内容(1)将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCⅡ码,并在屏幕上显示出来。

要求码型转换通过子程序HEXASC实现,在转换过程中,通过子程序DISP 实现显示。

(2)编写一个主程序,从键盘接收若干个字符,然后用远调用方法,调用子程序统计字符串字符“b”的个数。

子程序的参数是字符串的首地址TABLE、字符长度N及字符“b”。

子程序返回字符“b”的个数。

参数传送采用堆栈实现。

主程序在子程序返回后,显示字符“b”及其个数(设为一位十六进制数)。

3. 实验准备(1)预习子程序设计的基本方法,根据实验内容要求,画出主程序及子程序的流程图。

(2)熟悉键盘输入字符串及用堆栈传送参数的程序段编制方法。

4. 编程提示(1)第一个实验程序用子程序的近程调用实现。

由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫做子程序的嵌套调用。

实验过程中可以从堆栈的内容看到两个子程序的返回地址值。

由于是近调用,地址值只包括返回地址的段内偏移量。

在每个子程序的执行中,检查CS值是不变的。

(2)第二个程序是利用远调用的方法调用子程序的。

在远调用情况下,主程序与子程序处在不同的逻辑代码中,可在子程序执行中查看CS值是不同的。

子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。

(3)第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。

一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压入堆栈,在子程序调用后,通过BP指针肆堆栈中的参数访问,并将统计的结果通过椎栈返回。

有关该方法的原理此处不再介绍。

5.实验步骤(1)编辑、汇编两个源程序,生成相应的可执行文件(.EXE)。

(2)有DEBUG的R命令、T命令或G命令检查远程调用及近程调用时堆栈的变化。

子程序设计实验报告简版修正

子程序设计实验报告简版修正

子程序设计实验报告1. 实验目的本实验旨在通过设计子程序,巩固和提升学生对于子程序设计的理解和运用能力,培养学生的逻辑思维和程序设计能力。

2. 实验内容2.1 设计一个子程序,实现两个数相加的功能。

2.2 设计一个子程序,实现两个数相乘的功能。

2.3 设计一个子程序,实现对一个数的平方根的计算。

3. 实验步骤3.1 子程序1:实现两个数相加assemblyadd_numbers:; 输入:寄存器R1和R2分别存放两个待相加的数; 输出:寄存器R0存放相加结果; 保存现场PUSH R1PUSH R2; 执行相加操作ADD R0, R1, R2; 恢复现场POP R0POP R2POP R1; 返回RET3.2 子程序2:实现两个数相乘assemblymultiply_numbers:; 输入:寄存器R1和R2分别存放两个待相乘的数 ; 输出:寄存器R0存放相乘结果; 保存现场PUSH R1PUSH R2; 执行相乘操作MUL R0, R1, R2; 恢复现场POP R0POP R2POP R1; 返回RET3.3 子程序3:实现对一个数的平方根的计算assemblycalculate_sqrt:; 输入:寄存器R1存放待计算平方根的数 ; 输出:寄存器R0存放计算结果; 保存现场PUSH R1PUSH R0; 初始化结果为0XOR R0, R0; 循环计算平方根LDR R2, 1 ; 设定计算误差精度为1 sqrt_loop:; 比较结果的平方与待计算数的大小MUL R3, R0, R0CMP R3, R1; 结果满足精度要求,跳出循环BHI sqrt_done; 调整结果ADD R0, R0, R2; 继续循环B sqrt_loopsqrt_done:; 恢复现场POP R0POP R1; 返回RET4. 实验结果和分析经过上述子程序的设计和实现,我们实现了两个数相加、两个数相乘、以及一个数的平方根的计算功能。

中断子程序实验报告

中断子程序实验报告

一、实验目的1. 理解中断子程序的概念及其在嵌入式系统中的应用。

2. 掌握中断子程序的编程方法,包括中断的设置、中断服务程序的编写和中断优先级的管理。

3. 通过实际操作,验证中断子程序在系统中的正确运行,并分析中断处理的效果。

二、实验环境1. 开发平台:Keil uVision 52. 目标芯片:8051单片机3. 仿真器:STK5004. 实验板:基于8051单片机的实验板三、实验内容本次实验主要围绕以下内容展开:1. 中断子程序的初始化设置。

2. 编写中断服务程序,实现特定的功能。

3. 中断优先级的管理和中断嵌套的实现。

4. 实验验证与结果分析。

四、实验步骤1. 中断子程序的初始化设置(1)在Keil uVision 5中创建一个新的项目,选择8051单片机作为目标芯片。

(2)在项目中添加必要的头文件和库文件。

(3)编写中断初始化函数,配置中断源、中断优先级和中断使能。

2. 编写中断服务程序(1)根据实验要求,编写中断服务程序,实现特定的功能。

(2)在中断服务程序中,处理中断触发的事件,如按键按下、定时器溢出等。

3. 中断优先级的管理和中断嵌套的实现(1)在实验中,设置不同的中断优先级,观察中断处理的效果。

(2)实现中断嵌套,验证高优先级中断能够打断低优先级中断。

4. 实验验证与结果分析(1)编译并下载程序到实验板。

(2)观察实验板上的现象,验证中断子程序是否正常工作。

(3)分析实验结果,总结中断子程序在系统中的应用。

五、实验结果与分析1. 中断初始化通过编写中断初始化函数,成功配置了中断源、中断优先级和中断使能。

2. 中断服务程序编写的中断服务程序能够正确处理中断触发的事件,实现了预期的功能。

3. 中断优先级管理通过设置不同的中断优先级,验证了高优先级中断能够打断低优先级中断。

4. 中断嵌套实现了中断嵌套,高优先级中断能够成功打断低优先级中断。

六、实验总结通过本次实验,我们深入了解了中断子程序的概念、编程方法和应用。

实验报告

实验报告

南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:***********名:***南通大学计算机类课程实验报告南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告六、实验结果<一><二>七、实验存在问题和解决办法程序一:检查发现第16行的“ADD AL,20H”将数字0写成了大写字母O,排除错误后可正常运行。

字符串后忘了加$,导致转换为小写字母后出现如下乱码:字符串后加结束符$后乱码消除。

程序二:分析表明第28行“CMP BL,0FFH”中FFH前要加0八、实验心得和建议南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV AX,4C00HINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法分析表明错误原因如下:(1)O写成0;(2)相对寻址只限于用SI、DI、BX、BP,而程序中却用了其它寄存器。

修改后仍有错误如下:错误原因:使用“INC BYTE PTR[BX+2]”忘了加BYTE PTR修改后仍得不到正确结果,错误如下:错误原因:“CMP [DI],'0'”应改成“CMP BYTE PTR[DI],'0'”错误全部修改后得到所要的结果八、实验心得和建议南通大学计算机科学与技术学院微机原理实验报告书班级:智控151学号:1512042022姓名:王建棋南通大学计算机类课程实验报告MOV AX,4C00HINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法出错原因:(1)DEC,DW 是保留字;(2)“MOV CL,10000”中10000超过范围CL的最大范围。

子程序设计实验报告

子程序设计实验报告

子程序设计实验报告子程序设计实验报告引言:子程序是计算机程序中的一个重要组成部分,它能够将一个大的任务分解成若干个小的子任务,使得程序结构更加清晰,并且提高了代码的可复用性和可维护性。

本次实验旨在通过设计和实现一些子程序,来加深对子程序设计的理解和应用。

一、实验目的本次实验的主要目的是掌握子程序的基本概念和设计方法,并通过实际编程实现一些常见的子程序功能。

具体目标如下:1. 理解子程序的定义和调用过程;2. 掌握参数传递和返回值的方法;3. 设计和实现一些常见的子程序功能。

二、实验环境本次实验使用的是C语言编程环境,具体使用的是GCC编译器。

三、实验内容1. 子程序的定义和调用子程序是一个独立的代码块,可以在程序中被多次调用。

在C语言中,子程序的定义使用函数的方式进行,通过函数名来调用子程序。

在定义子程序时,需要指定子程序的返回类型、参数类型和参数个数。

在调用子程序时,需要提供相应的参数。

2. 参数传递和返回值在子程序的调用过程中,参数的传递是一个重要的问题。

参数可以通过值传递、引用传递或指针传递的方式进行。

在值传递中,实参的值会被复制到形参中;在引用传递中,实参的地址会被传递给形参;在指针传递中,实参的指针会被传递给形参。

返回值可以通过return语句来实现,返回值的类型需要与子程序的返回类型相匹配。

3. 子程序的设计和实现根据实际需求,设计和实现一些常见的子程序功能,例如求两个数的最大公约数、判断一个数是否为素数等。

在设计子程序时,需要考虑输入参数的合法性和边界条件,以及返回值的正确性。

四、实验步骤1. 确定子程序的功能和输入输出要求;2. 设计子程序的算法和流程;3. 编写子程序的代码,并进行调试和测试;4. 在主程序中调用子程序,并验证其正确性;5. 对实验结果进行分析和总结。

五、实验结果与分析通过实验,我们成功设计和实现了一些常见的子程序功能,例如求两个数的最大公约数和判断一个数是否为素数。

语言程序设计四子程序

语言程序设计四子程序

实验参考程序2(变量传递参数):
data segment wordtemp dw 2df4h
data ends
code segment assume cs:code,ds:data
start: mov ax,data mov ds,ax
call ALdisp mov ax,4c00h
int 21h
ALdisp proc
mov ds,ax mov ax,wordtemp call ALdisp
mov ax,4c00h ;设置功能调用 AH=4C 带返回码结束
int 21h
ALdisp proc
push ax
push bx
push cx
push dx
mov bx,4
;实现al内容显示的子程序 ;过程中使用了AX、BX、CX和DX,寄存器内容压栈保护数据。
cmp dl,39h
jbe aldisp1 ; dl内的数小于等于39h转移
add dl,7
;是0Ah~0Fh,还要加上7
aldisp1:mov ah,2
;显示,ah=02表示:将dl中的内容以字符的形式输出到屏幕
int 21h
;系统功能调用,至于是那种功能调用,取决于ah里的内容
pop ax
;弹出栈,此时ax的内容为循环左移4位原数
第3页,共24页。
实验四 子程序及功能调用实验
5.实验步骤: ⑴用文件编辑器编写汇编语言程序(如:记事本),并以asm为后缀命名,
如:2.asm ⑵运行masm编译器进入dos,调入所编写的汇编程序,生成,然后用
连接文件,生成可执行文件2.exe.
⑶用DEBUG调用文件,格式为DEBUG 2.EXE

汇编语言子程序设计实验心得(精选5篇)

汇编语言子程序设计实验心得(精选5篇)

汇编语言子程序设计实验心得(精选5篇)在刚进入大学得知数学专业也要学习程序设计的时候,我的内心充满了喜悦,因为我喜欢数学的同时,一样喜欢计算机。

虽说程序设计只是计算机专业的冰山一角,但这却是基础,所以我下定决心要学好它。

前段时间,我们学习了前五章的内容。

第一章主要对c语言进行了简单的介绍;第二章便是对最基础知识的介绍:C语言的数据类型、常用的简单符号、运算符的结合性等;而第三章就开始进行一些简单的算术运算了,千万别以为这就是小学数学水平的东西,其实这跟数学还是有差别的;第四章键盘输入和屏幕输出就是告诉我们如何进行人机交流,把自己的东西输入电脑,再在屏幕上显示出来;第五章便开始利用计算机进行程序设计来解决生活中的实际问题,而这就需要一个很重要的结构——选择控制结构。

虽然刚开始学习的内容还不是很多,但我却在这为时不长的学习中,深深地感受到了c语言的魅力,以及它强大的“功效”:C语言语言虽简单,但表达能力却强,使用起来灵活方便,而且程序设计自由度大,我们可以从多角度寻找解决问题的方案。

虽然人的能力很强,但不是所有问题解决的最佳途径依赖于人,有时候依靠C语言既省时又省力。

就像对很多的数据进行运算时,对人来说可谓是一项大工程,一点不注意就会全盘皆输,要重新来过,让人头大;而对计算机来说,它只会执行你的指令,不管其他,没有枯燥,不懂乏味,更重要的是,效率尤其高。

不止计算,C语言还有很多用处。

刚开始的时候,我错误的认为C语言跟数学没有太大差别。

然而接触过后我才发现自己错的很离谱。

虽然C语言与数学有着难舍难分的关系,但C语言就是C 语言,它有着自己的语言,自己的思想跟自己的规则。

我们可以借助数学更好的掌握C语言,但不能因此混淆二者。

就像数学语言在程序中是不一定能够识别的(“=”在数学中是等于,在C语言中是赋值,C语言中的等于是“==”),虽然数学对C语言帮助很大,但C语言却不会因此就放你程序通过,不识别就是不识别,除非你用我自己的东西。

实验四子程序设计

实验四子程序设计

实验四子程序设计实验目的:通过编写子程序来实现函数的封装和代码的重用。

实验原理:子程序是一段具有特定功能的代码,可以在程序中多次调用。

在实际的软件开发过程中,为了提高代码的可读性、可维护性和代码的重用,我们经常使用子程序。

子程序的定义一般包括以下几个要素:1.子程序名称:子程序的名称用于被调用和调用。

子程序名称一般要具有描述性,能够清晰地表达其功能和作用。

2.输入参数:子程序可以接收输入参数,用于在子程序内部进行计算和处理。

输入参数可以是实际的数值,也可以是变量、数组等。

3.输出参数:子程序可以具有输出参数,用于将计算结果或者处理结果返回到主程序中。

输出参数可以是实际的数值,也能是变量、数组等。

4.子程序体:子程序体是子程序内部的代码块,用于实现具体的功能。

子程序体可以包含多条语句和控制结构,以完成复杂的操作和计算。

实验步骤:本次实验我们将编写一个求取三角形面积的子程序,实现代码的封装和重用。

1.编写主程序:首先,我们先编写一个主程序,用来调用子程序并输出计算结果。

```pythondef main(:a = float(input("请输入三角形的底边长: "))h = float(input("请输入三角形的高: "))area = triangle_area(a, h)print("三角形的面积为: ", area)def triangle_area(base, height):area = (base * height) / 2return areaif __name__ == "__main__":main```2. 编写子程序: 根据主程序中调用的子程序名称,我们可以编写一个名为`triangle_area`的子程序来计算三角形的面积。

```pythondef triangle_area(base, height):area = (base * height) / 2return area```3.运行程序:运行主程序,输入三角形的底边长和高,程序将输出计算结果。

合工大(汇编)语言程序设计实验报告

合工大(汇编)语言程序设计实验报告

.合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:****************学号:**********姓名:*****目录实验一··3实验二··7实验三··12实验四··22实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序实验内容一:e ds:0200 E7 1A 3F 00e ds:0204 C4 E5 6B 00实验内容二:(1)直接寻址方式MOV AX,[0200]MOV BX,[0202]ADD AX,[0204]ADC BX,[0206]MOV [0208],AXMOV [020A],BX(2)寄存器间接寻址方式MOV SI,0200HMOV DI,0204HMOV BX,0208HMOV AX,[SI]MOV DX,[SI+2]ADD AX,[DI]ADC DX,[DI+2]MOV [BX],AXMOV [BX+2],DX四.实验结果(包括必要的截图)实验内容一:输入数据:显示数据:实验内容二:(1)直接寻址方式程序段编辑:反汇编:运行:结果在DS:0208 单元中为00AB00ABH(2)寄存器间接寻址方式程序段编辑:反汇编:运行:结果高字存放在dx中,低字存放在ax中(结果为00AB00ABh)五.实验体会通过本实验,实践debug程序中的命令,并在debug下调试运行汇编语言源程序。

实验报告 子程序设计实验

实验报告 子程序设计实验

实验报告子程序设计实验实验报告:子程序设计实验一、实验目的本次实验的主要目的是深入理解和掌握子程序设计的概念、原理和方法,通过实际编程实现,提高我们的编程能力和问题解决能力。

二、实验环境本次实验使用的编程语言为 Python,开发工具为 PyCharm。

操作系统为 Windows 10。

三、实验内容(一)简单函数的定义与调用首先,我们定义了一个简单的函数来计算两个数的和。

```pythondef add_numbers(a, b):return a + b```然后,通过调用这个函数来计算并输出结果。

```pythonresult = add_numbers(5, 3)print("两数之和为:", result)```(二)带参数的函数接下来,定义了一个函数可以根据给定的半径计算圆的面积。

```pythonimport mathdef calculate_area(radius):return mathpi radius 2```调用该函数计算半径为 4 的圆的面积并输出。

```pythonarea = calculate_area(4)print("半径为 4 的圆的面积为:", area)```(三)函数的返回值定义了一个函数,判断一个数是否为偶数。

```pythondef is_even(number):if number % 2 == 0:return Trueelse:return False```调用该函数对多个数进行判断并输出结果。

(四)函数的嵌套调用定义了两个函数,一个函数计算两个数的平均值,另一个函数判断一个数是否大于平均值。

```pythondef calculate_average(a, b):return (a + b) / 2def is_greater_than_average(number, a, b):average = calculate_average(a, b)if number > average:return Trueelse:return False```通过调用这两个函数进行相应的计算和判断。

汇编子程序设计实验心得(精选5篇)

汇编子程序设计实验心得(精选5篇)

汇编子程序设计实验心得(精选5篇)汇编子程序设计实验心得【篇1】经过了一周左右密集的学习,仔细地回顾和评估了自己学习的过程,我切实地发现28定律在编程学习中同样发挥着作用。

在很长一段时间以前的学习中,我总是试图把一本书从头读到尾,或者是找一个视频课,想要从头到尾跟着做,但结果不是做不完放弃,就是看完之后感觉到还是什么都不会。

这一周我发现了编程学习中那百分之二十产生效益的地方在哪,因此将改善学习方法,提升效率。

简要地说,编程学习的那百分之二十飞速提升效率的地方就在代码上。

这听起来很荒谬,编程不就是写代码吗?但在实际的学习中,我确实时常犯下这个错误,就是绝大多数的精力并没有放在代码上。

我思考了一下改善学习的流程:在资料充分的情况下,理当先拿到源代码,然后查看源代码的输入和输出。

搞清楚这一段源代码的效果是什么.然后接下来对源代码写注释,逐行搞清楚源代码中每一句的意思,并且借此补充知识,不需要记忆,就是通过注释写明就好了。

搞清楚原理,然后写作出来。

尝试清楚明确地讲明白这段代码背后的概念是什么,原理是什么。

做完这三步之后马上循环写下一个项目,以项目到项目的方式来进展,试图把前面写过的项目追加到后面的项目中去,去连接学过的内容,并且就此复习。

同样不需要记忆,只要查看原来写过的东西就好了了。

接下来的学习中将彻底实践此方法论,并且在下一个阶段评估学习的效率。

汇编子程序设计实验心得【篇2】经过五天的Java实训,感触很深,收获也很大,对自己的缺点也有了很多的认识,回首本学期JAVA学习,重点还是在学习概念等一些常识性的东西,关于类型、变量、接口、输入输出流、分析异常、抛出异常,后期主要是小程序运用,Gui界面设计和事件。

在我学习的语言中,我自己认为Java是一门比较强大的面向对象的编程语言,不仅仅是因为它的跨平台型还有它的较强的实用性,强悍的嵌入性。

本次实训主要是针对我们对项目流程不熟悉和对整体项目的把握不清楚,学习数据库的设计和表的建设以及表与表之间的联系,还有一些代码的编写,这些都是我们所不熟悉的也是我们最薄弱的部分。

实验四子程序设计

实验四子程序设计

实验(四) 子程序设计
2、上机题目:键盘输入 内容:用子程序设计的方法,要求从键盘输入2位 16进制数,转化为10进制数并在CRT上显示。 要求:熟练掌握子程序设计方法,画子程序、主程 序流程图
Decbin子程序
现场保护
Al<0a? n al ←al+7 al ←al+30
y
si←0
ch←4h cl←4h ax ←buf ax← ax rol cl buf ←ax
取 al 低4bit
Mas[si]←al
crt 显示
call decbin end
si 复现场
ret
实验(四) 子程序设计
1、上机题目:代码转换 内容:用子程序设计的方法,分别把BUF字单元中 的四位十六进制数转换为ASCII代码存入MAS开始 的单元中,并在crt上显示相应字符。 BUF DW X MAS DB 4 DUP(?) 要求:熟练掌握子程序设计方法
主程序
开始 数据段: 变量定义 段加载

汇编语言设计实验报告参考模板

汇编语言设计实验报告参考模板

南通大学计算机类课程实验报告MOV [Z],AX ;将最后的结果送给ZMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。

代码还不能灵活运用,编写代码有所困难。

解决办法:多试调试。

八、实验心得和建议对于DEBUG的追踪还不熟悉,不过在指导老师的认真教导下,我们渐渐了解了汇编语言。

也能读懂一些简单的汇编语言。

我觉得在以后的学习中,我们必须要加强汇编语言的学习力度。

在学习过程中,不仅要大量阅读源程序,分析其功能,而且要借鉴他人的经验,练习编写完成特定功能的源程序。

南通大学计算机类课程实验报告MOV AH,2INT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。

代码还不能灵活运用,编写代码有所困难。

解决办法:多试调试。

八、实验心得和建议第二次做汇编实验了,在心理上已没有了第一次做实验的那种茫然不知。

在实验中遇到的错误很多,并且无论怎样修改都还是不能使程序达到完美的状态的时候,情绪会比较不稳定,这时候才知道,编写程序除了有思路,有想法,有语言知识,还要有很强大的心理,要有耐心,才能去面对这一连串的错误。

在学习过程中,不仅要大量阅读源程序,分析其功能,而且要借鉴他人的经验,练习编写完成特定功能的源程序。

南通大学计算机类课程实验报告PUSH DXMOV DL,0AHMOV AH,2INT 21HPOP DXPOP AXRETCRLF ENDPCODE ENDSEND START(如不够,请另附纸)(如不够,请另附纸)六、实验结果七、实验存在问题和解决办法问题:在实验过程中,对指令不熟悉,以至于不熟悉命令的应用及debug的调用命令。

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

实验5 子程序实验一.实验目的1.掌握主程序与子程序之间的调用关系及调用方法;2.掌握子程序调用过程中近程调用与远程调用的区别;3.掌握通过堆栈转送参数的方法。

4. 掌握多模块程序设计方法二.实验容1.将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。

要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。

DATAS SEGMENTBUF DB00000111B,00100001B,00100010B,00000011B,00000101B,10000010B,10010011B,0010010 0B,11100010B,01010010BCAN DB $-BUF ;定义常量CANDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASMAIN PROC FAR ;主程序块START:MOV AX,DATASMOV DS,AXMOV CL,10LEA SI,BUFLOOP1: ;调用子程序语句call HEXACcall DISPDEC CANJNZ LOOP1EXIT:MOV AH,4CHINT 21HMAIN ENDPHEXAC PROC NEAR ;二进制转换成十六进制子程序MOV BL,[SI]INC SIRETHEXAC ENDPDISP PROC NEAR ;显示子程序MOV CL,4MOV CH,2MOVE: ;移位语句ROL BL,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,'9'JBE PRINTADD DL,07HPRINT:MOV AH,02H ;显示语句INT 21HDEC CHJNZ MOVEMOV DL,' 'MOV AH,02HINT 21HRETDISP ENDPCODES ENDSEND START2.编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。

DATA SEGMENTSTR1 DB 0ah,0dh,'PLEASE INPUT YOUR STRING:$'STR2 DB 0ah,0dh,'THE NUMBER OF b is:$'TABLE DB 50, ? ,50 DUP(?),'$'DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX,DATAMOV DS,AXLEA DX,STR1INT 21HLEA DX,TABLEMOV AH,0AHINT 21HLEA SI , TABLEMOV CL, [SI+1]MOV CH, 0INC SIINC SIMOV AL,'b'MOV AH,0PUSH SIPUSH CXPUSH AXCALL FAR PTR CHECKPOP AXMOV CL,ALLEA DX,STR2MOV AH,9INT 21HMOV DL,CLAND DL, 0FHCMP DL,9JBE CANADD DL,7CAN:ADD DL,30HMOV AH,2INT 21HEXIT:MOV AH,4CHINT 21HCODE ENDSSCODE SEGMENTASSUME CS:SCODE CHECK PROC FARPUSH BPMOV BP,SPMOV SI,[BP+10]MOV CX, [BP+8]MOV AX, [BP+6]XOR AH, AH AGAIN:JNE CAN1INC AHCAN1:INC SILOOP AGAINMOV AL, AHMOV [BP+10],AXPOP BPRET 4CHECK ENDPSCODE ENDSEND START3. 请编写一个程序来实现简单的程序菜单显示。

(采用多模块程序设计方法)显示一个菜单要求用户从下表中选择:(1)HEXAC GAME (对应-->程序1)(2)CHAR STATISTICS PROGRAM (对应-->程序2)(3)PRESS “ESC”TO QUIT用户作出选择1~3时,显示输出要执行操作的名字,如“Your selection is 1,the program will execute HEXAC NUMBER GAME!”然后转向相应的程序去执行,执行结束前进行退出的判断,显示一个提示信息“will you continue program really?(Y:N)”要求用户从键盘键入字符,若是“Y”键,则继续程序的执行,若是“N”键,则返回到菜单。

若用户选择3,要求程序显示提示信息“Please press ESC key to exit!”,并能按要求正确退出。

DATAS SEGMENTOPT DW YIDW ERmenu DB 0DH,0AH,'THE MENU:' ;显示菜单DB 0DH,0AH,'(1)HEXAC GAME' ;对应-->程序1DB 0DH,0AH,'(2)CHAR STATISTICS PROGRAM';对应-->程序2DB 0DH,0AH,'(3)PRESS "ESC" TO QUIT$'BUF DB 00000111B,00100001B,00100010B,00000011B,00000101B,10000010B,10010011B,0010010 0B,11100010B,01010010BCAN DB $-BUF ;定义常量CANstr1 DB 0DH,0AH,'Your selection is 1,the program will execute HEXAC GAME!$'str2 DB 0dh,0ah,'Your selection is 2,the program will execute CHAR STATISTICS PROGRAM!$'str3 DB 0DH,0AH,'will you continue program really?(Y:N)$'str4 DB 0DH,0AH,'Please press ESC key to exit!$'TABLE DB 50, ? ,50 DUP(?),'$'char1 db 0ah,0dh,'PLEASE INPUT YOUR STRING:$'char2 db 0ah,0dh,'THE NUMBER OF b is:$' DATAS ENDSCODES SEGMENTMAIN PROC FARASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXXOR DI,DIsub bx,bxxor si,siLEA DX,menu ;显示主菜单MOV AH,9INT 21Hmov dl,0dh ;显示回车mov ah,2int 21hMOV DL,0AH ;显示换行MOV AH,2INT 21HMOV AH,1 ;输入选项INT 21HCMP AL,'1'JE YICMP AL,'2'JE ERCMP AL,'3'JE QUITYI: MOV DI,0lea dx,str1mov ah,9int 21hMOV CL,10LEA SI,BUFCALL HEXACLOOP1: ;调用子程序语句call HEXACcall DISPDEC CANJNZ LOOP1JMP CONTINUEER: MOV DI,02Hlea dx,str2mov ah,9int 21hLEA DX,char1MOV AH,9INT 21HLEA DX,TABLEMOV AH,0AH ;输入字符串INT 21HLEA SI , TABLEMOV CL, [SI+1]MOV CH, 0 ;CX中为字符串长度INC SIINC SI ;SI指向串首址TABLEMOV AL,'b'MOV AH,0 ;AX中为待查字符PUSH SIPUSH CXPUSH AX ; 参数送堆栈CALL CHECKPOP AX ;统计个数在AL中MOV CL,ALLEA DX,char2 ;显示结果MOV AH,9INT 21HMOV DL,CLAND DL, 0FHCMP DL,9JBE CAN3ADD DL,7CAN3:ADD DL,30HMOV AH,2INT 21H ;显示统计个数JMP CONTINUEQUIT:LEA DX,str4 ;退出的子程序MOV AH,9INT 21HMOV AH,1INT 21HCMP AL,1BH ;按ESC退出JE EXITCONTINUE:LEA DX,str3 ;用户是否继续执行当前程序MOV AH,9INT 21HMOV AH,1INT 21HCMP AL,'Y' ;按y继续,按n退出,不需区分大小写JE YESCMP AL,'y'JE YESCMP AL,'N'JE STARTCMP AL,'n'JE STARTYES: JMP opt[DI] ;继续运行当前子程序EXIT:MOV AH,4CH;退出INT 21HMAIN ENDPCODES ENDSHEXACCODES SEGMENTASSUME CS:HEXACCODESHEXAC PROC FAR ;二进制转换成十六进制子程序MOV BL,[SI]INC SIRETHEXAC ENDPHEXACCODES ENDSDISPCODES SEGMENTASSUME CS:DISPCODESDISP PROC FAR ;显示子程序MOV CL,4MOV CH,2MOVE: ;移位语句ROL BL,CLMOV DL,BLAND DL,0FHADD DL,30HCMP DL,'9'JBE PRINTADD DL,07HPRINT:MOV AH,02H ;显示语句INT 21HDEC CHJNZ MOVEMOV DL,' 'MOV AH,02HINT 21HRETDISP ENDPDISPCODES ENDSCHARCODE SEGMENTASSUME CS: CHARCODE ;子程序部分CHECK PROC FARPUSH BPMOV BP,SPMOV SI,[BP+10]MOV CX, [BP+8]MOV AX, [BP+6]XOR AH, AHAGAIN:CMP AL,[SI]JNE CAN1INC AHCAN1:INC SILOOP AGAINMOV AL, AHMOV [BP+10],AXPOP BPRET 4CHECK ENDPCHARCODE ENDSEND START三.实验要求1.第一个实验程序用子程序的近程调用实现。

相关文档
最新文档