北京理工大学汇编实验报告3

合集下载

北京理工大学信号与系统实验报告材料3信号的频域分析报告.doc

北京理工大学信号与系统实验报告材料3信号的频域分析报告.doc

标准实验 3 信号的频域分析(综合型实验)一、实验目的1)深入理解信号频谱的概念,掌握信号的频域分析方法。

2)观察典型周期信号和非周期信号的频谱,掌握其频谱特性。

二、实验原理与方法 1.连续周期信号的频谱分析如果周期信号满足Dirichlet 条件,就可展开为傅里叶级数的形式,即x(t)c k e jk 0 t ( 1)c k 1x(t)ejk 0tdt(2)kT 0 T其中 T 0 表示基波周期,2/ T 0 为基波频率,(...) 表示任一个基波周期内的积分。

T 0上面两式为周期信号复指数形式的傅里叶级数,系数 c k 成为 x(t)的傅里叶系数。

周期信号的傅里叶级数还可由三角函数的线性组合来表示,即x(t) a 0a k cosktb k sin k0t(3)k 1k 1其中 a 012 x(t)cosk0tdt ,b k 2x(t)sink 0tdt (4)x(t)dt, a kT0 TT 0 TT0 T( 3)式中同频率的正弦、余弦项合并可以得到三角函数形式的傅里叶级数,即x(t) A 0A k cos(k0 tk )( 5)k 1其中 A 0a 0 , A k a k 2b k 2, karctan b k(6)a k任何满足 Dirichlet 条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数 的叠加。

周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号, 但在实际应用中常采用有限项级数代替,所选级数项越多就越接近原信号。

2.连续非周期信号的频谱分析对于非周期连续时间信号,信号的傅里叶变换和傅里叶逆变换定义为X ( )x(t)e j t dt (7)x(t)1 X ( )e j t d( 8)2以上两式把信号的时频特性联系起来,确立了非周期信号 x(t) 和频谱 X ( ) 之间的关系。

利用 MATLAB 可以方便地求出非周期连续时间信号的傅里叶变换,几种常见方法如下: 1)符号运算法MATLAB 的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier 函数和 ifourier 函数,基本调用格式为X fourier (x)x ifourier (X)默认的时域变量为t,频域变量为。

北京理工大学汇编实验二报告

北京理工大学汇编实验二报告

北京理工大学汇编实验二报告本科实验报告实验名称:算术运算类操作实验课程名称:CPU与汇编实验实验时间:2015.10.29 任课教师:王耀威实验地点:10-102实验教师:潘丽敏实验类型:□原理验证■综合设计□自主创新学生姓名:王晓玥学号/班级:1120131332/05111311 组号:学院:信息与电子学院同组搭档:专业:信息工程成绩:一、实验要求和目的1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2、掌握各类运算类指令对各状态标志位的影响及测试方法;3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;4、熟悉无符号数和有符号数乘法和除法指令的使用;5、掌握符号位扩展指令的使用。

6、掌握 BCD 码调整指令的使用方法二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识1、加减法处理指令主要有加法指令 ADD,带进位加法 ADC,减法指令 SUB,带进位减法指令 SBB。

2.乘除法指令和符号位扩展指令主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令 IDIV,以及符号位从字节扩展到字的指令 CBW 和从字扩展到双字的指令 CWD。

3.BCD 码的调整指令主要有非压缩的BCD 码加法调整指令DAA,压缩的 BCD 码减法调整指令 DAS,非压缩的 BCD 码加法调整指令 AAA,非压缩的 BCD 码减法调整指令 AAS,乘法的非压缩 BCD码调整指令 AAM,除法的非压缩 BCD 码调整指令 AAD。

8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表 1 所示的数据类型进行数据运算。

表 1-2-1 数据类型数据运算表数制二进制BCD码带符号无符号组合非组合运算符+、-、×、÷+、-+、-、×、÷操作数字节、字、多精度字节(二位数字)字节(一位数字)四、实验内容与步骤1、对于两组无符号数,087H 和 034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:(1)实验流程将一组操作数分别用ADD,SUB,MUL,DIV运算(2)实验代码:DATAS SEGMENTBUF1 DB 087HBUF2 DB 034HBUF3 DB 4 DUP(?);此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV AX,0MOV SI,AX;两数相加MOV AL,BUF1MOV BL,BUF2ADD AL,BLMOV BUF3[SI],ALMOV AL,0MOV AL,0INC SIMOV BUF3[SI],AL;两数相减MOV AL,BUF1MOV BL,BUF2SUB AL,BLINC SIMOV BUF3[SI],ALMOV AL,0SBB AL,0INC SIMOV BUF3[SI],AL;两数相乘MOV AL,BUF1MOV BL,BUF2MUL BLINC SIMOV BUF3[SI],ALINC SIMOV BUF3[SI],AH;两数相除,AL中存放商,AH中存放余数MOV AX,0MOV AL,BUF1MOV BL,BUF2DIV BLINC SIMOV BUF3[SI],ALINC SIMOV BUF3[SI],AH;此处输入代码段代码MOV AH,4CHINT 21HCODES ENDSEND START(3)实验结果:1)第一组操作数87H,34H2)第二组操作数0C2H,5FH(4)计算结果计算状态标志表达式结果CF AF ZF OF SF PF 087H+034H 00BB 0 0 0 0 1 1 087H-034H 0053 0 0 0 1 0 1 087H*034H 1B6C 1 0 0 1 0 0 087H/084H 02(1F) 1 0 0 0 0 1 0C2H+05FH 0121 0 0 0 0 0 0 0C2H-O5FH 0063 0 0 1 0 0 1 0C2H*05FH 47FE 0 0 0 0 0 1 0C2H/05FH 02(04) 0 0 0 0 0 0(5)各运算对状态标志位的影响及其意义。

北京理工大学微机原理实验报告

北京理工大学微机原理实验报告

微机原理与接口技术实验报告实验内容:汇编语言程序设计实验组别:12姓名:班级:学号:一、实验目的1、熟悉IDE86集成开发环境的使用。

2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。

3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。

4、掌握利用汇编实现求和与求最值的方法。

5、掌握利用汇编实现数制转换的方法。

6、巩固理论知识,锻炼动手编程,独立思考的能力。

二、实验内容(具体内容)1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。

并查看前5个,前8个数之和以及各寄存器和内存的状态。

2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及MIN。

3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。

要求实现数据显示,并返回DOS状态。

三、实验方法1、设计思路(1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。

(2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。

将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态(3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。

先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。

北理电磁实验报告(3篇)

北理电磁实验报告(3篇)

第1篇一、实验目的1. 理解电磁场的基本概念和性质。

2. 掌握电磁场的基本测量方法。

3. 分析电磁场在不同介质中的传播特性。

4. 熟悉电磁场实验设备的操作。

二、实验原理电磁场是电场和磁场的总称,它们在空间中以波的形式传播。

本实验通过搭建电磁场实验平台,观察和分析电磁场在不同介质中的传播特性,以及电磁场与电荷、电流的相互作用。

三、实验器材1. 电磁场实验平台2. 电磁场发生器3. 电磁场传感器4. 信号发生器5. 示波器6. 测量仪器(如:电流表、电压表、频率计等)7. 实验用线、连接器等四、实验内容1. 电磁场基本性质观察(1)搭建电磁场实验平台,观察电磁场在不同介质中的传播特性。

(2)通过电磁场发生器产生电磁波,观察电磁波在空气、水、金属等介质中的传播情况。

2. 电磁场测量(1)利用电磁场传感器测量电磁场强度。

(2)通过信号发生器产生已知频率和强度的电磁波,与传感器测量结果进行对比。

3. 电磁场与电荷、电流的相互作用(1)观察电磁场对电荷的作用,如电场力、洛伦兹力等。

(2)观察电磁场对电流的作用,如安培力、法拉第电磁感应等。

4. 电磁场实验设备操作(1)学习电磁场实验平台各部分的功能和操作方法。

(2)掌握电磁场传感器、信号发生器、示波器等仪器的使用方法。

五、实验步骤1. 搭建电磁场实验平台,连接好各部分仪器。

2. 观察电磁场在不同介质中的传播特性,记录实验数据。

3. 利用电磁场传感器测量电磁场强度,与信号发生器产生的电磁波强度进行对比。

4. 观察电磁场对电荷和电流的作用,记录实验数据。

5. 学习电磁场实验设备操作,熟悉各仪器使用方法。

六、实验结果与分析1. 电磁场在不同介质中的传播特性:电磁波在空气中传播速度最快,在水、金属等介质中传播速度较慢。

2. 电磁场强度测量:通过传感器测量得到的电磁场强度与信号发生器产生的电磁波强度基本一致。

3. 电磁场与电荷、电流的相互作用:电磁场对电荷的作用表现为电场力,对电流的作用表现为安培力。

北京理工大学汇编语言实验报告一

北京理工大学汇编语言实验报告一

汇编语言实验报告实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)班级:05211002姓名:张宁学号:1120102310实验日期:2012.9.7晚6:00~9:00汇编语言实验报告实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型)一、实验要求和目的1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;2、熟练掌握宏汇编程序MASM 的使用;3、熟练掌握连接程序LINK 的使用;4、熟练掌握DEBUG 的使用;二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识汇编语言程序设计上机开发过程如图1.1 所示。

四、实验内容与步骤1、汇编、链接并调试给出的简单程序,找出程序中的错误。

(一)录入并建立汇编语言源程序文件(ASM 文件)(二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)(三)用连接程序LINK 生成可执行程序文件(EXE 文件)(四)程序的调试2、完成程序设计:分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。

使用Debug 查看Positive、Negative 和Zero 三个变量的数据。

五、实验过程及结果:实验一:1.输入给出的程序2.运行输入的程序,发现了三处错误:根据错误提示,发现错误为ADDITION后未打冒号,CMP错打为COM。

修改原代码:改为:3.代码编译成功,生成OBJ文件,再生成EXE文件,可成功运行。

4.在原程序代码后添加两行代码,以验证ADDITION的逻辑正确性,改动如下:现实在DA TA1中添加字节型sum ,再将ADDITION的运行结果,从AX送到sum中去。

5.调试发现ADDITION并没用正确运行。

检查语句逻辑性发现,应将JAE改成JB,才能实现累加并终结。

北京理工大学汇编第四次(分支和循环程序设计实验)报告

北京理工大学汇编第四次(分支和循环程序设计实验)报告

北京理工大学汇编第四次(分支和循环程序设计实验)报告汇编第四次(分支和循环程序设计实验)报告一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。

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

三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。

汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减产生的结果来进行。

1.无条件转移指令JMP无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。

2.条件转移指令JXX条件转移指令可分为三大类:1).简单条件转移指令。

根据单个标志位的状态判断转移条件。

下表表示条件转移指令标志位的状态:2).无符号数条件转移指令。

假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:3)带符号数条件转移指令。

在汇编程序设计中,要熟练使用循环指令和跳转指令等来实现循环,理解循环体结构中的初始化部分、循环体、结束部分,并且要结合前面分支结构相关的知识点,加深对循环结构的理解和掌握。

循环结构的组成及其设计方法的知识要点有:1、循环程序的基本结构通常由3部分组成1) 初始化部分建立循环初始值,为循环做准备,如设置地址指针,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX),数据寄存器(AX/DX)初值等.2) 循环体循环体是循环程序的主体,是程序中重复执行的程序段.它是由循环工作部分、修改部分、和循环控制部分。

①循环工作部分:完成程序功能的主要程序段,用于解决程序的实际任务;②修改部分:对循环参数进行修改,并为下一次循环做准备;③循环控制部分:判断循环结束条件是否满足。

北京理工大学汇编语言实验报告实验五子程序设计实验

北京理工大学汇编语言实验报告实验五子程序设计实验

北京理工大学汇编语言实验报告实验五子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的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 BXPUSH DXPOP DXPOP AXRET过程名 ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。

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

北京理工大学电子信息类汇编语言实验报告――文件操作.

北京理工大学电子信息类汇编语言实验报告――文件操作.

第六章磁盘文件存取实验(设计性实验一、实验要求和目的1. 理解文件、目录的概念;2. 了解 FCB(文件控制块方式文件管理方法;3. 掌握文件代号式文件存取方式;4. 学习使用文件指针读取文件二、软硬件环境1. 硬件环境:计算机系统 windows;2. 软件环境:装有 MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识单元DOS 功能调用中断(INT 21H提供了两类磁盘文件管理功能,一类是 FCB(文件控制块方式,另一类是文件代号式存取方式。

对于文件的管理,实际上是对文件的读写管理, DOS 设计了四种存取文件方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。

文件的处理步骤A 写之前必须先建立文件、读之前必须先打开文件。

B 写文件之后一定要关闭文件。

通过关闭文件,使操作系统确认此文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。

1、文件代号式存取方式: 当用户需要打开或建立一个文件时,必须提供文件标识符。

文件标识符用ASCII Z 字符串表示。

ASCII Z 字符串是指文件标识符的 ASCII 字符串后面再加1 个“0”字符。

文件标识符的字符串包括驱动器名、路径名和文件名。

其格式为[d:][path]filename[.exe]其中 d 为驱动器名,path 为路径名,.exe 为文件名后缀。

中断 21H 提供了许多有关目录和文件操作的功能,其中文件代号式存取方式常用的功能如下:2、操作目录的常用功能39H——创建目录 3BH——设置当前目录3AH——删除目录 47H——读取当前目录有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之目录控制功能。

3、用文件句柄操作文件的常用功能3CH——创建文件 4EH——查找到第一个文件3DH——打开文件 4FH——查找下一个文件3EH——关闭文件 56H——文件换名3FH——读文件或设备 57H——读取/设置文件的日期和时间40H——写文件或设备 5AH——创建临时文件41H——删除文件 5BH——创建新文件42H——设置文件指针 67H——设置文件句柄数(最多文件数43H——读取/设置文件属性 6CH——扩展的打开文件功能有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之文件操作功能。

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

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

本科实验报告实验名称:实验二算术运算实验课程名称:课程设计Ⅰ(CPU与汇编)(实验)实验时间:第5-10周周五下午任课教师:聂青实验地点:10-102实验教师:京霞实验类型:☑原理验证□综合设计□自主创新学生:罗逸雨学号/班级:1120141208 05211401 组号:3学院:信息与电子学院同组搭档:专业:通信工程成绩:一、实验目的1) 掌握MASM for Windows 环境下的汇编语言编程环境使用;2) 掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;3) 掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;4) 掌握无符号数和有符号数运算区别及编程方法;二、实验环境与原理1.实验软硬件环境1) 硬件环境:惠普64 位一体化计算机及局域网;2) 软件环境:Windows 8,红蜘蛛管理系统,MASM for Windows。

2.实验原理算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。

1) 标志位在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。

2) 加减法指令ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。

3) 乘除法指令MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。

4) 符号位扩展指令CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。

5) BCD码的调整指令在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD 码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD 码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。

组合的BCD码加法调整指令DAA;组合的BCD码减法调整指令DAS;非组合的BCD码加法调整指令AAA;非组合的BCD码减法调整指令AAS;乘法的非组合BCD码调整指令AAM;除法的非组合BCD码调整指令AAD。

北京理工大学自动化专业微机原理软件实验报告

北京理工大学自动化专业微机原理软件实验报告

微型计算机原理与接口技术软件实验报告班级:姓名:学号:实验一一.实验题目1、学习并掌握IDE86集成开发环境的使用;2、参考书例4-8,以单步形式观察程序的执行过程;3、修改该程序,求出10个数中的最大值和最小值。

以单步形式观察如何求出最大值、最小值。

二.实验目的1、熟悉IDE86集成开发环境的使用。

2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。

3、锻炼动手编程,独立思考的能力。

三.实验内容1、题目1的设计思路及流程图a.设计思路为实现求和的功能,首先将十个数存入内存中,设定AX为计算结果存储单元,CX为计数器,随后建立循环,将每个数依次加到AX上,直至CX=0,最后将AX中存储的结果移动到SUM存储单元中,结束程序。

b.流程图2、题目3设计思路及流程图a.设计思路为实现求取最大值最小值的功能,首先将十个数存入内存中,设定CX为计数器,将第一个数分别存入到MAX与MIN储存单元中,随后建立循环,将每个数依次与MAX(MIN)相比较,如果有大于(小于)MAX(MIN)中的,移入相应存储单元,直至CX=0。

最后将MAX和MIN中存储的数据打印在屏幕上,返回DOSb.四.实验源程序a.题目2源程序DATA SEGMENT ;定义数据段TABLE DB 12H,23H,34h,45h,56h ;10个加数DB 67H,78H,89H,9AH,0FDHSUM DW ?DATA ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AX ;初始化DSMOV ES,AX ;初始化ESLEA SI,TABLE ;SI指向TABLEMOV CX,10 ;循环计数器XOR AX,AX ;AX为中间结果NEXT: ADD AL,[SI] ;把一个数加到AL中ADC AH,0 ;若有进位,则加到AH中INC SI ;指向下一个数LOOP NEXT ;若未加完,继续循环MOV SUM,AX ;若结束,存结果于SUMHLT ;结束CODE ENDS ;代码段结束ENDSTART ;汇编结束b.题目3源程序DATA SEGMENT ;定义数据段TABLE DB 12H,23H,34h,45h,56h ;十个待比较数DB 67H,78H,89H,9AH,0FDHMAX DB ?MIN DB ?A DB 'Max:','$' ;屏幕提示字符串B DB 0DH,0AH,'Min:','$'DATA ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AX ;初始化DSMOV ES,AX ;初始化ESLEA SI,TABLE ;SI指向TABLEMOV CX,10 ;循环计数器XOR AX,AX ;清空AXCLD ;清方向标志DFLODSB ;AL存入一个8位数MOV MAX,AL ;将该数送MAXMOV MIN,AL ;将该数送MINDEC CX ;计数器减一NEXT: LODSB ;取下一个数CMP AL,MAX ;与MAX比较JA LARGER ;若大于转LARGERCMP AL,MIN ;否则与MIN比较JB SMALLER ;若小于转SMALLERJMP GOON ;否则转GOONLARGER:MOV MAX,AL ;AL的值存入MAX JMP GOON ;转到GOONSMALLER:MOV MIN,AL ;AL的值存入MINGOON: LOOP NEXT ;CX-1,若CX≠0转NEXTLEA DX,A ;获取A的首地址MOV AH,09H ;调用字符串显示功能INT 21HMOV AL,MAX ;MAX值存入ALCALL DISPLAY ;调用显示子程序LEA DX,B ;获取B的首地址MOV AH,09H ;调用字符串显示功能INT 21HMOV AL,MIN ;MIN值存入ALCALL DISPLAY ;调用显示子程序MOV AH,4CH ;调用返回DOS功能INT 21HDISPLAY PROC ;十六进制显示子程序PUSH BX ;保持BX内容PUSH CX ;保持CX内容MOV BH,ALMOV CH,2 ;设置循环计数器ROT: MOV CL,4 ;移位次数ROL BX,CLMOV AL,BLAND AL,0FH ;清空AL高四位ADD AL,30H ;0-9转换ASCII码CMP AL,3AHJL PRITADD AL,7H ;A-F转换ASCII码PRIT:MOV DL,ALMOV AH,2 ;调用字符显示功能INT 21HDEC CH ;计数器-1JNZ ROT ;CH≠0,继续循环POP CX ;恢复CX内容POP BX ;恢复BX内容RET ;返回DISPLAY ENDPCODE ENDS ;代码段结束ENDSTART ;结束五.实验运行结果a.题目2运行结果前五个数运算结束后寄存器状态:图3 前五个数计算后寄存器状态其中ax值为图4 前五个数计算后AX的值故此时前五个数之和为0104H。

(完整word版)北京理工大学计算机实验三报告表

(完整word版)北京理工大学计算机实验三报告表
0001 C000
0000 C000
0000 C000
0400 800C
07FF FFFE
0C00 001C
0C00 0010
1C00 0020
3800 01C0
01FF FFC0
0000 0380
0000 0700
0000 0C00
0000 1800
0000 6000
0000 6004
0000 600E
0303 2007
0303 000E
0603 001C
0603 0038
0403 0060
0403 00C0
0803 0380
1003 0600
3003 0C00
0000 3000
0000 C000
实验报告表3-3不同字体的字型码
字体
“字”的字型码
(十六进制表示)
“形”的字型码
(十六进制表示)
宋体
0008 0000
0400 800C
07FF FFFE
0C00 001C
0C00 0010
1C00 0020
3800 01C0
01FF FFC0
0000 0380
0000 0700
0000 0C00
0000 1800
0000 6000
0000 6004
0000 600E
7FFF FFFF
0000 6000
0000 6000
7FFF FFFF
0000 6000
0000 6000
0000 6000
0000 6000
0000 6000
0000 6000
0000 6000
0000 6000

北理工汇编语言实验报告3

北理工汇编语言实验报告3

汇编语言实验报告实验三字符串操作实验(设计性实验)班级:05611102姓名:肖枫学号:1120111431实验日期:2013.9.7下午一、实验要求和目的1.了解汇编语言字符串处理基本流程;2.熟悉汇编语言字符串处理基本指令的使用方法;3.掌握利用汇编语言实现字符串处理的程序设计方法。

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

三、实验涉及的主要知识1、字符串处理基本操作流程(1)利用SI 寄存器保存源串首地址;(2)利用DI 寄存器保存目的串首地址;(3)利用CX 寄存器保存字符串长度;(4)利用CLD 或STD 指令设置字符串处理方向;(5)利用字符串处理指令实现相关处理。

其中,CLD 指令使DF=0,在执行串处理指令时可使地址自动增量;STD 使DF=1,在执行串处理指令时可使地址自动减量。

提示:字符串处理一般都涉及到源串和目的串,汇编语言规定源串在数据段中定义,目的串在附加段中定义。

2、重复前缀指令,重复次数由计数寄存器CX 中存放的值决定,指令每重复执行一次,计数器CX 中值减1,当CX 中值减至0 时,停止重复执行,继续执行下一条指令REP 无条件重复前缀,重复串操作直到计数寄存器的内容CX 为0 为止。

经常与REP配合工作的字符串处理指令有MOVS、STOS 和LODS。

REPE/REPZ 判断计数寄存器的内容CX 是否为0 或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。

可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。

REPNE/REPNZ 判断计数寄存器的内容是否为0 或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。

可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。

3、字符串处理基本指令(1)MOVS 传送指令格式:MOVS DST,SRC 或MOVSB(传送字节)或MOVSW(传送字)。

北京理工大学微机原理硬件三次实验综合报告

北京理工大学微机原理硬件三次实验综合报告

实验二 8255 并行接口实验
实验内容 8255 的 A 口作为输入口,与逻辑电平开关相连。8255 的 B 口作为输出口,与发 光二极管相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。 二,实验目的 (1)掌握 8255 的工作原理。 (2)掌握编写 8255 并行接口初始化及编程实现的方法。 三,实验仪器 微机实验教学系统实验箱、8086CPU 模块 四,实验步骤 连线 8255 的 PA0—PA7 分别与逻辑电平开关的 K1—K8 相连 PB0—PB7 分别与发光二极管电路的 LED1—LED8 相连 CS0 与 8255 的片选 CS8255 相连 其它线路均已连好 具体如图所示:
ENDSTART 实验现象:CS273 的 00 与 LED0 相连,01 与 LED1 相连,02 与 LED2 相连,依次 下去, 直至 07 与 LED7 相连。 每按单脉冲发生器一次产生一次中断申请, 由于 IR0 的优先级比 IR1 低,故先响应 IR1,后响应 IR0,观察到低 4 位的 LED 灯先点亮或 熄灭,高 4 位的 LED 灯后点亮或熄灭。 实验心得 实验让我对 8259A 的内部寄存器的功能有了更深的认识,掌握了 8259A 的初始 化步骤及其工作方式的选择, 以及中断服务程序的编写。 使用实验箱和编译软件, 使我们在编程和动手操作方面都有了很大的提高,软硬件的结合,使我们更加透 彻的理解了所学知识。
DDBUS
Vcc
DD0 DD1 DD2 DD3 DD4 DD5 DD6 DD7 A1 3 Vcc 7 4LS3 2 Vcc IOR D IOWR INT INTA
11 10 9 8 7 6 5 4 27 1 3 2 16 15 D6 D7 A0 CS RD WR SP/EN INT INTA 8 25 9

北京理工大学数据结构实验三报告

北京理工大学数据结构实验三报告

} top++; stack[top]=ch; } else if(ch=='^'||ch=='%') { while(stack[top]=='^'||stack[top]=='%') { exp[t]=stack[top]; top--; t++; } top++; stack[top]=ch; } else if(ch=='*'||ch=='/') { while(stack[top]=='*'||stack[top]=='/') { exp[t]=stack[top]; top--; t++; } top++; stack[top]=ch; } else { // printf("第%d 个数开始出错!\n",i+1); judge=1; flag=0; break; } i++; ch=str[i]; } if(k!=l) { printf("括号不匹配!\n"); judge=1; flag=0; } else if (str[zs-1]=='+'||str[zs-1]=='-'||str[zs-1]=='*'||str[zs-1]== '/')
二叉树中不存在度大于 2 的结点) ,并且,二叉树的子树有左右之分, 其次序不能任意颠倒。 4. 二叉树的性质 (1)在二叉树的第 i 层上至多有 个结点(i≥1) 。
(2)深度为 k 的二ቤተ መጻሕፍቲ ባይዱ树至多有
个结点(k≥1) 。

北理工汇编语言实验报告5

北理工汇编语言实验报告5

汇编语言实验报告实验五子程序设计实验(设计性实验)班级:05611102姓名:肖枫学号:1120111431实验日期:2013.9.11晚上实验四子程序设计实验(设计性实验)一、实验要求和目的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.寄存器传递参数这种方式是最基本的参数传递方式。

北京理工大学自动控制理论实验报告三

北京理工大学自动控制理论实验报告三

自动控制理论实验报告(三)——二阶开环及闭环系统的频率特性曲线班级:姓名:学号:一、实验目的1.了解和掌握Ⅰ型二阶闭环系统中的对数幅频特性)(ωL 和相频特性)(ωϕ,实频特性Re(ω)和虚频特性Im(ω)的计算。

2.了解和掌握欠阻尼Ⅰ型二阶闭环系统中的自然频率ωn 、阻尼比ξ对谐振频率ωr 和谐振峰值L(ωr )的影响及ωr 和L(ωr ) 的计算。

3.了解阻尼比ξ对开环参数幅值穿越频率ωc 和相位裕度γ的影响及幅值穿越频率ωc 和相位裕度γ的计算。

4.了解和掌握Ⅰ型二阶闭环系统对数幅频曲线、相频曲线和幅相曲线的构造及绘制方法。

二、实验原理及说明被测系统的结构图如图:图中被测系统的闭环传递函数φ(S)=)()(S R S C =)()(1)(S H S G S G + 以角频率ω为参数的闭环系统对数幅频特性和相频特性为L(ω)=20lg|φ(j ω)| φ(ω)= ∠φ(j ω)本实验以二阶闭环系统模拟电路为例,令积分时间常数为Ti ,惯性时间常数为T ,开环增益为K ,可得:自然频率:TiTK=n ω 阻尼比:KTTi21=ξ谐振频率:221ξωω-=n r 谐振峰值:2121lg20)(ξξω-=r L频率特性测试电路如图,其中惯性环节的R 用可变电阻取代。

其中输入“数/模转换OUT ”,输出“数/模转换IN ”。

计算欠阻尼二阶闭环系统中的幅值穿越频率ωc 、相位裕度γ: 幅值穿越频率:24241ξξωω-+⨯=n c相位裕度:424122arctan)(180ξξξωϕγ++-=+=cγ值越小,Mp%越大,振荡越厉害;γ值越大,Mp%小,调节时间ts 越长,因此为使二阶闭环系统不致于振荡太厉害及调节时间太长,一般希望:30°≤γ≤70°本实验以二阶闭环系统频率特性曲线为例,得:ωc =14.186 γ=34.93°二阶闭环系统模拟电路的各环节参数:积分环节的积分时间常数T i =R 1C 1=1s ,惯性环节的惯性时间常数 T=R 3C 2=0.1s ,开环增益K=R 3/R 。

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

北京理工大学汇编实验报告3本科实验报告实验名称:实验三字符串操作实验课程名称:课程设计Ⅰ(CPU与汇编)(实验)实验时间:第5-10周周五下午任课教师:聂青实验地点:10-102实验教师:苏京霞实验类型:☑原理验证□综合设计□自主创新学生姓名:罗逸雨学号/班级:1120141208 05211401 组号:3 学院:信息与电子学院同组搭档:专业:通信工程成绩:CX 中值减 1,当 CX 中值减至 0 时,停止重复执行,继续执行下一条指令。

当REP无条件重复前缀,重复串操作直到计数寄存器的内容 CX 为0为止。

经常与REP 配合工作的字符串处理指令有MOVS、STOS和LODS。

当REPE/REPZ判断计数寄存器的内容 CX 是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。

可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。

当REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。

可以与 REPE/REPZ 配合工作的串指令有CMPS和SCAS。

3)字符串操作指令lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据 DF 标志增减 SI;stosb、stosw:把AL或AX中的数据装入ES:DI指向的存储单元,然后根据 DF 标志增减 DI;movsb、movsw:把 DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据 DF标志分别增减SI和DI;scasb、scasw:把AL或AX 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与 ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;rep:重复其后的串操作指令。

重复前先判断 CX 是否为0,为0就结束重复,否则CX减1,重复其后的串操作指令。

主要用在MOVS和STOS前。

一般不用在 LODS 前。

上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器 AX、计数器CX。

涉及的标志位:DF、AF、CF、OF、PF、SF、ZF。

三、实验步骤1) 编写程序,比较两个字符串BUF1和BUF2所含的字符是否相同,相同则AL 返回0,不同AL返回1,字符串长度要求自动获取,要求用字符串处理方法。

提示:输入两个字符串之后,将串操作所必须的寄存器等参数设置好,然后使用串操作指令进行从头到尾的比较,两个字符串相等的条件是串长度相等且对应的字符相同。

2) 编写程序,设有一字符串存放在以BUF为首址的数据区中,其最后一字符‘$’作为结束标志,计算该字符串的长度并输出。

提示:从串的第一个字符开始统计,直到遇到定义的字符串结束符为止,看看在这个过程中总共有多少个字符,即求得串的长度。

3) 编写程序,将内存中BUF1某一区域的数据传送到另一区域BUF2中,要求用字符串处理方法。

4) 编写程序,在已知字符串中搜索特定字符‘#’,若找到则AL返回0,找不到AL返回1,要求用字符串处理方法。

5) 编写程序,统计一串字符串中字符"&"出现的次数,要求用字符串处理方法。

6) 编写程序,设有一字符串已存放在 STRBUF 为首址的数据区中,编一程序找出其中的‘#’字符,如果字符串中不存在‘#’字符则应该输出“Not found”。

四、程序清单与框图(1)DATAS SEGMENTBUF1 DB 20,?,20 DUP(?)COUNT1 EQU $-BUF1BUF2 DB 20,?,20 DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,ES:DATASSTART:MOV AX,DATASMOV DS,AXMOV ES,AXLEA DX,BUF1 ;输入字符串BUF1MOV AH,0AHINT 21HMOV DL,0AH ;输出回车、换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,BUF2 ;输入字符串BUF2MOV AH,0AHINT 21HMOV AX,0LEA DI,BUF1LEA SI,BUF2CLDMOV CX,COUNT1REPZ CMPSBJNZ L1 ;BUF1和BUF2不同,跳转至L1 L2:MOV AL,0HJMP EXIDL1:MOV AL,1HEXID:MOV BL,ALMOV DL,0AH ;输出回车、换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HADD BL,30H ;将AL中的内容输出MOV DL,BLMOV AH,02HINT 21HMOV AH,4CHINT 21HCODES ENDSEND START程序分析:本程序的难点在于从键盘输入两字符串BUF1、BUF2。

为了成功输入,要在两次输入之间加上输出回车、换行。

初始化BUF1、BUF2内存区域时,应设置相同的空间大小便于后续比较BUF1、BUF2中的字符。

利用0A号功能进行输入字符串时,要注意初始化时的固定格式。

输入前应将字符串有效地址放入DX中。

利用串操作指令CMPSB逐个比较DS:SI和ES:DI中的字符。

利用CLD 指令可以方便地使SI、DI在每次串操作指令后递增。

输出AL中的内容0、1时应先将其转换成ASCII码30H、31H再输出。

框图:开始相同且CX 不为0?初始化BUF1,BUF2内存单元循环次数CX 设为字符串长度 SI 、DI 加一,CX 减一输入BUF1、BUF2字符串,设置SI 、DI 比较DS:SI 和ES:DI 中字符NY(2)DATAS SEGMENTBUF DB '12345678912345$' BUF2 DB 20 DUP('$') DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,ES:DATAS START:MOV AX,DATAS MOV DS,AX MOV ES,AX LEA BX,BUF LEA SI,BUF结束AL=0ZF=1?NY AL=1LEA DI,BUF2CLDREPNZ CMPSBMOV AX,SISUB AX,BX ;计算BUF长度MOV DX,0 ;将AX中的内容转为10进制输出 MOV BX,10000DIV BXMOV BX,DXMOV DL,ALADD DL,30HMOV AH,02HINT 21HMOV AX,BXMOV BX,1000MOV DX,0DIV BXMOV BX,DXMOV DL,ALADD DL,30HMOV AH,02HINT 21HMOV DX,0 MOV BX,100 DIV BXMOV BX,DX MOV DL,AL ADD DL,30H MOV AH,02H INT 21HMOV AX,BX MOV BX,10 MOV DX,0 DIV BXMOV BX,DX MOV DL,AL ADD DL,30H MOV AH,02H INT 21HMOV DL,BL ADD DL,30H MOV AH,02H INT 21HINT 21HCODES ENDSEND START程序分析:本程序的难点在于将内存中的十六进制数转为十进制输出。

一个字能表示的最大十六进制数是65535,即十进制的五位数。

所以采用除10000、1000、100、10、1法,将商不断输出,再将余数作为下一次运算的被除数。

输出前要将原数加上30H转为ASCII码。

(3)DATAS SEGMENTBUF1 DB 'ABCDEFGHIJKLMN'COUNT1 EQU $-BUF1BUF2 DB 20 DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,ES:DATASSTART:MOV AX,DATASMOV DS,AXMOV ES,AXLEA SI,BUF1LEA DI,BUF2CLDMOV CX,COUNT1REP MOVSB ;将BUF1中数据复制到BUF2中MOV AH,4CHINT 21HCODES ENDSEND START程序分析:本程序使用的串操作指令是MOVSB,该指令的功能为把DS:SI指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF标志分别增减SI和DI。

利用该指令可以方便地将BUF1内存单元中的内容复制到BUF2内存单元中。

框图:开始初始化BUF1,BUF2内存单元装载DS、ES段,设置SI、DI循环次数CX设为BUF1长度(4)DATAS SEGMENTBUF1 DB 'ABCDEFGHIJKLMN'COUNT1 EQU $-BUF1DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,ES:DATASSTART:MOV AX,DATAS SI 加一 DI 加一CX 减一 将DS:SI 中的内容复制到ES:DI 中 N CX=0? Y 结束MOV DS,AXMOV ES,AXMOV AL,'#'LEA DI,BUF1CLDMOV CX,COUNT1REPNZ SCASBJZ L1JNZ L2L1:MOV AL,0JMP EXIDL2:MOV AL,1EXID:MOV AH,4CHINT 21HCODES ENDSEND START程序分析:本程序使用的串操作指令为SCASB,其功能是把AL中的数据与ES:DI指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI。

本程序要实现的功能是查找字符'#',所以可将AL中的数据设置为'#'。

若一次循环过程中ZF=1,即说明原字符串BUF1中也含有字符'#'。

框图:初始化BUF1内存单元 循环次数CX 设为字符串长度 装载ES 段,设置DI 开始不同且CX 不为0? 结束DI 加一,CX 减一 N AL=0ZF=1? N Y Y AL=1(5)DATAS SEGMENTBUF1 DB '&YYYSS22323&&&&&&&g&&' COUNT EQU $-BUF1DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,ES:DATAS START:MOV AX,DATASMOV DS,AXMOV ES,AXMOV BX,0LEA DI,BUF1MOV CX,COUNTMOV AL,'&'CLDL: ;统计‘&’个数REPNZ SCASBJZ FOUNDJMP EXIDFOUND: ;发现一个‘&’INC CXINC BXLOOP LEXID:MOV AH,4CHINT 21HCODES ENDSEND START程序分析:本程序的目的是统计字符串中'&'的个数。

相关文档
最新文档