用C语言开发DSP系统的全过程

用C语言开发DSP系统的全过程
用C语言开发DSP系统的全过程

摘要:目前很多嵌入式系统以DSP 为核心构建,但是,采用汇编语言开发DSP 系统存在开发难度大、开发周期长、维护性差等缺点,应用C 语言开发DSP 系统是广大嵌入式开发者的迫切要求。有关单片机的C 语言开发有相当多的资料可以参考,而DSP 系统的C 语言开发却很少见。本文以TI 公司的DSP 器件TMS320F24X 系列为例,讲述怎样用C 语言开发一个完整的DSP 嵌入式系统。

大家在开发嵌入式产品时首先会想到用控制器的汇编语言编写*程序,主要原因是:

一、汇编语言生成的程序对应的二进制代码少,程序执行要比高级语言生成的程序快。

二、控制器刚问世时,没有相应的高级语言可供使用。

三、存储器的价格问题和寻址空间的限制。

以上所述问题目前都基本上解决了,在这就不阐述了。实际情况是:在单片机的应用领域,开发者开始使用C语言进行开发了。大家发现用高级语言开发嵌入式产品是如此轻松,并且C语言程序编译后的二进制代码也非常短小精练。

目前使用最多的数字信号处理器(DSP)是美国TI公司的TMS320家族,而工业控制上用的最多的又是TMS320F2XX系列,TI公司为每一个DSP 芯片提供了汇编语言和C语言供开发者选用,本人一直使用C语言进行产品开发,而目前很少见到这方面的介绍,所以特撰此文以TMS320F240为例,向各位同行推荐用C语言开发DSP嵌入式系统。

1、DSP的C语言的特殊性

大家在使用51系列C语言时已经注意到,控制器的C语言和PC机上使用的C有一个显著的特点:经常要对硬件操作,程序中有大量针对控制器内部资源进行操作的语句。所以,开发者要明白怎样用C语言来操纵控制器的内部资源,既怎样用C语句操作寄存器和内部存储器等。

举个例子,在51汇编中我们写MOV A,#20H,汇编程序能够识别A是指累加器,而在51 C程序中我们写ACC=32;,编译器能够识别ACC是指累加器而不是一般的变量。即每一个寄存器都有一个专有名字供开发者使用,它们定义在一个头文件reg51.h 中,程序员只需在程序的开始部分用#include“reg51.h”语句将该文件包含进来即可。注意:这些寄存器的名字不能用做变量名。

同样,在TMS320F240的C语言中也有一个头文件C240.H定义各个寄存器的名称,这里摘录几条语句进行介绍。

比如:#define IMR ((PORT)0x0004)

#define XINT1_CR ((PORT)0x07070)

IMR 、XINT1_CR就对应两个寄存器,实际是寄存器的地址,用高级语言的说法是指针。我们也在程序的开始部分用#include“c240.h”语句将该文件包含进来。这样,在DSP的C 语言中使用它们只需在前面加一个星号(*),例如,

*IMR=0X1010;/* 将16进制数1010H赋给IMR寄存器*/

*XINT1_CR=0X0A0B0;/*将16进制数A0B0H赋给XINT1_CR寄存器*/

开发者最好将c240.h这个文件打印出来,弄清楚各个寄存器的定义名称。至于不涉及硬件的语法和ANSI 语法一样,需要注意的是,有些ANSI标准中的函数在DSP的编译器中不提供,读者可以参考DSP编译器的C语言手册。搞清楚了这些特殊性,由汇编语言转到C语言开发是很容易的事,当然,没有汇编语言编程基础的人同样可以用C语言开发DSP应用系统。

有关嵌入式系统的C语言编程可参考《单片机与嵌入式系统应用》2001年1到6期上马忠梅的“嵌入式C编程技术”,本文不做讨论。下面只针对以TMS320F240芯片为处理器的嵌入式C语言编程进行阐述,希望能够指导读者进行具体操作。

2、TMS320F240芯片的C语言开发过程

简单地说,整个过程包括以下五个步骤:

编辑C语言源程序

编译源程序(注意编译参数)

链接目标文件(注意用CMD文件)

在线仿真

固化程序

下面分别进行阐述。

一源程序的编辑

可以用任何一个编辑器书写源程序,如EDIT、NOTEPAD等,最后以.C为后缀存盘。源代码可以写在一个C文件中,也可写在多个C文件中,有些预定义变量和函数原型声明可以集中放在一个头文件中。

注意事项:不要忘记在C程序的前面用#include “c240.h”将寄存器定义文件包括进来。

二源程序的编译

源程序编辑好后可以用DSPCL编译程序进行编译,生成OBJ文件。

使用格式:DSPCL 源文件名参数

例如:DSPCL EX1.C –V2XX –GK –MN

常用参数的意义:

V2XX:表示C编译器选择处理器2XX系列

GK:保留编译生成的汇编文件(.ASM文件)

MN:进行正常优化

其他参数请参考DSP编译器的手册。如果有多个源文件,分别编译。每一个源文件经编译后产生一个OBJ文件和ASM文件。

三目标文件的链接

(一)TI公司的COFF文件格式

TI 公司新的汇编器和编译器创建的目标文件采用COFF的目标文件格式(Common Object File Format)采用COFF格式有利于模块化编程,为管理代码段和目标系统存储器提供更加强有力和灵活的方法。基于COFF格式编写汇编程序或C语言程序时,不必为程序代码和变量指定目标地址,为程序编写和程序移植提供了极大的方便。

COFF格式的基本思想是:鼓励程序员在用汇编语言或C语言编程时运用代码块和数据块的概念。这种块称为SECTION,是目标文件中的最小单位。所有的块分为两大类:已初始化块和未初始化块,已初始化块包含程序代码和数据,未初始化块是为未初始化的数据在存储器中的保留块。C编译器对C程序编译后产生已初始化块和未初始化块,已初始化块如.text 块、.const 块、.cinit块;未初始化块如.bss 块。

举个例子,当程序员用C语句float data[100];定义一个数组时不需要指定这100个数组元素的具体位置,编译器会在数据区预留所需空间,到链接时链接器会具体定位。

(二)链接器对块的处理

链接器对块的处理有两个功能:其一,将COFF目标文件中的块用来建立程序块和数据块,并将这些块组合成可以被DSP芯片执行的COFF输出模块;其二,链接器为输出块指定存储位置。

链接器提供两个命令实现上述功能:MEMORY和SECTIONS。MEMORY命令定义目标系统的存储器,程序员可以定义每一块存储器并指定起始地址和长度;SECTIONS命令用来定义输入块的组合和输出块在存储器中的存放位置。若不用MEMORY和SECTIONS 命令,链接器采用缺省的分配算法;推荐使用这两个命令,但要注意这两个命令在CMD文件(链接器命令文件)中使用。

下面分析一个TMS320F240芯片的典型CMD 文件。(假设文件名EX1.CMD)

1、CMD文件的构成及其详细解释

BOOT.OBJ /* F240的中断矢量表,参见后面的说明*/

EX1.OBJ /* 源程序编译后对应的目标文件*/

/* 若程序有多个目标文件,一块写在这里*/

-STACK 0X400 /* 设定系统堆栈*/

-C /* ROM初始化*/

-O EX1.OUT /* 输出的文件名*/

-M EX1.MAP /* 输出映像文件名*/

-L RTS2XX.LIB /* 链入RTS2XX.LIB库*/

MEMORY /*MEMORY命令规定系统的存储器配置*/

{

PAGE 0:ROM0:origin=0000h,length=003fh /* FLASH ROM */

PAGE 0:ROM1:origin=0040h,length=0200h /*FLASH ROM */

PAGE 0:ROM2:origin=0240h,length=3000h /* FLASH ROM */

PAGE 1:RAM_B2:origin=0060h,length=0020h /* 内部RAM B2 */

PAGE 1:RAM_B1:origin=0300h,length=0100h /* 内部RAM B1 */

PAGE 1:RAM_B0:origin=0100h,length=0100h /* 内部RAM B0 */

PAGE 1:RAM_EX:origin=0d000h,length=2800h /* 外部扩展RAM */

}

SECTIONS /* SECTIONS 命令规定了程序中块的具体分配方法*/

{

.vectors:load=ROM0 /* 规定矢量表的存放位置*/

.cinit:load=ROM1 /* C初始化表的存放位置*/

.text:load=ROM2 /* 系统程序的存放位置*/

.bss load=RAM_B0 /*未初始化数据的存放位置*/

.const load=RAM_B1 /* 已初始化数据的存放位置*/

}

2、TMS320F240链接时所需的中断矢量表文件

TMS320F240的目标文件在链接时要用到中断矢量表,中断矢量表用汇编语言编写,和具体的DSP芯片有关,假设TMS320F240的中断矢量表对应的汇编程序为BOOT.ASM,汇编后的文件名为BOOT.OBJ。

下面是一个典型的矢量表文件(假设程序名为BOOT.ASM)。

.port /* 定义中断函数的名字*/

.globl _c_int0 /* 中断0对应的函数名*/

.globl _c_int1 /* 中断1对应的函数名,以下语句的意义相同*/

.globl _c_int2 /* 可以将中断函数名看作中断入口地址*/

.globl _c_int3 /* 矢量表的存放不需程序员干预*/

.globl _c_int4

.globl _c_int5

.globl _c_int6

.globl _c_int7

.globl _c_int8

.sect “.vectors”/*用.sect命令自定义一个块,用于存放中断矢量表*/

RSVECT B _c_int0 /* 中断0发生后,程序的跳转目的地址*/

INT1 B _c_int1 /* 中断1发生后,则跳到c_int1()函数处*/

INT2 B _c_int2 /* 意义同上,下同*/

INT3 B _c_int3

INT4 B _c_int4

INT5 B _c_int5

INT6 B _c_int6

用汇编器汇编该程序,命令形式:DSPA BOOT.ASM –V2XX 生成BOOT.OBJ文件供链接

器使用。这样,我们就可以按如下形式在C源程序中编写中断函数:

void c_intx()/* x为1—8中之一*/

{

中断程序的C语句系列;

}

注意事项:c_int0()是系统入口函数,用户不能编写。

经过上面对命令文件(CMD文件)和中断矢量表的介绍,接下来可以链接命令文件来生成所需要的OUT文件供DSP芯片执行或进行软仿真。

命令形式:DSPLNK CMD文件名例如:DSPLNK EX1.CMD

另一种情况是,不使用CMD文件,使用缺省配置,简单介绍如下:

命令形式:DSPLNK OBJ文件名参数

例如DSPLNK EX1.OBJ BOOT.OBJ –O XX1.OUT –M XX1.MAP

以上三步可以用下图描述:

四程序的仿真

EMURST 仿真器复位命令

EMU2XXW EX1.OUT 载入COFF格式的二进制代码仿真运行,有关调试器的使用限于篇幅在此就不做讨论了。

五程序的固化

程序仿真运行正确后,需要固化到FLASH ROM中,TMS320F240内部有16K字的FLASH ROM可以用来固化程序,而不需要外扩EPROM(程序不大于16K字的情况下)。

TI公司提供有固化程序的软件,可以通过仿真器经JTAG口将程序写入芯片内。目前发展了一种新的固化技术,可以通过串口写入DSP芯片,特别适合于现场调试。下面介绍通过JTAG口的固化方法。

首先用EMURST命令复位调试器,然后执行下面三个批处理文件。

第一步,执行BC0.BAT 批处理文件,将FLASH ROM 清除(CLEAR),使全为0。

第二步,执行BE0.BAT 批处理文件,将FLASH ROM 擦除(ERASE),使全为1。

以上两步不需要修改软件包中自带的这两个BAT文件。

第三步,执行BP16K.BAT 批处理文件,将自己的OUT文件写入到DSP内部的FROM中。执行这一步之前,要先修改BP16K.BA T,将待写入的OUT文件替换成自己的OUT文件,下面看一下这个批处理文件。假设软件包的安装目录为C:\DSP,该目录下有一个子目录SRC。

prg2xx -p 240 -m 0x0006 -w 6 src\c2xx_bpx.out 要写入的OUT文件

如果要将EX1。OUT写入到DSP的FLASH中,则执行下面的命令:

prg2xx -p 240 -m 0x0006 -w 6 src\c2xx_bpX.out c:\dsp\EX1.out

经过以上步骤既完成了程序固化,可以将系统放到现场实验了。

注意:固化程序时,CPU的一定要工作在20MHz的频率下。在SRC子目录下有一个配置文件C240_CFG.I文件,读者可以根据程序说明并结合自己系统的外部晶振频率将CPU的工作频率设为20MHz(写入时的频率)。

结论

本文以TMS320F240的开发为例,介绍了怎样用C语言开发DSP系统的全过程,希望对读者会有所启发和帮助。有关怎样用C语言编程使用TMS320F240内部其他资源(如:定时/比较器、ADC、SCI、SPI、中断器)和怎样扩展DSP的外围电路等编程技术见后面的叙述。

本文来自: https://www.360docs.net/doc/2f7689576.html, 原文网址:https://www.360docs.net/doc/2f7689576.html,/mcu/dsp/0073191.html

直到接触到DSP,由于使用TI的库文件例程的缘故,对结构体,联合体等有了进一步的了解,也对一个工程变量的使用有了更深的认识。下面对谈谈对DSP C刚入门者的一些建议:

DSP程序的定位配置——CMD文件,要求熟悉DSP的存储器结构。这一部分对接触硬件多一些的新手很容易,其实也就是配置一般的C语言编译器的一部分,比如A VR单片机的头文件,cpu选择等在DSP中就是这一部分完成。另外还要注意TI例程中对加密位,看门狗的处理。

当然是C语言的一些基础了:运算符,优先级,几个基本流程控制语句。这些无论是什么C 平台运行都一样的,基础中的基础。但是也很容易因为这些基础的简单的问题,导致一些很郁闷的结果。也是因为对这些基础的概念的理解深入程度影响你的软件思想。

结构体,联合体,位域的运用,最好能有一个对比,了解运用的场合及优缺点。有了这些基础,就很容易明白TI例程的一些基本结构。

变量的作用域以及生存期,这样才能从最初的单个的C文件过渡到C工程,才能更好地了解模块化编程地基本要素,实现基础。

Q格式等的应用,因为大多数DSP都是定点的,而做运算处理的很多时候都不可避免要用到浮点数。使用Q格式才能更好的发挥dsp高速的特性。所以有人说“不会使用Q格式的DSP程序员不是优秀的程序员”!

另外我觉得如果用DSP参与控制的话,最好能熟悉一些面向对象的程序语言,比如C++。要能了解用C实现面向对象的方法。为什么呢?一是面向对象我个人觉得在写程序方面模块化等要好一些,特别是控制领域,我看过一些高手的PLC程序也是采用的面向对象的思想构件模块的,从那以后我的单片机程序才开始这样靠拢,也确实发现了一些好处。比如对那些c流程中多次要操作的资源,有时候会出现一些共用操作的位置错误。二是TI的例程中有好多地方用到了这些思想,要明白这些东西,你才能更容易理解那些例程。这一部分我推荐一本书《DSP C2000程序员高手进阶》。

数据结构知识,DSP要做运算,肯定要涉及到一些好的数据结构。才能更好的优化算法。matlab的运用。matlab提供了强大的数学运算能力,还能对DSP结合CCS进行仿真。可以把程序员从繁琐的底层编程中解放出来。个人感觉matlab给编程思想和底层程序提供了一个连接,一个平台。

本文来自: https://www.360docs.net/doc/2f7689576.html, 原文网址:https://www.360docs.net/doc/2f7689576.html,/mcu/dsp/0073169.html

C语言程序设计精髓编程题在线测试

#include #include int main() { intaa, bb, cc; double re; printf("Input math1, English and math2:"); scanf("%d,%d,%d", &aa, &bb, &cc); re = ( aa * 5 + bb * 1.5 + cc * 3.5) / 10; printf("Final score = %.2f\n", re); return 0; }

#include #include int main() { float re; inti, day; printf("Input length and days:"); scanf("%f,%d", &re, &day); for ( i=0; i< day; i++) { re = re / 2; } printf("length=%.5f\n", re); return 0; }

#include #include int main() { float re; printf("Input payment p:"); scanf("%f", &re); re = re * 0.92; printf("price = %.1f\n", re); return 0; }

#include #include typedefstruct clock { int hour, minute, second; }CLOCK; int main() { CLOCK clock1,clock2; int diff=0, hour, minute; printf("Input time one(hour, second):"); scanf("%d,%d", &clock1.hour,&clock1.minute); printf("Input time two(hour, second):"); scanf("%d,%d", &clock2.hour,&clock2.minute); diff = abs((clock1.hour * 60 + clock1.minute) - (clock2.hour * 60 + clock2.minute)); hour = floor(diff / 60); minute = diff % 60; printf("%d hour %d second\n",hour, minute); return 0; }

C语言程序设计基础试题及答案

第一部分C语言基础 一、选择题 1、以下正确得C语言标识符就是() A。%X B。a+b?C.a123 D.test! 2、已定义int a,b;则以下不正确得C语句就是() A.a*=5;??B。b/=2;? C.a+=1、75;?D.b&&=a; 3、若x、i、j与k都就是整型变量,则执行下面表达式后x得值为( ) x=(i=4,j=16,k=32) A.4?B.16 ?C.32 D.52 4、C语言中得标识符只能由字母、数字与下划线三种字符组成,且第一个字符( ) A.必须就是字母???B.必须为下划线? C.必须为字母或下划线D.可以就是字母、数字、下划线中得任一字符 5、下面正确得字符常量就是( ) A.“c”? B。’\\”? C.‘w’??D.” 6、设int a=2,b=0,c;则执行语句c+=b&&a--后, c得结果为( )。 A.0,1B.1,0 ?C.2,0 D.不确定 7、以下不正确得C语言标识符就是()?A) int B)a_1_2?C)ab1exe D)_x 8、以下就是正确得C语言标识符就是( )。?A)#define?B)_123 C) %d D) \n 9、下列四组字符串中都可以用作C语言程序标识符得一组就是() 。?A) prin tB)i\am C)Pxq D)str_l ???oodbs tart$it line# _3d one_half My-〉bookCpp ? pow 10、下面各选项组中,均就是C语言关键字得组就是()。?A)auto,enu

m,include B)switch,typedef,continue?C)signed,union,scanf?D)if,s truct,type 11、下列不属于C语言关键字得就是( ) 。 A)default?B)register C)enum ?D)external 12、C语言程序从main()函数开始执行,所以这个函数要写在( )。?A) 程序文件得开始?B)程序文件得最后?C)它所调用得函数得前面 D) 程序文件得任何位置 13、下列关于C语言得叙述错误得就是( ) A)大写字母与小写字母得意义相同?B) 不同类型得变量可以在一个表达式中 C)在赋值表达式中等号(=)左边得变量与右边得值可以就是不同类型?D) 同一个运算符号在不同得场合可以有不同得含义 14、在C语言中,错误得int类型得常数就是( ) 。?A)32768?B)0 C)037?D) 0xAF 15、将字符g赋给字符变量c,正确得表达式就是( )。 A) c=\147 ?B)c="\147" ?C)c='\147' 16、下列转义字符中错误得一个就是( )。 A) ’\000’ B)'\0014' ?C) ’\x111’ D) ’\2’ 17、将空格符赋给字符变量c,正确得赋值语句就是( )。 A) c=’\0’ B) c=NULL C)c=0 D)c=32 18、已知:char a=’\70’;则变量a中()。 A)包含1个字符?B)包含2个字符?C) 包含3个字符?D) 说明非法 19、字符串"\”EOF\n=-\61\””得长度就是( )。 A)8 ?B) 9?C)14?D)非法字符串

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

C语言程序设计经典必背程序

C语言程序设计典型编程必背 1.计算机1-3+5-7+。。。-99+101的值 #include main ( ) { int i,t=1,s; s=0; for(i=1;i<=101;i+=2) { t=t*i; s=s+t;t=t>0?-1:1; } printf(“%d\n”,s); } 2.输入一个十进制数,将他对应的二进制数的各位反序,形成新的十进制数输出。11—1011—1101—13 #include main ( ) { int n,x,t; printf(“shuruzhengshu:”); scanf(“%d”,&n); x=0; while(n!=0) { t=n%2; x=x*2+t;n=n/2; } printf(“xindezhengshu:%d\n,x”); } 3.给出年月日,计算出该日是该年的第几天。 #include main ( ) { int year,month,day,days,i,d; printf(“shuru nian,yue,ri:”); scanf(“%d,%d,%d”,&year,&month,&day); days=0; for(i=1;i

case 7: case 8: case 10: case 12:d=31;break; case 4: case 6: case 9: case 11:d=30;break; case 2:if(year%4==0&&year%100!=0||year%400==0) d=29; else d=28; } days+=d; } printf(“%d nian %d yue %d ri shigainiande %d tian。\n”,year,month,day,days+day); } 4.求100——200间的素数。按每行10个数打印输出。要求在奇数中找素数。 #include main ( ) { int m,k,i,n=0; for(m=101;m<=200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k+1) { printf(“%d”,m);n=n+1; } if(n%10==0) printf(“\n”); } printf(“\n”); } 5.下面的程序功能是求1!+3!+5!+。。。+n!的和。 #include main ( ) { long int f,s; int i,j,n;s=0;

年C语言程序设计基础期末考试试卷‘B’及答案

年C语言程序设计基础期 末考试试卷‘B’及答案 The following text is amended on 12 November 2020.

一、单项选择题 1. 在C语言中,下面字符串能用作变量名的是( )。 A、a+b B、auto C、2-and D、a2 2. 若double x=2,y;则执行y=x+3/2;后,y的值是( )。 A、 B. C. D. 3 3. 下列关于C语言中字符常量与字符串常量的叙述中,错 误的是( )。 A、字符常量是用单撇号括起来的一个字符 B、空格字符也可用作字符常量 C、字符串常量是用单撇号括起来的一个字符序列 D、字符串常量是用双撇号括起来的一个字符序列 4. 若有以下变量说明和数据的输入方式,则正确的输入语 句为( )。

变量说明:float x1,x2; 数据的输入方式:<回车> <回车> A、scanf(“%f,%f”,&x1,&x2); B、scanf(“%f%f”,&x1,&x2); C、scanf(“%,%”,&x1,&x2); D、scanf(“%%”,&x1,&x2); 6. 在一个源文件中定义的全局变量的作用域为()。 A. 本文件的全部范围 B. 从定义该变量开始至本文件结束 C. 本函数的全部范围 D. 本程序的全部范围

7. 当调用函数时,实参是一个数组名,则向函数传送的是( )。 A、数组的长度 B、数组的首地址 C、数组每一个元素的地址 D、数组每个元素中的值 8.若j为整型变量,则下面while循环( )。 j=10; while(j!=0) j=j-1; A、执行0次 B、执行1次 C、执行10次 D、执行无限次 9. 在while(x)语句中的x与下面条件表达式等价的 是:( )。 A、x!=0 B、 x==1 C、x!=1 D、x==0 10. 以下对C语言函数的描述中,正确的是( )。 A、调用函数时,参数可以是表达式

汇编语言程序设计

汇编语言程序设计 一、选择题 (共72题) 1、 用于指针及变址寄存器的有()。 A、 AX,BX,CX,DX B、 SP,BP,IP C、 CS,DS,SS D、 PSW 考生答案:B 2、 完成把汇编语言源程序模块转换为目标模块的程序是()。 A、 编辑程序 B、 汇编程序 C、 连接程序 D、 调试程序 考生答案:B 3、 指令JMP FAR PTR DONE中的寻址方式属于()。 A、 段内转移直接寻址 B、 段内转移间接寻址 C、 段间转移直接寻址 D、 段间转移间接寻址 考生答案:C 4、 对于下列程序段: AGAIN:MOV AL,[SI]

MOV ES:[DI],AL INC SI INC DI LOOP AGAIN 也可用()指令完成同样的功能。 A、 REP MOVSB B、 REP LODSB C、 REP STOSB D、 REPE SCASB 考生答案:A 5、 在程序执行过程中,IP寄存器中始终保存的是()。 A、 上一条指令的首地址 B、 下一条指令的首地址 C、 正在执行指令的首地址 D、 需计算有效地址后才能确定地址 考生答案:B 6、 在汇编语言程序的开发过程中使用宏功能的顺序是()。 A、 宏定义,宏调用 B、 宏定义,宏展开 C、 宏定义,宏调用,宏展开 D、 宏定义,宏展开,宏调用 考生答案:C 7、 CPU要访问的某一存储单元的实际地址称()。 A、 段地址

偏移地址 C、 物理地址 D、 逻辑地址 考生答案:C 8、 AND、OR、XOR、NOT为四条逻辑运算指令,下面解释正确的是()。 A、 指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B、 指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C、 指令AND AX,OFH执行后,分离出AL低四位 D、 NOT AX,执行后,将AX清0 考生答案:C 9、 完成对CL寄存器的内容乘以2的正确操作是()。 A、 ROL CL,1 B、 MUL 2 C、 SHL CL,1 D、 SHR CL,1 考生答案:C 10、 检查两个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP A L,BL”指令后应跟的分支指令是()。 A、 JE LOP1 B、 JAE LOP1 C、 JC LOP1 D、 JGE LOP1 考生答案:B 11、 已知变量VAR为字型,则TYPEVAR=()。

(完整版)《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

实验一基础汇编语言程序设计

实验一基础汇编语言程序设计 实验目的 1.学习和了解TEC-XP十六位机监控命令的用法; 2.学习和了解TEC-XP十六位机的指令系统; 3.学习简单的TEC-XP十六位机汇编程序设计。 实验内容 1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容; 2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。 3.学习联机使用TEC-XP教学试验系统和仿真终端软件。 实验要求 在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。 实验步骤 1.关闭电源,将大板上的COMl口与PC机的串口相连; 2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可; 3.置控制开关为001110(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。其它实验相同; 4.按一下“RESET”按键,再按一下“START”’按键,主机上显示: 5.用R命令查看寄存器内容或修改寄存器的内容 1.用R命令查看寄存器或修改寄存器内容 1)在命令行提示符状态下输入: R↙;显示寄存器的内容 注:寄存器的内容在运行程序或执行命令后会发生变化。

2)在命令行提示符状态下输入: R R0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格, 也可有—个或数个空格 主机显示: 寄存器原值:xxxx 在后面输入新的值0036 再用R命令显示寄存器内容,则R0的内容变为0036。 2.用D命令显示存储器内容 在命令行提示符状态下输入: D 2000↙ 会显示从2000H地址开始的连续128个字的内容; 连续使用不带参数的D命令,起始地址会自动加128(即80H)。

C语言程序设计基础

题型及分数: 单选题:25分 判断题:10分 填空题:15分 程序分析题:20分 编程题:30分 其中:课后习题及复习大纲中相类似题所占比例在70%-80%。 带*号的内容和复习题为较难部分,为非重点考察内容。 第一章C语言程序设计基础(出题比例4-6%) 1.程序设计语言的基本概念 ?程序 ?程序设计语言 ?常用程序设计语言及其类型 ?源程序、编译、目标文件、连接、可执行程序 ?编程的步骤 2.C语言程序的基本结构 (1) C源程序的框架 C源程序的框架,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 (2) C语言源程序的书写规则: ?C源程序是由一个主函数和若干个其它函数组成的; ?函数名后必须有小括号,函数体放在大括号内; ?C程序对大、小写字母书写敏感; ?每句的末尾加分号; ?可以一行多句; ?可以一句多行; ?可以在程序的任何位置加注释,注释的方式。 3.C语言程序设计的的基本步骤和调试过程 复习题:/***** 1. 每个C语言程序中有且仅有一个函数,它是程序的入口和出口。 2. 引用C语言标准库函数,一般要用预处理命令将其头文件包含进来。 3. C语言属于() A.高级语言 B. 低级语言 C.中级语言 D. 机器语言 4. C语言规定了若干有特定意义、为C语言专用的单词,称为关键字。 5. C语言的语句以结尾。 6. C语言源程序经过编译以后生成文件,生成的文件名后缀为,经过连接后生成文件,后缀为 7.C语言中不能使用关键字作为标识符。(√)

第二章基本数据类型,运算符与表达式(出题比例20-30%) 关键知识点: 1.常量,变量: a)标识符的命名规则 b)常量,变量的概念:直接常量,符号常量,变量必须先定义后使用 c)变量名和变量值的区别。 2.C语言中的基本数据类型 a)各种数据类型的数据在内存中的存放方式 b)掌握各种数据类型数据的常量使用方法,特别注意字符常量和字符串常量的区别使 用 c)整型,字符型,浮点型变量的定义和引用方法 d)数据的数据类型,数据的取值范围,数据在内存中存放方式三者之间的联系 3.运算符和表达式的使用方法 a)自增、自减运算符 b)赋值运算符 c)算术运算符及表达式 d)逗号运算符及表达式 e)*位运算符及表达式 f)sizeof运算符及表达式 g)*强制数据类型转换符及表达式 4.运算符的优先级和结合性 本章复习题: 课后习题:一、单选题,二、填空题 1. C语言的标识符命名规则中,第一个字符可以为字符‘#’或‘&’ .(×)。 2.下列全部属于合法的用户标识符的是() A.A1 P_0 dS B. float 2la _A C. *a hy kk D. _123 temp main 3. C语言对字母的大小写不敏感。(×) 4. C语言中,符号常量由宏定义命令#define来定义。(√) 5. 在VC 6.0中,数据类型int,char,float和double所占的内存字节数分别是、、和。 6.下列四个选项中,均是合法的整型常量的选项是A A.160 –0XFFFF 011 B。-0XCDF 01A 0XE C.-01 986,012 0688 D。-0X48a 2e5 0x

汇编语言程序设计

汇编语言程序设计 实验报告 实验名称上机过程及顺序结构与分支结构程序设计实验班级 学号 姓名 日期2017年10月26号 成绩 评阅人 软件学院

一、实验目的与意义 理解并熟练掌握汇编语言程序设计过程中的编辑、汇编、链接和调试等各个步骤,提高对汇编课程内容的理解和汇编语言的掌握,通过上机练习加深对课程内容的理解和掌握。通过汇编语言编制的程序上机调试、运行检验程序设计是否正确。熟悉和掌握编辑、汇编、连接和调试四个实用程序的使用方法,掌握调试程序中的几个常用命令的使用方法。熟悉其基本的指令操作,debug调试操作命令以及分支结构、顺序结构和循环结构的程序设计。 二、实验环境 操作系统:Microsoft Windows8 集成环境:Masm for Windows 上机地点:信息楼B405教室 三、实验的预习内容 预习的主要内容: 1. 使用DEBUG命令的方法; 2. 熟悉掌握从理论上定义数据的类型(即DB,DW,DD,); 3. 分支结构和顺序结构的步骤以及相关的指令; 4. 常用的标志位状态及相应的作用; 实验思路: 在对题目进行分析后,分析出解题方法,并做出与实验思路相对应的程序框图。依照程序框图的内容输入相对应的代码,最终在调试代码后,发现并解决一系列的汇编语言错误。进一步优化算法。实验之前必须了解十进制、十六进制和ASCII码之间的转换。预习查表法相关命令,掌握顺序程序的结构,从键盘输入数据的命令及显示到屏幕上的命令。 实验一: 题目1:将程序编辑、汇编、连接并通过集成环境中的debug调试,观察运行结果;用E命令修改指定地址的数据,再用G命令执行程序查看变化,用A 命令将加法指令修改成减法指令,再将其编译运行,查看寄存器值变化的异同。 题目2:分别用DB、DW和DD数据段9H,0FAH,41H,27H,编译链接之后生成exe文件,再用debug的r命令找到数据段地址,用d命令指定数据段地址,观察汇编后在机器内部对应的存储情况。 实验二: 先设置数据段地址和堆栈段地址;设置堆栈段指针;读取一个字符然后存储在AL中;用BX来存储AL中字符对应的数值;将BX中的值作为偏移地址;并在数据段中查找对应字符串;最终输出结果结束程序。 实验三: 先初始化数据段地址与堆栈段地址;设置堆栈段指针;然后将数据段中的data1放入AL中;读取数据段中的data2并判断data2是否大于0;然后读取数

C语言程序设计50例(经典收藏)

水仙花 #include void main() { int a,b,c,i; for( i=100;i<1000;i++) { a=i/100; b=i%100/10; c=i%10; if(a*a*a+b*b*b+c*c*c==i) { printf("\n"); } } } 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有

的排列后再去掉不满足条件的排列。 2.程序源代码: #include "stdio.h" #include "conio.h" main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); } getch(); } 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按1 0%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码:

《C语言程序设计基础》 试卷A及参考答案

《c语言程序设计基础》试卷 (A卷) 考试时间:90分钟闭卷任课老师: 班级:学号:姓名:成绩: (每小题2分,共30分) 、由C++源文件编译生成的目标文件的缺省扩展名为() A、cpp B、exe C、obj D、lik 2、下列中,不是C++合法的标识符() A、2mn B、m123 C、kk D、a_1 3、C++中,基本数据类型不包括() A、int B、float C、char D、class 4、x和y均为bool量,则x| |y为真的条件是() A、它们均为真 B、其中一个为真 C、它们均为假 D、其中一个为 5、C++中,一个字符型数据在内存中占()字节。 A、4 B、2 C、1 D、8 6、字符串常量”hello”的长度是() A、5 B、6 C、7 D、8 7、以下语句,int i=2,j=2,m,n;m=i++;n=++j;则m,n,i,j的值分别为() A、2,3,2,2 B、2,3,3,3 C、2,2,3,3 D、3,3,2,2 8、假定a为一个整型数组名,则元素a[4]的字节地址为()

A、a+4 B、a+8 C、a+16 D、a+32 9、 x>0 || y==5的相反表达式为()。 A、 x<=0 || y!=5 B、 x<=0 && y!=5 C、 x>0 || y!=5 D、 x>0 && y==5 10、在下面的函数声明中,存在着语法错误的是() A、void BC(int a , int) B、void BD(int , int) C、void BE(int , int=5) D、int BF(int x ; int y) 11、循环体至少被执行一次的语句为()。 A、for循环 B、while循环 C、do循环 D、任一种循环 12、已知一函数中有下列变量定义,其中属于静态变量的是() A、int a=5; B、static double b; C、register char c; D、auto short d; 13、do语句能够改写为()语句。 A、复合 B、if C、switch D、 while 14、要使语句: p=new int[10]; 能够正常执行,p应定义为() A、int p; B、int p[10]; C、int *p; D、int (*p)[10]; 15、编写C++程序一般需经过的几个步骤依次是( )。 A、编译、编辑、连接、调试 B、编辑、编译、连接、调试 C、编译、调试、编辑、连接 D、编辑、调试、编辑、连接 二、填空题(每小题1分,共10分) 1、使用const 语句定义一个标识符常量时,则必须对它同时进行。 2、用于输出表达式值的标准输出流对象是_________,用于从键盘上为变量输入

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

C语言程序设计基础知识 习题一及参考答案

第一章:程序设计基础知识 一、单项选择题 1、以下( )是面向过程的程序设计语言。 A)机器语言B)汇编语言C)高级语言D)第四代语言 2、程序设计一般包含以下四个步骤,其中其中首先应该完成的是( )。 A)设计数据结构和算法B)建立数学模型 C)编写程序D)调试和运行程序 3、以下常用算法中适合计算等差级数的算法是( )。 A)枚举法B)递推法C)分治法D)排序法 4、以下不属于算法基本特征的是( )。 A)有穷性B)有效性C)可靠性D)有一个或多各输出 5、以下描述中不正确的是( )。 A)程序就是软件,但软件不紧紧是程序。 B)程序是指令的集合,计算机语言是编写程序的工具。 C)计算机语言都是形式化的语言,它有一个语法规则和定义。 D)计算机语言只能编写程序而不能表示算法。 6、下面描述中,正确的是( ) A)结构化程序设计方法是面向过程程序设计的主流。 B)算法就是计算方法。 C)一个正确的程序就是指程序书写正确。 D)计算机语言就是编写程序的工具而不是表示算法的工具。 7、下面描述中,不正确的是( )。 A)递归法的关键是必须有一个递归终止的条件。

B)递归算法要求语言具有反复自我调用子程序的能力。 C)对于同一个问题,递推算法比递归算法的执行时间要长。 D)递推算法总可以转换为一个递归算法。 8、N-S图与传统流程图比较,主要优点是( )。 A)杜绝了程序的无条件转移。 B)具有顺序、选择和循环三种基本结构。 C)简单、只管。 D)有利于编写程序。 A)B)C)D) 二、填空题 1、在流程图符号中,判断框中应该填写的的是________。(判断条件) 2、结构化程序设计是__________应遵循的方法和原则。(面向过程编程) 3、结构化程序必须用__________程序设计语言来编写。(具有结构化控制语句) 4、可以被连续执行的一条条指令的集合称为计算机的________。(程序) 5、只描述程序应该“做什么”,而不必描述“怎样做”的语言被称为________。(面向对象) 6、任何简单或复杂的算法都是由_____和_____这两个要素组成。(数据结构算法) 7、算法的_______特征是指:一个算法必须在执行有限个操作步骤后终止。(有穷性) 8、在三种基本结构中,先执行后判断的结构被称为_________。(直到型循环结构) 9、在程序设计中,把解决问题确定的方法和有限的步骤称为______。(算法) 10、程序设计风格主要影响程序的________。(可读性) 11、用模块组装起来的程序被成为________结构化程序。(模块化) 12、采用自上而下,逐步求精的设计方法便于____________。(结构化和模块化) 三、应用题

大学MOOC哈工大C语言程序设计精髓第六周编程题答案

大学M O O C哈工大C语言程序设计精髓第六周 编程题答案 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出?Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 #include<> #include <> int main() { char score[100]; int flag = 0, i, s; char grade; printf("Please input score:\n"); while (1) { flag=0; scanf("%s", score); for (i = 0; i < strlen(score); i++) { if (score[i] >= '0' && score[i] <= '9') { continue;

} else { flag = 1; break; } } s = atoi(score); if (s < 0 || s > 100 || flag == 1) { printf("Input error!\n"); printf("Please input score:\n"); continue; } else{ break; } } s = atoi(score); if (s >= 90) {

汇编语言程序设计

实验四程序设计 一、实验目的 学习数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用DEBUG 中的D命令观察DB、DW、DD存储数据的格式;熟悉汇编语言的基本框架,掌握编写汇编语言程序的基本方法。 二、实验题 1、已知当前数据段中DADT1和DADT2开始分别存放若干字节数据,数据个数相同,编制程序检查两数据块中数据是否相同,若相同,则在屏幕上显示1,否则显示0。 【参考程序如下】 DSEG SEGMENT DATA1 DB 'ABCDEFG3' DATA2 DB 'ABCDEF3G' CNT DW 8 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG MOV DS,AX MOV DL,31H LEA SI,DATA1 LEA DI,DATA2 MOV CX,CNT DEC SI DEC DI AGAIN:INC SI INC DI MOV AL,[SI] CMP AL,[DI] LOOPZ AGAIN JZ DISP DEC DL DISP: MOV AH,2

INT 21H MOV AH,4CH INT 21H CSEG ENDS END START 阅读程序,理解循环程序结构及执行过程,并改成串指令实现。 2 编写程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。 三、实验报告 写出程序清单,记录运行结果。 改写串指令实现: DSEG SEGMENT DATA1 DB'ABCDEFG3' DATA2 DB'ABCDEF3G' CNT DW8 DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG MOV DS,AX MOV ES,AX MOV DL,31H LEA SI,DATA1 LEA DI,DATA2 MOV CX,CNT CLD

C语言程序设计100个经典例子

经典C语言程序设计100例 1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数 13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值19.求解"完数" 20.球体自由落下物理问题 21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和 25.求1+2!+3!+...+20!的和26.利用递归方法求5! 27.将输入字符以相反顺序打印28.岁数问题 29.求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色 33.学习gotoxy()与clrscr()函数34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序 38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出 41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external的用法 45.使用register定义变量方法46.宏#define命令练习(1) 47.宏#define命令练习(2) 48.宏#define命令练习(3) 49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与& 52.学习使用按位或| 53.学习使用按位异或^ 54.取一个整数从右端开始的4~7位。55.学习使用按位取反~ 56.用circle画圆形 57.学用line画直线58.用rectangle画方形59.画图综合例子60.画图综合例子2 61.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse 64.利用ellipse and rectangle画图 65.画个最优美的图案66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出 68.多个整数后移位置问题 69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表 73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n 77.填空练习(指向指针的指针) 78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数 85.判断一个素数能被几个9整除86.两个字符串连接程序87.结构体变量传递88.读取数字的整数值并打印出该值个数的* 89.数据加密90.专升本一题91.时间函数举例1 92.时间函数举例2 93.时间函数举例3 94.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数 97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1 100.文件操作应用2 -------------------------------------------------------------------------------- c语言经典100题【实用】

相关文档
最新文档