民航大学微机实习实验报告及Matlab程序

时间:2024.4.20

微机应用实习报告

学院:航空自动化学院

班级:091143C

学号:091143311

姓名:

指导老师:

实习时间:20xx年3月12日-20xx年3月16日

20xx年3月16日

实习内容

第一题:用switch……case开关结构得出各月份的季节。 程序如下:

>> month=input('please input a number\n');

switch (month)

case {3,4,5}

season='This month is spring';

case {6,7,8}

season='This month is summer';

case {9,10,11}

season='This month is autumn';

case {12,1,2}

season='This month is winter';

otherwise

season='wrong';

disp('wrong')

end

disp(['' season])

运行结果如下:

please input a number

8

This month is summer

>>

第二题:求积分?2

民航大学微机实习实验报告及Matlab程序

民航大学微机实习实验报告及Matlab程序

(x2+2y2+z2)dxdydz

程序如下:

>> clear;

syms x y z;

fun=x^2+2*y^2+z^2;

s=int(int(int(fun,z,sqrt(x*y),y*x^2),y,sqrt(x),x^2),x,2,3)

f=vpa(s,10) 3x2x2y

运行结果如下:s =

524526833/5940-21453984/38675*3^(1/2)+27000/1547*3^(1/4)+24/25*3^(3/4)+9067264/348075*2^(1/2)-18176/4641*2^(1/4)-64/225*2^(3/4)

f =87400.23106

>>

第三题:下面是某班级学生的期末成绩,要对其进行如下操作,请写出相应的命令。

民航大学微机实习实验报告及Matlab程序

①求各门课平均值;

②求每名学生总成绩并排名; ③求各门课的最高分,最低分。

程序如下:

>> clear;

a=[76 71 82 62]; b=[54 73 82 90]; c=[60 63 70 72]; d=[96 81 75 86]; e=[a;b;c;d]; zong=[0 0 0 0]; disp('各科平均分'); pingjun=(a+b+c+d)/4 for j=1:length(e(:,1)) for i=1:length(e(1,:))

zong(j)=zong(j)+e(j,i); end end

disp('每名同学总成绩'); zong xu=zong; a=sort(xu); xu=fliplr(a); b=0;

for i=1:length(zong)

for j=1:length(xu)

if(zong(i)==xu(j)) mingci(i)=j; b=1;

end

if(b==1)

b=0;

break;

end

end

end

disp('名次');

mingci

sort(e);

disp('各科最低分');

zuidi=ans(1,:)

disp('各科最高分');

zuigao=ans(length(e(:,1)),:) 运行结果如下:

各科平均分

pingjun =

71.5000 72.0000 77.2500 每名同学总成绩

zong =

291 299 265 338

名次

mingci =

3 2 4 1

各科最低分

zuidi =

54 63 70 62

各科最高分

zuigao =

96 81 82 90 >>

第四题:解方程组Ax=B ??6x1?3x2?4x3?3?

?2xx?

1?52?7x3??4

??

?8x1?4x2?3x3?7??

程序如下: 77.5000

>> syms x1;syms x2;syms x3;

[x1,x2,x3]=solve('6*x1+3*x2+4*x3=3','-2*x1+5*x2+7*x3=-4','8*x1-4+x2-3*x3=7') 运行结果如下:

x1 =

107/150

x2 =

4/3

x3 =

-33/25

第五题:列出一个求fibonnaci数的程序。它是一个数列,从

[1,1]开始,由数列的最后两个元素之和生成新的元素,以此类推。

程序如下:

>> syms n;

a=[10];

n=3;

a(1)=1;

a(2)=1;

while(n<=24)

a(n)=a(n-2)+a(n-1);

n=n+1;

end

disp(a);

运行结果如下:

Columns 1 through 6

1 1 2 3 5 8

Columns 7 through 12

13 21 34 55 89 144

Columns 13 through 18

233 377 610 987 1597 2584

Columns 19 through 24

4181 6765 10946 17711 28657 46368

>>

第六题:编写一个求素数的程序;只能被自己和一整除的数。 程序如下:

>> a=[];

i=1;n=1;

while(n<=218)

if(isprime(n)==1)

a(i)=n;

i=i+1;

end

n=n+1;

end

disp(a)

运行结果如下:

Columns 1 through 13

2 3 5 7 11 13 17 19 23 29 31 37

Columns 14 through 26

43 47 53 59 61 67 71 73 79 83 89 97

Columns 27 through 39

103 107 109 113 127 131 137 139 149 151 157 163

Columns 40 through 47

173 179 181 191 193 197 199 211

>>

第七题:运用protel画图工具作发射和接收电路图。 一:发射电路 41 101 167

民航大学微机实习实验报告及Matlab程序

绘图结果:

民航大学微机实习实验报告及Matlab程序

二:接收电

民航大学微机实习实验报告及Matlab程序

民航大学微机实习实验报告及Matlab程序

实习心得:20xx年3月12日-20xx年3月16日为期一个星期的微机应用实习,让我学到了很多。这次实习的内容虽然都是以前已经学过的,比如软件matlab在数字信号处理实习中应用过,软件protel在模拟电子技术课程设计里面用过,编程的知识在单片机、C语言、微机原理等课程中都学过,但是刚开始老师给了我们题目之后,我发现遇到了很多难题。比如说matlab的使用,编程中的某些语句,比如循环语句、条件语句的使用,protel中文件的建立都或多或少的有点生疏了,在这次实习中都重新温习了一遍。不仅如此,实习中也学到了很多新知识。比如积分符号等一些数学公式的输入,让我学会了应用数学公式编辑软件。程序中积分的代码,矩阵以及线性方程组的解法,数据的统计与分析,protel中各种元件的画法以及编辑新的元件的方法等等……一种经历就是一种提高,实习的机会就是一个锻炼的机会,我很高兴能有这种机会并很好地利用它来充实自己!!!


第二篇:民航大学微机原理实验报告及试验程序


微机原理与接口技术

实验报告

实验环境:Windows XP SP3

实验软件:masm,link,debug,edit。

Test 1:debug命令及汇编指令和寻址的应用。

NO.1设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。要求:用3种方法实现。


方法一

CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,3000H
MOV BX,5000H
MOV CX,AX
MOV AX,BX
MOV BX,CX
CODE  ENDS
END START
方法二 

CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,3000H
MOV BX,5000H
XCHG AX,BX
CODE  ENDS
END START

方法三

CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,3000H
MOV BX,5000H
PUSH AX
PUSH BX
POP AX
POP BX
CODE  ENDS
END START




NO.2分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。
MOV AX,BX                 寄存器寻址,将BX内容送AX
MOV AX,[BX]             寄存器间接寻址,将DS:BX内存单元内容送AX
MOV AX,10[BX]         寄存器相对寻址,将DS:BX+10内存单元内容送AX


NO.3已知有如下程序段:
MOV  AX,1234H
MOV  CL,4
在以上程序段的基础上,分别执行以下指令:

ROL  AX,CL                AX=4123H      
ROR  AX,CL       AX=3412H
SHL  AX,CL          AX=4120H
SHR  AX,CL                AX=0412H      
SAR  AX,CL         AX=0041H
RCL  AX,CL        AX=0410H
RCR  AX,CL         AX=0041H

NO.4设有以下部分程序段:
 TABLE DW 10H,20H,30H,40H,50H
  ENTRY DW 3
               ┇
             LEA BX,TABLE
             ADD BX,ENTRY
             MOV AX,[BX]
               ┇
要求:(1)将以上程序段补充成为一个完整的汇编程序。

(1)  DATA SEGMENT
      TABLE DW 10H,20H,30H,40H,50H
       ENTRY DW 3
       DATA ENDS
      CODE SEGMENT
        ASSUME DS:DATA,CS:CODE
      START:  MOV AX,DATA
         MOV DS,AX
         LEA BX,TABLE
         ADD BX,ENTRY
        MOV AX,[BX]
         MOV AH,4CH
         INT 21H
         CODE   ENDS
         END START


(2)AX=3000H

Test2:汇编语言程序的调试与运行

NO.1实验内容:求内存单元中所定义的两个字节变量的连续内容之和。

源代码如下:


方法一:

DATA SEGMENT

A DB 5CH,85H

B DB 43H,0ABH

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,SEG DATA

MOV DS,AX

MOV SI,0

MOV AL,A[SI]

ADD AL,B[SI]

MOV A[SI],AL

INC SI

MOV AL,A[SI]

ADC AL,B[SI]

MOV A[SI],AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

方法二:定义字

DATA SEGMENT

A DW 5C85H

B DW 43ABH

C DW ?

C=A+B

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AH,4CH

INT 21H

CODE ENDS

END START

方法三:直接寻址

DATA SEGMENT

A DB 5CH,85H

B DB 43H,0ABH

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,SEG DATA

MOV DS,AX

MOV AL, [1000]

ADD AL,[1002]

MOV [1000],AL

INC SI

MOV AL,[1000]

ADC AL,[1002]

MOV [1000],AL

MOV AH,4CH

INT 21H

CODE ENDS

END START


分析总结:本程序一采用了变址寻址方式,通过SI作为变址寻址寄存器,经由si改变来使加法指令寻址地址变化,从而实现两个字节之间相加。两个自己之间分别通过ADD与ADC指令进行进位的衔接。程序二在DATA定义中直接使用赋值语句将A,B的和放入C中。程序三于程序以类似,只不过将A[SI]的寻址方式变为[1000]的直接寻址,把其地址值直接拿来使用。

程序运行结果如上图所示

NO.2 编写计算表达式2*(X+Y-50)/Z值的程序,将上与玉树分别放在A,B中。(XY均为32位有符号数,Z为16位有符号数。A,B为字)

原代码如下


data segment

X dw 1234H,5678H

Y dw 1753H,1320H

Z dw 1002H

A dw ?

B dw ?

data ends

code segment

assume CS:code,DS:data

start:

mov ax,seg data

mov ds,ax

mov si,0

mov cx,0050H

mov bx,X[si]

add bx,Y[si]

sub bx,cx

mov X[si],BX    \完成括号内加减法内容

mov BX,X[si+2H]

adc BX,Y[si+2H]

mov X[si+2H],BX

shl X[si],1        \左移乘2

rcl X[si+2H],1

mov ax,X[si+2h]

cwd

idiv Z[si]

mov cl,02H

sal ax,cl

mov A[si],ax

mov ax,X[si]

add ax,dx

cwd          \位拓展

div Z[si]       \除

add A[si],ax  \按要求保存结果

mov B[si],dx

mov ah,4cH

int 21H

code ends

end start


分析总结:实验在32位数加减乘除运算是遇到困难。同时在有符号除法处遇到溢出困难。经过对字分开运算后在整合,问题得到解决

Test 2:分支结构程序设计

NO.1实验内容:编写程序,实现将大写字母转换为小写字母的程序。

源代码如下:


data SEGMENT

msg DB 'I am a student$'

LEN EQU $-msg

DATA ENDS

code SEGMENT

assume CS:code,DS:data

START:

mov ax,data

mov ds,ax

mov bx,  offset msg

MOV CX,LEN                 \获取字符串长度

mov dl,'a'                    \设置大小比较值

lop:MOV AL,[bx]

CMP al,dl                    \比对从字符串中读取的某个字符与a的ASCLL码的大小来判断是否需要转换

jb next                      \如不需转化,直接跳转至next

sub al,20h

mov [bx],al

next:inc bx                   \计数部分自加一以统计字符串是否读完

loop lop                     \读完跳出

mov dx,offset msg

mov ah,09h

int 21h                      \保存并显示出修改后的字符串

mov ah,4ch

int 21h

code ends

end start

程序运行结果如上图

Test 4:循环程序设计

NO.3   数据段开始区域中,连续存放着十个无符号数,变成虚找出这十个数中最大的一个数,并存在该数据区的后面。

原代码如下:

data segment

num db 11h,99h,55h,99h,33h,22h,44h,66h,88h,10h

len equ $-num

data ends

code segment

assume cs:code,ds:data

start:

mov dx,seg data

mov ds,dx

mov si,0

mov cx,len

sub cx,1                   \读取字符串长度后减1得出所需循环次数

mov al,[si]

lop:clc                     \进位清零

mov bl,[si+1]

cmp bl,al                   \与之前读取的数比较

inc si

jb next

mov al,bl                   \若大于之前的数,则保存后者

next:loop lop                \循环,与下一个数进行比较

mov num[si+1],al             \将最后得出的最大数保存

mov ah,4ch

int 21h

code ends

end start

程序运行结果如上图所示

Test 6:DOS中断功能调用程序设计

NO.1  编写一个程序使键盘输入的一个字符,将ASCLL码显示。

 CODE SEGMENT
ASSUME CS:CODE

MOV AH,09H
MOV AH,1
INT 21H                          \从键盘输入字符

MOV DL,AL

mov ah,02h

int 21h

mov ah,4ch                       \输出ASCLL码,结束程序

int 21h

code ends

end start

NO.2  编程,判断键盘输入字符。若是数字显示该数字,若不是则显示“It’s not a number!”

 DATA SEGMENT

INFOR1 DB 0AH,0DH,"Please Press any key to input a number:$"

INFOR2 DB 0AH,0DH, " It’s not a number! $"

DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA

MOV DS,AX
MOV DX,OFFSET INFOR1
MOV AH,09H
MOV AH,1
INT 21H                         \从键盘输入字符

CMP AL,'9'                       \和9比大小

JB NEXT                                                  \不符合要求跳转NEXT

CMP '0', AL                       \和0比大小

JB NEXT                         \不符合要求跳转NEXT

mov dl,al

mov ah,02h

int 21h

mov ah,4ch                     \符合要求输出字符,结束程序

int 21h

NEXT:

MOV DX,OFFSET INFOR2            \不符合要求,输出字符串It’s not a number!

MOV AH,09H

INT 21H

mov ah,4ch

int 21h                           \结束程序

code ends

end start

实验分析及总结:

实验过程中,我发现了这样一些问题:

1.         没有彻底的理解课上的知识

2.         课下没有自己亲手操作汇编程序,上手生疏

3.         对一些语法,寻址方式的应用掌握不够精确

4.         程序的精简化合理化布局能力还应加强

在今后的学习中,我将加强课上听讲的认真程度,不遗漏任何知识点;同时课下利用好自己的电脑资源,多进行亲手操作及演练。“眼过千遍不如手过一遍”我将发挥自己在编程上的一些优势,来学好微机原理与接口技术这门课程

更多相关推荐:
《数学实验》报告matlab_第六次作业

数学实验报告实验名称matlab常微分概率和统计作图学院机械工程学院专业班级姓名学号20xx年11月一实验目的掌握运用Matlab解常微分方程的方法以及运用数值法解常微分的方法和步骤学会使用matlab一组数据...

Matlab数学实验报告模板

数学实验报告日期20年月日Maylab实验报告学院数学系班级09级A班姓名学号名称二0一二年五月八日

《数学实验》报告matlab-_第三次作业

数学实验报告实验名称matlab绘图学院机械工程学院20xx年10月一实验目的掌握Matlab绘图的基本知识学会使用matlab绘制三维曲线和三维曲面掌握基本的绘图指令学会为图形添加各种标注以及改变图形的着色效...

matlab数学实验报告2

西安交通大学数学实验报告数学实验报告20xx年6月12日2西安交通大学数学实验报告培养容器温度变化率模型一实验目的利用matlab软件估测培养容器温度变化率二实验问题现在大棚技术越来越好能够将温度控制在一定温度...

matlab——大学数学实验报告

济南大学20##~20##学年第二学期数学实验上机考试题班级计科1201学号##姓名##考试时间20##年6月17日授课教师##说明:每题分值20分。第5题,第6题,第7题和第8题可以任选其一,第9题和第10题…

matlab11实验报告

辽宁工程技术大学上机实验报告1程序x2025303540455055606539Xones101xY13215116417117918719621222524339bbintrrintstatsregressY...

Matlab实验报告五(微分方程求解Euler折线法)

数学与信息科学系实验报告实验名称微分方程求解所属课程数学软件与实验实验类型综合型实验专业信息与计算科学班级学号姓名指导教师1234

数学实验“Chebyshev多项式最佳一致逼近,最佳平方逼近”实验报告(内含matlab程序)

西京学院数学软件实验任务书实验十八实验报告一实验名称Chebyshev多项式最佳一致逼近最佳平方逼近二实验目的进一步熟悉Chebyshev多项式最佳一致逼近最佳平方逼近三实验要求运用MatlabCCJavaMa...

Matlab常用数学软件实验报告8

Matlab常用数学软件实验报告8,内容附图。

Matlab实验报告六(三次样条与分段线性插值)

数学与信息科学系实验报告实验名称插值与拟合所属课程数学软件与实验实验类型综合型实验专业信息与计算科学班级学号姓名指导教师1234

北科大matlab数学实验报告第四次北科大matlab数学实验报告第四次Matlab 数学实验 全部答案 精华版

数学实验报告实验名称数学实验第四次报告学院专业班级姓名学号20xx年12月一实验目的学会用MATLAB计算矩阵的秩最简行列式转置等掌握积分算法二实验任务完成课后第5章第12142112题第7章第17218题三实...

matlab数学实验

数学实验报告姓名学号班级姓名学号班级姓名学号班级1整数规划类型选自课本P154上机练习题第7题实验问题某轰炸机群轰炸敌人军事目标已知该目标有四个要害部位只要摧毁其中之一即可达到目标为完成此项任务的汽油消耗量限制...

matlab数学实验报告(22篇)