子程序设计-实验7

合集下载

宏指令及子程序设计实验

宏指令及子程序设计实验

实验五:宏指令及子程序设计实验院系名称:电子工程学院学生姓名:李倩(33)专业名称:电子信息工程班级:电子0808宏指令及子程序设计实验5.5.1 实验目的1、熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。

2、掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。

3、了解宏指令与子程序的异同以及各自的适用场合。

5.5.2 实验预习要求1、复习宏指令的定义与调用方法。

2、复习过子程序的定义与调用方法。

3、根据“2.5.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。

4、从“2.5.4 实验习题”中任选一道题目,编写源程序,以便上机调试。

5.5.3 实验内容从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。

要求:①在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现;②将键盘输入的十进制数转换成二进制数由子程序DTOB实现;③在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现;④将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。

程序运行结果如右图所示。

1、编程指导(1)显示提示信息的宏指令DSTRING的编写宏指令通常用于在程序中需要反复使用但所需指令条数又不是很多的情形;而对于需要经常使用且需要较多指令才能完成的功能通常通过子程序调用来实现。

这是因为,从执行速度上看,由于子程序调用涉及到保护断点的操作,因此,子程序调用比宏调用执行时间相对要稍长一些;但从生成的可执行文件的大小方面考虑,子程序调用生成的文件要小一些。

读者在进行汇编语言程序设计时,应综合考虑两者的利弊,以便进行合理选择。

下面给出实现提示信息显示的宏指令的定义:DSTRING MACRO STRINGPUSH DXPUSH AXMOV DX,OFFSET STRINGMOV AH,09HINT 21HPOP AXPOP DXENDM请读者注意,宏指令应该先定义,后调用。

子程序设计实验报告

子程序设计实验报告

实验名称:子程序设计实验日期: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`,它们分别用于计算两个整数的和与差。

“汇编语言与微机原理”课程教学中汇编子程序实验设计

“汇编语言与微机原理”课程教学中汇编子程序实验设计

5 8 ・
Co mp u t e r Er a No. 2 2 01 3
“ 汇 编语言与 微机原理’ ’ 课 程教学中 汇编子 程序实 验设计
赵 永标 。张 其林 ,詹 彬 ,康长 青
( 湖北文理学院数学与计算机科学学院,湖北 襄阳 4 4 1 0 5 3 )
摘 要 :“ 汇编语 言与微 机原理” 是 计算机科 学与技术 专业 的必修基 础课 程。在教 学中汇编语 言子程序 实验设计普遍存
关键词 :汇编语言 ;子程序 ;宏 ;中断 ;实验设计 中图分类号 : G6 4 2 文献标志码 : B 文章 编号 : 1 0 0 6 — 8 2 2 8 ( 2 0 1 3 ) 0 2 — 5 8 — 0 2
Ex p e r i me n t a l d e s i g n o f a s s e mb l y s u b — r o u t i n e s i n “ a s s e mb l y l a n g u a g e a n d mi c r o c o mp u t e r p r i n c i p l e ’ ’
Z h a o Y o n g b i a o ,Z h a n g Qi l i n ,Z h a n Bi n ,Ka n g C h a n g q i n g
( S c h o o l o f M a t h e m a t i c s a n d C o m p u t e r S c i e n c e , H u b e i U n i v e r s i t y f o A r t a n d S c i e n c e , X i a n g y a n g , H u b e i 4 4 1 0 5 3 ,C h i n a )

程序设计实践实验报告

程序设计实践实验报告

程序设计实践实验报告实验报告课程名称___ 程序设计实践______实验项目_______子程序设计实验仪器_______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. 实验目的本实验旨在通过设计子程序,巩固和提升学生对于子程序设计的理解和运用能力,培养学生的逻辑思维和程序设计能力。

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. 实验结果和分析经过上述子程序的设计和实现,我们实现了两个数相加、两个数相乘、以及一个数的平方根的计算功能。

汇编语言实验报告_6

汇编语言实验报告_6

青岛理工大学课程实验报告
课程名称汇编语言程序设计班级实验日期
2013.11.3
姓名学号实验成绩
实验
名称
子程序
实验目的及要求1.掌握子程序设计相关指令和伪指令的使用方法
2.掌握子程序设计方法, 特别是参数传递方法
3.掌握主程序和子程序之间的调用关系和调用方法
4.熟悉循环和子程序结合应用解答问题的思路
实验环境1.命令行方式
2.MASM.EXE LINK.EXE DEBUG.EXE
实验内容1.设DATA1开始的内存单元中, 存放着一串带符号字数据, 要求采用冒泡排序算法(Bubble Sort)按照从小到大的顺序排序并将排好序的数据存在DATA1开始的单元。

然后在显示器输出排好序的数据, 中间用’,’隔开。

2.输出数据使用子程序方式。

算法描述及实验步骤步骤:
(1)设置数据段地址
(2)设置堆栈段地址
(3)设置堆栈指针
(4)调用9号功能, 输出一个提示性字符串。

(5)循环进入子程序, 输出原始数据。

(6)在子程序内循环输出每一位的十进制数字。

(7)主程序进行内外循环, 进行冒泡排序。

(8)再一次调用子程序输出排序后的结果。

调试过程及实验结果调试过程:
(2)(1)在输出时, 调用DOS 9号功能, 并不是只要语句MOV AH,09H
(3)它是存在入口条件的, 入口条件:DS:DX=输出字符缓冲区首地址。

所以前面必须加上MOV DX,OFFSET NOTE1。

(4)汇编语言是不会再输出汉字的。

(5)子程序结束时一定要有RET
(6)冒泡排序也遇到一些困难。

调试结果:。

第7章子程序设计

第7章子程序设计

程序如下: ; 7-5.asm 堆栈传参。实现两个矩阵的乘法c=a*b data segment a db 1,1,1,1 db 2,2,2,2 db 3,3,3,3 b db 1,1,1 db 2,2,2 db 3,3,3 db 4,4,4 m dw 3 ;A矩阵3行4列 n dw 4 ;B矩阵4行3列 p dw 0 c db 9 dup(?) ;C矩阵3行3列 data ends code segment assume cs:code,ds:data main proc far
;子程序2:查表,显示十六进制 let2: mov dx,offset mess2 ;显示提示2 mov ah,9 int 21h mov bx,x mov ch,4 mov cl,4 rept1: rol bx,cl ;0031→0310→3100→1003→0031 mov al,bl and ax,000fh ;保留最低4位 mov si,ax mov dl,hex[si] ;查表显示高位、低位 mov ah,2 out1: int 21h mov ah,4ch dec ch int 21h jnz rept1 code ends ret end start
7.2 调用和返回
CALL指令和RET指令是机器指令。调 用指令CALL与无条件转移指令JMP一 样,都是对指令指针寄存器IP作修改 后,转移到子程序执行。 有时也需要修改代码段寄存器CS的值, 作跨段调用。因此都有转移地址的寻 址方式问题。
7.2.1 调用指令CALL
格式: CALL 子程序名 功能:转移到指令指定的地址(子程序 名)去执行子程序。CALL指令必须指定 转移的目标地址。执行时,先将断点入 栈保存,再修改IP或修改IP、CS。
;子程序3,将bx中的数显示为十进制数 subr3 proc near mov ax,bx ;bx为传参寄存器 mov cx,0 mov bx,10 let1: ;将ax变为十进制数 mov dx,0 inc cx ;统计余数个数 idiv bx ;除以10,商在AX,余数在DX push dx ;保存余数 cmp ax,0 jnz let1 let2: ;循环显示余数 pop ax add ax,0030h mov dl,al mov ah,2 int 21h loop let2 ret subr3 endp ;将余数弹入ax ;调整为ASCII码

子程序设计实验报告

子程序设计实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

循环与子程序设计

循环与子程序设计

实验五循环与子程序设计一、实验目的1.熟练循环程序的编写。

2.掌握子程序的定义及调用方法。

3.学会子程序的编程方法。

二、预习内容1、循环程序是强制CPU重复执行某一指令系列(程序段)的一种程序结构形式,凡是要重复执行的程序段都可以按循环结构设计。

循环顺序一般由四部分组成1)置循环初值部分:这是为了保证循环程序能正常进行循环操作而必须做的准备工作。

循环初值分两类,一类是循环工作部分的初值,另一类是控制循环结束条件的初值。

2)工作部分:即需要重复执行的程序段。

这是循环程序的核心,称之为循环体。

3)修改部分:按一定规律修改操作数地址及控制变量,以便每次执行循环体时得到新的数据。

4)控制部分:用来保证循环程序按规定的次数或特定条件正常循环。

2、在程序设计中,对于某个连续多次重复出现的出现段,常常编制成循环程序,但在无规律的重复时很难用循环程序,此时应用子程序来实现。

.子程序的定义:〈过程名〉PROC:〈过程名〉ENDP子程序的调用:CALL〈过程名〉编写子程序时应注意:1)、入口信息2)、出口信息3)、现场保护和恢复4)、最后一条指令一定是RET指令三、实验内容1、编写程序,显示用‘ * '组成三角形的图形。

结果类似以下系列图(图中sanj4是程序文件名):提示及要求:1)循环调用2号系统功能,显示输出‘*’。

注意循环次数的变化。

2)将回车、换行的功能编写成子程序的格式。

3)‘*’不是从顶格开始的,前面打印输出空格。

空格的ASCII值为20H,同样调用2号功能,输出空格。

2、编程实现以教材附录B的格式显示出ASCII码表。

对于无法显示出的格式符或功能符,如空白0、响铃7、换行0AH、回车0DH等均用空格代替。

运行结果如下图:提示及要求:1)列间字符的ASCII值加10H,行间字符的ASCII值加01H。

2)每显示完一行,回车换行。

要求将实现回车换行编为子程序的格式。

3)对于ASCII值为2、7、8、9、0AH、0DH显示为空格。

【2024版】第7章可编程逻辑控制器实验

【2024版】第7章可编程逻辑控制器实验

可编辑修改精选全文完整版第7章可编程逻辑控制器实验可编程逻辑控制器(PLC)是以微处理器为核心的通用工业自动控制装置,它具有控制能力强、可靠性高、易于扩展、通用性强、使用灵活方便等优点。

现代的PLC不仅可以取代继电器控制系统,还可以进行复杂的生产自动控制,是现代自动化生产线上必不可少的控制设备。

本章从工程应用的角度出发,以最基本的起停、自锁、互锁、定时、计数控制,到闭环控制、数据传输等高级功能讲述PLC学习过程中,必须熟练掌握的指令系统、软件设计与开发思路。

最后通过组态软件(上位机)与PLC的连接实现PLC数据的通信功能。

目前市场上PLC的种类繁多,但其应用领域、工作原理、基本结构和设计思想都基本类似,本章以国内工矿企业应用比较典型的产品—西门子S7-200系列PLC为核心展开实验,读者可以通过对该系列PLC的深入了解后,扩展对其它系列PLC的学习。

7.1 基本逻辑指令实验学习完PLC硬件系统配置,对PLC的输入输出端口和数据存储方式有了一定了解,利用基本逻辑指令实验进一步巩固PLC的逻辑控制方面的知识,理解从继电器控制系统到PLC控制系统转化的必然性。

在基本逻辑指令实验中,主要了解PLC各存储区(V、I、Q、M、S、L、SM等)空间的大小与区别;了解PLC各中变量(字、字节、字、双字)的存储方式与相互关系;了解定时器的特点和用法;了解计数器的特点和用法;了解PLC编程中的一些典型编程方法。

7.1.1 位逻辑指令启、停控制程序实验实验1. 通用双按钮(启动、停止)控制的启停控制输入端口:启动I0.0 停止I0.1输出端口:输出指示Q0.0控制说明:启动I0.0采用常开按钮,停止I0.1采用常闭按钮(通常是红色按钮,为了与工业现场应用保持一致,本文中所有独立的停止按钮都采用常闭按钮进行连接,如果实验中没有常闭按钮,请注意程序的编写),当启动I0.0闭合On时,输出Q0.0闭合并且保持,当停止I0.1按钮断开Off时,Q0.0断开且保持。

汇编语言试验指导

汇编语言试验指导

实验指导一.上机实验的一般步骤和要求:1.上机前对选定的实验题应有所了解,并写好程序。

2.上机过程中对重要方法和步骤、问题和结果应有记录。

3.所有程序原则上都要通过调试手段运行。

4.实验后进行分析和总结,给出实验报告。

二.实验报告的内容一般有:1.实验题的内容及要求。

2.思路和方法、算法描述及有注释和说明的程序清单。

3.程序调试和运行的重要步骤、问题和结果。

4.分析和总结。

三.实验环境的建立参看第二章第一节。

通常在WINDOWS XP系统下。

如果其他操作系统(如WIN 7),不支持汇编程序工作,可安装Masm for Windows集成实验环境asm20125(支持Win2000、WinXP、WinVISTA、WIN7等操作系统)。

/实验1 上机过程及程序调试实验目的:1.通过第二章两个简单实例认识汇编语言程序,初步了解程序格式;段定义;标号;DOS系统功能;操作数;指令;说明语句等作用。

2.掌握汇编语言程序从设计到形成可执行程序文件的方法和步骤。

即编辑、汇编、连接。

了解汇编语言的系统工作文件和工作环境。

理解汇编程序和连接程序的作用。

理解列表文件内容。

3.初步了解程序的运行和调试方法。

学会使用DEBUG主要命令和常用的DOS命令。

实验内容:【1】编辑第二章两个简单实例,通过汇编、连接。

【2】用DEBUG对hello程序进行调试。

问题:(1) 该程序在内存中的起始地址是多少?结束地址是多少?共占几个字节?(2) 0B63:0008表示什么意思?(3) 程序中定义的串‘HELLO, WORLD !$’在内存中的起始地址是多少?请用DEBUG命令显示该串。

(4) 如果用带有断点的G命令运行该程序,写出命令。

(5) 用P命令单步执行程序。

(6) 用T命令跟踪程序,在跟踪执行INT 21时出现什么问题?(7) 用A命令在偏移地址100H处建立该段程序,并运行。

(8) 用W命令把该段程序写成文件,再调入。

实验2 算术及位串处理程序实验目的:掌握多数位的算术运算、移位操作、字符串操作等程序的设计,学习使用分支与循环等基本编程方法,熟练使用DEBUG。

汇编语言程序设计实验报告

汇编语言程序设计实验报告

班级 :
二、实验内容 求 1+2+3+4+5+6+7+8+9 的和,并将和显示在屏幕上; 具体要求: 1. 利用重复宏定义实现 1、2、39 数据的定义; 2. 将单个字符显示定义成宏,利用宏调用来实现和的显示。 3. 利用 PWB 集成环境完成程序的编辑、汇编及连接,并最终生成 COM 可执行文件。
二、实验内容 P131 作业 29。
实验三子Βιβλιοθήκη 序设计实验一、实验目的 1.掌握汇编语言源程序子程序设计方法; 2.会使用 CV 软件工具。
二、实验内容 把实验二作为子程序,编写主程序来对能否构成三角形进行 10 判断。
姓名:
汇编语言程序设计实 验报告
实验四
宏汇编程序设计实验
一、实验目的 1.掌握宏汇编程序编程技术及宏调用的方法; 2. 了解 COM 文件的编程方法及特点; 2.会使用 PWB 及 CV 软件工具。
实验五
混合程序的开发实验
一、实验目的 1.了解混合调用中的参数设置; 2. 掌握混合调用的方法;
姓名:
二、实验内容 P156 第 5 题。
汇编语言程序设计实 验报告
班级 :
姓名:
汇编语言程序设计实 验报告
实验一
单指令功能测试实验
一、实验目的 1.会使用 DEBUG 软件; 2.利用 DEBUG 单步执行功能测试指令的执行。
班级 :
二、实验内容 P129,14 题
实验二
完整的汇编语言程序设计实验
一、实验目的 1.掌握完整的汇编语言源程序的设计方法; 2.掌握汇编语言源程序的执行过程。
实验五
多模块程序设计实验
一、实验目的 1.掌握汇编段的属性的含义; 2. 掌握利用 LINK 将多模块连接起来的方法; 3.掌握利用库文件将多模块连接起来的方法。

实验报告 子程序设计实验

实验报告 子程序设计实验

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

二、实验环境本次实验使用的编程语言为 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是一门比较强大的面向对象的编程语言,不仅仅是因为它的跨平台型还有它的较强的实用性,强悍的嵌入性。

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

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

一、实验目的
1.掌握CALL指令的使用方法。

2.掌握子程序的定义
3.掌握主程序与子程序之间的调用关系及其调用方法
4.掌握主程序与子程序间参数的传递方法(寄存器、存储器、堆栈)
二、实验内容
1.将AX中的值以十六进制形式显示。

要求:
➢主程序利用寄存器把AX的值传送给子程序。

➢在子程序中将AX中的值以十六进制形式显示。

2.编写子程序,完成的功能是将DL中的2位十六进制数转换为对应ASCII
码。

说明:入口参数AL=待转换的2位十六进制数
出口参数DX=转换后的ASCII码,(高字节对应高位、低字节对
应低位)
举例:若AL=2AH,则DX=3241H。

0----9转换为30H----39H +30H
A---F转换为41H----4FH +30H+7H
三、程序流程图
1.
2.

否四.代码
1.
data segment
x dw 0
mess1 db 0dh,0ah,'input dec = $'
mess2 db 0dh,0ah,'out HEX = $'
hex db '0123456789ABCDEF'
data ends
CODE SEGMENT 'CODE'
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
let0: mov x,0
mov dx,offset mess1
mov ah,9
int 21h
call let1
mov ax,x
call let2
jmp let0
let1: ;键盘输入数并转换十进制数,入口参数ah,出口参数x mov ah,1
int 21h
cmp al,27
jz out1
sub al,30h
jl exit
cmp al,9
jg exit
mov ah,0
xchg ax,x
mov cx,10
mul cx
xchg ax,x
add x,ax
jmp let1
exit:ret
let2: ;显示十六进制数,入口参数ax,出口参数dl
mov dx,offset mess2
mov bx,ax
mov ah,9
int 21h
mov ch,4
mov cl,4
rept1:
rol bx,cl
mov al,bl
and ax,000fh
mov si,ax
mov dl,hex[si]
mov ah,2
int 21h
dec ch
jnz rept1
ret
out1:
mov ah,4ch
int 21h
code ends
end start
2.
data segment
x db 12h,3ah,0b4h
count=$-offset x
a d
b ?
data ends
CODE SEGMENT 'CODE'
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
mov a,count
mov si,0
let0:
mov al,x[si]
call let2
jmp out1
let2: ;将dl中的两位十六进制数转化成对应的ASC2码,入口参
数:al,出口参数:dx
mov ch,2
mov cl,4
mov bl,al
rept1:
rol bl,cl
mov al,bl
and al,0fh
cmp al,9
jl let1
add al,37h cmp ch,1
jz let3
mov dh,al dec ch
jnz rept1
let1:
add al,30h cmp ch,1 jz let3
mov dh,al dec ch
jnz rept1
let3:
mov dl,al dec ch
jnz rept1 ret
out1:
add si,1 dec a
cmp a,0
jnz let0 mov ah,4ch int 21h
code ends end start
五.实验结果
1.
初始状态:
调用子程序,ip=0015进栈:
利用ax给子程序传值:
子程序完毕,ip出栈:ip=0015
直接运行时:
2.
初始状态:
调用子程序,ip=0014进栈:
3a的ASC2码显示:
子程序完毕,ip出栈:ip=0014
六、实验总结
通过本次实验,进一步认识汇编语言和这个集成开发环境,并对汇编语言的基本语
法更加熟悉,了解了CALL指令的使用方法,掌握子程序的定义,主程序与子程序之间
的调用关系及其调用方法,主程序与子程序间参数的传递方法.
.。

相关文档
最新文档