中南大学组成原理及汇编实验报告
- 格式:doc
- 大小:3.40 MB
- 文档页数:38
中南大学《通信原理》实验报告学生姓名指导教师学院专业班级完成时间数字基带信号1、实验名称数字基带信号2、实验目的(1)了解单极性码、双极性码、归零码、不归零码等基带信号波形特点。
(2)掌握AMI、HDB3码的编码规则。
(3)掌握从HDB3码信号中提取位同步信号的方法。
(4)掌握集中插入帧同步码时分复用信号的帧结构特点。
(5)了解HDB3(AMI)编译码集成电路CD22103。
3、实验内容(1)用示波器观察单极性非归零码(NRZ)、传号交替反转码(AMI)、三阶高密度双极性码(HDB3)、整流后的AMI码及整流后的HDB3码。
(2)用示波器观察从HDB3码中和从AMI码中提取位同步信号的电路中有关波形。
(3)用示波器观察HDB3、AMI译码输出波形。
4、基本原理(简写)本实验使用数字信源模块和HDB3编译码模块。
1、数字信源本模块是整个实验系统的发终端,模块内部只使用+5V电压,其原理方框图如图1-1所示,电原理图如图1-3所示(见附录)。
本单元产生NRZ信号,信号码速率约为170.5KB,帧结构如图1-2所示。
帧长为24位,其中首位无定义,第2位到第8位是帧同步码(7位巴克码1110010),另外16位为2路数据信号,每路8位。
此NRZ信号为集中插入帧同步码时分复用信号,实验电路中数据码用红色发光二极管指示,帧同步码及无定义位用绿色发光二极管指示。
发光二极管亮状态表示1码,熄状态表示0码。
本模块有以下测试点及输入输出点:• CLK 晶振信号测试点• BS-OUT 信源位同步信号输出点/测试点(2个)• FS 信源帧同步信号输出点/测试点• NRZ-OUT(AK) NRZ信号(绝对码)输出点/测试点(4个)图1-1中各单元与电路板上元器件对应关系如下:•晶振CRY:晶体;U1:反相器7404•分频器U2:计数器74161;U3:计数器74193;U4:计数器40160 •并行码产生器K1、K2、K3:8位手动开关,从左到右依次与帧同步码、数据1、数据2相对应;发光二极管:左起分别与一帧中的24位代码相对应•八选一U5、U6、U7:8位数据选择器4512•三选一U8:8位数据选择器4512•倒相器U20:非门74HC04•抽样U9:D触发器74HC742. HDB3编译码原理框图如图1-6所示。
计算机组成原理与汇编实验报告姓名:学号:学院:信息科学与工程学院班级:实验1 存储器实验实验目的⏹掌握静态存储随机存储器RAM的工作特性⏹掌握静态存储随机存储器RAM的读写方法实验设备74LS273(一片),静态存储器MEMORY 6116(一片),与门(一片),与非门(一片),单脉冲(一片),开关若干,灯泡若干实验原理在微机系统中,常用的静态RAM 有6116、6264、62256 等。
在本实验中使用的是6116。
6116 为2K╳8 位的静态RAM,其逻辑图3.1如下:图3.1 6116逻辑图其中A0~10 为11 根地址线,I/O0~7 为8 根数据线,CS 为片选端,OE 为数据输出选通端,WR 为写信号端。
其工作方式见下表3-1:表3-1工作方式表实验所用的半导体静态存储器电路原理如图3.2 所示,实验中的静态存储器一片6116(2K×8)构成,其数据线接至数据总线,地址线由地址锁存器(74LS273)给出。
地址灯AD0—AD7 与地址线相连,显示地址线内容。
数据开关经一三态门(74LS245)连至数据总线,分时给出地址和数据。
图3.2 存储器实验原理图因地址寄存器为8 位,接入6116 的地址A7—A0,而高三位A8—A10 接地,所以其实际容量为256 字节。
6116 有三个控制线:CE(片选线)、OE(读线)、WE(写线)。
当片选有效(CE=0)时,OE=0时进行读操作,WE=0时进行写操作。
本实验中将OE 常接地,在此情况下,当CE=0、WE=0 时进行读操作,CE=0、WE=1 时进行写操作,其写时间与T3 脉冲宽度一致。
控制信号SW-B 为低电平有效,控制信号LDAR 为高电平有效。
实验步骤1. 选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。
搭建实验流程:将已选择的组件进行连线(鼠标从一个引脚的端点拖动到另一组件的引脚端,即完成连线)。
实验1《词法分析程序设计与实现》实验学时: 4 实验地点:二综实验日期:一、实验目的加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析二、实验内容自定义一种程序设计语言,或者选择已有的一种高级语言,编制它的词法分析程序。
词法分析程序的实现可以采用任何一种编程语言和编程工具。
从输入的源程序中,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、界符。
并依次输出各个单词的内部编码及单词符号自身值。
(遇到错误时可显示“Error”,然后跳过错误部分继续显示)三、实验方法用java或者C语言写出分析器四、实验步骤1.定义目标语言的可用符号表和构词规则;2.依次读入源程序符号,对源程序进行单词切分和识别,直到源程序结束;3.对正确的单词,按照它的种别以<种别码,值>的形式保存在符号表中;对不正确的单词,做出错误处理五、实验结果定义种别码final int NONE = 0;final int DELIMITER = 1; // 操作符运算符final int VAR = 2; // 字符变量final int Num = 3; // 数字final int COMMAND = 4; // 关键字// final int QUOTEDSTR=5; //带引号的字符串// 程序终结符end of programfinal String EOP = "#";// 声明关键字final int unKnowKeyword = 0;final int FI = 1;final int IF = 2;final int THEN = 3;final int WHILE = 4;final int DO = 5;final int END = 6;final int ELSE = 7;final int TO = 8;final int READ = 9;final int WRITE = 10;final int EOL = 11;六、实验结论由文件读入和控制台输出,良好的控制了要解析的句子过长的麻烦,实验结果也符合预期七、实验小结完成了词法编译器,很好的了解了底层编译过程中的词法分析关键代码:main.javapackage cn.main;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.InputStreamReader;import cn.method.*;class Main{public static void main(String args[]){BufferedReader br =new BufferedReader(newInputStreamReader(System.in));try {System.out.println("请输入你要解析的文件");String filename=br.readLine();filename="src/cn/file/"+filename;CharacterAnalysis ob = new CharacterAnalysis(filename);ob.scanDisegn();} catch(Exception e) {}}}CharacterAnalysis.javapackage cn.method;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class CharacterAnalysis {// 声明处理字符的类型final int NONE = 0;final int DELIMITER = 1; // 操作符运算符final int VAR = 2; // 字符变量final int Num = 3; // 数字final int COMMAND = 4; // 关键字// final int QUOTEDSTR=5; //带引号的字符串// 程序终结符end of programfinal String EOP = "#";// 声明关键字final int unKnowKeyword = 0;final int FI = 1;final int IF = 2;final int THEN = 3;final int WHILE = 4;final int DO = 5;final int END = 6;final int ELSE = 7;final int TO = 8;final int READ = 9;final int WRITE = 10;final int EOL = 11;private char[] prog;private int progIdx;private String token;private int tokType;private int kwToken;final int PROG_SIZE = 100000;// 将关键字的外部表示,和内部表示保存在一个名为KwTable的表中Keyword kwTable[] = { new Keyword("fi", FI), new Keyword("if", IF), new Keyword("then", THEN), new Keyword("while", WHILE),new Keyword("do", DO), new Keyword("end", END),new Keyword("else", ELSE), new Keyword("to", TO),new Keyword("read", READ), new Keyword("write", WRITE) };public CharacterAnalysis(String programName) throws IOException { char tempbuf[] = new char[PROG_SIZE];int size;size = loadProgram(tempbuf, programName);if (size != -1) {prog = new char[size];System.arraycopy(tempbuf, 0, prog, 0, size);}}// 读入一个需要分析的程序private int loadProgram(char[] p, String fname) throws IOException { int size = 0;try {FileReader fr = new FileReader(fname);BufferedReader br = new BufferedReader(fr);size = br.read(p, 0, PROG_SIZE);fr.close();} catch (FileNotFoundException exc) {System.out.print("没有找到该文件!");}if (p[size - 1] == (char) 31)size--;return size;}// 分析程序代码private void getToken() throws IOException {tokType = NONE;token = "";kwToken = unKnowKeyword;if (progIdx == prog.length) {token = EOP;return;}// 跳过空格符while (progIdx < prog.length && isSpaceOrTab(prog[progIdx])) progIdx++;// handle crlfif (prog[progIdx] == '\r') {progIdx += 2;kwToken = EOL;token = "\r\n";return;}// 扫描完所有的字符,end programif (progIdx == prog.length) {if (progIdx == prog.length) {token = EOP;tokType = DELIMITER;return;}}if (isDelim(prog[progIdx])) {// 是一个操作符,或者是运算符token += prog[progIdx];progIdx++;// if(progIdx>=prog.length)break;tokType = DELIMITER;} else if (Character.isLetter(prog[progIdx])) {// 是一个字符变量while (!isDelim(prog[progIdx])) {token += prog[progIdx];progIdx++;if (progIdx >= prog.length)break;}kwToken = lookUp(token);// 如果是字符变量,用var标记,否则是关键字,用command标记if (kwToken == unKnowKeyword)tokType = VAR;elsetokType = COMMAND;} else if (Character.isDigit(prog[progIdx])) {// 是一个数字字符while (!isDelim(prog[progIdx])) {token += prog[progIdx];progIdx++;if (progIdx >= prog.length)break;}tokType = Num;}}// 判断字符是否是操作符private boolean isDelim(char c) {if (("\r, +-*/:<>=();".indexOf(c) != -1))return true;return false;}boolean isSpaceOrTab(char c) {if (c == ' ' || c == '\t')return true;return false;}// 查找字符串是否为关键字private int lookUp(String s) {int i;// Convert to lowercase.s = s.toLowerCase();// 查找字符串是否为关键字for (i = 0; i < kwTable.length; i++)if (kwTable[i].keyword.equals(s))return kwTable[i].keywordindex;return unKnowKeyword; // 不是一个关键字}// 对代码进行输出处理public void scanDisegn() throws IOException {// 对代码扫描do {getToken();// 扫描到字符是变量if (tokType == VAR) {System.out.println(token + " " + "29");}// 扫描到字符是关键字else if (tokType == COMMAND) {switch (kwToken) {case FI:System.out.println("fi" + " " + "1");break;case IF:System.out.println("if" + " " + "2");break;case THEN:System.out.println("then" + " " + "3");break;case WHILE:System.out.println("while" + " " + "4");break;case DO:System.out.println("do" + " " + "5");break;case END:System.out.println("end" + " " + "6");break;case ELSE:System.out.println("else" + " " + "7");break;case TO:System.out.println("to" + " " + "8");break;case READ:System.out.println("read" + " " + "9");break;case WRITE:System.out.println("write" + " " + "10");break;}}// 扫描到字符是数字else if (tokType == Num) {System.out.println(token + " " + "28");}// 扫描到字符是操作符else if (tokType == DELIMITER) {if (token.equals("+"))System.out.println(token + " " + "14");if (token.equals("-"))System.out.println(token + " " + "15");if (token.equals("*"))System.out.println(token + " " + "16");if (token.equals("/"))System.out.println(token + " " + "17");if (token.equals(":="))System.out.println(token + " " + "18");if (token.equals("<"))System.out.println(token + " " + "20");if (token.equals("<>"))System.out.println(token + " " + "21");if (token.equals("<="))System.out.println(token + " " + "22");if (token.equals(">"))System.out.println(token + " " + "23");if (token.equals(">="))System.out.println(token + " " + "24");if (token.equals("="))System.out.println(token + " " + "25");if (token.equals(";"))System.out.println(token + " " + "26");if (token.equals("("))System.out.println(token + " " + "27");if (token.equals(")"))System.out.println(token + " " + "28");}} while (!token.equals(EOP));System.out.println("#" + " " + "30");System.out.println("程序分析完毕");}}Keyword.javapackage cn.method;public class Keyword {String keyword;int keywordindex;Keyword(String str,int t){keyword=str;keywordindex=t;}}实验二预测分析法设计与实现一、实验目的加深对语法分析器工作过程的理解;加强对预测分析法实现语法分析程序的掌握;能够采用一种编程语言实现简单的语法分析程序;能够使用自己编写的分析程序对简单的程序段进行语法翻译。
中南大学《计算机原理与汇编》实验报告学生姓名学号专业班级指导教师雷向东学院信息科学与工程学院完成时间 2010年12月实验2 算术逻辑运算实验一、实验目的1.掌握简单运算器的组成以及数据传送通路。
2.验证运算功能发生器(74LS181)的组合功能。
二、实验设备74LS181(两片),74LS273(两片), 74LS245(一片),开关若干,灯泡若干,单脉冲一片。
三、实验原理实验中的运算器由两片74LS181以并/串形式构成8位字长的ALU。
运算器的输出经过一个三态门(74LS245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器(74LS373)锁存,锁存器的输入连至数据总线,数据开关用来给出参与运算的数据(A和B),并经过一个三态门(74LS245)和数据显示灯相连,显示结果。
74LS181:完成加法运算。
74LS273:输入端接数据开关,输出端181。
在收到上升沿的时钟信号前181和其输出数据线之间是隔断的。
在收到上升沿信号后,其将输出端的数据将传到181,同时,作为触发器,其也将输入的数据进行保存。
因此,通过增加该芯片,可以通过顺序输入时钟信号,将不同寄存器中的数据通过同一组输出数据线传输到181芯片的不同引脚之中。
74LS245:相当于181的输出和数据显示灯泡组件之间的一个开关,在开始实验后将其打开,可以使181的运算结果输出并显示到灯泡上。
四、实验步骤及结果分析1.选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。
图1 运算器实验流程图2.搭建实验流程:将已选择的组件进行连线(鼠标从一个引脚的端点拖动到另一组件的引脚端,即完成连线)。
搭建好的实验流程图如图1所示。
具体操作如下:①将74LS273芯片的0-7号引脚(数据端从低到高)及9号引脚(复位端)接到开关上,8号引脚接至单脉冲组件,左右两个74LS273芯片分别保存参与运算的数据A和B。
接着把两个74LS273组件的11-14号引脚(数据的低四位)分别接到74LS181组件(左)的0-7号引脚上,其中0-3号引脚为A的低四位,4-7号引脚为B的低四位。
中南大学《通信原理》实验报告学生姓名指导教师学院专业班级完成时间数字基带信号1、实验名称数字基带信号2、实验目的(1)了解单极性码、双极性码、归零码、不归零码等基带信号波形特点。
(2)掌握AMI、HDB3码的编码规则。
(3)掌握从HDB3码信号中提取位同步信号的方法。
(4)掌握集中插入帧同步码时分复用信号的帧结构特点。
(5)了解HDB3(AMI)编译码集成电路CD22103。
3、实验内容(1)用示波器观察单极性非归零码(NRZ)、传号交替反转码(AMI)、三阶高密度双极性码(HDB3)、整流后的AMI 码及整流后的HDB3码。
(2)用示波器观察从HDB3码中和从AMI码中提取位同步信号的电路中有关波形。
(3)用示波器观察HDB3、AMI译码输出波形。
4、基本原理(简写)本实验使用数字信源模块和HDB3编译码模块。
1、数字信源本模块是整个实验系统的发终端,模块内部只使用+5V电压,其原理方框图如图1-1所示,电原理图如图1-3所示(见附录)。
本单元产生NRZ信号,信号码速率约为170.5KB,帧结构如图1-2所示。
帧长为24位,其中首位无定义,第2位到第8位是帧同步码(7位巴克码1110010),另外16位为2路数据信号,每路8位。
此NRZ 信号为集中插入帧同步码时分复用信号,实验电路中数据码用红色发光二极管指示,帧同步码及无定义位用绿色发光二极管指示。
发光二极管亮状态表示1码,熄状态表示0码。
本模块有以下测试点及输入输出点:∙ CLK 晶振信号测试点∙ BS-OUT 信源位同步信号输出点/测试点(2个)∙ FS 信源帧同步信号输出点/测试点∙ NRZ-OUT(AK) NRZ信号(绝对码)输出点/测试点(4个)图1-1中各单元与电路板上元器件对应关系如下:∙晶振CRY:晶体;U1:反相器7404∙分频器U2:计数器74161;U3:计数器74193;U4:计数器40160∙并行码产生器K1、K2、K3:8位手动开关,从左到右依次与帧同步码、数据1、数据2相对应;发光二极管:左起分别与一帧中的24位代码相对应∙八选一U5、U6、U7:8位数据选择器4512∙三选一U8:8位数据选择器4512∙倒相器U20:非门74HC04∙抽样U9:D触发器74HC742. HDB3编译码原理框图如图1-6所示。
计算机汇编语言实验报告学院:信息科学与工程学院专业班级:指导老师:学号:姓名:目录汇编语言实验一 (4)一、实验目的 (4)二、实验要求 (4)三、实验编程 (4)四、DEBUG 命令: (5)五、运行界面 (6)六、心得体会 (8)汇编语言实验二 (9)一、实验目的 (9)二、二进制到十六进制转换程序 (9)1、思路方法 (9)2、程序代码 (10)3、程序截图 (11)三、起泡排序算法的程序实现 (11)1、方法思路 (11)2、程序代码 (11)3、程序截图 (14)汇编语言实验三 (15)一、实验目的 (15)二、实验要求 (15)三、实验内容求(Fibonacci递归数) (15)四、程序代码 (15)五、实验心得 (18)汇编语言实验四 (19)一、实验目的 (19)二、实验要求 (19)三、实验内容(分类统计字符个数) (19)四、程序代码 (19)五、实验心得 (23)汇编语言实验一一、实验目的学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,熟悉DEBUG调试程序和DOS功能表的查看,为后续实验打下坚实基础。
二、实验要求通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。
3、ASCII码及用16进制数表示二进制码的方法。
4、8086寄存器: AX,BX,CX,DX,F,IP。
三、实验编程'Hello World'程序:DATAS SEGMENTSTRING DB 13,10,'Hello World!',13,10,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,STRINGMOV AH,9INT 21HMOV AH,4CHINT 21HCODES ENDSEND START四、DEBUG 命令:1、打DEBUG 进入DEBUG,显示提示苻'_ '。
计算机原理与汇编——课程设计报告姓名:学号:班级:指导老师:贺建飚汇编语言课程设计一、设计目的:课程设计是计算机原理与汇编语言教学过程中的重要环节。
本课程设计主要目的是使计算机专业学生深入学习计算机原理与汇编语言知识,进一步提高学生计算机原理与汇编语言综合能力和程序设计技能,锻炼运用计算机原理与汇编语言解决实际问题的能力。
二、设计要求:1.认真查阅资料,独立完成设计任务,每道题都必须上机通过。
2.独立思考,培养综合分析问题解决问题和调试程序的能力。
3.按时完成课程设计,写出课程设计报告。
三、设计内容及原理㈠设计内容:1.使用到子程序100 以内的素数,以十进制形式输出。
2.用递归计算50以内Fibonacci 数,以十进制形式输出。
3.编写一拷贝程序,要求在命令行指定源文件名和目标文件名。
㈡设计原理:1.结合几种含有特定功能的子程序以完成设计要求。
2.建立循环程序递归计算Fibonacci 数。
3.根据输入判断文件是否存在并执行拷贝过程。
四、设计思路1.使用到子程序100 以内的素数,以十进制形式输出。
按照设计要求,可以建立3个子程序,一个判断素数子程序,一个显示素数子程序,一个将素数以十进制形式输出子程序,然后在主程序中调用子程序,程序框架得以构建。
2.用递归计算50以内Fibonacci 数,以十进制形式输出。
按照设计要求,可以建立循环子程序,递归计算Fibonacci 数,以十进制形式输出,再将新Fibonacci 数与50比较,大于50则退出循环,程序结束。
3.编写一拷贝程序,要求在命令行指定源文件名和目标文件名。
在数据段中编写各种提示语句,在代码段中加入各种判断语句及中断跳转语句,程序运行时,即可根据命令行输入的指定源文件名和目标文件名执行相应的功能。
五、实现步骤1.使用到子程序100 以内的素数,以十进制形式输出。
程序代码如下:DA TAS SEGMENTcount dw 0;存放素数的个数sushu db 100 dup(?);存放素数msgsushu db'all prime numbers below 100 are:','$';显示素数的提示信息msgcount db 0dh,0ah,'count of prime numbers is:',0dh,0ah,'$';显示素数个数的提示信息DA TAS ENDSCODE SEGMENTassume cs:CODE, ds:DATASMAIN PROC FAR ;主程序入口call jisuanlea dx,msgsushu;显示素数的提示信息mov ah,9int 21hcall dispsushu;显示素数lea dx,msgcount;显示素数个数的提示信息mov ah,9int 21hcall dispcount;显示素数个数mov ah,1;按任意键退出int 21hmov ax, 4c00h ;程序结束,返回到操作系统系统int 21hMAIN ENDPjisuan proc nearmov ax, datasmov ds, axlea di,sushumov bh,0mov bl,2;求从2到100的素数、素数个数,BL从2到100变化next11:cmp bl,100ja tjmov dl,2;如果BL不能被DL从2到BL-1整除的话,则BL为素数next12:cmp dl,bljae next13mov ax,bxdiv dlcmp ah,0jz next14;整除则不是素数inc dljmp next12next13:inc count;是素数,则将个数加1mov [di],bl;是素数,则存入相应单元中inc dinext14:inc bljmp next11tj:retjisuan endpdispsushu proc nearlea si,sushumov cx,countnext21:mov ax,count;每行10个素数sub ax,cxmov bl,10div blcmp ah,0jnz next22mov dl,0dh;每行10个素数,行末加回车换行mov ah,2int 21hmov dl,0ahmov ah,2int 21hnext22:mov bl,[si];取出一个素数mov bh,0call disp10;以十进制形式输出mov dl,20h;每个素数之间加一个空格,便于区分mov ah,2int 21hinc siloop next21retdispsushu endpdispcount proc nearmov bx,count;取出素数个数call disp10;以十进制形式输出retdispcount endpdisp10 proc near;该子程序的作用是将BX中的数以十进制形式输出push cxmov cx,10dcall dec_divmov cx,1dcall dec_divpop cxretdec_div proc nearmov ax,bxmov dx,0div cxmov bx,dxmov dl,aladd dl,30hmov ah,2int 21hretdec_div endpdisp10 endpCODE ENDSEND MAIN程序运行结果:2.用递归计算50以内Fibonacci 数,以十进制形式输出。
中南大学微机原理课程设计报告——信号发生器功能程序设计目录第一章设计题目、要求及目的 (3)1.设计题目要求 (3)2.设计目的 (3)第二章总体设计方案 (3)1.设计思想 (3)2.设计方案 (4)3.总体设计流程图 (5)第三章硬件设计 (5)1.硬件环境要求 (5)2.所用芯片及其功能说明 (6)3.硬件接线图 (9)第四章程序设计 (10)1.流程图 (10)2.典型程序模块及典型编程技巧分析··133.课程设计中遇到的问题及解决方法··144.程序清单和程序注释 (15)第五章收获与体会 (33)第六章参考文献 (33)第一章设计题目、要求及目的1.设计题目及要求设计题目:信号功能发生器设计设计要求:(1)、编程语言为C语言和汇编语言;(2)、硬件电路基于80x86微机的接口电路;(3)、程序功能要求:小键盘给定、数码管(屏幕)显示,并产生对应信号波形(D/A)输出(信号波形包括正弦波、三角波、方波、锯齿波)、输出信号波形幅度、频率可调。
(注意:按键数量应尽量少)。
2.设计目的(1)、熟练掌握汇编语言和C语言,并用它们实现对硬件的操作,实现设计要求。
(2)、学会调试程序,可以通过编译(masm)、链接(link)、运行(run)可以看到汇编程序的运行结果,更多的是要通过Debug来调试以发现程序的逻辑问题,熟练运用Debug可以解决很多问题,如Debug的T命令可以查看单步运行的结果。
(3)、对硬件加深了解,特别是此实验要用到的8255及小键盘等(4)、本课程设计,要求对微机系统有一个较全面的理解,对典型数字接口电路的应用技术有一个较深入的掌握,并对应用系统进行硬件原理和软件编程进行分析、设计和调试,达到基本掌握简单微型计算机应用系统软硬件的设计方法,提高项目开发能力的目的。
第二章总体设计方案1.设计思想该课题要求实现信号功能发生器,首先通过小键盘给定一个按键,并将此信息送入计算机中,由计算机内部根据此信息去实现特定的功能,比如产生正弦波。
CENTRAL SOUTH UNIVERSITY软件体系结构实验报告学生姓名周建权班级学号 0909121915指导教师穆帅设计时间2014年11月实验一系统的用例模型一、实验目的1.熟悉用例图的基本功能和使用方法。
2.锻炼结合给定题目,进行有效需求分析的能力。
3.掌握如何使用建模工具绘制用例图的方法。
二、实验器材1.计算机一台。
2.UML建模工具,比如软件Rational Rose 或StarUML。
三、实验内容在理解用例图的基本功能和使用方法的基础上,结合具体问题,完成对系统的需求建模,得到用例模型后,应针对每个用例进行业务分析,说明其具体的业务流程。
用Rational Rose或StarUML工具软件绘制系统的用例图.下文以Rational Rose为例讲解基本步骤。
四、实验步骤1.结合实际给定题目,完成系统的需求建模。
2.针对每个用例进行业务分析。
以图书管理系统中“删除读者信息"用例为例来说明实验具体步骤。
(1)分析:在图书管理系统中,管理员首先登录系统,系统验证通过后,管理方可向系统查询数据,在查询后,系统会给出提示,有没有找到相关的数据,管理员根据系统查询的返回结果,进行下一步的操作,就是删除读者,在删除的过程中,系统会对查询得到的结果判断该记录是否可以删除,若可以删除,则给删除提示,若不能删除,也给相关的提示信息。
(2)根据分析结果,书写业务流程,一般包含以下信息:①管理员在录入界面,输入待删除的读者名;②“业务逻辑”组件在数据库中,查找待删除的读者名;③如果不存在,则显示出错信息,返回步骤①,如果存在则继续;④“业务逻辑”组件判断“待删除的读者”是否可以删除;⑤如果不可以,则显示出错信息,返回步骤⑧,如果可以则继续;⑥在数据库中,删除相关信息;⑦显示删除成功信息;⑧结束。
3.根据分析结果,绘制用例图.以图书管理系统中“删除读者信息"用例为例说明具体绘图步骤:(1)在用例图上双击main,出现如图1。
实验报告课程名称:嵌入式系统开发姓名:任课教师:学院:信息科学与工程学院专业班级:物联网工程2016年12月目录实验一ARM汇编指令 (1)1.实验目的 (1)2.实验设备 (1)3.实验内容 (1)1)实验A--------完成运算x+y,把结果存入堆栈寄存器(R13)中 (1)2)实验A运行截图 (1)3)实验B-----完成运算8x+y/2 orr 0x01+ (z and 0xFF+y/2)/2,将结果保存在R2中 (6)4)实验B运行截图 (6)实验二 ARM处理器工作模式 (13)1 实验目的 (13)2 实验设备 (13)3实验内容 (13)4 实验截图 (14)1)进入系统模式 (17)2)初始化系统模式下的R0-R14寄存器 (18)3)切换到FIQ模式 (19)4)初始化FIQ模式下特有的寄存器R8-R14 (19)5)切换到中止模式 (20)7)切换到管理模式 (22)8)初始化管理模式下特有的寄存器R13-R14 (22)9)切换到IRQ模式 (23)10)初始化IRQ模式下的R13-R14 (23)11)J进入未定义模式 (24)12)初始化未定义模式下的寄存器R13-R14 (24)5 实验心得 (25)实验三 C语言程序(一) (26)1 实验目的 (26)2 实验设备 (26)3 实验内容 (26)4 实验截图 (26)实验四 C语言程序实验(二) (35)1 实验目的 (35)2 实验设备 (35)3 实验内容 (35)4 实验截图 (35)5 实验心得 (45)实验五汇编和C语言的相互调用实验 (46)1 实验目的 (46)2 实验设备 (46)3 实验内容 (46)4 实验截图 (46)5 实验心得 (56)实验六综合编程实验 (57)1 实验目的 (57)2 实验设备 (57)3 实验内容 (57)4 实验截图 (57)5 实验心得 (66)实验一 ARM汇编指令1.实验目的(1)初步学会使用ADS1.2集成开发环境及ARM软件模拟器;(2)通过实验掌握简单ARM汇编指令的使用2.实验设备(1)硬件:PC机(2)软件:ADS1.2集成开发环境,Windows98/2000/NT/XP3.实验内容(1)熟悉ADS开发环境,并使用LDR/STR和MOV等指令访问寄存器或存储单元;(2)使用ADD/SUB/LSL/LSR/AND/ORR/等指令完成基本数学逻辑运算。
中南大学《计算机组成原理及汇编实验报告》姓名: 徐兴毫学号: 0909101027专业班级:计科1003指导教师: 陈丽萍学院: 信息科学与工程学院计算机组成原理实验实验一、算术逻辑运算实验1、实验目的⏹了解运算器的组成结构⏹掌握运算器的工作原理⏹掌握简单运算器的组成以及数据传送通路⏹验证运算功能发生器(74LS181)的组合功能2、实验设备74LS181(2片),74LS273(2片), 74LS245(2片),开关若干,灯泡若干,单脉冲一片3、实验原理实验中所用的运算器数据通路图如图2.1所示,实验中的运算器由两片74LS181以并/串形式构成8位字长的ALU。
运算器的输出经过一个三态门(74LS245)和数据总线相连,运算器的两个数据输入端分别由两个锁存器(74LS373)锁存,锁存器的输入连至数据总线,数据开关用来给出参与运算的数据(A和B),并经过一个三态门(74LS245)和数据显示灯相连,显示结果。
⏹74LS181:完成加法运算⏹74LS273:输入端接数据开关,输出端181。
在收到上升沿的时钟信号前181和其输出数据线之间是隔断的。
在收到上升沿信号后,其将输出端的数据将传到181,同时,作为触发器,其也将输入的数据进行保存。
因此,通过增加该芯片,可以通过顺序输入时钟信号,将不同寄存器中的数据通过同一组输出数据线传输到181芯片的不同引脚之中⏹74LS245:相当于181的输出和数据显示灯泡组件之间的一个开关,在开始实验后将其打开,可以使181的运算结果输出并显示到灯泡上图2.1 运算器通路图4、实验步骤1. 选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。
搭建实验流程:将已选择的组件进行连线(鼠标从一个引脚的端点拖动到另一组件的引脚端,即完成连线)。
搭建好的实验流程图如图2.2所示。
图2.2 运算器实验流程图2. 初始化各芯片的控制信号,仔细检查无误后点击【电源开/关】按钮接通电源,用二进制数码开关向DR1 和DR2 寄存器置数。
具体操作步骤图示如下:其中T4的脉冲信号通过鼠标双击单脉冲产生。
3. 检验DR1 和DR2 中存的数是否正确,具体操作为:关闭数据输入三态门(SW-B=1),打开ALU 输出三态门(ALU-B=0),当置S3、S2、 S1、S0 、M 为11111时,总线指示灯显示DR1中的数,而置成10101时总线指示灯显示DR2 中的数。
4. 验证74LS181 的算术运算和逻辑运算功能(采用正逻辑)在给定DR1=65、DR2=A7 的情况下,改变运算器的功能设置,观察运算器的输出,填入下表2-2中,并和理论分析进行比较、验证。
74LS181的功能见表2-1,A和B分别表示参与运算的两个数,“+”表示逻辑或,“加”表示算术求和。
表2-15、实验结果及结果分析(1)得到的实验结果表1:表2:(2)完整源代码、观察到的现象及结果分析6、实验中遇到的问题及解决办法实验中按图接好电路,却没有结果。
检查后发现是电路连线有问题!实验2 存储器实验1、实验目的a)掌握静态存储随机存储器RAM的工作特性b)掌握静态存储随机存储器RAM的读写方法2、实验设备74LS273(一片),静态存储器MEMORY6116(一片),与门(一片),与非门(一片),单脉冲(一片),开关若干,灯泡若干3、实验原理在微机系统中,常用的静态RAM 有6116、6264、62256 等。
在本实验中使用的是6116。
6116 为2K╳8 位的静态RAM,其逻辑图3.1如下:图3.1 6116逻辑图其中A0~10 为11 根地址线,I/O0~7 为8 根数据线,CS 为片选端,OE 为数据输出选通端,WR 为写信号端。
其工作方式见下表3-1:表3-1工作方式表实验所用的半导体静态存储器电路原理如图3.2 所示,实验中的静态存储器一片6116(2K×8)构成,其数据线接至数据总线,地址线由地址锁存器(74LS273)给出。
地址灯AD0—AD7 与地址线相连,显示地址线内容。
数据开关经一三态门(74LS245)连至数据总线,分时给出地址和数据。
图3.2 存储器实验原理图因地址寄存器为8 位,接入6116 的地址A7—A0,而高三位A8—A10 接地,所以其实际容量为256 字节。
6116 有三个控制线:CE(片选线)、OE(读线)、WE(写线)。
当片选有效(CE=0)时,OE=0时进行读操作,WE=0 时进行写操作。
本实验中将OE 常接地,在此情况下,当CE=0、WE=0 时进行读操作,CE=0、WE=1 时进行写操作,其写时间与T3 脉冲宽度一致。
控制信号SW-B 为低电平有效,控制信号LDAR 为高电平有效。
4、实验步骤1. 选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。
搭建实验流程:将已选择的组件进行连线(鼠标从一个引脚的端点拖动到另一组件的引脚端,即完成连线)。
搭建好的实验流程图如图3.3所示。
图3.3 存储器实验流程图2. 初始化各芯片的控制信号,仔细检查无误后点击【电源开/关】按钮接通电源。
3. 写存储器。
给存储器的00、01、02、03、04 地址单元中分别写入数据11H、12 H、13 H、14 H、15 H。
由图3.2 存储器实验原理图看出,由于数据和地址全由一个数据开关给出,因此要分时地给出。
下面的写存储器要分两个步骤,第一步写地址,先关掉存储器的片选(CE=1),打开地址锁存器门控信号(LDAR=1),打开数据开关三态门(SW-B=0),由开关给出要写入的存储单元的地址,双击单脉冲产生T3 脉冲将地址输入到地址锁存器;第二步写数据,关掉地址锁存器门控信号(LDAR=0),打开存储器片选,使之处于写状态(CE=0,WE=1),由开关给出此单元要写入的数据,,双击单脉冲产生T3 脉冲将数据写入到当前的地址单元中。
写其他单元依次循环上述步骤。
写存储器流程如图3.4所示(以向00 号单元写入11H 为例)。
图3.4 写存储器流程图4. 读存储器。
依次读出第00、01、02、03、04 号单元中的内容,观察上述各单元中的内容是否与前面写入的一致。
同写操作类似,读每个单元也需要两步,第一步写地址,先关掉存储器的片选(CE=1),打开地址锁存器门控信号(LDAR=1),打开数据开关三态门(SW-B=0),由开关给出要写存储单元的地址,双击单脉冲产生T3 脉冲将地址输入到地址锁存器;第二步读存储器,关掉地址锁存器门控信号(LDAR=0),关掉数据开关三态门(SW-B=1),片选存储器,使它处于读状态(CE=0,WE=0),此时数据总线上显示的数据即为从存储器当前地址中读出的数据内容。
读其他单元依次循环上述步骤。
读存储器操作流程如图3.5所示(以从00 号单元读出11H 数据为例)图3.5 读存储器流程图5、实验结果及结果分析实验截图及结果分析6、 实验中遇到的问题及解决办法 实验时,没有注意初始化各个芯片信号,导致实验线路不出现结果。
注意数据和地址要分时的给出。
实验3 总线基本实验1、实验目的⏹掌握静态存储随机存储器RAM的工作特性⏹掌握静态存储随机存储器RAM的读写方法2、实验设备74LS374(一片),74LS245(一片),74LS273(一片),静态存储器MEMORY6116(一片),8位数据排线(一片),与门(两片),与非门(一片),单脉冲(三片),开关若干,灯泡若干。
3、实验原理总线传输实验框图如图4.1所示,它将几种不同的设备挂至总线上,有存储器、输入设备、输出设备、寄存器。
这些设备都需要有三态输出控制,按照传输要求恰当有序的控制它们,就可实现总线信息传输。
图4.1 总线传输实验框图总线基本实验要求如下:根据挂在总线上的几个基本部件,设计一个简单的流程。
(1)输入设备将一个数输入R0 寄存器。
(2)输入设备将另一个数输入地址寄存器。
(3)将R0 寄存器中的数写入到当前地址的存储器中。
(4)将当前地址的存储器中的数用LED 数码管显示。
4、实验步骤1. 选择实验设备:根据实验原理图,将所需要的组件从组件列表中拖到实验设计流程栏中。
搭建实验流程:将已选择的组件进行连线(鼠标从一个引脚的端点拖动到另一组件的引脚端,即完成连线)。
搭建好的实验流程图如图4.3所示。
2. 初始化各芯片的控制信号,仔细检查无误后点击【电源开/关】按钮接通电源。
图4.2 总线基本实验流程图3.实验的具体操作步骤如图4.2 所示。
首先应关闭所有三态门(SW-B=1,CS=1,R0-B=1,LED-B=1),并将关联的信号置为:LDAR=0,LDR0=0,W/R(RAM)=1,W/R(LED)=1。
然后参照如下操作流程,先给数据开关置数,打开数据输出三态门,开关LDR0置1,并双击旁边的单脉冲,使产生一个上升沿将数据输入到R0 中;然后继续给数据开关置数,开关LDAR置1 ,并双击旁边的单脉冲,使产生一个上升沿将数据输入到AR 中;关闭数据开关三态门,打开R0 寄存器输出控制(开关LDR0和开关R0-B都置0),使存储器处于写状态(W/R=0、CS=0)将R0 中的数写到存储器中;关闭存储器片选,关闭R0 寄存器输出(开关R0-B置0),使存储器处于读状态(W/R=1、CS=0)。
图4.3 实验步骤图5、实验结果及结果分析实验截图6、实验中遇到的问题及解决办法实验中得不到预期的结果。
检查后发现初始化工作没有做好!7、实验心得体会通过本次本次实验:(1)了解了一些逻辑器的组成结构(2)掌握一些逻辑器的工作原理(4)验证了各逻辑器件的组合功能通过亲自动手,能更好的理解逻辑器件的组成及功能。
同时实验中遇到各种问题,解决后,让自己的知识更加牢固。
同时也意识到自己的不足,需要更加的努力!汇编语言实验实验一、上机操作一、实验目的掌握汇编语言程序编辑、汇编、连接、运行以及利用DEBUG调试程序的方法。
二、实验设备PC机及相应的软件。
三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。
2、利用DEBUG进行程序调试,掌握常用命令的使用方法,观察运行结果。
3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。
上机操作过程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDIT ABC.asmc:\masm>MASM ABC;若有语法错,回EDIT下改该程序c:\masm>LINK ABC;若有错,回EDIT下改程序c:\masm>ABC若运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。