西电微机原理上机

合集下载

西电 机电微机原理实验报告

西电 机电微机原理实验报告

微机原理实验报告姓名:学号:实验一8259中断实验一、实验目的1.掌握PC机中断处理系统的基本原理。

2.掌握外部扩展中断源的设计方法。

3.学会编写中断服务程序。

二、实验原理PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。

中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。

三、实验内容实验要求实现8259控制器的IR1、IR3两路中断都可以通过IRQ向PC机发起中断请求,用SP1、SP2单次脉冲模拟两个中断源。

IR1中断时,在它的中断服务程序中编程显示“IR1 OK AND EXIT!”;IR3中断时,在它的中断服务程序中编程显示“IR3 OK AND EXIT!”。

采用查询方式完成。

图1-1 扩展中断电路四、实验步骤1、连接线路SP1和SP2分别接到IR1和IR3,IR1和IR3与L0和L1指示灯相连,8259CS 接到Y0上,最后将/RD、/WR、INT分别与IOR、IOW、IRQ相连接,连接好后打开电源。

2、编写程序3、汇编、编译、连接及运行五、实验程序DATA SEGMENTIOPORT EQU 0FF00H-0280HMY8259_ICW1 EQU IOPORT +280H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU IOPORT +281H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU IOPORT +281H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU IOPORT +281H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU IOPORT +281H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU IOPORT +280H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU IOPORT +280H ;实验系统中8259的OCW3端口地址MSG1 DB 0DH,0AH,'DVCC PCI CARD INTERRUPT',0DH,0AH,'$'MSG2 DB 0DH,0AH,'PRESS ANY KEY TO EXIT!',0DH,0AH,'$'MSG3 DB 0DH,0AH,'IR1 OK AND EXIT!',0DH,0AH,'$'MSG4 DB 0DH,0AH,'IR3 OK AND EXIT!',0DH,0AH,'$'DATA ENDSSTACKS SEGMENTDB 100 DUP (?)STACKS ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKS,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKSMOV SS,AXMOV AX,DATAMOV DS,AXMOV DX,OFFSET MSG1MOV AH,09HINT 21HMOV DX,OFFSET MSG2MOV AH,09HINT 21HSTART1: MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4OUT DX,ALMOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2MOV AL,08HOUT DX,ALMOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4MOV AL,01H ;非自动结束EOIOUT DX,ALMOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1MOV AL,0F5H ;打开IR1和IR3的屏蔽位OUT DX,ALQUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令MOV AL,0CHOUT DX,ALNOPNOPNOPMOV DX,MY8259_OCW3IN AL,DX ;读出查询字TEST AL,80H ;判断中断是否已响应JZ QUERY ;没有响应则继续查询AND AL,07HCMP AL,01HJE IR1ISR ;若为IR1请求,跳到IR1处理程序CMP AL,03HJE IR3ISR ;若为IR1请求,跳到IR1处理程序JMP EOIQUERY1: MOV DL,0FFHMOV AH,06HINT 21HJZ START1MOV AH,4CHINT 21HIR1ISR: MOV DX,OFFSET MSG3 ;IR1处理,显示字符串'IR1 OK AND EXIT'MOV AH,09HINT 21HJMP EOIIR3ISR: MOV DX,OFFSET MSG4 ;IR1处理,显示字符串'IR3 OK AND EXIT'MOV AH,09HINT 21HEOI: MOV DX,MY8259_OCW2 ;向实验系统中8259发送中断结束命令MOV AL,20HOUT DXMOV AL,20H ;SEND EOIOUT 0A0H,ALOUT 20H,ALPOP DSPOP DXPOP AXJMP START1CODE ENDSEND START六、实验结果接好电路,编好程序,打开电源后,两个LED指示L0和L1灯都熄灭;编译、链接、运行程序,8259控制器的IR1、IR3两路中断可通过IRQ向PC机发起中断请求,按下SP1,IR1中断,指示灯L0亮,电脑屏幕上显示“IR1 OK AND EXIT!”;按下SP2, IR3中断,指示灯L1亮,电脑屏幕上显示“IR3 OK AND EXIT!”七、实验中遇到的问题及解决方法最初认为要按照原理图把所有线都接上,后来知道了直接用排线连接就好,同时还能降低短路的可能性。

西安电子科技大学微机原理第4章

西安电子科技大学微机原理第4章

2015/7/23
20
2)变量属性



段地址(SEG 偏移地址(OFFSET 类型(TYPE):变量的类型是所定义的每个变量所占据 的字节数。对于DB、DW、DD、DQ、DT定义的变量其 类型分别为 1、2、4、8、10。 长度(LENGTH):变量定义时,一个变量名所定义的变 量个数。在含有DUP操作符的变量定义中,变量名所定义 的变量个数为定义格式中的重复次数。在其它各种变量定 义中,每个变量名所定义的变量个数均为 1 大小(SIZE):变量定义语句中,分配给同一变量名的所 有变量的总的字节数;大小(SIZE)=变量类型(TYPE) ×变量长度(LENGTH)。
21
2015/7/23
3)举例
DATA1 DB 20H DATA2 DW 0204H, 100H DATA3 DB (-1*3),(15/3 DATA4 DD 12345H DATA5 DB ′0123′ DATA6 DW ′AB′, ′C′, ′D′ DATA7 DB ? DATA8 DD ? DATA9 DB 5 DUP(00 DATA10 DW 3 DUP(?)
2015/7/23
5
4.1 8086汇编语言的语句



指令可由汇编程序翻译成机器语言指令,汇编语 言中的指令与机器语言指令基本上是一一对应的, 由CPU执行的语句,称为指令性语句; 伪指令则不汇编成机器语言指令,仅仅在汇编过 程中告诉汇编程序应如何汇编,称为指示性语句; 宏指令是使用者利用上述基本语句自己定义的新 的指令。
A3 DW VALUE-3 ;定义变量A3为变量VALUE前3个字节 A4 DD VALUE ;高位字为变量VALUE所在段的段地址, 低位字为变量VALUE的偏移地址。

新版西电微机原理第二次上机实验报告-新版-精选.pdf

新版西电微机原理第二次上机实验报告-新版-精选.pdf

西电微机原理第二次上机实验报告学号:姓名:一、实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。

2.掌握算术运算中,十进制数调整指令的应用。

3.掌握子程序的设计方法。

4.掌握DOS功能的调用方法。

二、实验仪器586微机 1台三、实验内容编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。

编程要求与提示:[1] 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。

[2] 和以压缩十进制数的形式存入SUM以下单元。

[3] 将和送到屏幕显示部分功能的实现采用子程序的形式。

[4] 实验步骤如下:a. 用全屏幕编辑软件建立源程序。

b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。

c. 用link.exe连接程序对目标程序进行连接形成可执行文件。

d. 用DEBUG对连接通过的可执行程序进行调试。

四、实验内容对应的源程序及流程源程序如下:STACK SEGMENT STACKDB 10H DUP(00)STACK ENDSDATA SEGMENTADD1 DB 12H,67H,85H,32HADD2 DB 21H,73H,65H,43HSUM DB 4H DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX, DATAMOV DS, AXMOV AX, DATAMOV ES, AXMOV AX,STACKMOV SS,AXLEA SI, ADD1[3]LEA BX, ADD2[3]LEA DI,SUM[3]MOV CX,4CLCL1:MOV AL,[SI]ADC AL,[BX]DAAMOV [DI],ALDEC SIDEC BXDEC DILOOP L1CALL DISPAL; ------------EXITPROC:MOV AH,4CH ;结束程序MOV AH,1INT 21H; ------------DISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,SUMMOV CX,4DISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1MOV AH,2MOV DL,ALADD DL,30HINT 21HMOV AL,[DI]AND AL,0FHMOV AH,2MOV DL,ALADD DL,30HINT 21HINC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCODE ENDSEND START运行结果如下:五、问题讨论1.在以十进制数形式参加运算的程序设计中,应注意那些问题。

西安电子科技大学微机原理上机题37题

西安电子科技大学微机原理上机题37题

编写程序实现将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号>数据2 <原序号>数据3 <原序号>················程序如下(效果图):N=100DATAS SEGMENTBUFFER LABEL WORDX=55519REPT 100X=(X+7517)mod 65535DW XENDMNUMBER LABEL BYTEY=0REPT 100Y=Y+1DB YENDMDECIMAL DB 5 DUP(?)M DW 1 DUP(?)DATAS ENDSSTACKS SEGMENTDW 100H DUP(?)TOP LABEL WORDSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV ES,AXMOV AX,STACKSMOV SS,AXLEA SP,TOPXOR AX,AX ;开始程序LEA SI,BUFFERLEA DI,NUMBERCALL SORTMOV CX,N ;显示程序开始L1:MOV AX,[SI]MOV M,5CALL DISPAXDCALL DISPEMADD SI,2 ;显示数值XOR AX,AXMOV AL,[DI]MOV M,3CALL DISPAXDCALL DISPCRINC DI ;显示序号LOOP L1MOV AH,4CHMOV AL,0INT 21HSORT PROC NEARPUSH SIPUSH DIPUSH AXPUSH BXPUSH CXMOV CX,N;开始冒泡程序DEC CXLP1: ;外循环PUSH SIPUSH DIPUSH CXLP2: ;内循环MOV AX,[SI]CMP AX,[SI+2]JBE NOXCHGXCHG AX,[SI+2]MOV [SI],AXMOV BL,[DI]XCHG BL,[DI+1]MOV [DI],BLNOXCHG:ADD SI,2INC DILOOP LP2POP CXPOP DIPOP SILOOP LP1 ;冒泡结束POP CXPOP BXPOP AXPOP DIPOP SIRETSORT ENDPDISPAXD PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DECIMALCALL TRANS16TO10MOV CX,MMOV BX,CXDEC BXLEA DI,DECIMAL[BX];指向最高位MOV AH,2DISPAXD2:MOV DL,[DI]ADD DL,30HDEC DIINT 21HLOOP DISPAXD2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAXD ENDPTRANS16TO10 PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV BX,10MOV CX,MTRANS1:XOR DX,DXDIV BXMOV [DI],DLINC DILOOP TRANS1POP DIPOP DXPOP CXPOP BXPOP AXRETTRANS16TO10 ENDPDISPEM PROC NEARPUSH AXPUSH DXMOV AL,20HMOV AH,02MOV DL,ALINT 21H ;显示一位字符POP DXPOP AXRETDISPEM ENDPDISPCR PROC NEARPUSH AXPUSH DXMOV AL,0AHMOV AH,02MOV DL,ALINT 21H ;显示一位字符POP DXPOP AXRETDISPCR ENDPCODES ENDSEND START。

西安电子科技大学微机原理上机要求及必做题目答案(汇编实现)

西安电子科技大学微机原理上机要求及必做题目答案(汇编实现)

西安电子科技大学微机原理上机要求及必做题目答案(汇编实现)必做题目:1、编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。

2、有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

1、编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。

编程要求与提示:[1]两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。

[2]和以压缩十进制数的形式存入SUM以下单元。

[3]将和送到屏幕显示部分功能的实现采用子程序的形式。

汇编语言实现如下:STACKSTACKDATAADD1ADD2SUMDATACODESTART:MOVA某,DATAMOVDS,A某MOVA某,DATAMOVES,A某MOVA某,STACKMOVSS,A某LEASI,ADD1[3]LEAB某,ADD2[3]LEADI,SUM[3]MOVC 某,4CLCL1:MOVAL,[SI]ADCAL,[B某]DAAMOV[DI],ALDECSIDECB某DECDILOOPL1SEGMENTSTACKDB10HDUP(00)ENDSSEGMENTDB12H,67H,85H,32HDB21H,73H,65H,43HDB4HDUP()ENDSSEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK必做题目:1、编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。

2、有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

CALLDISPAL;-------------------------------------E某ITPROC:MOVAH,4CH;结束程序MOVAH,1INT21H;-------------------------------------DISPALPROCNEARPUSHA某PUSHB某PUSHC某PUSHD某PUSHDILEADI,SUMMOVC某,4 DISPAL2:MOVAL,[DI]SHRAL,1SHRAL,1SHRAL,1SHRAL,1MOVAH,2MOVDL,ALADDDL,3 0HINT21HMOVAL,[DI]ANDAL,0FHMOVAH,2MOVDL,ALADDDL,30HINT21HINCDILOOPDISPAL2POPDIPOPD某POPC某POPB某POPA某RETDISPALENDPCODEENDSENDSTART2、有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

西电微机原理与系统设计上机报告

西电微机原理与系统设计上机报告

微机原理与系统设计上机报告学号:*******姓名:**指导老师:**时间:2016年11月西安电子科技大学内容一 Debug程序的使用一、实验目的1. 学习使用DEBUG调试命令。

2. 学习用DEBUG调试简单程序。

3. 通过程序验证码制及其对标志位的影响。

4. 通过调试熟悉和掌握各寄存器的作用与特点。

二、实验内容用DEBUG调试简单程序。

三、实验仪器微机一台四、实验步骤1.由DOS进入DEBUG调试环境。

(1)DEBUG将调试程序装入内存注意:当机器控制权由DOS成功地转移给调试程序后,将显示“-”号,它是DEBUG的状态提示符,表示可以接受调试子命令了。

(2)-R 显示CPU中各寄存器当前初始内容,请记录下列各项:AX=0000 BX=0000 CX=0000 DX=0000 BP=0000 SI=0000 DI=0000 DS=13E0 ES=13E0 SS=13E0 SP=FFEE CS=13E0 IP=0100 FLAG寄存器中的8个标志位状态值是:OF DF IF SF ZF AF PF CFNV UP EI PL NZ NA PO NC DEBUG用符号给出标志寄存器中8个标志位的当前状态,其含义如下表所示。

标志位含义‘1’的对应符号‘0’的对应符号OF溢出OV有NV无DF方向DN递减UP递增IF中断EI允许DI禁止SF符号NG负PL正ZF全零ZR零NZ非零AF辅助进位AC有NA无PF奇偶性PE偶PO奇CF进位CY有NC无2.用DEBUG调试简单程序例1 -A CS:0106MOV AX,1234MOV BX,2345MOV CX,0ADD AX,BXMOV CX,AXINT 20运行程序(注:执行程序时IP应指向要执行的指令,需要修改该寄存器-RIP当前值输入需要值该处为0106,当然也可以在T或G命令中指出程序起始地址)-R 显示各寄存器当前内容及首条指令-T 3 跟踪执行三条赋值传送指令,观察寄存器及标志位-T 2跟踪执行相加及送和数指令,观察寄存器及标志位-G 执行软件中断指令INT 20,机器将显示“程序正常终止”的信息,并显示“-”,表明仍处在DEBUG的调试控制状态下,注意未用T命令,因为我们不想进入到20H中断处理程序中去,P命令也可实现相同操作实验现象记录:观察与记录按照上述要求命令执行后,哪些寄存器和标志位发生了变化。

西电微机原理上机

西电微机原理上机

西电微机原理上机西电微机原理上机主要是通过实验的方式来验证微机原理课程中所学到的理论知识。

通过上机实验,我们可以更好地了解微机的工作原理、数据传输与控制、接口技术以及常见的微机系统组成。

在微机原理上机实验中,通常会有以下几个实验项目:1. 单总线存储器读写实验:通过这个实验项目,我们可以了解到微机存储器的基本原理及其在微机系统中的应用。

通过编写程序来完成对存储器的读写操作,进一步掌握总线操作的相关知识。

2. 中断控制实验:中断是微机系统中重要的一种输入/输出方式。

通过这个实验,我们可以深入了解中断的工作原理以及中断控制的编程技术。

3. 并行与串行接口实验:在微机系统中,与外部设备的数据交互离不开接口技术。

通过这个实验,我们可以学习并熟悉并行与串行接口电路的原理,掌握相应接口的编程技术。

4. 定时器/计数器实验:定时器/计数器是微机系统中常用的计时与计数设备。

通过这个实验,我们可以了解定时器/计数器的基本工作原理以及如何通过编程来实现相应的定时与计数功能。

5. 数字/模拟转换实验:在微机系统中,数字/模拟转换技术被广泛应用于数据采集、信号处理等方面。

通过这个实验,我们可以学习数字/模拟转换的基本原理及其在微机系统中的应用。

通过以上实验项目,我们可以逐步深入了解微机原理的相关知识,掌握相应的实验技术和方法,同时能够独立进行微机系统的设计、搭建与调试工作。

关于每个实验项目的具体操作步骤和实验结果分析,这里就以其中一个实验项目为例来进行详细的说明。

以单总线存储器读写实验为例,具体操作步骤和实验结果分析如下:1. 操作步骤:(1) 连接实验所需的硬件设备,包括微型机实验板、开发板和串口线等;(2) 打开相应的编程开发环境,如Proteus、Keil等;(3) 编写相应的存储器读写程序,包括初始化存储器、写入数据、读取数据等;(4) 下载程序并进行调试,观察存储器读写操作是否正确。

2. 实验结果分析:通过上述操作步骤,我们可以得到以下实验结果:(1) 存储器的读写操作是否正确,即写入的数据是否能够成功地被读取出来;(2) 存储器的读写速度是否满足要求,即存储器读写的时序是否正确;(3) 存储器的容量是否满足要求,即存储器能够存储的数据量大小。

西安电子科技大学自动控制技术与原理上机报告完整版

西安电子科技大学自动控制技术与原理上机报告完整版

自动控制技术上机实验报告班级:0212#学号:0212##姓名:#####目录自动控制技术上机实验报告 (1)时域分析 (3)1.1源程序及结果 (3)1.2源程序及结果 (5)1.3源程序及结果 (6)1.4源程序及结果 (8)频域分析 (9)2.1源程序及结果 (9)2.2源程序及结果 (13)2.3源程序及结果 (14)2.4源程序及结果 (15)2.5源程序及结果 (16)现代控制理论 (18)3.1源程序及结果 (18)3.2源程序及结果 (21)3.3源程序及结果 (24)3.4源程序及结果 (25)3.5源程序及结果 (26)校正设计 (27)1.增量PID控制算法 (27)2.积分分离PID控制算法 (29)3.抗积分饱和PID控制算法 (32)4.带死区的PID控制算法 (36)时域分析1.1源程序及结果ft = 30;M=1;B=5;K=20;tspan = [0,5];x0= [0,0];options = odeset('AbsTol',[1e-6;1e-6]);[T,X]=ode45('xt4odefile',tspan,x0,options);figure(1)subplot(3,1,1),plot(T,X(:,1),'r'),title('位移随时间变化曲线'),grid on subplot(3,1,2),plot(T,X(:,2),'b'),title('速度随时间变化曲线'),grid on subplot(3,1,3),plot(X(:,2),X(:,1),'m'),title('位移随速度变化曲线'),grid ona = 1/M*(ft-B*X(:,2)-K*X(:,1));i = 1;while (abs(a(i))>0.0001|(abs(X(i,2))>0.0001))i = i+1;enddisp('系统到达稳态时的时间、速度和加速度及对应的位移分别为:'); result = sprintf('时间t=%4.2f\n',T(i));disp(result);result = sprintf('速度v=%9.6f\n',X(i,2));disp(result);result = sprintf('加速度 a=%9.6f\n',a(i)); disp(result);result = sprintf('位移 d=%6.4f\n',X(i,1)); disp(result);其中xt4odefile.m 文件为function xt = odefileC(t,x); ft = 30;M=1;B=5;K=20;xt = [x(2);1/M*(ft-B*x(2)-K*x(1))]; end输出:系统到达稳态时的时间、速度和加速度及对应的位移分别为: 时间 t=4.47速度 v=-0.000087加速度 a=-0.000060位移 d=1.500000.51 1.52 2.53 3.54 4.55012位移随时间变化曲线00.51 1.52 2.53 3.54 4.55-505速度随时间变化曲线-0.500.51 1.52 2.53 3.5012位移随速度变化曲线1.2源程序及结果num=[2,5,7];den=[1,6,10,6];[z,p,k]=tf2zp(num,den) [r,a,b]=residue(num,den)输出:z =-1.2500 + 1.3919i-1.2500 - 1.3919ip =-3.7693-1.1154 + 0.5897i-1.1154 - 0.5897ik =2r =2.2417-0.1208 - 1.0004i-0.1208 + 1.0004ia =b =[]结论:零点为-1.2500 + 1.3919i ,-1.2500 - 1.3919i ;极点为-3.7693 ,-1.1154 + 0.5897i,-1.1154 - 0.5897i ;增益为21.3源程序及结果num=[6.3223,18,12.811];den=[1,6,11.3223,18,12.811];t=0:0.005:20;[y,x,t]=step(num,den,t);plot(t,y);grid ontitle('单位阶跃响应曲线')xlabel('t')ylabel('c(t)')r10=1;while y(r10)<.1; r10=r10+1;end;r90=1;while y(r90)<.9; r90=r90+1;end;rise_time=(r90-r10)*0.005[ymax,tp]=max(y);peak_time=(tp-1)*.005max_overshoot=ymax-1s=4001;while y(s)>.98&y(s)<1.02;s=s-1;end;setting_time=(s-1)*.005输出:rise_time =0.5750peak_time =1.6700max_overshoot =0.6182setting_time =10.0300246810121416182000.20.40.60.811.21.41.61.8单位阶跃响应曲线tc (t )1.4源程序及结果num=[1 1];den=[1 5 6 0];sys1=tf(num,den)subplot(3,1,1)step(sys1)subplot(3,1,2)rlocus(num,den)title('系统的根轨迹曲线')r=rlocus(num,den,20.575)a=[1];b=[1 0.8989];sys2=tf(a,b)sys=series(sys1,sys2)%系统串联subplot(3,1,3)step(sys)输出:Transfer function:s + 1-----------------s^3 + 5 s^2 + 6 sr =-2.0505 + 4.3225i -2.0505 - 4.3225i -0.8989Transfer function:1----------s + 0.8989Transfer function:s + 1-------------------------------------s^4 + 5.899 s^3 + 10.49 s^2 + 5.393 s00.511.522.53x 104500010000Step ResponseTime (sec)A m p l i t u d e-3.5-3-2.5-2-1.5-1-0.500.5-10010系统的根轨迹曲线Real Axis I m a g i n a r y A x i s00.51 1.52 2.53x 104500010000Step ResponseTime (sec)A m p l i t u d e频域分析2.1源程序及结果w=logspace(-1,3,1000); %比例环节 num0=0.01; den0=1;g0=tf(num0,den0);bode(g0,w)title('比例环节')grid%二阶积分环节num1=1;den1=[1,0,0];g1=tf(num1,den1); figure(2)bode(g1,w)title('二阶积分环节') grid%二阶微分环节num2=[1,0.01,1]; den2=1;g2=tf(num2,den2); figure(3)bode(g2,w)title('二阶微分环节') grid%振荡环节num3=1;den3=[0.25,0.01,1]; g3=tf(num3,den3); figure(4)bode(g3,w)title('振荡环节')grid%总:num=0.01*[1,0.01,1]; den=[0.25,0.01,1,0,0]; g=tf(num,den); figure(5)bode(g,w)title('原总波特图') grid输出:-41-40.5-40-39.5-39M a g n i t u d e (d B )10-110101102103-1-0.500.51P h a s e (d e g )比例环节Frequency (rad/sec)-150-100-5050M a g n i t u d e (d B )10-110101102103-181-180.5-180-179.5-179P h a s e (d e g )二阶积分环节Frequency (rad/sec)-50050100150M a g n i t u d e (d B )10-1101011021034590135180P h a s e (d e g )二阶微分环节Frequency (rad/sec)-150-100-5050M a g n i t u d e (d B )10-110101102103-180-135-90-450P h a s e (d e g )振荡环节Frequency (rad/sec)-150-100-50M a g n i t u d e (d B )10-110101102103-180-135-90-450P h a s e (d e g )原总波特图Frequency (rad/sec)2.2源程序及结果num=[0,20,20,10];den=conv([1,1,0],[1,10]); nyquist(num,den)输出:-1-0.500.51 1.52-20-15-10-55101520Nyquist DiagramReal AxisI m a g i n a r y A x i s2.3源程序及结果num=[2000,2000];den=conv([1 0.5 0],[1 14 400]); nichols(num,den) v = [-270 -90 -40 40]; axis(v) ngrid输出:-270-225-180-135-90-40-30-20-10102030406 dB3 dB 1 dB 0.5 dB0.25 dB0 dBNichols ChartOpen-Loop P hase (deg)O p e n -L o o p G a i n (d B )2.4源程序及结果num = [0 2000 2000]; den = conv([1 0.5 0],[1 14 400]); h=tf(num,den); bode(h);num = [0 2000 2000]; den = conv([1 0.5 0],[1 14 400]); h=tf(num,den);[gm,pm,wg,wc]=margin(h)输出:gm =2.7493pm =73.3527wg =19.8244 wc =5.3477-150-100-50050100M a g n i t u d e (d B )10-210-110101102103-270-225-180-135-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)2.5源程序及结果num=[0 0 0 1];den=conv([.5 1 0],[1 1]);sysp=tf(num,den)sys=feedback(sysp,1)w=logspace(-1,1);bode(sys,w)grid on;[mag,phase,w]=bode(sys,w);[Mp,k]=max(mag);resonant_peak=20*log10(Mp)resonant_fre=w(k)n=1;while 20*log10(mag(n))>-3;n=n+1;end; bandwidth=w(n)输出:Transfer function:1---------------------0.5 s^3 + 1.5 s^2 + sTransfer function:1-------------------------0.5 s^3 + 1.5 s^2 + s + 1resonant_peak =5.2388resonant_fre =0.7906bandwidth =1.2649-60-40-2020M a g n i t u d e (d B )10-110101-270-180-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)现代控制理论3.1A3.1源程序及结果num = [1 2 3];den = [1 3 3 1];[A,B,C,D] = tf2ss(num,den)输出:A =-3 -3 -11 0 00 1 0B =1C =1 2 3D =3.2B源程序:Z=[-1 -3];P=[0 -2 -4 -6];K=4;[A,B,C,D]=zp2ss(Z,P,K)输出:A =-10.0000 -4.8990 0 04.8990 0 0 0-6.0000 -4.2866 -2.0000 00 0 1.0000 0B =11C =0 0 0 4D =3.1C源程序:A=[0 1;1 -2];B=[0;1];C=[1 3];D=1;[num,den]=ss2tf(A,B,C,D); tf(num,den)[z,p,k]=ss2zp(A,B,C,D);zpk(z,p,k)输出:Transfer function:s^2 + 5 s-------------s^2 + 2 s - 1Zero/pole/gain:s (s+5)--------------------(s+2.414) (s-0.4142)3.2源程序及结果A1=[0 1;-1 -2];B1=[0;1];C1=[1 3];D1=[1];A2=[0 1;-1 -3];B2=[0;1];C2=[1 4];D2=[0];[A,B,C,D]=series(A1,B1,C1,D1,A2,B2,C2,D2) [A,B,C,D]=parallel (A1,B1,C1,D1,A2,B2,C2,D2) [A,B,C,D]=feedback (A1,B1,C1,D1,A2,B2,C2,D2) [A,B,C,D]=feedback (A1,B1,C1,D1,A2,B2,C2,D2,+1)输出:串联连接A =0 1 0 0-1 -3 1 30 0 0 10 0 -1 -2B =11C =1 4 0 0D =并联连接A =0 1 0 0-1 -2 0 00 0 0 10 0 -1 -3B =11C =1 3 1 4D =1单位负反馈连接A =0 1 0 0-1 -2 -1 -40 0 0 11 3 -2 -7B =11C =1 3 -1 -4D =1单位正反馈连接A =0 1 0 0-1 -2 1 40 0 0 11 3 0 1B =11C =1 3 1 4D =13.3源程序及结果A=[0,-2;1,-3];t=.2;F=expm(A*t) %转移矩阵B=[2;0];C=[0,3];D=[0];x0=[1,1];t=[0,.2];u=0*t;[y,x]=lsim(A,B,C,D,u,t,x0)输出:F =0.9671 -0.29680.1484 0.5219y =3.00002.0110x =1.0000 1.00000.6703 0.6703结论:t=0.2时,系统响应为6703.0)0()0(21==x x ,y (0.2)=2.01103.4源程序及结果A=[-3,1;1,-3];B=[1,1;1,1];C=[1,1;1,-1];D=[0];Qc=ctrb(A,B)Qo=obsv(A,C)Rc=rank(Qc)Ro=rank(Qo)输出:Qc =1 1 -2 -21 1 -2 -2 Qo =1 11 -1-2 -2-4 4Rc =1Ro =2结论:能控性矩阵和能观性矩阵的秩分别为1,2,又系统阶次是2,故系统是不可控的,是可观测的。

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

4.37 (上机题)编写程序实现,将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号>数据2 <原序号>……算法流程图:调试问题、心得体会:通过这道题,熟悉了流程图画法,掌握了产生随机数,“冒泡法”排序,子函数编写调用等的基本过程,尤其对于中断调用,并利用ASCII码回显和对课本字节型数据“冒泡法”排序改进为字形排序的过程,是我受益匪浅。

并且亲身实践了源程序的汇编、调试也连接。

问题:将字节型冒泡法直接应用于该题,导致出错,该题存储的是字型数据!原因在于只是排列的AL中的数值,并不是产生的随机数!同时对于字型与字节型在运算类指令中的应用还是有误,以及其他的一些小错误,应加以改善!运行结果:程序代码:STACK SEGMENT STACK 'STACK'DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTBUFFER LABEL WORDX=17REPT 100X=(X+80)mod 43DW XENDMBUF DW 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOPMOV CX,100LEA SI,BUFFERLEA DI,BUFL1:MOV AX,[SI]INC SIINC SIMOV [DI],AXINC DIINC DILOOP L1MOV CX,100DEC CXLEA SI,BUFFERPUSH CXADD CX,CXADD SI,CXPOP CXL2:PUSH CXPUSH SIL3:MOV AX,[SI]CMP AX,[SI-2]JAE NOXCHGXCHG AX,[SI-2]MOV [SI],AXNOXCHG:LOOP L3POP SIPOP CXLOOP L2MOV CX,100LEA SI,BUFFER L4:MOV AX,[SI] CALL DISPAX ADD SI,2CALL XIAOYU CALL XUHAOCALL DAYUCALL DISPCR LOOP L4MOV AH,4CHMOV AL,0INT 21H DISPAX PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV BX,10MOV CX,3L7:XOR DX,DXDIV BXMOV [DI],DX INC DIINC DILOOP L7MOV CX,3L8:DEC DIDEC DIMOV AL,[DI] ADD AL,30HMOV AH,02MOV DL,ALINT 21HLOOP L8POP DXPOP CXPOP BXPOP AXRET DISPAX ENDP DISPCR PROC NEAR PUSH AXPUSH DXMOV AH,2MOV DL,0AH INT 21HMOV AH,2MOV DL,0DH INT 21HPOP DXPOP AXRET DISPCR ENDP XIAOYU PROC NEAR PUSH AXPUSH DXMOV AH,02 MOV DL,3CH INT 21HPOP DXPOP AXRET XIAOYU ENDP XUHAO PROC NEAR PUSH AXPUSH BXPUSH CXPUSH SIMOV CX,100 MOV BX,AX LEA SI,BUF L5:CMP BX,[SI] JZ L6ADD SI,2LOOP L5L6:MOV AX,101SUB AX,CXCALL DISPAXPOP SIPOP CXPOP BXPOP AXRETXUHAO ENDPDAYU PROC NEARPUSH AXPUSH DXMOV AH,02MOV DL,3EHINT 21HPOP DXPOP AXRETDAYU ENDPCODE ENDSEND START4.38 (上机题)按同余法产生一组随机数N(1<N<=50),并按N+50赋给45名同学的5门课程的成绩,要求编程实现计算每个同学的平均成绩,并根据平均成绩统计全班的成绩各等级的人数(A:90~100,B:80~89,C:70~79,D:66~69,E:60~65,F:60分以下),按下列格式显示:Total <总人数>A: <人数1>B: <人数2>C: <人数3>D: <人数4>E: <人数5>F: <人数6>算法流程图:调试问题、心得体会:通过该问题,进一步练习了通过流程图分析设计程序的功能,掌握了随机数产生,子函数调用,分支程序,循环程序,中断调用等过程,进行了调试,找出了数值无法转化为十进制并显示的问题,原因在于未定义临时存储单元。

最后进行了汇编,链接等,得到了最终结果。

问题1:NUMEER(用来存储各等级人数)存储单元清零后,忘记让DI再次指向其首地址,也就是各成绩等级的人数并未存入NUMBER,因此显示的都是0改正后得到正确结果!问题2:直接照搬课本数值转换子程序,未定义临时存储单元DECIMAL,导致编译出错,出现语法错误!改正后得到正确结果!运行结果:程序代码:STACK SEGMENT STACK 'STACK'DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTBUFFER LABEL BYTEX=17REPT 225X=(X+97)mod 50ENDMBUF DB 45 DUP(?)NUMBER DW 6 DUP(?)TOTAL DB 54H,6FH,74H,61H,6CHLETTER DB 41H,42H,43H,44H,45H,46HDECIMAL DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOPLEA SI,BUFFERLEA DI,BUFMOV CX,45L1:PUSH CXMOV CX,5XOR AX,AXL2:MOV BL,[SI]MOV BH,0ADD AX,BXADD AX,50INC SILOOP L2POP CXMOV BL,5DIV BLMOV [DI],ALINC DILOOP L1LEA SI,BUFLEA DI,NUMBERMOV CX,6MOV AX,0L3:MOV [DI],AXINC DILOOP L3MOV CX,45MOV BX,1LEA DI,NUMBER L4:MOV AL,[SI]CMP AL,90JAE LACMP AL,80JAE LBCMP AL,70JAE LCCMP AL,66JAE LDCMP AL,60JAE LMADD [DI+10],BX JMP L5LA:ADD [DI],BXJMP L5LB:ADD [DI+2],BX JMP L5LC:ADD [DI+4],BX JMP L5LD:ADD [DI+6],BX JMP L5LM:ADD [DI+8],BX L5:INC SILOOP L4LEA SI,TOTAL MOV CX,5L6:MOV AH,02MOV DL,[SI]INT 21HINC SILOOP L6CALL KONGGE CALL XIAOYU MOV AX,45CALL DISPAX CALL DAYUCALL DISPCR MOV CX,6LEA SI,LETTER LEA DI,NUMBER L7:MOV AH,02MOV DL,[SI] INT 21HINC SIMOV AH,02MOV DL,3AHINT 21HCALL KONGGE CALL XIAOYU MOV AX,[DI] CALL DISPAX INC DIINC DICALL DAYUCALL DISPCR LOOP L7MOV AH,4CHMOV AL,0INT 21H KONGGE PROC NEARPUSH AXPUSH DXMOV AH,02MOV DL,20HINT 21HPOP DXPOP AXRETKONGGE ENDPDISPCR PROC NEARPUSH AXPUSH DXMOV AH,2MOV DL,0AHINT 21HMOV AH,2MOV DL,0DHINT 21HPOP DXPOP AXRETDISPCR ENDPXIAOYU PROC NEARPUSH AXPUSH DXMOV AH,02MOV DL,3CHINT 21HPOP DXPOP AXRETXIAOYU ENDPDAYU PROC NEARPUSH AXPUSH DXMOV AH,02MOV DL,3EHINT 21HPOP DXPOP AXRETDAYU ENDPDISPAX PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DECIMAL CALL TRANS16TO10 MOV CX,5LEA DI,DECIMAL+4 MOV AH,2 DISPAX2:MOV DL,[DI]ADD DL,30HDEC DIINT 21HLOOP DISPAX2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAX ENDPTRANS16TO10 PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV BX,10MOV CX,5TRANS1:XOR DX,DXDIV BXMOV [DI],DLINC DILOOP TRANS1POP DIPOP DXPOP CXPOP BXPOP AXRETTRANS16TO10 ENDPCODE ENDSEND START4.39 (上机题)编写程序实现下列5项功能,通过从键盘输入1~5进行菜单式选择:(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。

用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),变换后按下列格式在屏幕上显示: <原字符串>例如:abcdgyt0092<新字符串> ABCDGYT0092按任一键重做;按Esc键返回主菜单。

相关文档
最新文档