电子科技大学微机实验报告(含思考题)河畔下的哈】实验1

合集下载

计算机组成原理实验报告 电子科技大学

计算机组成原理实验报告 电子科技大学

计算机专业类课程实验报告课程名称:计算机组成原理学院专业:计算机科学与工程计算机科学与技术学生姓名:**学号:20120600*****指导教师:吴晓华日期:2014年11月30日实验报告实验一一、实验名称:ALU设计实验二、实验内容和目的:(1)实验内容:设计一个4bit ALU,实现两个4bit二进制数的算术运算和逻辑运算1、算术运算(加、减);2、逻辑运算(与、或、置1、清0);(2)实验目的:1.熟悉ALU的工作原理;2. 掌握用硬件描述语言设计ALU的方法;三、实验原理:利用veilog hdl语言编写实现实验要求的逻辑功能实现代码。

要求实现两个四位二进制数的算数运算和逻辑运算,有三个输入,分别是输入的两个四位二进制数和一个控制信号,有两个输出,分别是仅为信号和运算结果的输出。

考虑到是电路的逻辑代码设计简化,采用case语句来实现。

所有的输入都会对最终的结果和进位输出产生影响。

在连线时,八个开关分为两组,分别控制两个四位二进制数的各位,有五个指示灯,四个显示结果的输出,一个用来显示进位信号。

四、实验器材(设备、元器件)硬件平台:pc软件平台:windows xp五、实验步骤:先利用仿真软件进行程序的编写,编译调试运行,结果无误后,在仿真软件上绑定对应开关和连线,打开电路板电源,进行控制操作,观察指示灯的亮灭情况,根据实际的逻辑结果来验证实验代码及连线的正确性,若与实际结果不相符,检查连线以及实验代码,重新进行处理。

六、实验数据及结果分析:(1)实验代码:module pz(in1,in2,se,count,c); input[3:0] in1,in2;input[2:0] se;output[3:0] count;output c;reg[3:0] count;reg c;always@(in1,in2,se)begincase(se)3'b000:{c,count}=in1+in2;3'b001:{c,count}=in1-in2;3'b010:count=in1 & in2;3'b011:count=in1 | in2;3'b100:count=0000;3'b101:count=1111;default:count=5'bx;endcaseendendmodule(2)实验结果照片:八.实验结论、心得体会和改进建议:(1)思考题:在进行算术运时,7(0111)+8(1000)=11117(0111)- 8(1000)=1111 其输出结果都是1111,为什么?答:因为计算时都采用二进制补码来运算,而前者进行相加的两个数都是正数,其补码为其本身。

微机原理实验报告

微机原理实验报告

微机原理实验报告概述:微机原理是计算机科学与技术专业中的一门重要课程,通过实验学习,可以加深对计算机内部运行原理的理解,提高软硬件的开发和调试能力。

本实验报告将介绍我对微机原理实验的学习和思考。

实验一:二进制转换实验在这个实验中,我首先了解了二进制数的概念以及其和十进制数的转换方法。

通过实际操作,我加深了对计算机内部数据表示方式的理解。

这对于后续学习计算机系统结构和编程语言至关重要。

实验二:逻辑门电路实验逻辑门电路是计算机硬件的基础组成部分,通过实验,我学会了使用逻辑门芯片构建各种逻辑电路,并能够通过真值表分析和验证逻辑电路的正确性。

这对于理解计算机内部的数据处理和控制逻辑有着直接的帮助。

实验三:运算器设计实验在这个实验中,我通过学习和设计算术逻辑单元(ALU),了解了计算机的算术操作过程,并能够通过运算器实现基本算术运算。

这对于理解计算机内部数据的处理和计算机指令的执行有着重要的意义。

实验四:存储器与外设实验存储器是计算机系统的重要组成部分,通过实验,我深入了解了存储器的类型、组织结构和访问方式,并通过外设与存储器的交互,实践了计算机系统的输入和输出过程。

实验五:微处理器实验微处理器是计算机系统中最核心的部件,通过实验,我学习了微处理器的基本运行原理,能够通过汇编语言编写程序,并通过微处理器执行程序实现特定的功能。

这个实验为我今后学习计算机体系结构和操作系统打下了坚实的基础。

实验总结:通过这几个实验,我深入了解了微机原理课程的实践内容和相关知识。

实验的过程中,我不仅学会了使用仪器设备和工具,还培养了自己的动手能力和团队合作精神。

通过不断的实践,我对计算机内部结构和运行原理有了更深刻的理解,也提高了我的问题解决能力和创新思维。

未来展望:微机原理实验的学习只是计算机科学与技术专业中的一小部分。

我希望在今后的学习过程中能加深对计算机体系结构、操作系统、编程语言等方面的学习,并不断深入钻研,成为一名优秀的计算机科学与技术专业人才。

微机系统实验报告

微机系统实验报告

西安电子科技大学实验报告实验一汇编语言编程实验1 实验目的(1)掌握汇编语言的编程方法(2)掌握DOS功能调用的使用方法(3)掌握汇编语言程序的调试运行过程2 实验内容(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。

(2) 在屏幕上显示自己的学号姓名信息。

(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。

(4)自主设计输入显示信息,完成编程与调试,演示实验结果。

3 实验结果任务一4 程序流程图5 程序代码任务一DATA SEGMENTNUMBER DB ' 03101214 SONG YUAN YUAN',0AH,0DH,'$'string1 DB 0AH,0DH,' input q/Q to exit ',0AH,0DH,0AH,0DH,'NUMBER AND NAME:','$' string2 DB 0AH,0DH,'Input: $'RESULT DB 0AH,0DH,'ASCII is :$'SD DB ''DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET string1MOV AH,09HINT 21HMOV DX,OFFSET NUMBERINT 21HC1: MOV DX,OFFSET string2MOV AH,09HINT 21HMOV AH,01HINT 21HCMP AL,'Q'JZ EXITCMP AL,'q'JZ EXITMOV SD,ALMOV DX ,OFFSET RESULTMOV AH,09HINT 21HMOV SI,OFFSET SDMOV AL,DS:[SI]AND AL,0F0HMOV CL,4SHR AL,CLCMP AL,0AHJB C2ADD AL,07HC2: ADD AL,30HMOV DL,ALMOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FHCMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,ALMOV AH,02HINT 21Hloop C1EXIT: MOV AX,4C00HINT 21HCODE ENDSEND START实验二数码转换实验.1 实验目的(1)掌握不同进制数及编码相互转换的程序设计方法。

电子科技大学微处理器与嵌入式系统设计实验报告一

电子科技大学微处理器与嵌入式系统设计实验报告一

电⼦科技⼤学微处理器与嵌⼊式系统设计实验报告⼀微处理器系统结构与嵌⼊式系统设计实验报告微处理器系统结构与嵌⼊式系统设计实验名称 ARM基础编程实验⼀、实验⽬的1.熟悉并掌握常⽤ARM汇编指令2.熟悉并掌握“C+汇编”混合编程技术3.熟练使⽤ARM软件开发调试⼯具Keil⼆、实验内容1.学习使⽤Keil开发⼯具2.使⽤ARM汇编语⾔,编程实现1+2+……+N累加运算功能3.使⽤C调⽤汇编函数,实现字符串拷贝功能4.使⽤汇编调⽤C函数,实现求和运算功能5.使⽤ARM汇编语⾔,实现冒泡排序算法(选做)三、实验步骤1.实验1.1:运⾏Keil,建⽴⼯程⽂件,单步运⾏调试演⽰⽰例程序,深刻理解每⼀条指令,观察寄存器,内存空间的变化。

2.实验1.2:⽤汇编语⾔实现1+2+...+N的累加:a)建⽴新⼯程,加⼊实验1.2⽂件夹中的sum.s。

b)⽤汇编补充算法核⼼部分,代码参考流程图如下图1.1所⽰。

c)使⽤单步调试,仔细观察过程中关键寄存器值的变化。

微处理器系统结构与嵌⼊式系统设计实验报告RO=R0+R1R1=R1+1SUM_END结果溢出?R1>=NNOYESYESNO图1.13. 实验1.3:C 调⽤汇编实现字符串拷贝功能:a) 建⽴新⼯程,加⼊实验1.3⽂件夹中的main.c 和testfile.s(同⼀个⼯程下添加两个⽂件⼀起编译)。

b) 补充完成源代码中缺失的部分,分别实现1. 拷贝源字符串的⼀个字节到R2中;2. 将拷贝的字节复制到⽬标空间。

c) 运⾏Debug 进⾏调试。

4. 实验1.4:汇编调⽤C 实现求和1+2+ (10)a) 建⽴新⼯程,加⼊实验1.4⽂件夹中的sum.c 和testfile.s(同⼀个⼯程下添加两个⽂件⼀起编译)。

b) 补充完成源代码中缺失的部分,通过调⽤c 函数g()实现1+2+3+glovb1,结果存在R8中。

c) 运⾏Debug 进⾏调试5. 实验1.5:ARM 汇编实现冒泡算法:a) 建⽴新⼯程,加⼊实验1.5⽂件夹中的maopao.s 。

电子科技大学微机实验报告实验5

电子科技大学微机实验报告实验5

电子科技大学微机实验报告实验5第一篇:电子科技大学微机实验报告实验5实验五基于ARM的模块方式驱动程序实验【实验目的】 1.掌握Linux 系统下设备驱动程序的作用与编写技巧 2.掌握Linux 驱动程序模块加载和卸载的方法 3.了解Linux 内核中的makefile和kconfig文件【实验内容】1.基于s3c2440 开发板编写led 驱动程序。

2.将编写好的led驱动加入linux内核中,修改makefile和kconfig文件,配置和编译内核。

3.编写关于led 的测试程序,交叉编译后运行,控制led 灯的亮灭。

【预备知识】1.了解ARM9处理器结构和Linux 系统结构2.熟练掌握C语言。

【实验设备和工具】ν硬件:ARM嵌入式开发平台,PC机Pentium100 以上。

ν软件:PC机Linux操作系统+MINICOM+AMRLINUX 开发环境【实验原理】νlinux设备驱动程序ν驱动的模块式加载和卸载ν编译模块ν装载和卸载模块ν led 驱动的原理在本开发板上有八个led指示灯,从下往上分别为LED0-LED7。

这八个led灯都是接的芯片上的gpio口(通用功能输入输出口)。

在本实验的开发板硬件设计中,当led 灯对应的gpio的电平为低时,led灯被点亮;当led灯对应的gpio的电平为高时,led灯灭。

本驱动的作用就是通过设置对应gpio口的电平来控制led 的亮灭。

因为ARM 芯片内的GPIO口都是复用的,即它可以被配置为多种不同的功能,本实验是使用它的普通的I/O口的输出功能,故需要对每个GPIO口进行配置。

在内核中已经定义了对GPIO口进行配置的函数,我们只需要调用这些函数就可以完成对GPIO口的配置。

【实验步骤】实验程序运行效果:程序会提示:“pleaseenterthe led status”输入与希望显示的led状态对应的ledstatus值(输入十进制值即可),观察led 的显示情况。

微机原理的实验报告

微机原理的实验报告

一、实验目的1. 理解微机的基本组成和各部件的功能;2. 掌握微机的工作原理和指令系统;3. 熟悉汇编语言程序设计的基本方法;4. 提高动手能力和实际操作技能。

二、实验内容1. 微机系统组成实验(1)实验目的:了解微机的基本组成和各部件的功能。

(2)实验内容:观察并记录微机系统的各个部件,如CPU、内存、硬盘、主板等,并了解它们的功能。

(3)实验步骤:①观察微机系统各个部件的连接情况;②了解各个部件的功能和作用;③分析微机系统的整体结构。

2. 微机工作原理实验(1)实验目的:掌握微机的工作原理。

(2)实验内容:观察并记录微机工作过程中的各个阶段,如指令的取指、译码、执行等。

(3)实验步骤:①观察微机工作过程中的各个阶段;②了解各个阶段的功能和作用;③分析微机工作原理。

3. 指令系统实验(1)实验目的:熟悉汇编语言指令系统。

(2)实验内容:学习汇编语言的基本指令,如数据传送指令、算术运算指令、逻辑运算指令等。

(3)实验步骤:①学习汇编语言的基本指令;②编写简单的汇编语言程序,实现数据传送、算术运算、逻辑运算等功能;③调试程序,观察程序运行结果。

4. 汇编语言程序设计实验(1)实验目的:提高汇编语言程序设计能力。

(2)实验内容:编写一个汇编语言程序,实现以下功能:①计算两个数的和;②判断一个数是否为偶数;③输出程序运行结果。

(3)实验步骤:①编写汇编语言程序,实现上述功能;②调试程序,观察程序运行结果;③分析程序运行过程,确保程序正确性。

三、实验结果与分析1. 微机系统组成实验:通过观察和记录微机系统的各个部件,了解了微机的基本组成和各部件的功能。

2. 微机工作原理实验:通过观察微机工作过程中的各个阶段,掌握了微机的工作原理。

3. 指令系统实验:通过学习汇编语言的基本指令,熟悉了汇编语言指令系统。

4. 汇编语言程序设计实验:通过编写汇编语言程序,提高了汇编语言程序设计能力。

四、实验心得通过本次微机原理实验,我对微机的基本组成、工作原理和指令系统有了更深入的了解。

电子科技大学实验报告

五、实验内容:
(一)用WinDLX模拟器执行求阶乘程序fact.s。
这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。
该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。
(二)用WinDLX模拟器执行程序gcm.s。
该程序从标准输入读入两个整数,求他们的greatest common measure,然后将结果写到标准输出。
该程序中调用了input.s中的输入子程序。
(三)用WinDLX模拟器执行求素数程序prim.s。
这个程序计算若干个整数的素数。
六、实验器材(设备、元器件):
PC微机一台
七、实验步骤及操作:
1.双击WinDLX图标运行WinDLX。装入测试程序之前,先初始化WinDLX模拟器:点击File菜单中的Reset all菜单项,弹出一个“Reset DLX”对话框。然后点击窗口中的“确认”按钮即可。
1.2.选择File/Load Code or Data,按如下步骤操作,可将fact.s和input.s这两个程序装入主存:
◆点击fact.s
◆点击select按钮
◆点击input.s
◆点击select按钮
◆点击load按钮
3.点击主窗口中的Execution开始运行。
4.程序gcm.s和prim.s的运行过程同上。
八、实验数据及结果分析:
九、实验结论:
十、总结及心得体会:
十一、对本实验过程及方法、手段的改进建议:
报告评分:
指导教师签字:
电子科技大学
实验报告
学生姓名:
学号:
一、实验室名称:计算机学院计算心
二、实验项目名称:熟悉WinDLX的使用

电子科大微嵌实验报告一

电子科技大学实验报告课程名称微处理器系统与嵌入式系统综合实验实验名称实验一_ARM基础编程实验任课教师实验教师姓名学号实验地点科B239 分组号时间年月日一、实验目的1.熟悉并掌握常用ARM汇编指令2.熟悉并掌握“C+汇编”混合编程技术3.熟练使用ARM软件开发调试工具Keil二、实验内容a)学习使用Keil开发工具b)实现累加运算功能(汇编编程,必做)c)实现字符串拷贝功能(C+汇编,必做)d)实现求和运算功能(C+汇编,必做)三、实验步骤1、运行Keil,建立工程文件,单步运行调试演示示例程序,深刻理解每一条指令,观察寄存器,内存空间的变化。

此处提供六个示例实验:其中ARM数据处理指令寻址方式实验和ARM内存访问指令寻址方式实验为必做实验。

ARM堆栈指针寄存器实验、ARM程序计数器实验、ARM程序状态寄存器实验、ARM 工作模式切换实验为选做部分,鼓励大家利用课上剩余时间或课后完成此部分内容。

2、用ARM汇编实现1+2+…+N的累加运算在sum.s文件中,用汇编实现算法核心部分,需添加的代码参考流程图如下:使用单步调试,仔细观察过程中关键寄存器值的变化。

3、理解C和汇编,并用汇编程序实现字符串拷贝,并在C程序中调用该汇编程序。

在汇编文件testfile.s中添加两行汇编代码,分别实现:1) 拷贝源字符串的一个字节到R2中;2) 将拷贝的字节复制到目标空间。

运行Debug进行调试。

4、在汇编中调用C函数在汇编文件testfile.s中相应位置添加汇编代码,通过调用c函数g()实现1+2+3+glovb1,结果存在R8中。

运行Debug进行调试。

四、实验结果实验2R0=R0+R1,判断结果是否溢出,若溢出跳转,否则与N比较继续相加,若等于N,则结束,其中使用循环直至计算完成。

实验3把R1中的字符利用寄存器间接寻址复制到R0中,循环执行并判断字符串是否结束,然后返回。

调试时,地址中显示数字62变为61即表明实验成功。

电子科技大学微机实验报告-实验2

实验二 ARM 汇编控制LED 实验【实验目的】1、理解掌握通过ARM 汇编控制硬件操作;2、熟练使用ARM 调试软件RVDS 进行硬件调试。

【实验内容】1、掌握ARM 处理器GPIO 相关寄存器的使用;2、用ARM 汇编实现控制开发LED 按照一定方式点亮。

【预备知识】1、ARM 汇编基础2、ARM 处理器通用IO 口的操作【实验设备和工具】软件:Windows 操作系统,RVDS 软件硬件:ARM 嵌入式开发板,PC 机Pentium100 以上,并口线,JTAG 板,JTAG 连接线【实验原理】1、 S3C2440 处理器相关寄存器介绍PORT G 控制寄存器( GPGCON )PORT G 数据寄存器(GPGDAT)PORT G 禁止上拉寄存器(GPGUP)注:以上寄存器详细描述见实验指导书或者S3C2440 芯片手册。

2、开发板LED 部分原理图说明GPG5 接LED4,串联上拉电阻GPG6 接LED5,串联上拉电阻GPG7 接LED6,串联上拉电阻GPG8 接LED7,串联上拉电阻所以,当IO 口输出低电平时,相应的LED 才能点亮。

【实验步骤】(一)LED 汇编实验1、通过查看S3C2440 处理器G 口控制寄存器,在文件中添加汇编代码,设置GPG5-GPG8 为output。

2、在文件中添加汇编代码,禁止GPG5-GPG8 端口的上拉电阻。

3、在文件中添加汇编代码,点亮LED6,熄灭LED5,LED7,LED8,并调用延时。

4、在文件中添加汇编代码,点亮 LED7,熄灭 LED5,LED6,LED8,并调用延时。

5、在文件中添加汇编代码,点亮LED8,熄灭LED5,LED6,LED7,并调用延时。

6、在文件中添加汇编代码,实现LED5-LED8 依次点亮。

7.连接好 JTAG 仿真板,一口与 PC 的并口相连,另一口与开发板的 JTAG 口相连,打开开发板电源。

打开H-jtag 程序,检测CPU,点击RVDS 中的“Debu g”,打开RVD 进行硬件调试(二)LED C 语言实验(选做)【实验结果和程序】(一)LED 汇编实验;GPIO 寄存器宏定义GPGCON EQU 0xGPGDAT EQU 0xGPGUP EQU 0xEXPORT LEDTESTAREA LEDTESTASM,CODE,READONL Y ; 该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读ENTRYLEDTEST;设置GPG5-GPG8(即LED4--LED7)为outputldr r0,=GPGCONldr r1,[r0]movr1,#0x00015400str r1,[r0];禁止GPG5-GPG8(即LED4--LED7)端口的上拉电阻ldr r0,=GPGUPldr r1,[r0]movr1,#0x01e0str r1,[r0]looptest;将数据端口G 的数据寄存器的地址附给寄存器r2ldr r2,=GPGDAT; 点亮LED5,熄灭LED6-LED8,并调用延时ldr r3,[r2]orrr3,r3,#0x01e0bicr3,r3,#0x0020str r3,[r2] ;GPG5(即LED5) output 0ldr r0,=0xffffff ;初始计数值bl delay ;调用延迟子程序;----------点亮LED6,熄灭LED5,LED7,LED8,并调用延时---- ldr r3,[r2]orrr3,r3,#0x01e0bicr3,r3,#0x0040str r3,[r2] ;GPG6(即LED6) output 0ldr r0,=0xffffff ;初始计数值bl delay;----------点亮LED7,熄灭LED5,LED6,LED8,并调用延时---- ldr r3,[r2]orrr3,r3,#0x01e0bicr3,r3,#0x0080str r3,[r2] ;GPG7(即LED7) output 0ldr r0,=0xffffff ;初始计数值bl delay;----------点亮LED8,熄灭LED5,LED6,LED7,并调用延时---- ldr r3,[r2]orrr3,r3,#0x01e0bicr3,r3,#0x0100str r3,[r2] ;GPG8(即LED8) output 0 ldr r0,=0xffffff ;初始计数值bl delay;-------------实现LED5-LED8 依次点亮-------------------b looptestdelaysub r0,r0,#1 ;r0=r0-1cmp r0,#0x0 ;将r0 的值与0 相比较bne delay ;比较的结果不为0(r0 不为0),继续调用delay,否则执行下一条语句mov pc,lr ;返回END ;程序结束符(二)LED C 语言实验(选做)arm 汇编部分:AREA |DATA|,CODE,READONL YENTRY;ldr r13,=0x1000IMPORT mainb mainENDC 语言部分://---------------Serial Experiment--------------------//-----------This is coded by UESTC HQ 20/*串口通信C 程序,按‘e’退出通信*/#define ULCON0 (*(volatile unsigned *)0x) //UART 线控制寄存器#define UCON0 (*(volatile unsigned *)0x) //UART 控制寄存器#define UFCON0 (*(volatile unsigned *)0x) //FIFO 控制寄存器#define UMCON0 (*(volatile unsigned *)0x5000000C) //AFC disable#define UTRSTA T0 (*(volatile unsigned*)0x) //UART 状态寄存器#define UBRDIV0 (*(volatile unsigned *)0x) //波特率#define UTXH0 (*(volatile unsigned *)0x)#define URXH0 (*(volatile unsigned *)0x)#define CAMDIV0 (*(volatile unsigned *)0x4C000018)#define GPHCON (*(volatile unsigned *)0x)#define GPHDAT (*(volatile unsigned *)0x)#define GPHUP (*(volatile unsigned *)0x)#define MPLLCON (*(volatile unsigned *)0x4C000004)#define UPLLCON (*(volatile unsigned *)0x4C000008)#define CLKDIVN (*(volatile unsigned *)0x4C000014)#define WTCON (*(volatile unsigned *)0x)void initpll(){MPLLCON=0x76022; //Fin=, Fout=CLKDIVN=0x07; //0000 0111}void inituart(){ULCON0=0x03; //1 位起始位,8 位数据位UCON0 =0x0805; //串口时钟PCLK,查询方式UFCON0 =0x0;UMCON0 =0x0;UBRDIV0 =0x17; // 波特率115200 UBRDIV0 = /(115200*16)-1=24-1=23}void initgpio(){GPHCON |=0xa0; // set to rxd and txdGPHUP |=0x0f; // pull upWTCON &=0xdb;}void uart_send(char * c){for (; *c != '\0'; c++){URXH0 = *c ;}}unsigned char uart_get() {}int main(){UTXH0=URXH0; return UTXH0;char key = ' ';initpll(); //初始化锁相环PLLinitgpio(); //初始化IO 口inituart(); //初始化串口uart_send("If you want to quit ,please press 'e'\r\n"); while(1){key = uart_get();if (key == 'e'){} else {uart_send ("\r\nyou pressed 'e' and you'll quit!\r\n"); break;uart_send(&key);}}uart_send("the program exited by user!\r\n");return 0;}【思考题】1 、如何实现 LED0-LED7 的循环点亮。

电子科技大学 模拟电路实验报告01

模拟电路实验报告实验一常用电子测量仪器的使用1.实验目的(1)了解双踪示波器、函数信号发生器、晶体管毫伏表、直流稳压电源的工作原理和主要技术指标。

(2)掌握双踪示波器、晶体管毫伏表、直流稳压电源的正确使用方法。

2.实验原理示波器是电子测量中最常用的一种电子仪器,可以用它来测试和分析时域信号。

示波器通常由信号波形显示部分、垂直信道(Y通道)、水平信道(X通道)三部分组成。

YB4320G是具有双路的通用示波器,其频率响应为0~20MHz。

为了保证示波器测量的准确性,示波器内部均带有校准信号,其频率一般为1KHz,即周期为1ms,其幅度是恒定的或可以步级调整,其波形一般为矩形波。

在使用示波器测量波形参数之前,应把校准信号接入Y轴,以校正示波器的Y轴偏转灵敏度刻度以及扫描速度刻度是否正确,然后再来测量被测信号。

函数信号发生器能产生正弦波、三角波、方波、斜波、脉冲波以及扫描波等信号。

由于用数字LED显示输出频率,读数方便且精确。

晶体管毫伏表是测量正弦信号有效值比较理想的仪器,其表盘用正弦有效值刻度,因此只有当测量正弦电压有效值时读数才是正确的。

晶体管毫伏表在小量程档位(小于1V)时,打开电源开关后,输入端不允许开路,以免外界干扰电压从输入端进入造成打表针的现象,且易损坏仪表。

在使用完毕将仪表复位时,应将量程开关放在300V挡,当电缆的两个测试端接地,将表垂直放置。

直流稳压电源是给电路提供能源的设备,通常直流电源是把市电220V的交流电转换成各种电路所需要的直流电压或直流电流。

一般一个直流稳压电源可输出两组直流电压,电压是可调的,通常为0~30V,最大输出直流电流通常为2A。

输出电压或电流值的大小,可通过电源表面旋钮进行调整,并由表面上的表头或LED显示。

每组电源有3个端子,即正极、负极和机壳接地。

正极和负极就像我们平时使用的干电池一样,机壳接地是为了防止外部干扰而设置的。

如果某一电路使用的是正、负电源,即双电源,此时要注意的是双电源共地的接法,以免造成短路现象。

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

实验一ARM汇编基础实验1.掌握ARM汇编指令2.学习掌握C与汇编混合编程基础3.熟练使用ARM调试工具RVDS进行调试操作1.熟悉ARM汇编2.用ARM汇编实现1+2+...+N3.C调用汇编实验(实现字符串拷贝功能)4.汇编调用C实验5.ARM汇编实现冒泡算法(选做)1. ARM汇编、C语言2. RVDS工具硬件:PC 机Pentium100 以上软件:Windows操作系统,RVDS软件1.在汇编中使用C定义的全局变量在汇编和C之间进行一些数据的传递,最简便的办法就是使用全局变量。

在汇编中调用C中定义的全局变量,需要在汇编中IMPORT 对应的全局变量。

IMPORT 伪指令用于通知编译器要使用的标号或变量在其他的源文件中定义。

1例如:汇编文件asmfile.s想调用C文件cfile.c中定义的全局变量a,则在汇编文件asmfile.s 前面要添加:IMPORT a2.在汇编中调用C的函数要在汇编中调用C文件中定义的函数,主要做两方面的工作:首先:需要在汇编中IMPORT 对应的C函数名。

其次:在调用该C函数之前还需要通过汇编语言传递该函数的参数。

C和汇编之间的参数传递是通过A TPCS(ARM Thumb Procedure Call Standard)的规定来进行的。

简单的说就是如果函数有不多于四个参数,对应的用ARM寄存器R0-R3来进行传递,多于4个时借助栈。

函数的返回值通过R0来返回。

3.在C中调用汇编的函数在C中调用汇编文件中的函数,要做的主要工作有两个:一:是在C中声明函数原型,并加extern关键字;二:是在汇编中用EXPORT导出函数名,并用该函数名作为汇编代码段的标识,最后用mov pc,lr返回。

然后,就可以在C中使用该函数了。

EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。

1、用ARM汇编实现1+2+….n的运算。

2、理解C和汇编,并用汇编程序实现字符串拷贝,并在C程序中调用该汇编程序。

在汇编文件testfile1.s中添加两行汇编代码,分别实现:拷贝源字符串的一个字节到R2中将拷贝的字节复制到目标空间注意事项:1.C文件和汇编文件都必须加到工程中去,否则编译会报错。

2.C文件和汇编文件要拷贝到工程目录下。

3、在汇编中调用C函数。

在汇编文件testfile2.s中相应位置添加汇编代码,通过调用c函数g()实现1+2+3+glovb1,结果存在R8中。

1、用ARM汇编实现1+2+….n的运算。

;功能:计算1+2+3+4+...+N;说明;N>=0,当N=0时结果为0,当N=1时结果为1N EQU 100 ;定义N的值100AREA Examples,CODE,READONL Y ;声明代码断Examples3ENTRY ;标识程序入口CODE32ARM_CODE3LDR SP,=0X30003F00 ;设置堆栈指针ADR R0,THUMB_CODE+1 ;BX R0 ;跳转并切换处理器状态LTORG ;声明文字池CODE16THUMB_CODELDR R0,=N ;设置子程序SUM_N的入口参数BL SUM_N ;调用子程序SUM_NB THUMB_CODE;SUM_N;功能:计算1+2+3+......+N;入口参数:R0 N的值;出口参数:R0 运行结果;占用资源:R0;说明:当N=0时结果为0,当N=1时结果为1;若运算溢出,结果为0SUM_NPUSH {R1-R7,LR} ;寄存器入栈保护MOVS R2,R0 ;将n的值复制到R2,并影响相应条件标志BEQ SUM_END ;若N=0,则返回CMP R2,#1BEQ SUM_END ;若N=1,则返回MOV R1,#1 ;初始化计数器R1=1MOV R0,#0 ;初始化计数器R0=1SUN_L1;------------------------------------------;用汇编实现算法核心部分ADD R0,R0,R1;BVS SUM_END;CMP R1,R2;BCS SUM_END;ADD R1,R1,#1;B SUN_L1;------------------------------------------SUM_ENDMOV R8,R0 ;将结果保存在R8中POP {R1-R7,PC} ;寄存器出栈,返回END2、理解C和汇编,并用汇编程序实现字符串拷贝,并在C程序中调用该汇编程序。

5Arm汇编:;文件名:TESTFILE11.S;功能:从C语言中调用汇编语言;说明:使用ARMulate软件仿真调试AREA Example1,CODE,READONL Y ;声明代码段Example1 CODE32 ;声明32位ARM指令IMPORT __mainEXPORT strcopystrcopy;------------------------------------------LDRB R2,[R1],#1STRB R2,[R0],#1CMP R2,#0BNE strcopyMOV PC,LR;------------------------------------------END ;文件结束C语言:/****************************************文件名:main.c功能:完成字符串的拷贝****************************************/ #include <stdio.h>extern void strcopy(char *d ,char *s);int main(void){char *srcstr = "aaaa";char dststr[] = "bbbb";printf("Before copying:\n");printf(" %s %s\n",srcstr,dststr);strcopy(dststr,srcstr);printf("After copying: \n");printf(" %s\n %s\n",srcstr,dststr);return (0);}3、在汇编中调用C函数。

7Arm汇编:;文件名:TESTFILE8.S;功能:从汇编语言中调用C语言;说明:使用ARMulate软件仿真调试IMPORT gAREA Example1,CODE,READONL Y ;声明代码段Example1 CODE32 ;声明32位ARM指令ENTRYIMPORT glovb1START;------------------------------------------MOV R0,#1MOV R1,#2MOV R2,#3LDR R3,glovb1BL gMOV R8,R0;------------------------------------------END ;文件结束C语言:/****************************************文件名:main.c功能:完成求和****************************************/int *glovb1;glovb1=10;int g(int a, int b ,int c,int d){return a+b+c+d;}1、add替换成adds ,sub替换成subs有什么影响。

答:运算结果不影响CPSR中相应标志位的值,跳转指令因为上一步的CPSR的值没有改变而无法正确执行。

2、mov替换成movne有什么影响?答:只有在上一步计算结果为不相等时才执行。

3、STMIA换成STMIB ,STMIA换成STMDA有什么区别。

答:第一个是将每次写入前地址+4改为地址-4,第二个是将每次写入前地址+4改为+1 4、思考用ARM汇编实现1+3+5+….+(2n+1)或者2+4+6+…..+2n。

9答:实现1+3+5+….+(2n+1):将add r1,r1,#1 改为add r1,r1,lsl #1 sub r1,r1,#12+4+6+…..+2n:将add r1,r1,#1 改为add r1,r1,lsl #1 .5、实验4中如果去除汇编代码中的“EXPORT strcopy”会有什么现象,为什么?答:C语言无法调用用strcopy函数。

因为EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。

6、实验5中如果去除汇编代码中的“IMPORT …..”会有什么现象,为什么?答:无法调用C语言的main函数。

因为IMPORT 伪指令用于通知编译器要使用的标号或变量在其他的源文件中定义。

本实验使用RVDS软件熟悉了C语言和arm汇编的混合编程。

相关文档
最新文档