C与汇编程序运行时间比较

合集下载

第4章 单片机的C51语言

第4章 单片机的C51语言
第4章 单片机的C51语言
4.1 C51的程序结构 4.2 C51的数据结构 4.3 C51与汇编语言的混合编程 4.4 C51仿真开发环境 4.5 C51初步应用编程
第4章单片机的C51语言
51汇编语言能直接操作单片机的系统硬件,指令执行速度 快。但其程序可读性差,且编写、移植困难。
第4章单片机的C51语言
数据类型
【存储类型】
变量名
51单片机的 三个逻辑存储空间:
片内数据存储器,片外数据存储器和程序存储器。
建立C51存储类型与存储空间的对应关系
code区
xdata区
idata区
data区
bdata区
pdata 区
第4章单片机的C51语言
C51的存储类型与存储空间对应关系表
编译模式
SMALL系统
COMPACT系统 LARGE系统
注意:SFR字节地址变量的物理地址是由MCU资源决定的
第4章单片机的C51语言
sbit型
部分SFR具有位地址,如何定义与这些位地址相关的变量?
D0^7
PSW D7H
D0^6
AC
D0^5
D0^4
RS1
D0^3
RS0
D0^2
D0^1
D1H
D0^0
P
相对位地址
D0H 字节地址 绝对位地址
CY
CY
D6H
AC
32
对于“/”和“%”往往会有疑问。这两个符号都涉
及除法运算,但“/”运算是取商,而“%” 运算为取余 数。例如“5/3”的结果(商)为1,而“5%3”的结果 为2(余数)。 表3-3中的自增和自减运算符是使变量自动加1或减1, 自增和自减运算符放在变量前和变量之后是不同的。 ++i,--i:在使用i之前,先使i值加(减)1。

第5章 汇编语言程序

第5章 汇编语言程序

Y
条件满足?
N
处理段
例5-5 设内部RAM30H,31H单元存放两个无符号数, 将大数存在31H,小数存于30H。 ORG 1000H START:CLR C MOV A,30H SUBB A,31H JC NEXT ;次序符合,返回 MOV A,30H ;交换 XCH A,31H MOV 30H,A NEXT: NOP SJMP $ END
$
5-3 分支程序
由条件转移指令构成程序判断框,形成程序分支结构。 5-3-1 单重分支程序 一个判断决策框,程序有两条出路。 两种分支结构: 例1 求R2中补码绝对值,正数不变, 影响条件 负数变补。
MOV A,R2 JNB ACC.7,NEXT;为正数? CPL A ;负数变补 INC A MOV R2,A NEXT:SJMP NEXT ;结束
五、对源程序进行交叉汇编得到机器代码; 反汇编 —— 分析现成产品的程序,要将二进制 的机器代码语言程序翻译成汇编语言源程序。
六、程序调试。
通过微计算机的串行口(或并行口)把机器代 码传送到用户样机(或在线仿真器)进行程序 的调试和运行。
5.1.3评价程序质量的标准
(1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。
方法二:采用除10H取余数将BCD拆开 ORG 1000H MOV A,20H; 2B 1T MOV B,#10H ; 3B 2T DIV AB ; 1B 4T ORL B,#30H ; 3B 2T MOV 22H,B ; 3B 2T ORL A,#30H; 2B 1T MOV 21H,A ; 2B 1T SJMP $ END;7条指令、16个内存字节、13个机器周期。

计算机专业研究生复试-C语言程序设计面试简答题

计算机专业研究生复试-C语言程序设计面试简答题

C语言程序设计1.简述C语⾔采取了哪些措施提⾔执⾔效率●使⽤指针:有些程序⽤其他语⽤也可以实现,但C能够更有效地实现;有些程序⽤法⽤其它语⽤实现,如直接访问硬件,但C却可以。

正因为指针可以拥有类似于汇编的寻址⽤式,所以可以使程序更⽤效。

●使⽤宏函数:宏函数仅仅作为预先写好的代码嵌⽤到当前程序,不会产⽤函数调⽤,所以仅仅是占⽤了空间,⽤使程序可以⽤效运⽤。

在频繁调⽤同⽤个宏函数的时候,该现象尤其突出。

函数和宏函数的区别就在于,宏函数占⽤了⽤量的空间,⽤函数占⽤了时间。

●使⽤位操作:位操作可以减少除法和取模的运算。

在计算机程序中数据的位是可以操作的最⽤数据单位,理论上可以⽤"位运算"来完成所有的运算和操作。

灵活的位操作可以有效地提⽤程序运⽤的效率。

●将汇编指令嵌⽤到C 语⽤程序中,汇编语⽤是效率最⽤的计算机语⽤,因此在C语⽤程序中嵌⽤汇编,从⽤充分利⽤⽤级语⽤和汇编语⽤各⽤的特点。

●系统调用:在C语⽤程序中可以调⽤操作系统级的API,从⽤提⽤程序的运⽤效率。

●条件编译:C语⽤源程序中加上条件编译,让编译器只对满⽤条件的代码进⽤编译,将不满⽤条件的代码舍弃,可以减少编译及执行程序代码量。

●循环嵌套中将较长循环设为内置循环,较短循环设为外置循环,以减少cpu跨切循环层的次数,提⽤程序的运⽤效率。

(操作系统页⽤置换相关,减少页⽤置换次数)●其它诸如寄存器变量、联合体、编译器优化等手段提⽤执⽤效率。

2.if…else和switch区别总结:都是条件选中语句。

但switch语句只能取代if语句的一部分功能。

●比较的范围不同:if 语句可做各种关系比较(只要是boolean 表达式都可以用if 判断)switch语句只能做等式比较,即只能对基本类型进行数值比较。

(switch只能做几个数据类型的等式比较,实现非等式效率低,)switch之后括号内的表达式只能是整型(byte、short、char和int)、枚举型或字符型表达式,不能是长整型或其他任何类型。

c语言ppt

c语言ppt

2
教学目标: • 了解计算机程序和语言的概念; • 了解C语言的基本构成; • 掌握C程序的运行步骤。 本章重点: • 计算机程序和计算机语言的概念;程序设计的基 本任务;C语言程序的基本构成;运行C程序的步 骤和方法。 本章难点: • C语言程序的基本构成;运行C程序的步骤和方法。
《程序设计基础(C语言)》
《程序设计基础(C语言)》
10
• 编译方式使用编译程序(编译器)。在应用程序 执行之前,就将程序源代码翻译成目标代码(机 器语言),因此其目标程序可以脱离其语言环境 而反复独立执行,使用比较方便、运行效率较高 ,但一旦应用程序需要修改时,必须先修改其源 代码,再重新编译生成新的目标程序才能执行, 很不方便。编译型高级语言有很多,例如Visual C++、Visual FoxPro、Delphi等。
《程序设计基础(C语言)》
• 1995年,ISO对C90做了一些修订,即“1995基准 增补 1(ISO/IEC 9899/AMD1:1995)”。1999年, ISO又对C语言标准进行修订,在基本保留原来的C 语言特征的基础上,针对应用的需要,增加了一 些功能,尤其是C++中的一些功能,命名为 ISO/IEC 9899:1999。2001年和2004年先后进行了 两次技术修正,即2001年的TC1和2004年的TC2。 ISO/IEC 9899:1999及其技术修正被称为C99,C99 是C89(及1995基准增补1)的扩充。 • 本书以C99标准为依据,为了与C89作比较,在本 书的叙述中对C99新增加的功能作特别的说明。
《程序设计基础(C语言)》1.4.2 C和C++
• C++语言是在C语言的基础上,添加了面向对象、 模板等现代程序设计语言的特性而发展起来的。 C++吸收了C语言的诸多优点,同时又添加了面向 对象程序设计的新理念,非常适用于开发复杂的 大型软件,这也是它成为主流程序设计语言的主 要原因。 • 但是,C语言兼顾了接近底层和高性能这两个显著 特性,同时又比C++语言更加简洁,随着当今世界 嵌入式开发技术的发展、大型算法的应用,特别 是搜索引擎、云计算的兴起,C语言的用武之地不 但没有萎缩,反而有逐渐扩展的趋势。

单片机C语言编程与汇编混合编程

单片机C语言编程与汇编混合编程

调用参数。
(3) 在线汇编
在 C 程序中直接插入 asm(“
***
”),内嵌汇编语句,需要注意的是这种用法要慎用,在线汇编提供了能
直接读写硬件的能力,如读写中断控制允许寄存器等,但编译器并不检查和分析在线汇编语言,插入在线 汇编语言改变汇编环境或可能改变 C 变量的值可能导致严重的错误。
二 汇编和 C 接口中寻址方式的改变:
由于在 C 语言的环境下,局部变量的寻址必须通过 SP 寄存器实现,在混合编程的时候,为了使汇编语言 不影响堆栈寄存器 SP,通常的方式是在汇编环境中使用 DP 方式寻址,这样可以使二者互不干扰。编程中 只要注意对 CPL 位正确设置即可
1 .word 的意思就相当与 C 语言里的 int,char 等定义一个变两的宽度
//DSP 发向 PC 机的数据
int to_dte_num;
// 缓冲区中存放的有效字节数
int to_dte_store;
// 缓冲区的存放指针
int to_dte_read;
// 缓冲区的读取指针
这样经过链接就可以完成对应。
2 程序入口问题
在 C 程序中,程序的入口是 main() 函数。而在汇编程序中其入口由*.cmd 文件中的命令决定,如:-e m ain_start;程序入口地址为 main _start。这样,混合汇编出来的程序得不到正确结果。因为 C 到 ASM 的汇 编有默认的入口 c-int00,从这开始的一段程序为 C 程序的运行做准备工作。这些工作包括初始化变量、设 置栈指针等,相当于系统壳不能跨越。这时可在*.cmd 文件中去掉语句:-e main_start。如仍想执行某些汇 编程序,可以 C 函数的形式执行,如:
汇编与 C 语言混合编程的关键问题

10 C语言与汇编语言的混合编程

10 C语言与汇编语言的混合编程
14
3.混合项目(续)
模块3(文件名pulse3.asm): PUBLIC _DELAY1MS;用PUBLIC声明_DELAY1MS为其它函数调用,以 “_”为前缀的函数名,表示该函数通过寄存器传递参数 DELAY SEGMENT CODE;定义DELAY段为再定位程序段 ,DELAY是用 户任意起的段名 RSEG DELAY ;选择DELAY为当前段 _DELAY1MS: DELA:MOV R6,#12 ;2T LOP1:MOV R5,#250 ;2T DJNZ R5,$ ;4T DJNZ R6,LOP1 ;4T DJNZ R7,DELA ;R7中数值为C ;程序传递过来的参数,参数为2则延时2ms EXIT: RET END
1.混合编程的实现(续)
第二步:在Keil C51环境下,在Project窗口中包含汇编代码 的C文件上单击右键,在弹出的快捷菜单中选择“Options for…”命令,再点击选中右边的“Generate Assembler SRC File”和“Assembler SRC File”复选框,使检查框由灰色(无 效)变成黑色(有效)状态。
12
3.混合编程
模块1(文件名pulse1.c): #include<STC12C5A.h> #define uchar unsigned char sbit P1_1=P1^1; extern void delay4ms(void); //外部函数delay4ms()声明 void main() { while(1) { P1_1=0; delay4ms (); //调用模块2延时4ms P1_1=1; delay4ms (); //调用模块2延时4ms } }
4
1.混合编程的实现(续)
5

《单片机原理与应用》ppt课件

《单片机原理与应用》ppt课件

条件转移指令
子程序调用与返回
根据某个条件判断的结果来决定 程序是否转移到指定的地址执行, 如JZ(零转移)、JNZ(非零转 移)等。
子程序是一段可以独立执行的程 序段,通过调用指令CALL实现子 程序的调用和返回。在调用子程 序时,需要将返回地址压入堆栈; 在子程序返回时,再从堆栈中弹 出返回地址并执行返回操作。
人机交互设备(键盘、显示器等)接口设计
键盘接口设计
通过扫描键盘矩阵或接收键盘中断的方式,读取按键信息并转 换为相应的数据或命令。
显示器接口设计
根据显示器的类型和通信协议,设计相应的接口电路和驱动程 序,实现单片机对显示器的控制和数据传输。
应用实例分析:智能家居控制系统设计
系统概述
介绍智能家居控制系统的功能、 组成和工作原理,包括中央控制 器、传感器、执行器等部分。
AVR系列
ARM系列
采用先进的RISC结构,具有高速度、低功耗、 丰富的外设接口等特点,适用于物联网等领 域。
采用高性能的32位RISC结构,具有强大的处 理能力和丰富的外设接口,适用于高端嵌入 式系统等领域。
02
单片机基本原理
微处理器结构与工作原理
微处理器内核结构 包括算术逻辑单元(ALU)、寄存器组、控制单元等。
04
C语言程序设计在单片机 中的应用
C语言与汇编语言比较
高级语言与低级语言
C语言属于高级语言,具有易于理解、编写和维护的特点;而汇编 语言是低级语言,更接近硬件,但编写复杂且可读性较差。
可移植性
C语言具有良好的可移植性,可以在不同平台上运行;而汇编语言 与特定硬件平台紧密相关,可移植性差。
执行效率
创建工程文件
在编译器中创建新的工程文件,并添 加源代码文件、头文件等。

单片机编程C语言和汇编语言的比较

单片机编程C语言和汇编语言的比较

单片机编程C语言和汇编语言的比较单片机编程对于电子工程领域的从业者而言,是一项十分重要的技能。

而在单片机编程中,C语言和汇编语言是两种常用的编程语言。

本文将对C语言和汇编语言进行比较,分析它们在单片机编程中的优点和缺点。

1. C语言C语言是一种高级编程语言,与单片机硬件之间存在着一定的抽象层。

在单片机编程中,使用C语言相对于汇编语言具有以下优点:1.1 代码可移植性强:C语言是一种面向过程的编程语言,在不同的单片机平台上都可以使用。

这意味着使用C语言编写的代码可以轻松移植到不同的单片机上,提高了开发的效率。

1.2 开发效率高:相对于汇编语言而言,C语言编写代码的速度更快。

C语言的语法结构和函数库使得开发者能够更加轻松地实现复杂的功能,减少了编写代码的工作量。

1.3 可读性好:C语言的语法结构相对较简单,与自然语言更接近,使得代码更易读。

这对于后续维护和调试工作来说非常重要。

尽管C语言在单片机编程中有很多优点,但也存在一些缺点:1.4 性能稍逊:由于C语言的抽象层次较高,编译后的代码相对于汇编语言生成的机器码而言,执行效率可能稍低。

这对于一些对性能要求较高的应用来说可能是一个问题。

1.5 对硬件资源的控制不够细致:C语言的抽象层次使得对硬件资源的控制相对不够细致。

在一些对硬件资源要求严格的应用场景下,可能需要使用汇编语言来实现更精细的控制。

2. 汇编语言汇编语言是一种低级别的编程语言,直接操作硬件资源。

与C语言相比,汇编语言的优点如下:2.1 执行效率高:汇编语言直接操作硬件资源,在性能上具有明显优势。

由于对硬件更直接的控制,汇编语言生成的机器码执行效率通常较高。

2.2 控制精细:汇编语言可以对硬件资源进行更精细的控制。

这对于一些对硬件资源要求非常严格的应用场景非常重要。

然而,汇编语言也有一些不足之处:2.3 开发效率低:相对于C语言而言,汇编语言的开发效率低。

由于操作层级较低,编写、调试和维护汇编代码的工作量较大。

C学习笔记一C语言和汇编语言的区别

C学习笔记一C语言和汇编语言的区别

C学习笔记一C语言和汇编语言的区别C语言和汇编语言是计算机编程中常见的两种语言,它们在编写程序时有着不同的特点和用途。

本文将从语法、可读性、抽象程度以及机器依赖性等方面对C语言和汇编语言进行比较,以帮助读者更好地理解它们之间的区别。

1. 语法差异C语言是一种高级编程语言,它采用类似英语的结构化语法,具有丰富的语法特性,包括变量、数组、条件语句、循环语句和函数等。

C语言的语法相对简洁,能够快速实现一些功能。

而汇编语言是一种低级编程语言,使用各种助记符和符号来表示机器指令、寄存器和内存访问等,需要编写者有较强的硬件知识和技巧。

相比C语言,汇编语言更接近计算机底层,更加底层、精简和直接。

2. 可读性和可维护性C语言的语法结构和语义更加接近自然语言,代码具有较好的可读性和可维护性。

由于C语言的抽象程度较高,程序员可以更快速地理解代码,并进行修改和维护。

同时,C语言具有模块化的特点,程序可以按模块进行组织,便于团队协作开发。

相比之下,汇编语言的语法和符号较为晦涩,阅读和理解汇编代码需要具备较深的计算机体系结构和指令集的知识。

汇编语言编写的程序通常较为底层,代码行数相对较多,可读性和可维护性较差,需要更高的技术水平和耐心。

3. 抽象程度C语言是一种高级语言,提供了丰富的语法特性和抽象层次,为程序员提供了更方便和高效的编程方式。

C语言可以在不同的计算机平台上进行移植,并且可以通过调用库函数实现复杂的操作,具备良好的抽象能力。

汇编语言是一种低级语言,提供了直接操作硬件的能力。

汇编程序员可以直接访问寄存器、内存等底层资源,实现对计算机的精细控制。

汇编语言相对于C语言来说更接近机器语言,具有更高的执行效率和更大的灵活性。

4. 机器依赖性C语言是一种面向过程的编程语言,编写的程序相对独立于具体的硬件平台,具有较好的可移植性。

通过编译器的编译,C语言可以在不同的操作系统和计算机上运行。

汇编语言则直接操作底层的机器指令和寄存器,与具体的硬件平台密切相关,不同的计算机架构和操作系统可能需要不同的汇编代码。

编程语言-编译型语言与解释型语言及汇编语言

编程语言-编译型语言与解释型语言及汇编语言

编程语⾔-编译型语⾔与解释型语⾔及汇编语⾔编程语⾔编译型语⾔和解释型语⾔计算机只能直接理解机器语⾔,所以使⽤任何⾼级语⾔(⽅便⽤户理解)编写的程序若想被计算机运⾏,都必须将其转换成计算机语⾔,也就是机器码(0,1)。

⾼级语⾔转换成机器语⾔的⽅式有两种:1、编译:将源代码编译成⽬标代码后执⾏,⾼级语⾔---编译---⽬标代码---执⾏--输出2、解释:边读源程序边执⾏。

⾼级语⾔----解释器----输出因此:⾼级语⾔分为编译型语⾔和解释型语⾔编译型语⾔编译型语⾔是:将c/c++之类的编译型语⾔编写好的程序转换成机器语⾔,再经过链接器链接形成⼆进制的可执⾏⽂件。

因为只需编译⼀次,后续需要运⾏该程序时,直接将可执⾏的⼆进制⽂件从硬盘载⼊内存中运⾏编译—>汇编语⾔—>机器语⾔解释型语⾔解释型语⾔:python源码⽆需编译成⼆进制代码,直接从源代码运⾏,运⾏时,python解释器将源码转换为字节码,再由⼀个专门的python 字节码解释器负责解释执⾏字节码(转换成机器语⾔、运⾏)。

总结由于前者⽆需每次执⾏都编译,直接运⾏;后者每次执⾏都需转换成字节码,因此前者运⾏速度快,后者跨平台性好。

前者由于程序执⾏速度快,同等条件下对系统要求较低,因此像开发操作系统、⼤型应⽤程序、数据库系统等时都采⽤它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语⾔,⽽⼀些⽹页脚本、服务器脚本及辅助开发接⼝这样的对速度要求不⾼、对不同系统平台间的兼容性有⼀定要求的程序则通常使⽤解释性语⾔,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。

关于javaJava和其他的语⾔不太⼀样。

Java程序从源⽂件创建到程序运⾏要经过两⼤步骤:1、java会由编译器进⾏编译⽣成class⽂件(字节码⽂件)---需要先编译2、字节码由java虚拟机解释运⾏,解释执⾏即为⽬标代码⽣成并执⾏。

单片机程序设计中C语言的具体应用

单片机程序设计中C语言的具体应用

本栏目责任编辑:谢媛媛软件设计开发单片机程序设计中C 语言的具体应用郑露萍(重庆工商职业学院,重庆401520)摘要:随着计算机技术的飞速发展,单片机的开发愈发受到社会各界的广泛关注,人们不断加大对单片机的研发力度,使得单片机的发展已经进入到智能化发展阶段。

C 语言因为具有较强的可移植性,在单片机程序设计中得到了广泛的应用。

该文全面地探索并介绍了单片机程序设计中C 语言的具体应用,仅供参考。

关键词:单片机程序;C 语言;应用中图分类号:TP311文献标识码:A文章编号:1009-3044(2021)15-0072-02开放科学(资源服务)标识码(OSID ):以往单片机程序的设计大多借助汇编语言完成,随着社会各领域对单片机功能需求的不断增多,汇编语言愈发满足不了单片机程序的设计需求。

作为一门高级编程语言,C 语言的应用范围较为广泛,在单片机程序设计中,合理地应用C 语言进行程序设计,对于单片机的开发的发展具有积极的意义。

1单片机及其开发情况从表面上看,单片机就是一个芯片,但是其功能却相当于一个微型的计算机,和普通的计算机相比,单片机不具备输入、输出端口设备。

单片机具有体积小、质量轻、价格便宜、方便携带、应用便捷等诸多优势。

深入的探索单片机的开发和使用过程,有助于帮助人们更好的认识计算机结构,了解计算机的运行原理。

就世界范围来看,单片机在工业控制领域的应用是最为广泛的,主要用于智能仪表、通讯设备等的功能保证上。

工业领域因为单片机的应用,生产效率得到明显的提升,同时产品更新换代的速度也越来越快。

和C 语言相比,汇编语言应用过程更加简单方面,控制效果更好,一直以来,单片机都应用汇编语言进行程序设计。

但是随着科技的发展,处理器对语言的需求越来越高,汇编语言已经难以满足这些需求,这样的背景下,C 语言在单片机开发中的应用优势愈发明显。

C 语言较汇编语言,可执性更高,应用过程更加方便,即使编程人员不了解单片机处理器的机构,也可以应用C 语言的编辑器完成程序设计,可以说,C 语言单片机的开发工作中具有十分广阔的应用前景。

计算机体系结构期末试题-湖南城市学院

计算机体系结构期末试题-湖南城市学院

题一11.计算机系统结构的层次结构由高到低分别为应用语言机器级,高级语言机器级,汇编语言机器级,操作系统机器级,传统机器语言机器级,微程序机器级12.计算机系统弗林(Flynn)分类法,把计算机系统分成单指令流单数据流(SISD)、单指令流多数据流(SIMD)、多指令单数据流和多指令多数据流四大类。

13.透明指的是客观存在的事物或属性从某个角度看不到,它带来的好处是简化某级的设计,带来的不利是无法控制。

22.数据结构和数据表示之间是什么关系?确定和引入数据表示的基本原则是什么?数据表示是能由硬件直接识别和引用的数据类型。

数据结构反映各种数据元素或信息单元之间的结构关系。

数据结构要通过软件映象变换成机器所具有的各种数据表示实现,所以数据表示是数据结构的组成元素。

(2分)不同的数据表示可为数据结构的实现提供不同的支持,表现在实现效率和方便性不同。

数据表示和数据结构是软件、硬件的交界面。

(2分)除基本数据表示不可少外,高级数据表示的确定和引入遵循以下原则:(1)看系统的效率有否提高,是否减少了实现时间和存储空间。

(2)看引入这种数据表示后,其通用性和利用率是否高。

15.引入数据表示的两条基本原则是:一看系统的效率有否提高;二看数据表示的通用性和利用率是否高。

13.计算机组成指的是计算机系统结构的逻辑实现,包括机器级内的数据流和控制流的组成及逻辑设计等。

计算机实现指的是计算机组成的物理实现,。

21、软件和硬件在什么意义上是等效的?在什么意义上是不等效的?逻辑上等效,性能、价格、实现难易程度上不一样。

22.说明翻译和解释的区别和联系.区别:翻译是整个程序转换,解释是低级机器的一串语句仿真高级机器的一条语句。

联系:都是高级机器程序在低级机器上执行的必须步骤。

19.计算机系统结构也称计算机体系结构,指的是传统机器级的系统结构。

它是软件和硬件/固件的交界面,是机器语言汇编语言程序设计者或编译程序设计者看到的机器物理系统的抽象。

c语言和汇编语言的关系

c语言和汇编语言的关系

c语言和汇编语言的关系随着计算机技术的不断发展,编程语言也在不断更新迭代。

C语言作为一种高级语言,其强大的功能和简洁的语法赢得了广泛的用户群体。

而汇编语言则是一种低级语言,它与硬件紧密相关,可以直接操作计算机的各种硬件设备。

虽然C语言和汇编语言在语言结构和语法上有很大的差异,但是它们之间有着紧密的联系和互动。

首先,C语言和汇编语言都是计算机语言的一种。

C语言是一种高级语言,具有可移植性和代码可读性的特点。

C语言的语法结构简洁明了,易于学习和使用,是很多程序员的首选语言。

而汇编语言则是一种低级语言,它直接操作计算机的硬件,可以对计算机的各种硬件设备进行直接控制,因此具有很高的效率和灵活性。

C语言和汇编语言之间的联系主要体现在以下几个方面:1. C语言可以调用汇编语言编写的函数。

在C语言中,可以使用汇编语言编写的函数来实现一些特殊的功能。

例如,在C语言中,可以使用汇编语言编写的函数来实现对硬件设备的直接控制,从而提高程序的运行效率。

2. C语言可以嵌入汇编语言代码。

在C语言程序中,可以嵌入一些汇编语言代码,用来实现一些特殊的功能。

例如,在C语言中,可以使用汇编语言代码来实现对特定寄存器的操作,从而提高程序的效率。

3. C语言可以生成汇编语言代码。

在C语言编译器中,可以将C 语言代码编译成汇编语言代码。

这样,程序员可以通过查看汇编语言代码来深入了解程序的运行过程,从而更好地优化程序。

4. 汇编语言可以调用C语言编写的函数。

在汇编语言中,可以直接调用C语言编写的函数,从而实现更加复杂的功能。

例如,在汇编语言中,可以调用C语言编写的函数来实现对字符串的操作。

5. 汇编语言可以直接操作C语言中的变量。

在汇编语言中,可以直接访问C语言程序中的变量,从而实现更加灵活的操作。

例如,在汇编语言中,可以直接操作C语言程序中的数组,从而实现更高效的数据处理。

总的来说,C语言和汇编语言之间的联系非常紧密,它们可以相互调用、嵌入、生成和操作,从而实现更加高效、灵活和复杂的功能。

计算机软件 第三章 练习题(带答案)

计算机软件 第三章 练习题(带答案)
判断题
1. 为了方便人们记忆、阅读和编程,对机器指令用符号表示,相 应形成的计算机语言称为汇编语言。T
2. 操作系统的三个重要作用体现在:管理系统硬软件资源、为用 户提供各种服务界面、为应用程序开发提供平台。T
3. 计算机应用最多的是数值计算。F 4. “引导程序”的功能是把操作系统的一部分程序从内存写入磁
效率低。T 52. PC机常用的操作系统有Windows、Unix、Linux等。T 53. 解释程序的执行过程是:对源程序的语句从头到尾逐句扫描,
逐句翻译,并且翻译一句执行一句。T 54. Windows操作系统中,磁盘碎片整理程序是一种应用软件。F 55. 实时操作系统的主要特点是允许多个用户同时联机使用计算
45. 计算机系统必须对信息资源的访问进行控制和管理,即对系统 内的信息规定各个用户对它的操作权限,如是否可读、是否可 写、是否可修改等,统称为“访问控制”。 T
46. 程序是软件的主体,单独的数据和文档一般不认为是软件。T 47. 通常将计算机软件分成系统软件和应用软件T
48. 所谓系统软件就是购置计算机时,计算机供应商提供的软件 F 49. Windows系列和Office系列都是目前流行的操作系统F 50. 操作系统是现代计算机系统必须配置的核心应用软件。F 51. 同一个程序在解释方式下的运行效率要比在编译方式下的运行
B. 应用软件
C. 财务软件
D. 文字处理软件
8. 一个用户若需在一台计算机上同时运行多个程序,必须使用具
有___ _功能的操作系统。
A. 多用户
B. 多任务
C. 分布式
D. 单用户
9. 下列关于计算机软件说法中,正确的是________。
A. 用计算机高级语言编写的程序都可直接在计算机上执行

c51复习题(2)

c51复习题(2)

一、填空1.KeiL C51软件中,工程文件的扩展名是___.c______,编译连接后生成可烧写的文件扩展名是_______HEX____。

2.C51支持的指针有基于存储器的指针和一般指针。

3.C51中,没有专门的循环语句,我们可以用函数___________完成一个字节的循环左移,用______完成二个字节的循环左移。

4.函数是C语言的基本单位。

5.C语言中输入和输出操作是由库函数和等函数来完成。

6.若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为__ ______。

7.是一组有固定数目和相同类型成分分量的有序集合。

8.变量的指针就是变量的;指针变量的值是。

9.在C语言中,把多个不同类型的变量结合在一起形成的一个组合型变量,称为,简称。

10.C51的数据类型有、、、。

11.C51的基本数据类型有、、、、、。

12.C51的构造数据类型有、、、。

13.C51的存储类型有data 、idata 、bdata 、xdata 、pdata 、code 。

14.C51的存储模式有SMALL模式、COMPACT模式和LARGE模式。

15.C51程序与其他语言程序一样,程序结构也分为、、三种。

16.数组的一个很重要的用途就是。

17.二、单项选择题:1.89S51的内部程序存储器与数据存储器容量各为多少?(c )(A)64KB、 128B ( B)4KB、64KB(C)4KB、128B (D)8KB、256B2.在8x51芯片里,哪个引脚用于控制使用内部程序存储器还是外部程序存储器?( b)(A)XTAL1 (B)/EA (C)/PSEN (D)ALE3.下列哪个不是KeilC的预处理命令?( c(A)#include (B)#define (C)#exit (D)#if4.下列哪个不是KeilC的数据类型?( b)(A)void (B)string (C)char (D)float5.在8x51的输入/输出端口里,哪个输入/输出端口执行在输出功能时没有内部上拉电阻( A)(A)P0 (B)P1 (C)P2 (D)P36.在KeilC的程序里,若要指定P0口的bit3,如何编写?( C)(A)P0.3 (B)Port0.3 (C)P0^3 (D)Port^37.在8x51里,若要扩展外部存储器时,数据总线连接哪个输入/输出端口?(A )(A)P0 (B)P1 (C)P2 (D)P38.点亮一般的LED所耗的电流约为多少?( D)(A)1~5uA (B)10~20uA (C)1~5mA (D)10~20mA9.在8x51的程序里,若要将个输入/输出端口设置成输入功能,应如何处理?( A)(A)先输出高电平到该输入/输出端口(B)先输出低电平到该输入/输出端口(C)先读取该输入/输出端口的状态(D)先保存该输入/输出端口的状态10.根据实验统计,当操作开关时,其不稳定关态大约持续多久?( B)(A)1~5ms (B)10~20ms (C)100~150ms (D)150~250us11.在KeilC里,判读开关状态时,使用if_else if语句与使用switch语句有何差异?( B)(A)if-else if 语句较快(B)if-else if语句有优先级(C)switch语句可判读较多开关状态(D)switch 语句有优先级12.对于低电平动作(低电平触发)的开关而言,下列哪个不是在输入口上连接一个上拉电阻VCC的目的?( A)(A)提供足够的驱动电流(B)防止确定状态(C)保持输入高电平(D)防止噪声干扰13.中断功能具有什么好处?(C )(A)让程序更复杂(B)让程序执行速度更快(C)让程序更有效率(D)以上皆非14.8x51的IP缓存器的功能为何?(A )(A)设置中断优先级(B)启用中断功能(C)设置中断触发信号(D)定义CPU的网址15.在KeilC里,中断子程序与函数有何不同?( A)(A)中断子程序不必声明(B)函数不必声明(C)中断子程序必须有形式参数(D)中断子程序一定会有返回值16.若要同时启用INT0及INT1中断功能,则应如何设置?(B )(A)TCON=0x81 (B)IE=0x85 (C)IP=0x83 (D)IE=0x0317.若要提高INT1的优先级,则应如何设置?( C)(A)IP=0x01 (B)IE=0x01 (C)IP=0x04 (D)IE=0x0418.在8x51的Timer里,若使用Mode 0,其最大计数值为多少个机器周期?(B )(A)65536 (B)8192 (C)1024 (D)25619.12 MHz的8x51系统里,哪一种方式一次可定时5ms?( A)(A)Mode0及Mode1 (B)Mode1及Mode2 (C ) Mode2及Mode3 (D) Mode3及Mode120.8x51的定时器,在下列哪种方式下具有自动加载功能?( C)(A)Mode0 (B) Mode1 (C)Mode2 (D)Mode321.若将Timer0设置为外部启动,则可由哪个引脚启动?( A)(A)P3.2 (B)P3.3 (C)P3.4 (D)P3.522.下列哪个IC具有将串行数据转换成并行数据的功能?( B)(A)74138 (B)74164 (C)74165 (D)7416823.在同一时刻,只能接收或发送信号者称为什么?( A(A)半双工(B)全双工(C)半单工(D)单工24‘在8x51的串行口里,在哪一种方式下,可利用Timer1产生波特率?(C )(A)Mode0 (B)Mode1 (C)Mode2 (D)Mode325.在8x51里,若通过串行端口传出数据,则只要将数据放入哪个寄存器,CPU就会自动将它会传出?( B)(A)SMOD (B)SBUF (C)PCON (D)RBUF26.在8x51里,若CPU完成串行端口数据的接收将会如何?( D)(A)将TI标志变为0 (B)将RI标志为0 (C)将TI标志变为了 1 (D)将RI标志变为127.若要设置8x51串行端口方式,可在哪个寄存器中设置?( B)(A)SMOD (B)SCON (C)PCON (D)TCON28.在共阳极8*8LED点阵里,其阳极如何连接?(C)(A)各行阳极连接到行引脚(B)各列阳极连接到列引脚(C)各行阳极连接到列引脚(D)各列阳极连接到行引脚29.在共阳极8*8点阵里,其阴极如何连接?( C)(A)各行阴极连接到行引脚(B)各列阴极连接到列引脚(C)各行阴极连接到列引脚(D)各列阴极连接到行引脚30.通常8*8LED点阵的驱动方式是什么?( B)(A)直接驱动(B)扫描驱动(C)双向驱动(D)以上皆非31.若要对LCM下指令,则应如保设置?(A )(A)RS=0,R/~W=0 (B)RS=1,R/~W=0 (C)RS=1,R/~W=1(D)RS=0,R/~W=132.若要在LCM中显示些字符,则需把所要显示的字符放入何处?(B )(A)CG RAM (B)DDRAM (C)IRAM (D)GDRAM33.若要将数据写入LCM,则应如何设置?(B )(A)RS=0,R/~W=0 (B)RS=1,R/~W=0 (C)RS=1,R/~W=1 (D)RS=0,R/~w=134.利用下列( D )关键字可以改变工作寄存器组A、interruptB、sfrC、whileD、using35.C51中一般指针变量占用( C )字节存储。

C语言程序设计习题答案(第三版)

C语言程序设计习题答案(第三版)

C语言程序设计(第三版)习题答案习题一一、名词解释(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)高级语言P2(5)汇编程序P3 (6)编译程序P4 (7)算法P5 (8)结构化程序设计方法P10二、简答题1. 设计程序时应遵循哪些基本原则?P4答:正确性、可靠性、简明性、有效性、可维护性、可移植性。

2. 算法具有哪些特点?答:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。

3. 算法的表示形式有哪几种?答:自然语言、伪代码、传统流程图、N-S流程图、计算机语言。

4. 结构化程序设计方法的三种基本结构是什么?答:顺序结构、选择结构和循环结构。

5. 传统流程图与N-S流程图最大的区别是什么?答:N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。

三、用传统流程图或N-S流程图表示求解以下问题的算法。

1. 从键盘输入10个整数,求出其中的最小数并输出。

2. 求1+2+3+…+100的值。

3. 求10~50的所有素数之和。

4. 求下列分段函数的值。

四、请参照本章例题,编写一个简单的C 程序,输出以下三行信息。

**************************Yangtze University**************************#include <stdio.h>void main(){printf("**************************\n");printf(" Yangtze University\n");printf("**************************\n");}4X-1 (X ≤1) 5(X-1)+6 (1<X<5) 6-3X (X ≥5)习题二一、选择题1~10: B C D C D D B C A A11~20: D A C D B D B A C D二、填空题1.字母 L 或字母 l2. %c(或字符) 、 %d(或整数)3.在程序运行过程中,其值可以在一定的范围内变化的量4.'\0'5.小数形式、指数形式6.关键字、预定义标识符、用户标识符7.字母、数字、下划线、数字8. 189. 2 、 1 、 3010.双精度实数或double11.赋值、逗号、 20 、 20 、 20 、 412. 4 、 4习题三一、选择题1~10: B C C B C C C D C C注:第4题答案D为: 10 22↙33↙二、填空题1. printf 、 scanf2. h3."%5d"4.'\0'5. e 、 E6. 67. s 、 c8. *9. - 、 +10. i三、编程题1. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进行输出。

C51语言编程基础

C51语言编程基础

图6 完成新建工程文件
21
KEIL C51快速入门
下面可以编写程序。 5、在图2-7中,单击“File”菜 单,再在下拉菜单中单击“New”选 项。
新建文件后屏幕如图8所示。
图7 新建文档
图8 完成 新建文档
22
KEIL C51快速入门
此时光标在编辑窗口里闪烁,这时可以键入应用程序了,建议首先保 存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As” 选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使 用的文件名,用C语言编写扩展名为(.c)如果用汇编语言编写扩展名必须 为(.asm)。然后,单击“保存”按钮。 如图8所示。
图10 添加文档
25
KEIL C51快速入门
选中main.c,然后单击“Add ”屏幕如下图所示。
图10 完成添加文档
注意到“Source Group 1”文件夹中多了一个子项“main.c”子 项的多少与所增加的源程序的多少相同。
7、现在便可输入程序了,输入完毕进行调试便可运行。
26
Proteus 快速入门
一些例程来介绍C51的程序设计思想。
1
单片机入门主要掌握以下知识和应用
最小系统能够运行起来的必要条件。 1.电源 2.晶振3.复位电路
对单片机任意IO口的随意操作
1.输出控制电平高低2.输入检测电平高低。 定时器:重点掌握最常用的方式2 中断:外部中断、定时器中断、串口中断 串口通信:单片机之间、单片机与计算机间
3
使用C语言的优点
C 语言具有结构化和模块化特点,便于阅读和维 护。
C 语言可移植性好,很多微控制器都支持C 编译 器。功能化的代码能够很方便的从一个工程移植 到另一个工程,从而减少了开发时间。 提供的库函数包含许多标准子程序,具有较强的 数据处理能力。

第二章 HI-TECH PICC C语言介绍

第二章 HI-TECH PICC C语言介绍

在早期的单片机开发应用中,人们都使用汇编语言编程。

汇编语言是机器语言的助记符,它更接近于底层,它直接控制硬件,因此运行速度快,程序的效率高。

但是汇编语言可读性差,不易于程序的维护,编程效率低可移植性差。

语言本是在计算机上运行的高级语言,它的可读性强,方便程序的修改与维护,因此它的编程效率高。

单片机上的编译器,就是把程序翻译成汇编程序的专用软件,由于这个翻译工作是由编译器完成的,因此它的代码有效率较低,运行速度慢些指单片机的运行速度。

要实现相同的功能,用编程的代码占用的程序空间有时可能会达到用汇编编程的代码空间的倍以上。

但是,在同样都熟悉语言与汇编语言的情况下,用编程所花费的时间可能只有汇编的甚至更少,而且今后软件的维护也方便。

在单片机中使用语言还有一大优点,那就是如果不涉及到单片机的硬件的程序块,如转换,校验等,与所用的单片机无关,基本上不用修改可以直接用在其他单片机甚至上,这个就是前面说的可移植性。

与计算机相比,单片机的硬件资源如程序存储器、数据存储器都要少得多,因此在用编程时,特别要注意节省程序空间和数据存储器空间。

在计算机上随便定义一个大数组的奢侈作风在单片机上是绝对行不通的。

系列单片机的堆栈只有级,因此子程序的嵌套调用也要特别注意。

系列单片机上可用的有、、、等公司提供的编译器。

目前国内用的较多是公司的编译器,本书以公司的为对象介绍编译器。

由于单片机本身的特点所致,使得与标准有较大的差别。

也就是说,就是原来对标准已经很熟悉的同学,也要认真学习这一章。

的特点•由于单片机的硬件资源有限,因此它不支持函数的递归调用。

•PIC16系列单片机无乘、除指令,用C编程时要尽可能减少乘除法运算。

因为最终单片机还是用移位的方法进行乘除运算。

•要减少复杂的计算,如开方、指数运算等,实际上单片机将耗费很多的时间来完成一个复杂的语句,如对一个长整型数的开方,用C编程只要一句,但单片机要执行1万多个指令周期!•编程时尽可能用整数来代替浮点数,如要表示2位小数的一个量,将此数放大100倍,显示时在百位上加上小数点,就是小数。

Keil中汇编和C混合编程

Keil中汇编和C混合编程

Keil中汇编和C混合编程此⽂系转载⽹友作品,引⽤地址:/mynameislinduan/article/details/8197694,引⽤标题:原⽂摘录:在如上图所⽰的“Source Group 1”上点右键,在菜单中选择 “Add Files to Group 'Source Group 1' ”找到你的KEIL安装⽬录,选择其中的“C51”⽬录下的“LIB”⽬录下的“C51S.LIB”⽂件,点击Add,然后Close即可。

注意,上图所⽰的⽂件选择框进⼊LIB⽬录下后,默认只显⽰.c⽂件,需要在“⽂件类型”中选择“Library file (*.lib)”,即可显⽰LIB⽂件了。

添加C51S.LIB到⼯程后,再次编译,警告信息消失。

linking...Program Size: data=9.0 xdata=0 code=28creating hex file from "sendata"..."sendata" - 0 Error(s), 0 Warning(s).好的,编译⼤功告成了,下载到⽬标板⼦,运⾏ok,这样就好了。

实际上,这个C51S.lib是c与汇编的连⽤的⼀些初始化设定所需要的。

Keil C嵌⼊汇编的⼀些注意事项:上⾯所弄的都可以了,其实keil C的编译器优化是做得蛮聪明的了,例如:; while((PCON&0x20)==0x20);; SOURCE LINE # 812C0119:MOV A,PCONJB ACC.5,?C0119其中绿⾊的是C代码,红⾊的是Keil编译之后的汇编代码。

////////////////////////////////////////////////////////////////////////////////////////////////////现在可以⽤c去做⼀些主要演算主要处理,⽤汇编去做⼀些驱动,中断处理,但是尽管Keil的优化有改进,但是还是有要注意的,有些需要注意的是:从数据存储类型来说,8051系列有⽚内、⽚外程序存储器,分别对应code、data、xdata、idata以及根据51系列特点⽽设定的pdata类型,使⽤不同的存储器,将使程序执⾏效率不同,在编写C51程序时,指定变量的存储类型,这样将有利于提⾼程序执⾏效率。

第4章-汇编语言程序设计教案

第4章-汇编语言程序设计教案

第四章教学实施计划3课堂教学实施计划第 8 课教学过程设计:复习 0 分钟;授新课 100 分钟讨论 0 分钟;其它 0 分钟授课类型(请打√):理论课√讨论课□实验课□习题课□其它□教学方式(请打√):讲授√讨论□示教□指导□其它□教学手段(请打√):多媒体√模型□实物□挂图□音像□其它□4.1 汇编语言程序设计概述程序实际上是一系列计算机指令的有序集合。

我们把利用计算机的指令系统来合理地编写出解决某个问题的程序的过程,称为程序设计。

程序设计是单片机应用系统设计的重要组成部分,单片机的全部动作都是在程序的控制下进行的。

随着芯片技术的发展,很多标准的或功能型的硬件电路都集成到了芯片中,所以,软件设计在单片机应用系统开发中占的比重越来越大。

一、汇编语言和高级语言汇编语言:用助记符表示的指令称为汇编语言,用汇编语言编写的程序称为汇编语言源程序汇编语言也是面向机器的,它仍是一种低级语言。

汇编语言离不开具体计算机的硬件,与硬件紧密相关。

高级语言:高级语言不受具体“硬件”的限制,具有通用性强,直观、易懂、易学,可读性好等优点。

多数的51单片机用户使用C语言来进行程序设计。

C语言已经成为人们公认的高级语言中高效、简洁而又贴近51单片机硬件的编程语言。

二、汇编语言的特点•助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。

•使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。

•汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。

•汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用。

三、汇编语言的语句格式•指令语句:每一条指令语句在汇编时都产生一个指令代码(也称机器代码),执行该指令代码对应着机器的一种操作。

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

C与汇编程序运行时间比较
1. 程序简介
分别采用C语言和汇编语言多次对大量数据进行冒泡排序,比较并分析在数据量不同时二者所用时间的不同。

2. 流程图
3. 代码实现
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#include"stdafx.h"
//void srand (unsigned int seed);
void bubble(int * d, long num);
void *malloc(unsigned int size);
void free(void *p);
int main()
{
double t=0.00;
int k,i,j,temp;
int* p;
clock_t start=0,end=0;
printf("要求数组的大小:\n");
scanf("%d",&k);
p=(int*)malloc(k*sizeof(int));
srand((int)time(0));
for(i=0;i<k;i++) //生成随机数组
{
p[i]=(int)(k*rand()/RAND_MAX);
}
start=clock(); //开始计时
for(i=0;i<k;i++) //冒泡排序
{
for(j=0;j<k-i;j++)
{
if(p[j]>p[j+1])
{
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
end=clock();
t=(double)(end-start)*1000.00/CLOCK_PER_SEC;
printf("在C语言中%d个数据冒泡排序共耗时%lf毫秒\n",k,t);
//汇编语言中的冒泡排序
for(i=0;i<k;i++) //重新生成随机数组
{
p[i]=(int)(k*rand()/RAND_MAX);
}
start=clock(); //开始计时
bubble(p,k);
end=clock();
t=(double)(end-start)*1000.00/CLOCK_PER_SEC;
printf("在汇编语言中%d个数据冒泡排序共耗时%lf毫秒\n",k,t);
free(p);
return 0;
}
void bubble(int* d, long num)//冒泡排序
{
long temp; // 定义局部变量,用于返回值
__asm { // 嵌入式汇编代码部分
start: mov ebx,d ; EBX=数组地址
mov ecx,num ; ECX=数据个数
dec ecx
xor edx,edx ; 计数器清零
lp1: MOV eax,[ebx+edx*4] ; 将前一个数放入eax
CMP eax,[ebx+(edx+1)*4] ; 与下一个数据比较
jge lp2 ; 如果前一个数小于或等于后一个数则继续本轮的比较
XCHG eax,[ebx+(edx+1)*4]; 否则交换两个数据
mov [ebx+edx*4]
lp2: inc edx ;将要比较的数组向后移动一位
cmp edx,num
jge lp1 ;如果移动到数组尾则跳出循环
lp3: dec ecx
xor edx,edx
jne lp1
}
}
4. 程序运行结果比较
(1). 一次运行结果截图;
5.心得与体会
由本次实验可以看出汇编语言编写的程序要比C语言编写的程序运行时间短。

因为汇编语言与机器语言是一一对应的,编译成CPU可执行的机器语言只需要一个翻译的动作就好。

而C语言语法是固定的,没办法与机器指令一一对应,所
以需要编译规则。

相关文档
最新文档