汇编语言编译实验指导Word文件下载.docx
- 文档编号:15168464
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:23
- 大小:198.53KB
汇编语言编译实验指导Word文件下载.docx
《汇编语言编译实验指导Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编语言编译实验指导Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
b=20;
c=a+b;
}
自编源程序:
输入、扫描程序源代码(仅供参考):
//程序开始:
#include<
stdio.h>
#include<
stdlib.h>
#include<
conio.h>
//声明头文件
int
i;
FILE
*fp;
char
buffer[256];
//声明变量
readbuffer()//读字符子程序开始
j=0;
ch;
while(j<
256)
ch=fgetc(fp);
if
(ch=='
\n'
)
i=j;
return
0;
}//
buffer[j]=ch;
//保存字符
++j;
//记录字符个数
}
return
1;
}//子程序结束
main()//main()开始
if((fp=fopen("
e:
\\a.c"
"
r"
))==NULL)
printf("
THE
DOESN’T
OPEN!
"
);
exit(0);
while(!
feof(fp))
j;
readbuffer();
i)
%c"
buffer[j]);
j++;
\n"
getch();
fclose(fp);
}//main()结束
//程序结束
2)改变源文件e:
\\a.c内容为:
sum=0,i;
float
k;
scanf
("
%f
plese
input
(0-100)
to
total!
&
k)
for(i=0;
i<
i++)
sum
=sum+i;
运行自编的输入扫描程序,检查输出结果必须与上面输入的源文件中的代码相同。
[实验报告]:
1、写出调试程序出现的问题及解决的方法。
2、写实验报告及程序清单。
3、报告给出测试的结果。
4、实验小结
实验二无符号数的有限自动机的实现
4
无符号数的有限自动机的实现。
利用状态表和有限自动机的运行原理编制程序,使得程序能够识别一个输入串是否为一个无符号定点实数。
[实验题目]:
1、理解有限自动机的作用;
进一步理解自动机理论。
2、用状态图和状态表表示有限自动机;
3、以程序实现有限自动机的运行过程;
掌握文法转换成自动机的技术及有穷自动机实现的方法。
[实验要求]:
1.设计要求:
利用状态图或状态表相关理论,利用有限自动机理论。
2.功能要求:
输入一个单行无空格的字符串(以“#”号结束),如果该字符串是一个合法的输入,则显示“接受”,否则显示“不接受”。
3.输入/输出示例(以无符号定点实数为例):
(1)输入:
“3.14”,输出:
“接受”;
(2)输入:
“3.1.4”,输出:
“不接受”;
(3)输入:
“3ab”,输出:
“不接受”。
[实验提示]:
1、无符号数的BNF描述如下:
1.<
无符号数>
d<
余留无符号数>
|.<
十进制数>
|e<
指数部分>
2.<
|ε
3.<
十进制小数>
余留十进制小数>
4.<
e<
|d<
5.<
余留整指数数>
|+<
整指数>
|-<
6.<
7.<
2、将G[<
]文法转换成有限自动机见图1。
图1
3、构造状态矩阵;
将有限自动机的状态S1S2……Sn及输入的字a1a2……am构成一个n*m的矩阵。
1)根据状态矩阵设计出一个词法分析程序识别无符号数。
2)扫描无符号数,根据文法给出无符号数出错的位置。
[实验报告]:
1、写出无符号数词法分析的思想。
2、画出算法流程图。
3、写出调试程序出现的问题及解决的方法。
4、打印实验报告及程序清单。
5、报告给出测试的结果。
6、实验小结
试验示例:
有限自动机的运行
程序功能:
利用状态表和有限自动机的运行原理,识别一个输入串是否为一个有效的无符号定点实数。
例:
运行自编程序后
键盘输入:
1#
输出显示:
接受
3.14#
3ab#
不接受
1.2.3
输入数据要求:
不能有空格,以'
#'
结束(在本程序可以不用'
结束)。
输出:
如果是无符号定点实数,显示“接受”;
否则显示“不接受”。
实验三词法分析处理(查添符号表)
1、查添符号表(标识符为以字母开头的字母数字串)。
2、读标识符若表中已有该标识符,则取出其在表中的位置,输出该标识符极其编号;
否则产生一个新的编号,连同标识符一起添入名表;
最后输出标识符表。
1、了解符号表的几种结构,掌握符号表的存取方法。
2、了解编译时如何对标识符进行处理。
3、掌握词法分析的处理方法。
1、从键盘上输入标识符,标识符之间用逗号隔开,最后以分号结束(也可以用其他符号做结束标志)。
如:
arr,bet,x1,x2,y,addr1;
2、编号从100开始,最后输出的标识符不能有重复出现;
3、标识符的长度必须小于或等于8个字符。
1、根据标识符的文法规则,画出标识符的状态转换图。
2、画出读取标识符的程序框图。
3、写出程序,上机调试并输出结果。
编程说明:
(供参考)
1、变量数组的说明:
1)定义一个工作数组A,该数组有8个元素(标识符长度为8)。
2)定义一个标识符表结构id,其中包含两个成员:
数组name和变量addr。
数组name存放登记标识符名字,长度为8个字符的数组变量,记录了标识符的名字。
本程序只识别标识符的前8个字符,超过8个字符的部分无效。
变量addr则记录标识符编号,即该标识符在符号表中所对应的位置。
3)如果工作数组A中的元素为合法标识符,则将其名字填入结构id中的name数组,将其编号填入addr数组。
如果工作数组A中元素为非法标识符,错误标志errty置1,显示出错信息。
4)用变量K记录读入的标识符个数。
5)用变量I记录每个标识符读入的字符个数。
6)用变量errty记录标识符首字符为非字符的错误标志。
工作数组A中为非法标识符,错误标志errty置1,显示出错信息。
7)用变量errty1记录标识符中有非字母数字字符的错误标志。
2、程序框图:
Y
N
Y
N
YY
y
1、写出查添符号表的设计思想。
4、写出实验报告及程序清单。
实验四词法分析
(2)实验
学时数:
1.设计一个对形如下列的变量说明进行处理的词法分析程序:
constI=10;
j=100;
r=1.23;
c=‘good‘;
t=true;
1.常量说明,常量可以是字母打头的5个长度的数字、字母的组合,最后以“!
”作为结束符。
2.处理各常量说明,计算每个常量的值和类型。
3.输出每个常量的名、值及类型。
1.了解词法分析的主要任务。
2.熟悉编译程序的编制。
3.掌握词法分析的处理方法。
1.写出常量识别的确定自动机(DFA)。
2.写出对应的自动机的语义过程。
3.编写程序。
4.结果分析。
[编程说明]:
1、定义一个工作数组,进行标识符、字符常量、布尔常量的中间处理。
2、定义存放整形、字符型、布尔型常量名的数组。
3、定义存放整型、实型、字符型、布尔型常量名相应值的数组。
词法分析程序与语法分析程序的接口方式:
词法分析程序的主要任务:
就是读源程序,产生单词符号.
词法分析程序的其他任务:
滤掉空格,跳过注释、换行符,追踪换行标志,复制出错源程序,宏展开,……
它所完成的是编译的第一阶段工作。
词法分析程序把字符流的源程序变为单词序列,输出到一个中间文件,这个文件作为语法分析程序的输入继续下一阶段的编译过程。
一般情况下,常将词法分析程序设计成一个子程序即读词程序,由语法分析程序调用。
每当语法程序需要读进一个单词符号时,就调用词法分析子程序。
当词法分析程序识别并组合出一个单词符号时,就通过RETURN语句返回。
返回时应将单词的类别码送入存放类别码的变量单元中,供语法分析程序调用。
单词的种类与词法分析的输出:
单词符号是程序设计语言的基本语法符号。
单词符号一般可分为五种:
1.保留字,也称为关键字。
2.标识符,用来表示各种名字。
3.常数,各种类型的常数。
4.运算符。
5.界符,如逗号,分号,括号,。
。
词法分析程序所输出的单词符号常常采用二元式表示即属性字:
单词类别
单词值
一个单词的词法分析程序框图:
(供参考)
YN
NN
YY
N
N
Y
1、写出处理常量说明的词法分析程序的思想。
实验五语法分析LL
(1)实验
1、文法规则:
E∷=E+T│E-T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 编译 实验 指导