合肥工业大学 编译原理实验报告

合肥工业大学 编译原理实验报告
合肥工业大学 编译原理实验报告

合肥工业大学编译原理实验报告

合肥工业大学计算机与信息学院

编译原理实验报告

专业:

学号:

姓名:

指导老师:

完成时间:

实验一词法分析设计

一、实验目的

通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整和清楚的理解,并且能够正确和熟练地运用。

二、实验环境

Windows 8.1 、Visual Studio 2013、C++

三、实验原理

(1) 实验数据结构说明

string str[40] 存储string

int strcount 存储string 的数目

string name 存储type名

Table() 构造函数

~Table() 析构函数

Table

void setname(string strTemp) 设置name值

string getname() 获取name值

void update(string strTemp) 添加strTemp的值

void init(string filename) 初始化table

int search(string strTemp) 在table中查询strTemp

string value 存储分析单词的值

int type Type的编号

int pointer 单词的位置

OutToken

string tyname 存储在表中位置

int line 分析单词的行的值

int row 分析单词的列的值

OutToken(string val,int t,int p,string tn,int 有参数构造函数 l,int r) ~OutToken() 析构函数 friend ostream& operator <<(ostream& output, 重

载<<函数 OutToken& ot)

Table Keyword Type 1:C++关键字 Table Seperator Type 2:分界符 Table sumoperator Type 3:算术运算符 Table reloperator Type 4:关系运算符 Table constant Type 5:常数 Table identifier Type 6:标识符 OutToken outtoken 二

元式 TokenAnalyzer

TokenAnalyzer() 构造函数 ~TokenAnalyzer() 析构函数 void inittable()

初始化表 void display() 输出所有单词二元式 void strsearch(string

strin,int line,int row) 分析strin void readcode() 读取源代码

(2)实验算法描述

1)词法分析设计流程图

2) 词法分析程序框图

3)统计字符位置程序框图

四、实验内容

使用C++语言实现对C++语言字集的源程序进行词法分析。通过输入源程序从

左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自身值;若遇到错误则显示ERROR,然后跳过错误部分继续显示;同时进行标识符登记符号

表的管理。

词法分析设计主要工作:

(1)从源程序中读取字符

(2)统计行数和列数用于错误单词的定位

(3)删除空格类字符,包括回车、制表符空格

(4)按拼写单词,并用(内码,属性)二元式来表示,(属性值—Token的

机内表示)

(5)如果发现错误则报告出错

(6)根据需要是否填写标识符供以后各阶段使用

单词的基本分类:

(1)关键字:由各程序语言具有的固定意义的标识符(保留字例)

(2)标识符:用以表示各种名字的变量名、数组名、函数名

(3)常数:任何数值常数

(4)运算符:+、-、*、/

(5)关系运算符:<、<=、=、>、>=、<>、|

(6)分界符: ;、,、(、)、[、]、{、}

五、实验要求

1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等

2、标识符填写的符号表需提供给编译程序的以后各阶段使用

3、根据测试数据进行测试。测试实例分为三部分:

(1) 各种合法输入

(2) 各种组合输入

(3) 有记号组成的句子

4、词法分析程序设计要求输出形式

单词二元序列类型位置(行,列)

for (1,for) 关键字 (1,1)

六、实验结果

(1) 分析代码

(2) 分析结果

七、实验总结

通过此次实验的编程实践加强了自己对词法分析的任务的理解,在一定

程度上初步掌握了词法分析程序设计的原理和构造,并且在对编译的基本概念、原理和概念方法有更清楚的认识。在实验过程中自己对词法分析程序中的算法理解出现了一定的偏差,认为其中的标识符是程序执行之前必须都由自己手动构造,导致自己在程序的验收阶段出现了问题。事实上,在词法分析程序中,若识别的字符串是首字符字母,则在关键字表中查询是否存在,如果不存在则将新造入标识符表中。对于在源代码中注释问题,由于本程序是以行为单位从TXT文件中读取代码,当自己将注释的判断程序放置扫描每一行的动作前,导致了添加在有效合法语句后的注释语句全部被分析为Error,所以之后将判断注释的语句放置在以一个单位取字符串之前,当某一行的字符串中含有//或/*时,则将其后的字符串全部忽略,即跳出本行的后续的分析步骤,重新执行下一行的代码读取和分析操作。

八、实验代码

#include

#include

#include

#include

using namespace std;

class Table

{

private:

string str[40];

int strcount;

string name;

public:

Table();

~Table();

void setname(string strTemp); string getname();

void update(string strTemp); void init(string filename);

int search(string strTemp); }; Table::Table()

{

for (int i = 0; i<40; i++)

str[i] = "";

strcount = 0;

name = "";

}

Table::~Table()

{

}

void Table::setname(string strTemp) {

name = strTemp;

}

string Table::getname()

{

return name;

}

void Table::update(string strTemp) {

str[++strcount] = strTemp; }

void Table::init(string filename) {

string strin;

ifstream infiles(filename);

if (!infiles)

cout << "打开"<

update(strin);

infiles.close();

}

int Table::search(string strTemp) {

for (int i = 1; i<=strcount; i++)

{

if (str[i] == strTemp)

return i ;

}

return 0;

}

class OutToken

{

private:

string value;

int type;

int pointer;

string tyname;

int line;

int row;

public:

OutToken(string val="",int t = 0,int p = 0,string tn = "",int l = 0, int r = 0);

~OutToken();

friend ostream& operator <<(ostream& output, OutToken& ot);

};

OutToken::OutToken(string val ,int t ,int p ,string tn ,int l ,int r )

{

value = val;

type = t;

pointer = p;

tyname = tn;

line = l;

row = r;

}

OutToken::~OutToken() {

}

ostream& operator <<(ostream& output, OutToken& ot) {

if (ot.type!= 0)

output << setiosflags(ios::left) << setw(10) << ot.value << "(" << setw(2) << ot.type << setw(2) << "," << setw(2) << ot.pointer << setw(10)

<< ")"

<< setw(16) << ot.tyname

<< "(" << ot.line << "," << ot.row << ")" << endl;

else

output << setiosflags(ios::left) << setw(10) << ot.value << setw(17) << "ERROR"

<< setw(16) << ot.tyname

<< "(" << ot.line << "," << ot.row << ")" << endl;

return output;

}

class TokenAnalyzer

{

private:

Table keyword;

Table seperator;

Table sumoperator;

Table reloperator;

Table constant;

Table identifer;

OutToken outtoken[100];

int outcount;

public:

TokenAnalyzer();

~TokenAnalyzer();

void inittable();

void display();

void strsearch(string strin, int line, int row); void readcode();

};

TokenAnalyzer::TokenAnalyzer() {

keyword.setname("关键字");

seperator.setname("分界符");

sumoperator.setname("运算符");

reloperator.setname("关系运算符");

constant.setname("常数");

identifer.setname("标识符");

outcount = 0;

}

TokenAnalyzer::~TokenAnalyzer() {

}

void TokenAnalyzer::inittable() {

seperator.init("seperator.txt");

reloperator.init("reloperator.txt");

sumoperator.init("sumoperator.txt");

constant.init("constant.txt");

keyword.init("keyword.txt");

}

void TokenAnalyzer::display()

{

for (int i = 1; i <= outcount; i++)

cout << outtoken[i];

}

void TokenAnalyzer::strsearch(string strin,int line,int row) {

if ((strin[0] >= 'a'&&strin[0] <= 'z') || (strin[0] >= 'a'&&strin[0] <= 'z'))

{

if (keyword.search(strin))

outtoken[++outcount] = OutToken(strin, 1, keyword.search(strin), keyword.getname(), line, row);

else

{

if (identifer.search(strin))

outtoken[++outcount] = OutToken(strin, 6, identifer.search(strin), identifer.getname(), line, row);

else

{

identifer.update(strin);

outtoken[++outcount] = OutToken(strin, 6, identifer.search(strin), identifer.getname(), line, row);

}

}

}

else

{

if (strin[0] >= '0'&&strin[0] <= '9')

{

if (constant.search(strin))

outtoken[++outcount] = OutToken(strin, 5, constant.search(strin), constant.getname(), line, row);

else

{

constant.update(strin);

outtoken[++outcount] = OutToken(strin, 5, constant.search(strin), constant.getname(), line, row);

}

}

else

{

if (seperator.search(strin))

outtoken[++outcount] = OutToken(strin, 2, seperator.search(strin), seperator.getname(), line, row);

else

{

if (reloperator.search(strin))

outtoken[++outcount] = OutToken(strin, 4, reloperator.search(strin), reloperator.getname(), line, row);

else

{

if (sumoperator.search(strin))

outtoken[++outcount] = OutToken(strin, 4,

sumoperator.search(strin), sumoperator.getname(), line, row);

else

outtoken[++outcount] = OutToken(strin, 0, 0, "ERROR", line, row);

}

}

}

}

}

void TokenAnalyzer::readcode()

{

ifstream infile("code.txt");

if (!infile)

cout << "打开失败~" << endl;

string strin;

int line;

int row;

line = 0;

while (getline(infile, strin))

{

line++;

row = 0;

if (strin != " ")

{

string strtemp = "";

while (strin[0] == ' '&&strin.length() > 1) strin = strin.substr(1, strin.length());

if (strin[0] == '/'&&strin[1] == '/') continue;

if (strin == " ")

strin = "";

while (strin != ""&& strin != strtemp)

{

row++;

if (strin.find(" "))

strtemp = strin.substr(0, strin.find(" "));

else

strtemp = strin;

if (strin[0] == '/'&&strin[1] == '/')

continue;

strsearch(strtemp, line, row);

if (strin.find(" "))

strin = strin.substr(strin.find(" ") + 1, strin.length()); while (strin[0] == ' '&&strin.length() > 1)

strin = strin.substr(1, strin.length());

if (strin == " ")

strin = "";

}

}

}

infile.close();

}

void main(void)

{

TokenAnalyzer T;

T.inittable();

T.readcode();

T.display(); }

实验二 LL(1)分析文法一、实验目的

通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。

二、实验环境

Windows 8.1 、Visual Studio 2013、C++

三、实验原理

(1)实验数据结构说明

存储栈符号 char charstack[30]

存储的符号个数 int count

Stack() 构造函数

~Stack() 析构函数 Stack

void push(char ch) 将ch压栈

void pop() 栈顶出栈

char gettop() 将栈顶元素弹栈返回

void display() 打印栈内容

char TerminalSymbol[20] 终结符

char NonTerminalSymbol[20] 非终结符

char linechar[20] M表行表头

char rowchar[20] M表列表头

LLAnalyzer int M[20][20] 状态表

string Grammar[20] 文法

string Firstset[20] First集

string Followset[20] Follow集

stack chars 符号栈

LLAnalyzer() 构造函数 ~LLAnalyzer() 析构函数 void init() 初始化

void initM() 初始化M表 int search(char array[], char ch) 查询ch返回位置 void readfile() 读取文法存入Grammar中 string getfirst(char ch) 生成字符ch 的First集 string getfirststr(string str) 生成字符串str First集 void setfirstset() 所有文法生成First集 string getfollow(char ch) 生成字符ch的First集 string linkstring(string str, string strt) 两字符串不同的符连接 string chartostring(char ch) 字符转换成字符串返回void setfollow() 生成所有文法Follow集 void setM() 生成M表 int searchstr(string array [], string strt) 查询字strt返回位置 bool Lanalyzer(string strin) 文法分析 void pushstring(int strno) 产生式逆序压栈

(2)实验算法思想描述

1)LL(1)文法程序框图

四、实验内容

(1)根据某一文法编制调试LL(1)分析程序,以便对任何输入的符号串进行分析

(2)构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序

(3)分析法的功能是利用LL(1)控制程序根据显示栈顶内容、向前看符号以及LL(1)分析表,对输入符号串自上而下的分析过程

五、实验要求

1、编程时注意风格:空行的使用释缩进等。

2、如果遇到错误的表达式,应输出提示信息。

3、对下列文法,用LL(1)分析法对任意输入的符号串进行分析

(1)E->TG

(2)G->+TG|—TG

(3)G->ε

(4)T->FS

(5)S->*FS|/FS

(6)S->ε

(7)F->(E)

(8)F->i

输出格式

步骤分析栈剩余输入串所用产生式动作

0 #E i+i*i# 初始化

六、实验结果

(1)构建First和Follow集

(2)构建状态转移表M

HDMI转AV转换器

深圳锦裕达科技的BD-2652是一款HDMI转CVBS信号转换器,可将HDMI数字信号转换为AV(CVBS)复合视频信号及FL/FR立体声音频信号,让客户将高画质的HDMI影音信号转换成为普通的电视、VHS绿放影机,DVD录放机等可接收CVBS信号(标准解析度480i,576i,)支持NTSC/PAL两种不同的制式。

1. 将HDMI高清信号经过SCALE DOWN视频处理转换576I、480I(PAL/NTSC)的视频信号输出。 2. ZOOM缩放功能,将输出的CVBS强制所需要的画面,不要超出电视机显示屏边缘。 3. 自动识别HDCP,将前端HDMI所带的KEY(HDCP)强制解除。 4. 将HDMI数字音频,经过DAC数模芯片处理转成AUDIO模拟立体声。 5. 采用最先进的视频处理技术,对图像的亮度,对比度及色彩进行增强处理。 6. 经过转换后的CVBS效果透亮度十足(不像前一代HDMI转CVBS的CVBS信号有朦胧感)。 7. AV输出4:3、16:9 切换输出,真实还原了4:3的画面经过转换后,在16:9电视机上严重压扁现像

1.采用新一代低功耗数字化芯片处理,24小不间断工作,发热量不大,稳定性工作 2.采用3D补偿技术有效消除快速运动画面的抖动和拖尾现象 3.采用DCDI处理技术 a. Faroudja研制的专利技术DCDI;可以消除普通高清转换器在视频中的锯齿斜纹。 b.利用“bad edit detection”能力来检测各种视频码流中电影的原始码流并重建一个更为精确的视频信号,这样就形成了在完全垂直分辨下无动态物质的图像。 c.利用其TrueLife Enhancement技术来识别图像的细节转换,如皮肤细纹,斑点或头发。这些细节的处理使得画面看起来更清晰更生动。 d.利用Motion Adaptive processing技术。减少噪点的同时又不产生污点,真实的还原了图像原有的面貌。 e.利用动态检测器技术来有选择性的对静态画面进行短暂滤波,并利用图像存储技术对被要求存储的色度进行存储。使用了此技术后,在颜色交错变化的场景:如平铺的屋顶,交叉图案的衣服,树叶场景等,从此不再出现多余的杂色。 4.采用了Scaler视频处理技术:将高清的HDMI信号经过Scaler Down转换成CVBS输出 5.采用DAC技术将输入HDMI数字音频信号,经过DAC数模芯片,转换成模拟音频

编译原理实验报告

课程实验报告课程名称:《编译原理》 专业班级:计算机科学与技术11级10班 学号:XXXXXXX 姓名:X X 指导教师:刘铭 报告日期:2014年6月16日

计算机科学与技术学院 目录 目录 (2) 1 实验一词法分析 (3) 1.1实验目的 (3) 1.2实验要求 (3) 1.3算法思想 (4) 1.4实验程序设计说明 (5) 1.5词法分析实现 (6) 1.6词法实验结果及结果分析 (12) 2 实验二语法分析 (13) 2.1 实验目的 (13) 2.2 实验要求 (13) 2.3 算法思想 (13) 2.4 实验程序设计说明 (15) 2.5 语法分析实现 (15) 4 实验中遇到的问题及解决 (22) 参考资料 (23)

1 实验一词法分析 1.1 实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 1.2 实验要求 1、待分析的简单的词法 (1)关键字: begin if then while do end 所有的关键字都是小写。 (2)运算符和界符 := + - * / < <= <> > >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义: ID = letter (letter | digit)* NUM = digit digit* (4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。 2、各种单词符号对应的种别码: 表1 各种单词符号对应的种别码 3、词法分析程序的功能: 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码; token为存放的单词自身字符串;

MATLAB实验报告50059

实验一MATLAB操作基础 实验目的和要求: 1、熟悉MATLAB的操作环境及基本操作方法。 2、掌握MATLAB的搜索路径及设置方法。 3、熟悉MATLAB帮助信息的查阅方法 实验内容: 1、建立自己的工作目录,再设置自己的工作目录设置到MA TLAB搜索路径下,再试 验用help命令能否查询到自己的工作目录。 2、在MA TLAB的操作环境下验证课本;例1-1至例1-4,总结MATLAB的特点。 例1-1

例1-2 例1-3 例1-4

3、利用帮助功能查询inv、plot、max、round等函数的功能。 4、完成下列操作: (1)在matlab命令窗口输入以下命令: x=0:pi/10:2*pi; y=sin(x); (2)在工作空间窗口选择变量y,再在工作空间窗口选择回绘图菜单命令或在工具栏中单击绘图命令按钮,绘制变量y的图形,并分析图形的含义。

5、访问mathworks公司的主页,查询有关MATLAB的产品信息。 主要教学环节的组织: 教师讲授实验目的、开发环境界面、演示实验过程,然后同学上机练习。 思考题: 1、如何启动与退出MA TLAB集成环境? 启动: (1)在windows桌面,单击任务栏上的开始按钮,选择‘所有程序’菜单项,然后选择MA TLAB程序组中的MA TLABR2008b程序选项,即可启动 MATLAB系统。 (2)在MA TLAB的安装路径中找到MA TLAB系统启动程序matlab.exe,然后运行它。 (3)在桌面上建立快捷方式后。双击快捷方式图标,启动MA TLAB。 退出: (1)在MA TLAB主窗口file菜单中选择exitMATLAB命令。 (2)在MA TLAB命令窗口中输入exit或quit命令。 (3)单击MATLAB主窗口的关闭按钮。 2、简述MATLAB的主要功能。 MATLAB是一种应用于科学计算领域的数学软件,它主要包括数值计算和符 号计算功能、绘图功能、编程语言功能以及应用工具箱的扩展功能。 3、如果一个MATLAB命令包含的字符很多,需要分成多行输入,该如何处理?

认识各种音频视频信号线特点及转换

RF、AV、S-Video、3RCA、VGA、HDMI 1、 RF 射频简称RF,射频就是射频电流,它是一种高频交流变化电磁波的简称。每秒变化小于1000次的交流电称为低频电流,大于10000次的称为高频电流,而射频就是这样一种高频电流。有线电视系统就是采用射频传输方式的。 2、AV AV最常见的音频、视频接口,通常为三根线一组,颜色分别为红色、白色、黄色,其中白色为左声道,红色为右声道,黄色为视频线,两端均为莲花头接头。 3、S-Video S-Video,简称S端子。S端子也是非常常见的端子,其全称是Separate Video,也称为SUPER VIDEO。S-Video连接规格是由日本人开发的一种规格,S指的是“SEPARATE(分离)”,它将亮度和色度分离输出,避免了混合视讯讯号输出时亮度和色度的相互干扰。S端子实际上是一种五芯接口,由两路视频亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成。 4、3RCA【分为Y/Pb/Pr和Y/CbCr】 色差分量接口称为分量视频接口,又叫3RCA。把色度(C)信号里的蓝色差(b)、红色差(r)分开发送,其分辨率可达到720线以上。其接口采用YPbPr和YCbCr两种标识。前者表示逐行扫描色差输出,后者表示隔行扫描色差输出,一般利用3根信号线分别传送亮色和两路色差信号。这3组信号分别是,亮度以Y标注,以及从三原色信号中的两种——蓝色和红色——去掉亮度信号后的色彩差异信号,分别标注为Pb和Pr,或者Cb和Cr,在三条线的接头处分别用绿、蓝、红色进行区别。我们经常在投影机或高档影碟机上看到的,类似YUV、YCbCr、Y/B-Y/B-Y等等的接口标识,虽然标记方法与接头外形各有千秋,但都属于色差分量端口。 对于模拟视频信号来说,衰减是不可避免的现象,所以信号分离度越高的信号清晰度就越高。色差输出就是把色度信号C分解为色差Cr和Cb,这样就避免了两路色差混合译码并再次分离的过程,也保持了色度信道的最大带宽,只需要经过反矩阵译码电路就可以还原为RGB三原色信号而成像,这就最大限度地缩短了视频源到显示器成像之间的视频信号信道,避免了因繁琐的传输过程所带来的影像失真,从而能够轻松实现720线以上高解析度、高清效果。 分量的效果要高于S端子,前者支持逐行信号输出而后者不支持。 5、VGA VGA(Video Graphics Array)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。 6、HDMI

编译原理实验报告

编译原理实验报告 姓名: 学号: 班级: 学院: 南昌大学信息工程学院计算机系 2014年6月

目录 实验一 (3) 实验二 (8) 实验三 (15)

实验1 词法分析程序的设计 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:实验成绩: 一、实验目的 掌握计算机语言的词法分析程序的开发方法。 二、实验内容 编制一个能够分析三种整数、标识符、主要运算符和主要关键字的词法分析程序。 三、实验要求 1、根据以下的正规式,编制正规文法,画出状态图; 标识符<字母>(<字母>|<数字字符>)* 十进制整数0 |(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)* 如有余力,则进一步分析八进制和十六进制整数,其正规式如下: 八进制整数0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* 十六进制整数0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)* 运算符和界符+ - * / > < =<= >=( ) ;{ } 关键字main if then else while do int (可根据需要添加) 2、根据状态图,设计词法分析函数int scan( ),完成以下功能: 1)从文本文件中读入测试源代码,根据状态转换图,分析出一个单词, 2)以二元式形式输出单词<单词种类,单词属性> 其中单词种类用整数表示: 0:标识符 1:十进制整数 2:八进制整数 3:十六进制整数 运算符和界符,关键字采用一字一符,不编码 其中单词属性表示如下: 标识符,整数由于采用一类一符,属性用单词表示 运算符和界符,关键字采用一字一符,属性为空 3、编写测试程序,反复调用函数scan( ),输出单词种别和属性。 四、实验环境 PC微机 DOS操作系统或Windows 操作系统 Turbo C 程序集成环境或Visual C++ 程序集成环境

视频信号格式

视频端口/视频信号格式(2008-12-19 10:07:59) Y”表示明亮度(Luminance或Luma),C色度(Chrominance或Chroma), YPbPr是将模拟的Y、PB、PR信号分开,使用三条线缆来独立传输,保障了色彩还原的准确性,YPbPr表示逐行扫描色差输出.YPbPr接口可以看做是S端子的扩展,与S端子相比,要多传输PB、PR两种信号,避免了两路色差混合解码并再次分离的过程,也保持了色度通道的最大带宽,只需要经过反矩阵解码电路就可以还原为RGB三原色信号而成像,这就最大限度地缩短了视频源到显示器成像之间的视频信号通道,避免了因繁琐的传输过程所带来的图像失真,保障了色彩还原的准确,目前几乎所有大屏幕电视都支持色差输入。 YCbCr表示隔行分量端子. 所说的Y Cb Cr和Y Pb Pr只是为了方便新人快速区分国产电视上隔/逐行接口而已. Cb Cr 就是本来理论上的分量/色差的标识, C代表分量(是component的缩写)Cr、Cb分别对应r(红)、b(蓝)分量信号,Y除了g(绿)分量信号,还叠加了亮度信号. 至于Y Pb Pr,是后来为了强调逐行概念,显示其飞跃性的变化,这个概念,有一定知识背景的人很容易理解,但普通用户只会更糊涂 YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL)。YUV主要用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的带宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是通过RGB输入信号来创建的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面—色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB 信号亮度值之同的差异。 *****U,V分别是与蓝,红的色差.范围是16-240 一、高频或射频信号 https://www.360docs.net/doc/e915453663.html,/cword/3153.shtml 视频端口是背投电视和信号源(比如影碟机)连接的接口,通过这些端口,可以将电影等图像在背投设备上播放。视频端子有不同类型,购买背投电视时尽量挑接口齐全的产品,尤其是最常见的接口,这样可以更方便的和各种设备连接。目前最基本的视频端子是复合视频端子(也叫AV端子)、S端子;另外常见的还有色差端子、VGA端子、DV I端子、HDMI端口。 复合视频端子

编译原理实验报告《LL(1)语法分析器构造》

《LL(1)分析器的构造》实验报告 一、实验名称 LL(1)分析器的构造 二、实验目的 设计、编制、调试一个LL(1)语法分析器,利用语法分析器对符号串的识别,加深对语法分析原理的理解。 三、实验内容和要求 设计并实现一个LL(1)语法分析器,实现对算术文法: G[E]:E->E+T|T T->T*F|F F->(E)|i 所定义的符号串进行识别,例如符号串i+i*i为文法所定义的句子,符号串ii+++*i+不是文法所定义的句子。 实验要求: 1、检测左递归,如果有则进行消除; 2、求解FIRST集和FOLLOW集; 3、构建LL(1)分析表; 4、构建LL分析程序,对于用户输入的句子,能够利用所构造的分析程序进行分析,并显示出分析过程。 四、主要仪器设备 硬件:微型计算机。 软件: Code blocks(也可以是其它集成开发环境)。 五、实验过程描述 1、程序主要框架 程序中编写了以下函数,各个函数实现的作用如下: void input_grammer(string *G);//输入文法G

//将文法G预处理得到产生式集合P,非终结符、终结符集合U、u, int eliminate_1(string *G,string *P,string U,string *GG);//消除文法G中所有直接左递归得到文法GG int* ifempty(string* P,string U,int k,int n);//判断各非终结符是否能推导为空 string* FIRST_X(string* P,string U,string u,int* empty,int k,int n);求所有非终结符的FIRST集 string FIRST(string U,string u,string* first,string s);//求符号串s=X1X2...Xn的FIRST集 string** create_table(string *P,string U,string u,int n,int t,int k,string* first);//构造分析表 void analyse(string **table,string U,string u,int t,string s);//分析符号串s 2、编写的源程序 #include #include #include using namespace std; void input_grammer(string *G)//输入文法G,n个非终结符 { int i=0;//计数 char ch='y'; while(ch=='y'){ cin>>G[i++]; cout<<"继续输入?(y/n)\n"; cin>>ch; } } void preprocess(string *G,string *P,string &U,string &u,int &n,int &t,int &k)//将文法G预处理产生式集合P,非终结符、终结符集合U、u, { int i,j,r,temp;//计数 char C;//记录规则中()后的符号 int flag;//检测到() n=t=k=0; for( i=0;i<50;i++) P[i]=" ";//字符串如果不初始化,在使用P[i][j]=a时将不能改变,可以用P[i].append(1,a) U=u=" ";//字符串如果不初始化,无法使用U[i]=a赋值,可以用U.append(1,a) for(n=0;!G[n].empty();n++) { U[n]=G[n][0]; }//非终结符集合,n为非终结符个数 for(i=0;i

合肥工业大学信息隐藏实验报告 完整代码版.

计算机与信息学院 信息隐藏实验报告 专业班级 信息安全13-1班 学生姓名及学号 马骏 2013211869 课程教学班号 任课教师 郑淑丽 实验指导教师 郑淑丽 实验地点 20 ~20 学年第学期

实验1 BMP位图信息隐藏 一、实验目的 学习BMP格式文件,并编程实现对位图文件信息隐藏 二、实验要求 将TXT文件嵌入BMP 文件中 三、问题描述 1、BMP位图文件的格式? 2、有哪几种方法隐藏信息,分别采用什么样的数据结构 3、随机选取如何避免“碰撞”的出现 四、算法思想 1、BMP位图文件格式 0000h~0001h 2字节-------------------------bm的ASC码 0002h~0005h 4字节-------------------------文件大小102718字节 0006h~0009h 4字节-------------------------全为0 000Ah~000Dh 4字节-------------------------偏移量118字节 000Eh~0011h 4字节-------------------------位图信息块大小40字节 0012h~0015h 4字节-------------------------宽450 0016h~0019h 4字节-------------------------高450 001Ah~001Bh 2字节-------------------------恒为01h 00h 001Ch~001Dh 2字节-------------------------颜色所占二进制位数值04h 00h=4 16色位图 001Eh~0021h 4字节-------------------------压缩方式=0无压缩 0022h~0025h 4字节-------------------------图像数据区大小102600字节 0026h~0029h 4字节-------------------------水平每米多少像素39个 002Ah~002Dh 4字节-------------------------垂直每米多少像素39个 002Eh~0031h 4字节-------------------------图像所用颜色数=0 0032h~0035h 4字节-------------------------重要颜色数=0 0036h~0076h 64字节-------------------------颜色表

编译原理实验报告

编译原理实验报告 班级 姓名: 学号: 自我评定:

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 根据教学要求并结合学生自己的兴趣和具体情况,从具有代表性的高级程序设计语言的各类典型单词中,选取一个适当大小的子集。例如,可以完成无符号常数这一类典型单词的识别后,再完成一个尽可能兼顾到各种常数、关键字、标识符和各种运算符的扫描器的设计和实现。 输入:由符合或不符合所规定的单词类别结构的各类单词组成的源程序。 输出:把单词的字符形式的表示翻译成编译器的内部表示,即确定单词串的输出形式。例如,所输出的每一单词均按形如(CLASS,VALUE)的二元式编码。对于变量和常数,CLASS字段为相应的类别码;VALUE字段则是该标识符、常数的具体值或在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串;常数表登记项中则存放该常数的二进制形式)。对于关键字和运算符,采用一词一类的编码形式;由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE字段则为“空”。另外,为便于查看由词法分析程序所输出的单词串,要求在CLASS字段上放置单词类别的助记符。 三、实现方法与环境 词法分析是编译程序的第一个处理阶段,可以通过两种途径来构造词法分析程序。其一是根据对语言中各类单词的某种描述或定义(如BNF),用手工的方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应的状态矩阵,该状态矩阵同控制程序便组成了编译器的词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序的另外一种途径是所谓的词法分析程序的自动生成,即首先用正规式对语言中的各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程序所应进行的语义处理工作,然后由一个所谓词法分析程序的构造程序对上述信息进行加工。如美国BELL实验室研制的LEX就是一个被广泛使用的词法分析程序的自动生成工具。 总的来说,开发一种新语言时,由于它的单词符号在不停地修改,采用LEX等工具生成的词法分析程序比较易于修改和维护。一旦一种语言确定了,则采用手工编写词法分析程序效率更高。 四、实验设计 1)题目1:试用手工编码方式构造识别以下给定单词的某一语言的词法分析程序。 语言中具有的单词包括五个有代表性的关键字begin、end、if、then、else;标识符;整型常数;六种关系运算符;一个赋值符和四个算术运算符。参考实现方法简述如下。 单词的分类:构造上述语言中的各类单词符号及其分类码表。 表I 语言中的各类单词符号及其分类码表 单词符号类别编码类别码的助记符单词值

matlab实验报告

实验一小球做自由落体运动内容:一小球竖直方向做自由落体,并无损做往返运动。程序: theta=0:0.01:2*pi x=cos(theta) y=sin(theta) l=1 v=1 while l<10 for t=1:10 y=y+(-1)^l*v*t plot(x,y,[-1,1],[-56,2],'.') axis equal pause(0.1) end l=l+1 end 结果:

-50 -40 -30 -20 -10 收获:通过运用小球自由落体规律,及(-1)^n 来实现无损往 返运动! 实验二 旋转五角星 内容:一个五角星在圆内匀速旋转 程序:x=[2 2 2 2 2 2] y=[0 4/5*pi 8/5*pi 2/5*pi 6/5*pi 0] y1=2*sin(y) x1=2*cos(y) theta=0:4/5*pi:4*pi

x2=2*cos(theta) y2=2*sin(theta) plot(x,y,x1,y1,x2,y2) axis equal theta1=theta+pi/10 x2=2*cos(theta1) y2=2*sin(theta1) plot(x2,y2) axis equal theta=0:4/5*pi:4*pi for rot=pi/10:pi/10:2*pi x=2*cos(theta+rot) y=2*sin(theta+rot) plot(x,y) pause(0.1) end 结果:

-2 -1.5-1-0.500.51 1.52 -2-1.5-1-0.500.511.5 2 收获:通过theta1=theta+pi/10,我们可以实现五角星在圆内匀速 旋转! 实验三 转动的自行车 内容:一辆自行车在圆内匀速转动 程序:x=-4:0.08:4; y=sqrt(16-x.^2); theta1=-pi/2:0.01*pi:3*pi/2; x3=0.5*cos(theta1); y3=0.5*sin(theta1); theta=-pi/2+0.02*pi for k=1:100

hdmi转vga转换器

HDMI转VGA 一.产品特点 Ⅰ:简介: 深圳锦裕达科技的HDMI转VGA是一款可以将高清视频HDMI数字信号转换为VGA模拟信号及AUDIO模

拟音频信号的转换器, HDMI信号可以驳接 PS3,XBOX360,蓝光DVD,高清机顶盒等,输出VGA可以驳接家用CRT/LED显示器,HD TV电视VGA-IN,投影仪VGA-IN等,可方便为没有HD TV高清电视的朋友解决一时之忧 HDMI转VGA高清视频转换器,采用数字转换芯片,将HDMI数字信号转为VGA模拟视频信号,不对信号进行缩小,放大等任何技术处理,HDMI输出最高支持 1080P/1.3,输出与输出完全一致(点对点输出) Ⅱ:产品特点: 1.无需要软件支持,即插即用 2.全硬件转换处理,具有图像清晰度高,亮度好,对比度高,画质好特点 3.支持HDMI1.3版本(兼容1.0/1.1/1.2),自动检测HDCP 4.体积小,移动性强 Ⅲ:技术参数:

1.HDMI输入----HDMI输入格式:480P/720P/ 1080I/1080P/60Hz 2.VGA输出:-----VGA输出分辨率:随输入的HDMI信号而变化 640*480@60Hz、800*600@60Hz、 1024*768@60Hz、1280*720@60Hz、 1280*768@60Hz、1280*800@60Hz、 1280*1024@60Hz、1360*768@60Hz、 1600*1200@60Hz、1920*1080@60Hz (此分辨率需要后端显示设备支持,输出与输入同步) HDMI与VGA对应分辨率

3.音频输出格式:模拟立体声音频(0.5~1.5 Voltsp-p) 4.电源适配器:AC100~240V转DC/5V直流输出电源Ⅳ:接口功能 1.HDMI输入接口,驳接PS3/XBOX360/PC显卡/高清播放机/蓝光DVD/高清机顶盒/笔记本电脑等 2.VGA信号输入接口,驳接投影仪(三枪,三 星,SONY,NEC等投影仪)或LCD显示器 3.音频输出接口:驳接立体声功放机或耳机 4.DC/5V:电源输入接口(DC/5V 600mA)

参考答案Matlab实验报告

实验一 Matlab基础知识 一、实验目的: 1.熟悉启动和退出Matlab的方法。 2.熟悉Matlab命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握Matlab各种表达式的书写规则以及常用函数的使 用。 二、实验内容: 1.求[100,999]之间能被21整除的数的个数。(rem) 2.建立一个字符串向量,删除其中的大写字母。(find) 3.输入矩阵,并找出其中大于或等于5的元素。(find) 4.不采用循环的形式求出和式 63 1 2i i= ∑ 的数值解。(sum) 三、实验步骤: ●求[100,199]之间能被21整除的数的个数。(rem) 1.开始→程序→Matlab 2.输入命令: ?m=100:999; ?p=rem(m,21); ?q=sum(p==0) ans=43 ●建立一个字符串向量,删除其中的大写字母。(find) 1.输入命令:

?k=input('’,’s’); Eie48458DHUEI4778 ?f=find(k>=’A’&k<=’Z’); f=9 10 11 12 13 ?k(f)=[ ] K=eie484584778 ●输入矩阵,并找出其中大于或等于5的元素。(find) 1.输入命令: ?h=[4 8 10;3 6 9; 5 7 3]; ?[i,j]=find(h>=5) i=3 j=1 1 2 2 2 3 2 1 3 2 3 ●不采用循环的形式求出和式的数值解。(sum) 1.输入命令: ?w=1:63; ?q=sum(2.^w) q=1.8447e+019

实验二 Matlab 基本程序 一、 实验目的: 1. 熟悉Matlab 的环境与工作空间。 2. 熟悉M 文件与M 函数的编写与应用。 3. 熟悉Matlab 的控制语句。 4. 掌握if,switch,for 等语句的使用。 二、 实验内容: 1. 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 2. 编程完成,对输入的函数的百分制成绩进行等绩转换,90~100为优,80~89为良,70~79为中,60~69为及格。 3. 编写M 函数文件表示函数 ,并分别求x=12和56时的函数值。 4. 编程求分段函数 2226;03 56;0532 1;x x x x y x x x x x x x +-<≠=-+≤<≠≠-+且且及其它,并求输入x=[-5.0,-3.0,1.0,2.0,2.5,3.0,3.5]时的输出y 。 三、 实验步骤: 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。 1. 打开Matlab ,新建M 文件 2. 输入命令: 51022-+x

HDMI,VGA,AV,Ypbpr,S-V,RF,USB视频信号90度旋转器说明书

奥西得 HDMI\VGA\AV\Ypbpr\S-V\RF\USB 视频信号90度旋转图像处理器 使用说明书

1、产品概述 视频信号90度旋转图像处理器是奥西得推出的一款最新的竖屏信号转换处理器,采用独特的嵌入式结构设计,可接受多种图像信号源输入,处理过程完全硬件化, 无需电脑软件控制操作,使用操作非常简便。 视频信号90度旋转图像处理器采用了运动侦测与补偿运算、内插运算、边缘平滑处理及杂波信号抑制等尖端处理技术,其3D视频亮色分离电路单元, 3D的逐行处理及帧频归一转化电路单元, 3D数字信号降噪单元,可将普通PAL/NTSC 隔行扫描视频信号采集变为逐行扫描的,高画质、高分辨率的高清图像信号。画面无延时,无拖尾现象,自然流畅,画质细腻,色彩还原度好。 视频信号90度旋转图像处理器支持将 HDMI\VGA\AV\Ypbpr\S-V\RF\USB输入信号直接转换为90度HDMI信号输出,可实现最高达1920x1080高分辨率WUXGA输入输出,支持1080p高清信号播放/输出。 内置2*10W功放喇叭,完美实现音画同步,满足一般娱乐影音需要,也可通过音频输出外接音箱。 支持模拟电视信号输入,轻松实现电视拼接。 支持画面一键静止功能,让您随时定格美好瞬间。 全功能多媒体播放操作,精彩刻不容缓。

2、产品外观及性能参数 产品正面▼ 产品后面▼ 输入接口界面 HDMI 输出 喇叭右声道喇叭左声道 指示灯 / IR

输入接口 DC12V 电源输入12V/4A电源适配器输入 HDMI 高清信号支持HDMI版本V1.4。 支持480i、480p、576i、576p、720p、1080i、1080P。 VGA 电脑信号D-sub 15针接口,VGA信号输入 支持SVGA/XGA/WXGA/WUXGA。 AV / L / R 音视频信号一组AV音视频接口。 支持PAL/NTSC/SCAM 全制式。 S-video 视频信号视频制式 S-Y:0.714Vp_p +/- 5%; S-C:0.286Vp_p +/- 5% Y / PB / PR 色差信号一组高清色差信号输入。 支持480i、480p、576i、576p、720p、1080i、1080P。 AUDIO-IN PC音频信号VGA信号音频输入。(3.5mm标准音频插孔) TV RF模拟电视信号支持全制式模拟电视信号输入 接收频率范围:48.25MHZ~863.25MHZ USB 多媒体播放支持图片、常见音频格式播放。 支持视频格式:RM、MPEG2、MPEG4、H264、RM、RMVB、MOV、MJPEG、VC1、FLV等格式, 支持1080P全高清视频播放。

编译原理实验报告总结

学年第学期《编译原理》实验报告 学院(系):计算机科学与工程学院 班级:11303070A 学号:11303070*** 姓名:无名氏 指导教师:保密式 时间:2016 年7 月

目录 1.实验目的 (1) 2.实验内容及要求 (1) 3.实验方案设计 (1) 3.1 编译系统原理介绍 (1) 3.1.1 编译程序介绍 (2) 3.1.2 对所写编译程序的源语言的描述 (2) 3.2 词法分析程序的设计 (3) 3.3 语法分析程序设计 (4) 3.4 语义分析和中间代码生成程序的设计 (4) 4. 结果及测试分析 (4) 4.1软件运行环境及限制 (4) 4.2测试数据说明 (5) 4.3运行结果及功能说明 (5) 5.总结及心得体会 (7)

1.实验目的 根据Sample语言或者自定义的某种语言,设计该语言的编译前端。包括词法分析,语法分析、语义分析及中间代码生成部分。 2.实验内容及要求 (1)词法分析器 输入源程序,输出对应的token表,符号表和词法错误信息。按规则拼单词,并转换成二元形式;滤掉空白符,跳过注释、换行符及一些无用的符号;进行行列计数,用于指出出错的行列号,并复制出错部分;列表打印源程序;发现并定位词法错误; (2)语法分析器 输入token串,通过语法分析,寻找其中的语法错误。要求能实现Sample 语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while语句、do while语句等。 (3)语义分析和中间代码生成 输入token串,进行语义分析,修改符号表,寻找其中的语义错误,并生 成中间代码。要求能实现Sample语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while 语句、do while语句等。 实验要求:功能相对完善,有输入、输出描述,有测试数据,并介绍不足。3.实验方案设计 3.1 编译系统原理介绍 编译器逐行扫描高级语言程序源程序,编译的过程如下: (1).词法分析 识别关键字、字面量、标识符(变量名、数据名)、运算符、注释行(给人看的,一般不处理)、特殊符号(续行、语句结束、数组)等六类符号,分别归类等待处理。 (2).语法分析 一个语句看作一串记号(Token)流,由语法分析器进行处理。按照语言的文法检查判定是否是合乎语法的句子。如果是合法句子就以内部格式保存,否则报错。直至检查完整个程序。 (3).语义分析 语义分析器对各句子的语法做检查:运算符两边类型是否相兼容;该做哪些类型转换(例如,实数向整数赋值要"取整");控制转移是否到不该去的地方;是

信号转换器原理

转换器 开放分类:应用科学建筑材料机电一体化电子 编辑词条分享 ?新知社新浪微博人人网腾讯微博移动说客网易微博开心001天涯MSN ? 1 设备类型 ? 2 转换模式 ? 3 接口类型 ? 4 传输速率 ? 5 网络标准 ? 将一种信号转换成另一种信号的装置。 协议转换器

接口转换器 转换器从原理上可分为协议转换器、接口转换器两大类。从应用上又可以分光纤转换器、光电转换器、视频转换器等等。例如视频转换器就是一种连接电脑和电视的设备,它可以把电脑上的内容转换并显 示在电视机上,让人们可以在电视上学电脑,上网,玩游戏,做商业演示,看股票等等。 典型的转换器常见的转换模式有以下几种: V.35与G.703接口之间的转换; Ethernet(RJ45)与RS232之间的转换; 单模光纤与多模光纤之间的转换; 光纤接口与Ethernet(RJ45)之间的转换; 以太网口与E1的接口转换; USB接口与其他接口之间的转换等等。 转换器典型的接口类型有以太网接口,E1接口、串行接口(RS232)、SC/ST接口、USB接口等。 RJ-45 接口转换器 1.以太网接口 接口标准:IEEE802.3

终端速率:10M/100/1000Mbps 工作模式:全双工、半双工 终端接头:RJ45接口 2.E1接口 网络接口:G.703、G.704、G.823 网络速率:2.048Mbps 网络接头:BNC(75欧姆)等 线路编码:HDB3码 3.串行接口 接口速率:19200bps 接口标准:RS-232 SC/ST接口转换器 4.SC/ST接口 ST接口:10Base-F SC接口:100Base-FX 5.USB接口 USB1.1:12Mbps USB2.0:480Mbps 不同的转换器产品由于转换接口的不同,传输速率也不同,典型接口传输速率如下:

编译原理实验题目及报告要求

编译原理上机实验试题 一、实验目的 通过本实验使学生进一步熟悉和掌握程序设计语言的词法分析程序的设计原理及相关的设计技术, 如何针对确定的有限状态自动机进行编程序;熟悉和 掌握程序设计语言的语法分析程序的设计原理、熟悉 和掌握算符优先分析方法。 二、实验要求 本实验要求:①要求能熟练使用程序设计语言编程;②在上机之前要有详细的设计报告(预习报告); ③要编写出完成相应任务的程序并在计算机上准确 地运行;④实验结束后要写出上机实验报告。 三、实验题目 针对下面文法G(S): S→v = E E→E+E│E-E│E*E│E/E│(E)│v │i 其中,v为标识符,i为整型或实型数。要求完成 ①使用自动机技术实现一个词法分析程序; ②使用算符优先分析方法实现其语法分析程序,在 语法分析过程中同时完成常量表达式的计算。

1、题目(见“编译原理---实验题目.doc,“实验题目”中的第一项) 2、目的与要求(见“编译原理---实验题目.doc”) 3、设计原理: (1)单词分类:标识符,保留字,常数,运算符,分隔符等等 (2)单词类型编码 (3)自动机 4、程序流程框图 5、函数原型(参数,返回值) 6、关键代码(可打印,只打印关键代码) 7、调试: (1)调试过程中遇到的错误,如何改进的; (2)需要准备测试用例(至少3个,包含输入和输出)——(可打印) 8、思考: (1)你编写的程序有哪些要求是没有完成的,你觉得该采用什么方法去完成; (2)或者是你觉得程序有哪些地方可以进一步完善,简述你的完善方案。

1、题目(见“编译原理---实验题目.doc,“实验题目”中的第二项) 2、目的与要求(见“编译原理---实验题目.doc”) 3、设计原理:构造出算法优先关系表 4、程序流程框图 5、函数原型(参数,返回值) 6、关键代码(可打印,只打印关键代码) 7、调试: (1)调试过程中遇到的错误,如何改进的; (2)需要准备测试用例(至少3个,包含输入和输出)——(可打印) 8、思考: (1)你编写的程序有哪些要求是没有完成的,你觉得该采用什么方法去完成; (2)或者是你觉得程序有哪些地方可以进一步完善,简述你的完善方案。

合工大汇编语言程序设计实验报告

合肥工业大学计算机与信息学院 实验报告 课程:汇编语言程序设计专业班级:**************** 学号:********** 姓名:***** 目录

实验一 (3) 实验二 (7) 实验三 (12) 实验四 (22)

实验一Debug程序的使用 一.实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二.实验内容 1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 三.实验过程和程序 实验内容一: e ds:0200 E7 1A 3F 00 e ds:0204 C4 E5 6B 00 实验内容二: (1)直接寻址方式 MOV AX,[0200] MOV BX,[0202] ADD AX,[0204] ADC BX,[0206] MOV [0208],AX MOV [020A],BX (2)寄存器间接寻址方式 MOV SI,0200H MOV DI,0204H MOV BX,0208H MOV AX,[SI] MOV DX,[SI+2] ADD AX,[DI] ADC DX,[DI+2]

编 译 原 理 实 验 报 告

编译原理实验报告 课程:编译原理 系别:计算机系 班级:11网络 姓名:王佳明 学号:110912049 教师:刘老师 实验小组:第二组 1

实验一熟悉C程序开发环境、进行简单程序的调试 实验目的: 1、初步了解vc++6.0环境; 2、熟悉掌握调试c程序的步骤: 实验内容: 1、输入下列程序,练习Turbo C 程序的编辑、编译、运行。 #include main() { printf(“Programming is fun.\n”); } 2、分析程序,预测其运行结果,并上机检测你的预测。 #include main() { printf(“*\n”); printf(“* * *\n”); printf(“* * * * *\n”); printf(“* * * * * * *\n”); } 3、下面是一个加法程序,程序运行时等待用户从键盘输入两个整数,然后求出它们的和并输出。观察运行结果(程序输出),上机验证该程序。 #include main() { int a,b,c; printf(“Please input a,b:”); scanf(“%d,%d”,&a,&b); c=a+b; printf(“%d+%d=%d\n”,a,b,c); } 2

实验二词法分析器 一、实验目的: 设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。 二、实验要求: 1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。 2.本程序自行规定: (1)关键字"begin","end","if","then","else","while","write","read", "do", "call","const","char","until","procedure","repeat" (2)运算符:"+","-","*","/","=" (3)界符:"{","}","[","]",";",",",".","(",")",":" (4)其他标记如字符串,表示以字母开头的标识符。 (5)空格、回车、换行符跳过。 在屏幕上显示如下: ( 1 , 无符号整数) ( begin , 关键字) ( if , 关键字) ( +, 运算符) ( ;, 界符) ( a , 普通标识符) 三、使用环境: Windows下的visual c++6.0; 四、调试程序: 1.举例说明文件位置:f:、、11.txt目标程序如下: begin x:=9 if x>0 then x:=x+1; while a:=0 do 3

相关文档
最新文档