如何编写和语言程序解读

时间:2019-05-13 19:56:52下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《如何编写和语言程序解读》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《如何编写和语言程序解读》。

第一篇:如何编写和语言程序解读

如何编写和汇编语言程序

可以用普通文本编辑器编辑汇编语言源程序。常用的有 MS-DOS 下的 EDIT 文本编辑程序,Windows 下的写字板(WORDPAD.EXE)等。用户通过屏幕编辑程序键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为· ASM。软件运行基本环境

运行汇编程序必备的软件环境: DOS 操作系统;汇编系统。汇编系统盘应包含如下文件: MASM 宏汇编程序文件 LISK 连接程序文件

CRFF 索引程序文件(也可不用)汇编源程序编写)源程序的书写格式

当 CPU 访问内存时,是把存储器分成若干个段,通过 4 个段寄存器中存放的地址对内存储器访问,因此在编源程序时必须按段的结构来编制程序。由于每个段的物理空间为≤ 64KB,所以程序中各段可以分别为一个或几个。源程序的书写一般有如下形式:

逻辑堆栈段 堆栈段名 SEGMENT STACK 用变量定义预置的堆栈空间 · ·

堆栈段名 ENDS 逻辑数据段 数据段名 SEGMENT 用变量定义预置的数据空间 · ·

数据段名 ENDS 逻辑代码段 代码段名 SEGMENT ASSUME 定义各段寻址关系 过程名 PROC … 程序 · ·

过程名 ENDP 代码段名 ENDS END 过程名或起始标号

在源程序中最少要有一个代码段,数据段根据需要可有可无,也可以增设附加段。对于堆栈段也可以根据需要可有可无,但在连接(LINK)时计算机将显示警告性的错误: Warning : N STACK segment There was 1 error detected.在程序中如果没有用到堆栈时,该错误提示不影响程序的运行,如果程序中用到堆栈时必须设置堆栈段。其中: SEGMENT、ASSUME、PROC … ENDP 为伪指令,伪指令是发给汇编程序 ASM 的,而不和微处理器打交道,在汇编时不产生目标代码,只是把源程序中各段的设置情况告诉汇编程序。)段寄存器的段地址的装入

Assume 伪指令语句只是建立了当前段与段寄存器的联系,但不能把各段的段地址装入相应的段寄存器中,段寄存器的段地址的装入是在程序中完成的。(1)DS、ES、SS 的装入

由于段寄存器不能用立即数寻址方式直接传送,所以段地址装入可通过通用寄存器传送给段寄存器。MOV AX,逻辑段名 MOV 段寄存器,AX 其中逻辑段名为程序中定义各逻辑段的名字,(不包括代码段),段寄存器是指与各逻辑段相对应的各段寄存器(DS、ES、SS)。(2)CS 的装入

代码段寄存器是装当前执行目标代码的段地址,IP 是提供下一条要执行的目标代码的偏移量,为了保证程序的正确执行,CS 和 IP 装入新值时是一起完成的。对 CS 和 IP 的装入有如下几种情况:

①根据用户程序中的伪指令 END 后的标号为 CS 和 IP 提供代码段的段地址和目标代码的偏移地址。

②在程序运行过程中,当执行某些指令和操作时,CPU 自动修改 CS 和 IP 的值,使它们指向新的代码段。)程序中的数据与变量

在汇编源程序中的数据除了立即数,由指令产生的数和通过键盘输入的数以外,还胡大量的数据是通过伪指令语句进行预置和分配的,也就是在某逻辑段中(除代码段),将所需的数据以某种形式存放起来,在程序中可任意调用。在数据定义的同时还可以定义变量,将变量与数据结合在一起。可以为某个变量分配存储空间以便在程序执行过程中存放中间结果和最终结果,使用起来极为方便。

(1)变量与数据的定义

变量与数据的定义可以通过符号定义伪指令 EQU、=和数据定义伪指令 DB 或 DW 或 DD 来实现。EQU 和=可以出现在程序的逻辑段内也可出现在逻辑段外。

(2)汇编程序中数据的提供方法 ①用数据定义伪指令提供数据

如果程序要求原始数据为一批数据时,用数据定义伪指令 DB、DW 和 DD 来提供较为方便。②用立即数的形式提供数据

当原始数据只有几个时,一般用立即数的方法来提供。当然,用立即数的方法只是将一个数据传送到通用寄存器中,它只是通过通用寄存器传送数据。③用编程的方法提供数据

假如原始数据是一组有规律的数据项,则用编程序的方法形成这一组数据,不用专门为这组数据分配存储单元,节省了存储空间。④用键盘提供数据

当原始数据为任意数据时,一般用键盘输入方法,调用 DOS 21H 中断。

(3)数据的输出方式 ①在显示器上显示一个字符

调用 02H 号功能调用号,发 21H 号中断,将要显示的字符的 ASCII 码送入 DL,就可在显示器上显示该字符。②在打印机上输出一个字符

调用 05H 号功能调用号,发 21H 号中断,将要打印字符的 ASCII 码送入 DL,就可在打印机上打印出 DL 中的字符。

4)返回 DOS 状态的方法

当执行.EXE 文件时,是在 DOS 状态下进行的,如果希望在执行完.EXE 文件后正常返回 DOS 状态,一般用如下两种方法:采用 DOS 4CH 功能调用和采用返回(RET)断点的方法。

汇编处理 — 执行宏汇编程序 MASM.EXE

用汇编语言编写的源程序必须是一个完整的源程序。宏汇编程序对汇编语言源程序的汇编过程包括语法检查和数据代码汇编两部分,生成目标程序和辅助信息文件。为了完成汇编任务,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。源程序用宏汇编程序翻译(汇编)后,可以得到三个文件:一个是扩展名为.OBJ 的目标文件,在该文件中,将源程序的操作码部分变为机器码,但地址操作数是可浮动的相对地址,而不是实际地址,因此需经 LINK 连接文件进行连接才能形成可执行文件。第二个文件是列表文件,扩展名为.LST,它把源程序和目标程序列表,以供检查程序用。第三个文件是交叉索引文件,扩展名为.CRF,它是一个对源程序所用的各种符号进行前后对照的文件。其中目标文件是必须产生的,而其它两个文件在需要时给予命令就可产生,对连接和执行汇编程序无直接的关系。)汇编操作过程

在 DOS 状态下,键入 MASM ↓则调入宏汇编程序,屏幕显示与操作如下: masm ↓ Microsoft(R)Macro Assemble Version 5.00 Copyright(C)Microsoft Corp 1981-1985,1987,All right reserved.Source filename [.ASM ]: MYFILE ↓ Object filename [MYFILE.OBJ ]: MYFILE ↓ Source listing [NUL.LST ]: MYFILE ↓ Cross-reference [NUL.CRF]: MYFILE ↓ 50678 + 410090 Bytes symbol space free 0 Warning Errors 0 Severe Errors 其中划线部分为用户键入部分,MYFILE 为源程序名(MYFILE.ASM),方括号中是机器规定的默认文件名,如果用户认为方括号内的文件名就是要键入的文件名,则可只在划线部分键入回车符。如果不想要列表文件和交叉索引文件,则可在 [NUL.LST ] 和 [NUL.CRF] 后不键入文件名只键入回车符。

当回答完上述四个询问后,汇编程序就对源程序进行汇编。在汇编过程中,如果发现源程序中有语法错误,则提示出错信息,指出是什么性质的错误,错误类型,最后列出错误的总数。之后可重新进入屏幕编辑状态,调入源程序(MYFILE.ASM)进行修改,修改完毕,再进行汇编,直到汇编通过为止。

如果在汇编时不需要产生列表文件(.LST)和交叉索引文件(.CRF),调用汇编程序时可用分号结束。如果需要产生.OBJ 和.LST 文件,不需要.CRF 文件,则在分号前面加两个逗号即可。如果 4 个文件都需要,用简便的操作方法是在分号前用了 3 个逗号。)列表文件(.LST)

列表文件(.LST)是通过汇编程序(MASM)产生的,可以在 DOS 状态下用 TYPE 命令显示或打印该文件,以便分析调试源程序。如显示 D 盘上已存在的列表文件 MYFILE.LST 操作方法如下: D> TYPE MYFILE.LST ;↓ 列表程序由三部分组成:(1)源程序和目标程序清单

列表程序同时列出源程序和对应的机器语言清单。列表程序的第一列给出每条指令所在行号;第二列给出从段的首地址开始的每条指令存放的偏移地址;接着是数字列,给出对应每条语句的机器码和对应于存放在栈段和数据段的值,在机器码加上“ R ”的指令表示:这条指令在连接时可能产生与列出来的偏移地址不同的地址,因为这些偏移地址可能与其它模块有关;最右边就是用汇编语言编写的源程序。(2)段信息汇总表

在段信息汇总表中列出该程序用了哪几个段,如:代码段 CODE、数据段 DATA 和堆栈段 STACK ;每个段所占存储空间的长度(字节数);每个段的定位类型,包括 PAGE(页)、PARA(节)、WORD(字)和 BYTE(字节),它们表示此段的起始边界要求,即起始边界地址应分别可以被 256、16、2 和 1 除尽。该列表清单 中是以 PARA 为 CODE 段、DATA 段和 STACK 段的起始边界地址。最后一列为段的组合类型;段的组合类型是告诉连接程序,本段与其它段的关系,组合类型有 NONE、PUBLIC、COMMOM、AT 表达式、STACK 和 MEMORY。NONE :表示本段与其它段不发生逻辑关系,即每段都有自己的基本地址。是隐含组合类型。

STACK :表明连接程序首先要把本段与同名同类别的其它段相邻地连接在一起,然后为所有定义为栈段的连接在一起的段,定义一个共同的段基地址,即连接成一个物理段。

在列表程序的源程序中只有一个栈段,在栈段定义中给出了组合类型为 STACK,因此在段信息汇总表中列出了该项,在本程序中它没有任何意义,因为没有其它栈段与它连接,只是为了说明这个问题而设置的。(3)符号汇总表

在列表程序中最后部分列出了符号汇总,是指在源程序中用户定义的符号名、类型、值和所在段。

如果在源程序中存在某些语法错误时,列表文件可提示某条语句有哪些错误,出错提示显示在出错指令行的下面,因此用户可借助列表文件很快地找到错误行,以便调试。另外由于列表文件给出了各条指令的偏移地址,对和程序时设置断点很方便。)交叉索引文件(.CRF)

汇编后产生的交叉索引文件,扩展名为.CRF, 它列出了源程序中定义的符号(包括:标号、变量等)和程序中引用这些符号的情况。如果要查看这个符号表,必须使用 CREF.EXE 的文件,它根据.CRF 文件建立一个扩展名为.REF 的文件,而后再用 DOS 的 TYPE 命令显示,就可以看到这个符号使用情况表。具体操作方法如下: D> CREF ↓

cref filename [.CRF] : MYFILE ↓ list filename [MYFILE.REF] : ↓ D> TYPE MYFILE.REF ↓

目标代码链接程序----LINK.EXE

用汇编语言编写的源程序经过汇编程序(MASM)汇编后产生了目标程序(.OBJ),该文件是将源程序操作码部分变成了机器码,但地址是可浮动的相对地址(逻辑地址),因此必须经过连接程序 LINK 连接后才能运行。连接程序 LINK 是把一个或多个独立的目标程序模块装配成一个可重定位的可执行文件,扩展名为.EXE 文件。此外还可以产生一个内存映象文件,扩展名为.MAP。1)连接程序执行过程

在 DOS 状态下,键入 LINK ↓(或 LINK MYFILE ↓)则系统调入 LINK 程序,屏幕显示操作如下: D> LINK ↓

IBM Personal Computer Linker Version 2.00(C)Copyright IBM Corp 1981,1982,1983 Object Modules [.OBJ] : MYFILE ↓ Run File [MYFILE.EXE] : MYFILE ↓ List File [NUL.MAP] : MYFILE ↓ Libraries [.LIB] : ↓

其中划线部分为用户键入部分,MYFILE 为源程序名,方括号内为机器默认文件名,当用户认为方括号中的文件名就是要键入的文件名时,可在冒号后面只键入回车。

其中 MAP 文件是否需要建立,由用户决定,需要则键入文件名,不需要则直接送入一个回车键。

最后一个询问是问是否在连接时用到库文件,对于连接汇编语言源程序的目标文件,通常是不需要的,因此直接键入回车键。

与汇编程序一样,可以在连接时用分号结束后续询问。例如:

D> LINK MYFILE ;↓

IBM Personal Computer Linker Version 2.00(C)Copyright IBM Corp 1981,1982,1983 连接后只产生 MYFILE.EXE 文件。如果除 MYFILE.EXE 文件外还要产生 MYFILE.MAP 文件,则在分号前加两个逗号。D> LINK MYFILE,;↓ IBM Personal Computer Linker Version 2.00(C)Copyright IBM Corp 1981,1982,1983 2)内存映象文件(.MAP)

由连接程序 LINK 产生的扩展名为.MAP 文件,它实际上是连接程序的列表文件,它给出了每个段的地址分配情况及长度。

在 DOS 状态下,用 TYPE 命令显示打印出来。例如: D> TYPE MYFILE.MAP ↓ Start Stop Length Name Class 00000H 0000FH 0010H DATA 00010H 0004FH 0040H STACK 00050H 0005FH 0010H CODE Origin Group Program entry point at 0005:0000 从中可以看到,源程序 MYFILE 中定义了三个段:数据段(DATA)起始地址为 00000H,终止地址为 0000FH,长度为 0010H 个字节;堆栈段(STACK)起始地址为 00010H,终止地址为 0004FH,长度为 0040H 个字节;代码段(CODE)起始地址为 00050H,终止地址为 0005FH,长度为 0010H 个字节。

应用程序执行

当用连接程序 LINK 将目标程序(.OBJ)连接定位后,可产生可执行的应用程序文件(.EXE),可以在 DOS 状态下执行该程序。执行操作如下: D> MYFILE ↓ 或 D> MYFILE.EXE ↓

在源程序 MYFILE 中如果有显示结果的指令,则在执行程序后可以看到执行结果;如需要动态调试应用程序 MYFILE.EXE,则可以借助动态调试程序 DEBUG.COM 来进行调试、运行,DEBUG 是一种支持命令行方式的汇编语言编程调试工具。

动态调试程序 DEBUG.COM 在编写和运行汇编程序的过程中,会遇到一些错误和问题,需要对程序进行分析和调试,调试程序 DEBUG 就是专为汇编语言设计的一种调试工具。它在调试汇编语言程序时有很强的功能,能使程序设计者接触到机器内部,能观察和修改寄存器和存储单元内容,并能监视目标程序的执行情况,使用户真正接触到 CPU 内部,与计算机产生最紧密的工作联系。

动态和程序 DEBUG 的主要特点 DEBUG 的执行 DEBUG 命令格式 主要 DEBUG 命令

动态和程序 DEBUG 的主要特点)能够在最小环境下运行汇编程序

在 DOS 状态下运行汇编程序,必须将程序经过 MASM 汇编程序,而后还要经过 LINK 连接程序产生可执行程序,才能最终运行,比较麻烦。在 DEBUG 状态下,为用户提供了调试、控制测试的环境,可以在此环境下进行编程、调试、监督、执行用户编写的汇编程序。因此调试周期短,为用户提供了极大的方便。2)提供极简单的修改手段

DEBUG 提供了修改命令,可以修改内存单元内容,修改寄存器的内容,为调试程序、修改程序带来了方便。3)提供用户与计算机内部联系的窗口

DEBUG 具有显示命令,它既可以使用户看到某内存单元或某一块单元内容,也可以看到 CPU 内部各寄存器的内容。用单步执行命令实现跟踪执行,每执行一步都使用户看到各寄存器的内容的变化,以便分析和调整程序。4)可装入、修改或显示任何文件

当然在 DEBUG 状态下运行汇编程序也具有一定局限性。在 DEBUG 状态下运行的程序不能使用宏汇编程序中的宏指令,大部分伪指令也不能使用,因此只能把程序分段调试。此外,不能调试太长的程序,只能分块进行中程序设计。在 DEBUG 状态下调试好的程序不能形成可执行文件(.EXE),因此调试好的程序只能记下,到编辑环境下重新键入调试好的程序,通过汇编程序(如 MASM),再通过连接程序(LINK)形成可执行文件(.EXE)。

DEBUG 的执行

在操作系统(DOS 或 WIndows)命令行方式下,直接调入 DEBUG 程序,键入命令的格式如下: D>DEBUG [d:][Path][filename[.ext]][Parm1][Parm2] 其中 [] 的内容为可选项,可以有也可以缺省。

[d:] 为驱动器号,指要调入 DEBUG 状态的可执行文件在哪个驱动器中,如 A:、B:、C: 等。[Path] 为路径,指要调入 DEBUG 状态的可执行文件是在哪个目录下或子目录下。

[filename[.ext]],指要调入 DEBUG 状态下的可执行文件的文件名,该文件可以是通过编辑、汇编、连接后产生的可执行文件,也可以是在 DEBUG 状态下汇编的程序 段,通过写盘命令 W 写入磁盘的文件。[Parm1][Parm2] 为任选参数,是给定文件的说明参数。

在启动 DEBUG 时,如果输入 filename(文件名),则 DEBUG 程序把指定文件装入内存,用户可以通过 DEBUG 的命令对指定文件进行修改、显示或执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令或装入命令把需要的文件装入内存,然后再通过 DEBUG 命令进行修改、显示或执行。当启动 DEBUG 程序后,屏幕上出现“—”,说明系统已进入 DEBUG 状态。DEBUG 命令格式(1)DEBUG 命令都是一个英文字母,后面跟着一个或多个有关参数。多个操作参数之间用“ , ”或空格隔开。(2)DEBUG 命令必须接着按 ENTER 键,命令才有效。

(3)参数中不论是地址还是数据,均用十六进制数表示,但十六进制数据后面不要用“ H ”。(4)可以用 Ctrl 和 Break 键来停止一个命令的执行,返回到 DEBUG 的提示符“—”下。(5)用 Ctrl - Num Lock 键中止正在上卷的输出行,再通过按任意键继续输出信息。主要 DEBUG 命令

(1)汇编命令 A

格式: a.A [ 段寄存器名 ]:[ 偏移地址 ] b.A [ 段地址 ]:[ 偏移地址 ] c.A [ 偏移地址 ] d.A 功能:用该命令可以将汇编语言程序直接汇编进入内存。

当键入 A 命令后,显示段地址和偏移地址等待用户键入汇编指令,每键入一条汇编指令回车后,自动显示下一条指令的段地址和偏移地址,再键入下一条汇编指令,直到汇编语言程序全部键入,又显示下一地址时可直接键入回车返回到提示符“-”为止。

其中 a 的段地址在段地址寄存器中,因此在使用该命令时必须将段地址寄存器送入段地址,c 的地址在 CS 中,d 的段地址在 CS 中,偏移地址为 100H。

(2)显示内存命令 D 格式: a.D [ 地址 ] b.D [ 地址范围 ] c.D 功能:显示指定内存范围的内容。

显示的内容为两种形式:一种为十六进制内容,一种为与十六进制相对应的 ASCII 码字符,对不可见字符以“·”代替。

对于 a、c 每次显示 128 个字节内容,b 显示的字节数由地址范围来决定。

若命令中有地址,则显示的内容从指定地址开始,若中中无地址(如 c)则从上一个 D 命令所显示的最后一个单元的下一个单元开始。若以前没有使用过 D 命令,则以 DEBUG 初始化的段寄存器的内容为起始段地址,起始偏移地址为 100H,即 CS:100。

对于 a 中的地址为偏移地址,段地址为 CS 的内容,对 b 中的地址范围,可以指定段地址和起始偏移地址和终止偏移地址。

(3)修改存储单元内容命令 E 格式: a · E [ 地址 ] [ 内容表 ] b · E [ 地址 ] 功能: a ·用命令所给定的内容表去代替指定地址范围的内存单元内容。b ·一个单元一个单元地连续修改单元内容。

其中:内容表为一个十六进制数,也可以是用单引号括起的一串字符。

(4)填充内存命令 F

格式: F [ 范围 ][ 单元内容表 ] 功能:将单元内容表中的内容重复装入内存的指定范围内。

(5)内存搬家命令 M

格式: M [ 源地址范围 ][ 目标起始地址 ] 其中源地址范围和目的起始地址为偏移地址,段地址为 DS 的内容。功能:把源地址范围的内容搬至以目标起始地址开始的存储单元中。

(6)比较命令 C

格式: C [ 源地址范围 ],[ 目标地址 ] 其中源地址范围是由起始地址和终止地址指出的一片连续的存储单元,目标地址为与源地址所指单元对比的目标地址起始地址。功能:从源地址范围是由起始的地址单元开始逐个与目标起始地址往后的单元顺序比较每个单元内容,比较到源终止地址为止。比较结果如果一致则不显示任何信息,如果不一致,则以 [ 源地址 ][ 源内容 ][ 目的内容 ][ 目的地址 ] 的形式显示失败单元地址及内容。

(7)搜索指定内容命令 S 格式: S [ 地址范围 ][ 表 ] 功能:在指定地址范围内搜索表中内容,搜索到就显示表中元素所在地址。

(8)检查和修改寄存器内容命令 R 格式: a · R b · R [ 寄存器名 ] 功能: a ·显示 CPU 内部所有寄存器的内容和全部标志位的状态。b ·显示和修改一个指定寄定器的内容和标志位的状态。

其中对状态标志寄存器 FLAG 以位的形式显示,显示时,8 个状态标志的显示次序和符号如表 B - 1 所示。表 B - 1 状态标志显示形式

标 志 位 溢出标志 OF 方向标志 DF 中断标志 IF 符号标志 SF 零标志 ZF 辅助进位 AF 奇偶标志 PF 进位标志 CF

(9)跟踪与显示命令 T

格式: a · T[ =地址 ] 或 T [ 地址 ] b · T[ =地址 ][ 条数 ] 或 T [ 地址 ][ 条数 ] 功能: a ·执行一条指定地址处的指令,停下来,显示 CPU 所有寄存器内容和全部标志位的状态,以及下一条指令的地址和内容。

b ·为多条跟踪命令,从指定地址开始;若命令中用 [ 地址 ] 给定了起始地址,则从起始地址开始,若未给定,则从当前地址(CS:IP)开始,执行命令中的 [ 条数 ] 决定一共跟踪几条指令后返回 DEBUG 状态。

(10)反汇编命令 U 格式: a · U [ 地址 ] b · U [ 地址范围 ] 功能:将指定范围内的代码以汇编 语言形式显示,同时显示该代码位于内存的地址和机器。

若在命令中没有指定地址则以上一个 U 命令的最后一条指令地址的下一个单元作为起始地址;若没有输入过 U 命令,则以 DEBUG 初始化段寄存器的值作为段地址,以 0100H 作为偏移地址。

(11)命名命令 N 格式: N 文件名

功能:在调用 DEBUG 时,没有文件名,则需要用 N 命令将要调用的文件名格式化到 CS:5CH 的文件控制块中,才能用 L 命令把它调入内存进行调试(其它形式参考 DOS 手册)。

(12)读盘命令 L

格式: a · L [ 地址 ][ 驱动器号 ][ 起始扇区号 ][ 所读扇区个数 ] b · L [ 地址 ] c · L 功能: a ·把指定驱动器和指定扇区范围的内容读到内存的指定区域中。其中地址是读入内存的起始地址,当输入时没有给定地址,则隐含地址为 CS:100H。起始扇区号指逻辑扇区号的起始位置。所读扇区个数是指从起始扇区号开始读到内存几个扇区的内容。驱动器号为 0 或 1,0 表示 A 盘,1 表示 B 盘。

b ·读入已在 CS:5CH 中格式化的文件控制块所指定的文件。在使用该命令前用 N 命令命名即可将要读入的文件名格式化到 CS:5CH 的文件控制块中,其中地址为内存地址。

状 态 有 / 无 增 / 减 开 / 关 负 / 正 零 / 非 有 / 无 偶 / 奇 有 / 无

显示形式(置位 / 复位)

OV/NV DN/UP EI/DI NG/PL ZR/NZ AC/NA PE/PO CY/NC c ·同 b ·地址隐含在 CS : 100H 中。

当读入的文件有扩展名.COM 或.EXE,则始终装入 CS:100H 中,命令中指定了地址也没用。其中 BX 和 CX 中存放所读文件的字节数。

(13)写盘命令 W

格式: a · W[ 地址 ][ 驱动器号 ][ 起始扇区号 ][ 所写扇区个数 ] b · W[ 地址 ] c · W 功能: a · 把在 DEBUGU 状态下调试的程序或数据写入指定的驱动器中 , 起始扇区号 , 所写扇区个数为要占盘中几个扇区。

写盘指定扇区的操作应十分小心,如有差错将会破坏盘上的原有内容。如果在命令行中的地址只包含偏移地址,W 命令认为段地址在 CS 中。

b ·当键入不带参数的写盘命令时,(或只键入地址参数的写盘命令),写盘命令把文件写到软盘上。该文件在用 W 命令之前用命名命令 N 将文件格式化在 CS:5CH 的文件控制块中。c ·只有 W 命令以前而没有任何参数时,与 N 配合使用进行写盘操作。在用 W 命令以前在 BX 和 CX 中应写入文件的字节数。

(15)输出命令 O

格式: O[ 端口地址 ] [ 字节值 ] 功能:向指定端口地址输出一个字节。

(16)运行命令 G

格式: G [ =地址 ][ 地址 [ 地址… ]] 功能:执行用户正在调试的程序。

其中地址为执行的起始地址,以 CS 中内容作为段地址,以等号后面的地址为偏移地址。再后面的地址为断点地址。在命令行中只有起始地址,没有断点地址,则程序在执行时不中断。DEBUG 规定最多设置 10 个断点地址。设置多个断点用于调试较大的程序,即程序中有多个模块、多个通路时用,比较方便,在执行时不论走哪条通路,程序都可以在断点处停下来,以便调整程序。

断点地址为程序中断处的偏移地址,段地址在 CS 中。

当执行在 DEBUG 状态下汇编的小段程序时,只用 G 命令即可。

(17)十六进制运算命令 H 格式: H 数据 1 数据 2 其中数据 1 和数据 2 为十六进制数据。

功能:将两个十六进制数进行相加、减,结果显示在屏幕上。(18)结束 DEBUG 返回到 DOS 命令 Q 格式: Q 功能:程序调试完退出 DEBUG 状态,返回到 DOS 状态下。

Q 命令不能把内存的文件存盘,要想存盘必须在退出 DEBUG 之前用 W 命令写盘

读书的好处

1、行万里路,读万卷书。

2、书山有路勤为径,学海无涯苦作舟。

3、读书破万卷,下笔如有神。

4、我所学到的任何有价值的知识都是由自学中得来的。——达尔文

5、少壮不努力,老大徒悲伤。

6、黑发不知勤学早,白首方悔读书迟。——颜真卿

7、宝剑锋从磨砺出,梅花香自苦寒来。

8、读书要三到:心到、眼到、口到

9、玉不琢、不成器,人不学、不知义。

10、一日无书,百事荒废。——陈寿

11、书是人类进步的阶梯。

12、一日不读口生,一日不写手生。

13、我扑在书上,就像饥饿的人扑在面包上。——高尔基

14、书到用时方恨少、事非经过不知难。——陆游

15、读一本好书,就如同和一个高尚的人在交谈——歌德

16、读一切好书,就是和许多高尚的人谈话。——笛卡儿

17、学习永远不晚。——高尔基

18、少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。——刘向

19、学而不思则惘,思而不学则殆。——孔子

20、读书给人以快乐、给人以光彩、给人以才干。——培根

第二篇:5编写一个C语言程序

前面几节介绍了常量和变量、运算符、表达式和语句的概念,对它们的使用有了一个大概的了解。也许刚学程序的人会觉得有些枯燥,下面我们就来编写第一个C语言程序。

#define PI 3.1416 main(){ float Radius,Area;scanf(%f,&Radius);/*输入半径的值*/ Area=PI*Radius*Radius;printf(%fn,Area);/*输出圆的面积*/ }

1.一个C语言程序,通常由带有#号的编译预处理语句开始。关于预处理我们在以后介绍,这里的#define PI 3.1415926相当于PI代表3.1416,下面在程序中遇到PI,我们就用3.1416替代一下。在以后的程序中,在学习预处理之前,我们都将不使用预处理语句。

2.main()任何一个完整的程序都需要main(),这是一个函数,具体什么是函数,以后再讲,这儿你就要记住就行。后面有一对{}把所有的语句都括在里面,表明那些语句都属于main()里面。程序运行时从这个左大括号开始。

3.{}里面的4行语句大家应该都能明白,先定义两个变量,一个代表半径,一个代表面积,然后输入半径的值,然后求面积,最后在屏幕上输出面积。程序到main()的那对{}的右大括号结束。求面积的语句Area=PI*Radius*Radius;相当于Area=3.1416*Radius*Radius;(完全用3.1416替代PI)。

具体程序从编写到运行得到结果的步骤为: 1.双击tc.exe,进入Turbo C 2.0编译界面 2.ALT+E 进入编辑模式 3.书写程序

4.F2 存储程序(也可进入File菜单,选择save),第一次存储需要写上程序名称(*.C),回车

5.ALT+F9 编译,如果有错误和警告,光标停留在错误行,回车进行修改,修改后,回到4;没有错,下一步 6.CTRL+F9 连接和运行程序

7.用ALT+F5查看程序运行结果,任意键返回程序

如何打开一个已有的C文件:

1.双击tc.exe,进入Turbo C 2.0编译界面

2.F3 进入load状态,找到所要打开文件的目录,找到文件,回车;后面都一样。具体的有哪些快捷键及其它们的作用,请查看第一节概述。

说明:

1.必须在程序的最开始部分定义所有用到的变量,例如这里的Area,Radius。2.变量的命名要尽量有意义,如用代表该意思的英文单词、或者是汉语拼音,例如这里的Radius,Area,绝对禁止用毫无干系的字母,如a,b,c。例如下面的程序,虽然意思和上面的一样,但是看上去意思不明朗,时间长了,很可能忘记程序本身的意思。对于仅仅是控制程序运行,不代表实际意思时,可以用一些简单字母。main(){ float a,b;scanf(%f,&a);b=3.1416*a*a;printf(%fn,b);} 3.采用层次书写程序的格式,要有合理的缩进,必要的时候要有空行,一行只书写一个语句。所有语句尽量不分行,除非太长(分行时变量、运算符,格式字符等等不能拆开),例如下面两个程序看起来就不好看了,虽然它们的功能和前面是一样的。main(){float Radius,Area;scanf(%f,&Radius);Area=3.1416*Radius*Radius;printf(%fn,Area);}

main(){ float Radius,Area;scanf(%f, %Radius);Area=3.1416*Radius *Radius;printf(%fn, Area);} 4.程序在适当的地方要用/*……*/注释,它的意思表示在/* */里面的所有字符都不参加编译。因为一个较大的程序,经过一段时间,有些地方可能连编程者都忘记了,增加注释可以帮助恢复记忆,调试程序时,也容易找出错误。注释也可以分行写。5.在书写{}时要对齐。虽然不对应也不影响程序运行,但对齐后方便以后检查程序,也是为了美观,特别是后面学到流程控制时,{}一定要对齐。

程序设计方法:

1.从问题的全局出发,写出一个概括性的抽象的描述。

2.定义变量,选取函数,确定算法。算法这个东西不好说,遇到的问题多了,自然就会形成自己一整套的算法。

3.按照解决问题的顺序把语句和函数在main()里面堆砌起来。一个好的C程序员应该做到: 1.在运行程序之前存盘

2.所有在程序中用到的常量都用预处理语句在程序开头定义 3.所有在程序中用到的函数都在程序开头声明 4.头文件的#ifndef 5.变量名和函数名使用有意思的英文单词或汉语拼音 6.尽量少用全局变量或不用全局变量

7.采用层次的书写程序格式,对for,while,if_else,do_while,switch_case等控制语句或他们的多重嵌套,采用缩格结构 8.所有对应的{}都对齐

9.尽量用for,而不用while做记数循环 10.尽量不用goto语句

11.一个函数不宜处理太多的功能,保持函数的小型化,功能单一化 12.一个函数要保持自己的独立性,如同黑匣子一样,单进单出 13.函数的返回类型不要省略

14.用malloc()分配内存空间时,以后一定要用free()释放 15.打开文件后,记住在退出程序前要关闭 16.出错情况的处理 17.写上必要的注释

这里说的是一些基本的,经常遇到的情况,还有其他很多要注意的地方,在实际编程中都会遇到.

第三篇:用VHDL语言编写的数字钟程序

永州职业技术学院

课 程 设 计

课程名称: EDA技术实用教程 题 目:基于FPGA的数字钟设计 系、专业: 电子技术系应用电子 年级、班级: 07级电子大专 学生姓名: 冯 苗 指导老师: 龙 安 国 时 间: 2008年12月

目 录

一、系统设计………………………………………………………..1.1设计要求…………………………………………………… 1.1.1任务………………………………………………..1.1.2要求……………………………………………….1.1.3题目分析………………………………………… 二.方案论证与比较…………………………………

2.1方案一 …………………………………………

2.2 方案二 ………………………………………… 2.3 方案三 …………………………………………

三、设计思路……………………………………………………

3.1硬件模块……………………………………………… 3.2软件模块………………………………………………….四、调试情况………………………………………………….五、系统调试…………………………………………………

六、心得体会……………………………………………………...附:参考文献……………………………………………………..用VHDL语言编写的数字钟程序

摘要:本设计要求一个12进制或24进制的具有时、分、秒计时功能的数字钟,并要求能进行时、分、秒调整,每逢时有报时功能。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。本设计基于FPGA芯片的数字钟的设计,通过多功能数字钟的设计思路,详细叙述了整个系统的硬件、软件实现过程,实现了时间的显示和修改功能、报时功能等,并尽可能的减少误差,使得系统可以达到实际数字钟的允许误差范围内。

关键词:FBGA、数码管、按键

一、系统设计

1.1 设计要求 1.1.1 任务

设计并制作一个数字钟,通过设计,掌握电子设计的一般思路,学习电子设计的一般方法。

1.1.2要求

(1)基本要求

①计时功能:这是数字钟的基本功能,每隔一秒钟计时一次,并在显示屏上显示当前时间。

②校时功能:能设置实时时间作为数字钟的当前时间,具有小时、分钟的手动校准时间功能。

(2)发挥部分

①计时进制的选择功能:十二小时制或二十四小时制可选择控制; ②整点报警功能:每逢整点自动报警; ③其他创新功能。二.方案论证与比较

2.1、方案一:采用74LS163和CD4046设计数字钟

图1.1.1 方案一电路图

晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。由CD4046组成的分频器电路将32768Hz的高频方波信号经32768(2次分频后得到2Hz的方波信号经过D触发器二分频得到秒信号供秒计数器进行计数。分频器实际上也就是计数器。时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器。时间计数器由74LS163组成.译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。

14)

2、方案二:采用AT89C52单片机、数码管设计数字钟

图1.1.2 方案二电路图

本方案采用AT89C52单片机,单片机的P1口接数码管显示电路,P0口接键控制数码管的显示,P2.0口接入整点报时电路,RESET接入复位和晶振电路。该电路能否成功,关键在于程序的编写而对元器件的要求不太高。用汇编编写得数字钟电路,采用分支结构编写,利用跳转指令与大量的中断指令.当没有按键扫描没有按键按下时,程序正常计数,当检测到有键按下时,程序运转到相应中断程序进行响应处理.从而实现了分支程序的处理.方案三:采用FPGA制成的数字钟

图1.1.3 方案三电路图

市电经过降压电路为FPGA芯片提供3.3V的直流电压,12MHZ的晶振信号加入到FPGA芯片的内定义PORT,切换键、调时键,输出的8个四位的BCD码,经过数据选择器使得某一位信号的BCD码被选中,被选中的信号经过3/8译码电路,送到数码管的进行段码显示.而数码管的位选端也有内部软件编程实现位选.而由时、分,信号为蜂鸣器提供闹钟信号.并口端为程序输入端.三.设计思路

3.1硬件模块

采用ALTER公司的ACE×1K系列的EP1K10TC100-3芯片,通过Quartus软件编译各个管脚的功能及特性.接入12MHZ时钟信号,经过内部软件分频.得到1HZ和1000HZ信号,得到的1HZ时钟信号作为内部秒个位计数模块的时钟信号,秒个位进行十进制计数,到9进位,为秒十位提供6进制时钟信号,当秒为59时,为分钟提供时钟信号.当秒进位信号作为低位十进制分计数器时钟.分钟计数器为59时,为小时计数器的个位提供时钟信号,当小时计数器、分钟计数器输出信号与闹钟预设信号一样时,扬声器发声.输出信号经过数据选择器选择1位BCD码输出到译码电路,译码后送到数码管显示.位选择信号为数码管显示提供条件.而分频得到的1KHZ的时钟频率作为位选计数器的时钟信号.由于该方案简单而且可靠性高,故采用此种方案.该数字钟可以实现3个功能:计时功能、整点报时功能和重置时间功能,因此有3个子模块:计时、报时(alarm1)、重置时间(s1、m1、h1、d1)。其中计时模块有4部分构成:秒计时器(second1)、分计时器(minute1)、时计时器(hour1)和星期计时器(day1)。

该数字钟可以实现3个功能:计时功能、整点报时功能和重置时间功能,因此有3个子模块:计时、报时(alarm1)、重置时间(s1、m1、h1、d1)。其中计时模块有4部分构成:秒计时器(second1)、分计时器(minute1)、时计时器(hour1)和星期计时器(day1)。

3.2软件模块 1)、分频器模块

其实是一个计数器,外加信号频率为12MHZ时,在内部定义了一个信号从0到11999999的整数型计数信号count1,当内部信号计数为11999999时,count1计数为0,产生进位信号CLK1为1,其余时间计数器正常计数.CLK为0,从而实现了12000000次分频.得到1HZ的时钟信号.内部定义了一个从0到11999的整数性信号countf,当内部信号计数为11999时,countf计数为0,产生进位信号CLK1为1,其余时间计数器正常计数.CLK为0,从而实现了12000次分频.得到1KHZ的时钟信号的位选信号.2)、秒计数模块

内部定义时钟其余时刻均为为秒计时器(second1)是由一个60进制的计数器构成的,具有清0、置数和计数功能。其中reset为清0信号,当reset为0时,秒计时器清0;set 为置数信号,当set为0时,秒计时器置数,置s1的值。clk为驱动秒计时器的时钟,sec为秒计时器的输出,ensec为秒计时器的进位信号,作为下一级的时钟输入信号。

3)、分计时器(minute1)是由一个60进制的计数器构成的,具有清0、置数和计数功能。其中reset为清0信号,当reset为0时,分计时器清0;set 为置数信号,当set为0时,分计时器置数,置m1的值。clkm为驱动分计时器工作的时钟,与ensec相连接;min为分计时器的输出;enmin为分计时器的进位信号,作为下一级的时钟输入信号。4)、时计时器(hour1)模块

是由一个24进制的计数器构成的,具有清0、置数和计数功能。其中reset为清0信号,当reset为0时,时计时器清0;set 为置数信号,当set为0时,时计时器置数,置h1的值。clkh为驱动时计时器工作的时钟,与enmin相连接;hour为时计时器的输出;enhour为时计时器的进位信号,作为下一级的时钟输入信号。

图7

5)、报时模块(alarm1)的功能是当整点(将min作为该模块的输入信号,min=00)时,alarm输出高电平,并且持续1分钟。清0端(reset)前面一小段(200ns)为低电平,后面均为高电平;设置min的值,使其分别为……58分、59分、00分、01分、02分、03分……,保存波形图,进行仿真,产生如下波形: 7

见由上述波形可以清楚的看到:alarm在0分时输出高电平,并且持续至1min不为0。

6)、去抖模块

定义变量fb范围0到29999,当外部时钟信号来临时候,fp计数,只有当FP为29999时,fp赋值为0.内部5ms信号反向输出.输出5ms时钟信号,该信号送到内部的D触发器中,只有按键按下且5ms时钟信号来临时,按键信号才被送到触发器.从而实现了去抖.7)、系统总调试(topclock)(Endtime为10us

在秒计时器的clk输入一个周期为5ns的时钟信号;清0端(reset)前面一小段(40ns)为低电平,后面均为高电平;置数端(set)前面一小段(60ns)为低电平,后面均为高电平;秒重置端(s1)可设置数值为50秒,分重置端(m1)可设置数值为57分, 时重置端(h1)可设置数值为23时, 星期重置端(d1)可设置数值为6(星期六);保存波形图,进行仿真,产生如下波形”

图8

由上述波形可以清楚的看到:当reset为0时,数字钟清0;当set为1时,数字钟置数

图9由上述波形可以清楚的看到:秒计时器开始计时,当到达59秒后,秒计时器sec又从0开始计时,同时分钟min加了1,为58分。

由上述波形可以清楚的看到:分计时器开始计时,当到达59分后,分计时器min又从0开始计时,同时小时hour加了1,为24时,即时计时器hour也又从0开始计时,而此时星期计时器day也由6加1后回0,又从0开始计时。当分计时器min为0时,alarm输出一个高电平,持续直到分计时器min的值为1。

图10

8)、用经过5ms去抖程序后,使得keyout输出一个脉冲,将此信号作为按键代码计数电路.为每一种按键代码赋已一定功能.从而实现一键控制.

程序流程图如下:

详细程序见附录。程序控制过程如下说明:

四、产品调试与结果分析 1)书写遗漏

错误提示在305行和307行附近有一个错误,没有加IF.查看后发现由于自己的疏忽,在结束时,没有加END IF.将307行中加入一行结束语句,问题解决.2)数码管显示时有闪烁

检查扫描信号时钟时,发现扫描信号时钟为100HZ,扫描频率过低,引起闪烁.检查分频部分程序,发现扫描信号频率设为100HZ,将扫描信号频率改为1000KHZ.然后发现无闪烁.修改有效.3)数码管秒个位显示时无2、8字符

检查后发现秒个位译码部分字符书写错误.将秒个位字符2、8赋值错误修改观察,有显示.五、心得体会

转眼一学期就要悄悄走远,感觉这些天是我学的最多的.通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,数字钟开始计数,但是始终看不到小时、星期的循环计数。后来,在数十次的调试之后,才发现是因为输入的时钟信号对于小时、星期来说太短了。经过屡次调试,终于找到了比较合适的输入数值:分钟的初始值可以设为57(58、59都可以),小时的初始值可以设为23,星期的初始值可以设为6,这样,仿真之后,就能清楚的看出分钟、小时的循环计数。另外,Endtime的值需要设置的长一点:10us左右,输入的时钟周期值要设置的短一点:5ns左右。

总的来说,这次设计的数字钟还是比较成功的,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。

附:参考文献

1、黄仁欣主编《EDA技术实训教程》,清华大学出版社,2006年第2版。

2、杨志忠主编《数字电子技术》,北京高等教育出版社,2003年12第2版。

3、潘松、黄继业主编《单片机实训教程》,科学出版社,2005年5月第2版。

附件程序:

library ieee;use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clock is

port(clk:in std_logic;--12M时钟

keyin:in std_logic;

speak:out std_logic;--蜂鸣器

dout:out std_logic_vector(7 downto 0);--段码

selout:out std_logic_vector(2 downto 0));--位选 end clock;architecture one of clock is

signal count:integer range 0 to 11999999;--1HZ秒信号

signal counf:integer range 0 to 11999;--1000HZ

SIGNAL CP_5ms : STD_LOGIC;

SIGNAL Q1,Q2,Q3: STD_LOGIC;

SIGNAL keyout : STD_LOGIC;

SIGNAL CJ:STD_LOGIC_VECTOR(2 DOWNTO 0);

signal sel:std_logic_vector(2 downto 0);--位选

signal hou1:std_logic_vector(3 downto 0);--计数中小时的十位

signal hou2:std_logic_vector(3 downto 0);--小时的个位

signal min1:std_logic_vector(3 downto 0);--分钟的十位

signal min2:std_logic_vector(3 downto 0);--分钟的个位

signal sec1:std_logic_vector(3 downto 0);--秒的十位

signal sec2:std_logic_vector(3 downto 0);--秒的个位

signal seth1:std_logic_vector(3 downto 0);--设时中小时的十位

signal seth2:std_logic_vector(3 downto 0);--小时的个位

signal setm1:std_logic_vector(3 downto 0);--分钟的十位

signal setm2:std_logic_vector(3 downto 0);--分钟的个位

signal h1:std_logic_vector(3 downto 0);---显示小时十位

signal h2:std_logic_vector(3 downto 0);---小时的个位

signal m1:std_logic_vector(3 downto 0);--分钟的十位

signal m2:std_logic_vector(3 downto 0);--分钟的个位

signal s1:std_logic_vector(3 downto 0);--秒的十位

signal s2:std_logic_vector(3 downto 0);--秒的个位

signal clk1,clkk,beep:std_logic;

begin-----------------分频 fp:process(clk)

begin

if rising_edge(clk)then

count<=count+1;

counf<=counf+1;

if count=11999999 then clk1<='1';---1Hz

count<=0;

beep<='1';

elsif count>5999999 then beep<='0';---2Hz

else clk1<='0';

end if;

if counf=11999 then clkk<='1';--1000HZ

counf<=0;

else clkk<='0';

end if;

end if;end process fp;---------------位扫描 choice:process(clkk)---位选

扫描

begin

if rising_edge(clkk)then

if sel=“111” then

sel<=“000”;

else

sel<=sel+1;

end if;

end if;end process choice;-------------秒个位 s220:process(clk1,cj)

begin

if clk1'event and clk1='1' then

if sec2=“1001” then

---其中sec2是秒的个位

sec2<=“0000”;

elsif cj=“010” then

sec2<=sec2;

else sec2<=sec2+1;

end if;

end if;if cj=“001” then sec2<=“0000”;---秒个位复位

end if;end process s220;--------------秒十位 s110:process(clk1,cj)

begin

if clk1'event and clk1='1' then

if(sec1=“0101” and sec2=“1001”)then---其中sec1是秒钟的十位

sec1<=“0000”;

elsif cj=“010” then

sec1<=sec1;

else if sec2=“1001”then

sec1<=sec1+1;

end if;

end if;end if;if cj=“001” then sec1<=“0000”;---秒十位复位

end if;end process s110;---------------分钟个位 m220:process(clk1,sec1,sec2,cj)

begin

if clk1'event and clk1='1' then

if min2=“1001”and(sec1=“0101” and sec2=“1001”)then----其中min2是分钟的个位

min2<=“0000”;

elsif min2=“1001”and(cj=“011” and cj=“100”)then---

min2<=“0000”;

else if(sec1=“0101” and sec2=“1001”)or(cj=“011” and cj=“100”)then

min2<=min2+1;

end if;

end if;end if;if cj=“001” then min2<=“0000”;

end if;

end process m220;----------------分钟十位 m110:process(clk1,min2,sec1,sec2,cj)

begin

if clk1'event and clk1='1' then

if(min1=“0101” and min2=“1001”)and(sec1=“0101” and sec2=“1001”)then

min1<=“0000”;

elsif min1=“0101”and min2=“1001”and(cj=“011” and cj=100)then

min1<=“0000”;

elsif(min2=“1001”and(sec1=“0101” and sec2=“1001”))or(min2=“1001”and cj=“011” and cj=“100”)then

min1<=min1+1;

end if;

end if;--end if;if cj=“001” then min1<=“0000”;

end if;end process m110;----------------小时个位

h220:process(clk1,min1,min2,sec1,sec2,cj,hou1)

begin

if clk1'event and clk1='1' then

if(hou1=“0010” and hou2=“0011”)and(min1=“0101” and min2=“1001”)and(sec1=“0101” and sec2=“1001”)then

hou2<=“0000”;

elsif hou2=“1001”and(min1=“0101” and min2=“1001”)and(sec1=“0101” and sec2=“1001”)then

hou2<=“0000”;

elsif(hou2=“1001”and cj=“110”)or(hou1=“0010”and hou2=“0011”and cj=“110”)then

hou2<=“0000”;--md<='1';

elsif((min1=“0101” and min2=“1001”)and(sec1=“0101” and sec2=“1001”))or(cj=“110”)then

hou2<=hou2+1;--speak<=clk;

end if;

end if;if cj=“001” then hou2<=“0000”;

end if;end process h220;----------------小时十位 h110:process(clk1,hou2,min1,min2,sec1,sec2,cj)

begin

if clk1'event and clk1='1' then

if(hou1=“0010” and hou2=“0011”)and(min1=“0101” and min2=“1001”)and(sec1=“0101” and sec2=“1001”)then

hou1<=“0000”;

elsif hou1=“0010”and hou2=“0011”and cj=“110” then--当时间为23点且处于校时状态时

hou1<=“0000”;

elsif(hou2=“1001”and(min1=“0101” and min2=“1001”)and(sec1=“0101” and sec2=“1001”))or(hou2=“1001”and cj=“110”)then

hou1<=hou1+1;

end if;

end if;if cj=“001” then hou1<=“0000”;

end if;end process h110;------------时间设置小时部分 sethour1:process(clk1,seth1,seth2,cj)

begin

if clk1'event and clk1='1' then

if seth1=“0010”and seth2=“0011” then

seth1<=“0000”;

elsif seth2=“1001” then

seth1<=seth1+1;

end if;

end if;if cj=“001” then seth1<=“0000”;end if;end process sethour1;------------sethour2:process(clk1,seth1,cj)

begin

if clk1'event and clk1='1' then

if(seth1=“0010”and seth2=“0011”)or seth2=“1001” then

---其中seth1,seth2分别是调时的小时部位的十位与个位

seth2<=“0000”;

elsif cj=“111” then

seth2<=seth2+1;

end if;

end if;if cj=“001” then seth2<=“0000”;

end if;end process sethour2;------------时间设置分钟部分 setmin1:process(clk1,setm2,cj)

begin

if clk1'event and clk1='1' then

if setm1=“0101”and setm2=“1001” then

setm1<=“0000”;

elsif setm2=“1001” then

setm1<=setm1+1;

end if;

end if;if cj=“001” then setm1<=“0000”;

end if;end process setmin1;---------------setmin2:process(clk1,cj)

begin

if clk1'event and clk1='1' then

if setm2=“1001” then

setm2<=“0000”;

elsif cj=“101” then

setm2<=setm2+1;

end if;

end if;if cj=“001” then setm2<=“0000”;

end if;end process setmin2;-------------闹铃

speaker:process(clkk,hou1,hou2,min1,min2,cj)

begin

if clkk'event and clkk='1'then

if seth1=hou1 and seth2=hou2 and setm1=min1 and setm2=min2 then

speak<=beep;

else speak<='0';

end if;

end if;if cj=“001” then speak<='0';

end if;end process speaker;------------disp:process(sel,cj,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2)---显示

begin

if sel=“010” then

selout<=“010”;--位选

case h1 is

---显示小时的十位

when “0000”=>dout<=“00111111”;---0

when “0001”=>dout<=“00000110”;---1

when “0010”=>dout<=“01011011”;---2

when others =>dout<=“00000000”;---不显示

end case;

elsif sel=“011” then

selout<=“011”;

case h2 is

---显示小时的个位

when “0000”=>dout<=“10111111”;---0

when “0001”=>dout<=“10000110”;---1

when “0010”=>dout<=“11011011”;---2

when “0011”=>dout<=“11001111”;---3

when “0100”=>dout<=“11100110”;---4

when “0101”=>dout<=“11101101”;---5

when “0110”=>dout<=“11111101”;---6

when “0111”=>dout<=“10000111”;---7

when “1000”=>dout<=“11111111”;---8

when “1001”=>dout<=“11101111”;---9

when others=>dout<=“10000000”;---不显示

end case;

elsif sel=“100” then

selout<=“100”;

case m1 is

---显示分钟的十位

when “0000”=>dout<=“00111111”;

when “0001”=>dout<=“00000110”;

when “0010”=>dout<=“01011011”;

when “0011”=>dout<=“01001111”;

when “0100”=>dout<=“01100110”;

when “0101”=>dout<=“01101101”;

when others=>dout<=“00000000”;

end case;

elsif sel=“101” then

selout<=“101”;

case m2 is

---显示分钟的个位

when “0000”=>dout<=“10111111”;

when “0001”=>dout<=“10000110”;

when “0010”=>dout<=“11011011”;

when “0011”=>dout<=“11001111”;

when “0100”=>dout<=“11100110”;

when “0101”=>dout<=“11101101”;

when “0110”=>dout<=“11111101”;

when “0111”=>dout<=“10000111”;

when “1000”=>dout<=“11111111”;

when “1001”=>dout<=“11101111”;

when others=>dout<=“10000000”;

end case;

elsif sel=“110” then

selout<=“110”;

case s1 is

---显示秒的十位

when “0000”=>dout<=“00111111”;

when “0001”=>dout<=“00000110”;

when “0010”=>dout<=“01011011”;

when “0011”=>dout<=“01001111”;

when “0100”=>dout<=“01100110”;

when “0101”=>dout<=“01101101”;

when others=>dout<=“00000000”;

end case;

elsif sel=“111” then

selout<=“111”;

case s2 is

---显示秒的个位

when “0000”=>dout<=“00111111”;

when “0001”=>dout<=“10000110”;

when “0010”=>dout<=“01011011”;

when “0011”=>dout<=“11001111”;

when “0100”=>dout<=“01100110”;

when “0101”=>dout<=“11101101”;

when “0110”=>dout<=“01111101”;

when “0111”=>dout<=“10000111”;

when “1000”=>dout<=“01111111”;

when “1001”=>dout<=“11101111”;

when others=>dout<=“00000000”;

end case;

end if;

if cj=“011” then---------------计时时间显示和设置模式

h1<=hou1;h2<=hou2;

m1<=min1;m2<=min2;

s1<=sec1;s2<=sec2;

else

-----------闹铃时间现实和设置模式

h1<=seth1;h2<=seth2;

m1<=setm1;m2<=setm2;

s1<=“1111”;s2<=“1111”;

end if;end process disp;--------------------------yanshi:process(clk)variable fp:integer range 0 to 29999;begin if clk'event and clk='1' then if fp=29999 then fp:=0;

CP_5ms<= not CP_5ms;else

fp:=fp+1;end if;end if;end process;------------------quout:process(CP_5ms,keyin)begin if CP_5ms'event and CP_5ms='1' then Q1<=keyin;Q2<=Q1;Q3<=Q2;end if;end process;-------------------process(Q1,Q2,Q3)begin if(Q1='0' and Q2='0' and Q3='0')then keyout<='0';else keyout<='1';end if;end process;process(keyout,CJ)begin if Rising_edge(keyout)then if cj=“111” then cj<=“000”;

else CJ<=CJ+1;end if;end if;end process;end

one;

第四篇:条目编写规范解读

第四章 条目

第二十一条 所立条目应为独立主题,记载内发生的事件,一事一条,资料完整系统,一般应具备时间、地点、事件、人物、原因、结果六个要素。

一、地方综合年鉴的条目地方综合年鉴条目是年鉴的基本细胞,信息的实际载体,也是年鉴记述事实的基本手段和表现形式。年鉴条目文字一般占全书文字量的70%左右。如果我们将年鉴编纂比作建房子,那么框架就犹如房子的设计蓝图,没有蓝图,房子就建不好;条目就犹如建筑材料,没有材料,蓝图也只能空纸一张。高质量的年鉴,框架要好,条目也要好。

二、地方综合年鉴要一事一条

一事一条,即记录一条信息,介绍一个单位、一个人或一件事,一种情况,可以含有几个数据资料。内容包括时间、地点、结果和全面的、独立的、完整的、排它性的资料。

三、地方综合年鉴条目的六个要素

要写好条目,首先要搞清楚什么是条目的“六何要素”。正文内要包括“六何要素”,即:“何时、何地、何事、何人、何因、何果”。

例如:【完成“422”转移毒剂炸弹任务】4月22日,位于长春市亚泰大街和南湖大路交汇处一建筑工地现场挖掘出疑似日伪时期遗留的毒气弹。五支队接到作战命令,成功将55枚毒气弹转移至安全地带。(张冰峰)这段文字,就是一个比较规范的条目。它具备了条目的“六何要素”。

何时:4月22日。

何地:位于长春市亚泰大街和南湖大路交汇处一建筑工地。何事:现场挖掘出疑似日伪时期遗留的毒气弹。何人:五支队。何因:接到作战命令。

何果:成功将55枚毒气弹转移至安全地带。各类条目应具备的要素如下:

综合性条目,要记述全年完成的主要工作,被授予的集体荣誉,工作中存在的主要问题等,要把全年的工作归纳提炼,再浓缩展现。

事件性条目应有事主、时间、地点、事情、原因、结果。活动性条目应有对象、目的、方法、结果。成果性条目应有名称、性状(或性能)特点、价值。

人物性条目应有姓名、生卒年月、性别(男性可不标明)、民族、原籍、职务、学历、经历、成就等。

四、不宜立条目的事

1.没有普遍使用价值的事,不宜立条。这包括单位内部的事、上层的事、过于偏狭的事。如:〔理论学习〕〔协商议政〕〔举办微机操作人员培训班〕,再如:象某个超市开业、某个餐馆生意火爆等。

2.没有记述价值的公事、虚事、应酬事,也不宜立条。如:〔增设内设机构〕〔庆三八大联欢〕〔举办联谊活动〕等内容很空,属于一般的日常性工作。又如〔迎接城市卫生检查〕记述角度应放在卫生工作,记述卫生面貌的改观、各种卫生指标、数据的展示,而不是迎接检查本身。

3.部门、行业特定职能之外的事业不作为条目来写。如:化学工业就不能记载化工主管部门在计划生育、廉洁勤政以及其他与化工行业无关的内容。有一些单位的撰稿人觉得是成绩就应该充分反映,而不论是否是本行业的主体,是否会干扰有用信息的发布与利用。

4.部门的内部建设、内部事务不作为条目来写。

5.统一开展的重要学习活动,重要的工作作为非主管部门的不 能作为条目来写(重点工作不等于重点选题)。6.阶段性事务。不是全年的内容,资料价值不大。如:〔时间过半任务过半〕〔实现首季开门红〕。

7.各类纪念活动:〔纪念解放50周年会议〕,各地都搞这类活动,记述意义不大。

8.片面的事。如公开招考处级领导干部的消息,只涉及有几个岗位、怎么考试、报名人员情况等,而年鉴条目在记述时,应将重点放在记述人事制度改革的综合情况上。公开招考只是其中一项措施。再如危改片拆迁,只是某个阶段情况:某某片动迁、某某片回迁安置等。年鉴条目要将某片拆迁改造作为一个完整过程进行记述。

9.与业务无直接关联的单位内部事务性工作,例如,某单位领导为全体党员上党课,组织全系统干部认真收看党的十七大开幕式,某单位举办春节联欢晚会,等等,都不是年鉴要记载的大事、要事,不需要专门立条。

10.正在计划之中,预期发展而尚未实现的事情,年鉴内容是以1月1日至12月31日为记载的时间范围。一般情况下,不追溯历史、不展望未来。正在计划之中,预期发展而尚未实现的事情不予以记载(如刚立项的工程等)。

六、杜绝年鉴的“死条”

无人问津或无法检索的条目谓之“死条”。“死条”属于无效信息,白白浪费版面,是条目编写的一大禁忌。“死条”的成因,主要是选题不当:一是收入检索性不强的非独立主题,如[问题与不足]、[队伍建设]、[项目论证]、[项目效益]等;二是收入存查价值不高或者说检索意义不大的资料主题,如[防洪准备工作]、[信访宣传]、[接待工作]、[会务工作]等;三是在不该设条的地方设条,如在共青团的栏目里设立计划生育、幼儿教育的条目,等等。第二十二条 条目一般由标题、释文、作者署名三个部分组成;分为综合性条目和单一性条目。

一、条目的基本组成形式是:标题+正文+署名。例如: 【延边州地方志编委会参照公务员法管理】 11月2日,吉林省公务员局下发《关于延边州及辖区事业单位参照公务员管理的批复》(吉公局发[2010]76号),批准延边州地方志编纂委员会列入参照《中华人民共和国公务员法》管理范围,年末前完成人员身份置换工作。

(李为平)

这段文字,就是一个比较规范的条目。它具备了条目的基本组成形式:

标题:【延边州地方志编委会参照公务员法管理】。

正文:11月2日,吉林省公务员局下发《关于延边州及辖区事业单位参照公务员管理的批复》(吉公局发[2010]76号),批准延边州地方志编纂委员会列入参照《中华人民共和国公务员法》管理范围,年末前完成人员身份置换工作。

署名:(李为平)

二、地方综合年鉴的综合性条目

综合性条目是记录一类事物的资料,可以先写基本情况介绍,然后写正文,将有关资料综合归纳写出。

例:《北京工业年鉴》2004年中:【技术改造】全年北京地区固定资产投资16.3亿元,其中基本建设投资4.15亿元,占25.47%;更新改造投资10.79亿元,占66.21%。完成固定资产投资项目13项。

一、三高炉利用净化后的煤气余压发电项目于2002年4月动工,2003年4月竣工,年内投资1573万元,代替了过去高炉减压阀组的功能,改善环境,降低噪音,减少污染;矿业公司扩建球团生产线于2002年1月动工,2003年11月竣工,年内投资14033万元。矿业公司引进球团生产设备,年内投资4438万元。中板厂技术改造,2001年7月动工,2003年2月竣工,当年投资28779万元。股份公司大板坯铸机改造,2001年9月动工,2003年11月竣工,当年投资2866万元。主厂区电网改造,2002年3月动工,2003年12月竣工,当年投资220万元。铸造厂环保治理技术升级,2002年9月动工,2003年6月竣工,当年投资1195万元。年内在建的项目有:2003年1月动工的迁钢200万吨钢搬迁转移项目等。结构调整的另一项重点工程是利用原初轧厂部分厂房和公辅设施,改造后建设一条全新的彩涂板生产线,2002年9月动工,设计年产彩涂板17万吨,当年投资20949万元。嘉华60万吨矿渣综合利用是废渣治理项目,对高炉渣进行深加工,生产砼添加剂替代水泥,2003年4月开工,2004年2月竣工,当年投资6662万元。氧气厂新建一台3.5万立方米/小时制氧机组和空分系统,保证高炉喷煤的需要,2003年6月动工,当年投资2960万元。

三、地方综合年鉴的单一性条目

单一条目一般是一事一条,记录一条信息,介绍一个单位、一个人或一件事,一种情况,可以含有几个数据资料。内容包括时间、地点、结果和全面的、独立的、完整的、排它性的资料。单一条目一般比较短小。例:

[建立特困老人档案] 据福建省老龄办[2002]28号《关于进一步完善我省特困老人生活状况调查摸底的通知》,2002年,宁德市9个县(市、区)老龄办在开展“三不靠”(即民政靠不上、集体靠不上、子女靠不上)的特困老年人,以及虽已纳入最低生活保障和民政救助,仍无法保障基本生活的特困老人家庭(即被当地群众公认为“难中难”的老人家庭)调查摸底的基础上,建立特困老人档案。至年底,已有周宁、柘荣、蕉城区3县(区)老龄办完成建档工作。上述这一单一性条目,字数不多,但写明了事情的来龙去脉,它告诉读者有:(1)建立特困老人档案的文件依据是福建省老龄办[2002]28号文件;(2)何谓“三不靠”特困老人;(3)特困老人建档的对象指谁;(4)全市9个县(市、区)已开展调查摸底,3个县(区)已完成了建档工作任务等四条信息,是当年老人工作的一件新事、要事,体现了内容单一性、特色性和新闻性。

第二十三条 条目标题顶格书写,加黑,加方头括号(【】),后空一格接写正文:综述类、概况类条目可分段书写,其它条目一般不分段:条目作者名署正文下一行,顶后格,加圆括号:每个栏目下条目一般按重要性编排。

一、的书写格式

1.条目标题、概况顶格书写,加一方括号【】,后空一格接写正文。文章、文献、表格的标题居中书写。

2.综述条目和概况可分段书写,分段的小标题前一般不标注数字,题目加黑后空一格接写正文。其他条目不分段。

3.条目作者名署正文下一行,顶后格,加圆括号。署撰稿人实名,集体编写可署机构名。

5.每个栏目下条目一般按时间顺序编排,确有需要的可按重要性编排。

二、综述类、概况类条目可分段书写,其它条目一般不分段 大家可以参考《延边年鉴(2011)70页[湿地资源]、91页[人大常委会会议]和311页[竞技体育赛事]等综述类、概况类条目的分段规则。每段另起一行,段小标题用楷体,后空一字格进入正文。其他条目则不能分段,一事一条,从头到尾,一气呵成。

第二十四条 条目标题应简洁明确、不加粉饰、见题知义、题文相符,一般不出现人名,中间不使用标点符号,中心词前置,使用简化称谓要避免改变原意或产生歧义。

一、地方综合年鉴的条目标题要求准确、简明、实在,用一句话或一个词组表达,做到见题知义,不需要宣传性、鼓动性的词语,不能用警句、问句、对偶句。还要注意要立足于本年鉴角度来制作标题。例如,A省B市年鉴有条目标题为“A省××会议在B市召开”,就不如“B市承办A省××会议”位置恰当,“国家××部授予B市××称号”就不如“B市被授予××称号”中心突出,“A省检查组检查B市××工作”就不如“B市××工作接受A省检查组检查”角度准确。

二、地方综合年鉴的条目标题中间不能使用标点符号

如【以“提素质、创一流”为目标加强自身建设】可以改成【自身建设】。

三、地方综合年鉴的条目标题中心词应前置

例如,【“转作风 暖民心 促发展”领导干部作风建设主题教育】,标题冗长,中心词不突出,应该删去冠名套话,改为【领导干部作风建设主题教育】。又如【1234610农业和农村工作新思路】,中心词也不突出,应去掉凑数文字,直接标为【农业和农村工作新思路】。再如【联合上级人大常委会共同做好立法调研工作】,标题关键词隐匿,前有繁言,后有蛇足,应当掐头去尾,直接标为【人大立法调研】,则显得主题更加鲜明,更利于检索。

四、条目标题不宜使用的语句

条目标题中应当采用通用的词和词组、独立的名称和概念、短语及短句,不能采用以下语句:

1.冷僻、艰深的词汇如:[党群工团]、[农林水]、[科教文卫]、[站场建设]、[申报更名]、[创卫]、[LAS站]、[工情险情]等。

2.不规范的简称和缩略语如:“一线两带”、“两基迎检”、“三所三队建设”、“四位一体”、“五沟整治”、“6433工程”等。(主题词隐匿,内容难以界定,会给读者检索造成麻烦)。

3.太专的行业术语和完全地方化的简称如:“网购”、“降消”、“纠风”和“三会一节”、“东博会”、“南博会”、“西交会”等。(通用不能以一个地方、一个部门(行业)为标准,而是要社会通用、全国通用。因而这类行话和地方化的简称,在特定地方、特定情况下,人们也许能够理解,但超出一定范围,人们便会完全不知所云,后人更加无法理喻,应尽量避免使用)。

4.标语口号如:“全心全意为职工办实事”、“努力改善山区教师工作生活条件”等。

5.铺垫式句子和因果复句如:“多渠道集资,建成一所职业中学”;“加强制度建设,实现节能降耗目标”,等等。(这类不恰当的标引,也会造成“死条”,根本无法检索)。

第二十五条 条目编写使用第三人称,据实而书、直陈其事、方便检索,突出新事、大事、特事、要事;内容记述至多分三层,第一层序码为一、二、三,第二层序码为1.2,3,第三层序码为(1)(2)(3);各部类内容重复、交叉时,按主题、主体、主办方归类。

一、地方综合年鉴一律采用第三人称。不用“我党”、“我军”、“我们”、“我办”、“我省”、“我县”、“我市”等第一人称代词,应直书“中国共产党”、“中国人民解放军”和省名、县名、市名,“中央”应具体写“中共中央”,使用古地名时应冠以朝代名称,括注今地名。省市年鉴使用乡镇名称时应冠以县名,县里的年鉴使用村名时应冠以乡镇名,如 “安图县新合乡”、“两江镇西江村”。

二、从编写实践来看,条目中最好不分层次,综述类、概况类条目可分段书写,其它条目不分段,以避免年终总结之嫌。

第二十六条 综合性条目分为综述类和概况类两种,综述类条目置于分目之下,概况类条目置于栏目之下;综合反映内不同分目和栏目所记事物发展变化的全貌和趋势,应包括基本情况、主要成绩、存在问题及重要数据等几个方面的要素,注意资料信息的连续性和可比性。一般来说,综合性条目的信息含量应占全书的7%。为便于检索,综合性条目标题应冠以表明所记事物的定语。

一、什么是综合性条目

地方综合年鉴的综合性条目的重要标志是:设立在分目(即二级目)之下的第一个条目,以“概述”为标题。它以一个行业、一个系统、一个部门或一个门类的基本情况为中心主题,对其情况进行全面综合、系统概括地记叙或说明,起勾勒全貌和背景的作用,又起到对不够单位立条的个别、分散但却不可缺少或重要的信息资料进行罗列综合作用。一般包括:工作概括、机构队伍、重要统计数据等内容。

二、综合性条目写作方法

先用统一的【×××概况】条目来概括地方经济社会发展概况,内容涵盖了一个地区工业、农业、外贸经济、城乡建设、科教文卫、人民生活、社会事业等。再用1~2个特色条目来反映本地区经济社会发展过程中的大事、要事;将概述条目与特色条目联结形成一个完整的结构,相辅相承,相得益彰,从不同角度反映了全部情况。

有的作者往往把综合性条目理解为单一性条目的相加。比如某保险公司撰写了4个条目,其中1个为概况,3个为单一条目。3个单一条目分别是“保险费率市场化改革”、“保费收入突破亿元大关”、“确保赔款支出及时到位”。而其概况也分为三个自然段,每一自然段分别是写保险事业改革、保费收入、理赔工作。这样就很容易和后面的单一条目造成重复。当然,综合性条目和单一条目之间有时不可避免会出现交叉,但即便如此,也要做到详略不同,即具体内容在单一条目里展开写、详细写,在综述或概况里归纳写、简略写,尽量避免过多的重复。

三、概况条目既要反映基本情况、取得的主要成就、又要突出发展的主要特点、存在的主要问题。

如2010年卷《广东建设年鉴》“城市道路桥梁建设”分目的【概况】条目:“至2009年底,广东省建成城市道路总长度为31348.2公里、道路总面积54809.8万平方米,其中人行道路总面积12136万平方米,全省城市人均道路面积12.63平方米。全省建成城市桥梁6199座,其中立交桥375座。安装道路照明灯1617792盏,安装路灯道路长度为24446公里。”这个条目基本符合年鉴“概况”条目的要求,基本反映了2009年广东省城市道路桥梁建设的基本情况。但缺少发展的主要特点、存在的主要问题等要素。

四、概况条目要避免因工作总结式写法造成的文不对题 又如,某部年鉴“城市建设”分目下的条目:【简况】 2009年,市建设局重点工作取得成效:(1)及时调整住房保障标准,做到应保尽保;创新保障方式,扩大受惠面;创新建设理念,多形式、多渠道开展保障性住房建设。(2)开展房地产可持续发展调研,积极应对国际金融危机,„„开展建筑节能调研,推动建设环境友好型、资源节约型社会;开展节能墙体生产基地建设调研;开展住房保障工作调研,探索完善住房保障体系的方法;开展房地产交易市场调研,积极寻求解决行政划拨土地房屋上市问题的办法。(3)在解决“办证难”、“烂尾楼”等方面取得重大进展。(4)依法行政,做好综治维稳和平安建设工作。(5)加强风景名胜区的综合整治和监管工作。(6)代建工作稳步推进。„„(7)加快推进“双转移”工作。(8)加大力度,做好城区有关重点工程项目收尾工作。上述条目,记载的是建设局的重点工作,而不是城市建设的基本情况。

五、概况条目应避免出现“两个极端”

“概况”条目,在各地编辑的年鉴中都存在两个突出的问题,一个是过于草率、简单、空洞无物的“极端”。如一部年鉴的“检察”分目下,“概况”条目是这样表述的:“××××年,全市检察机关认真贯彻党的十六大精神,围绕‘强化法律监督、维护公平正义’的检查工作主题,依法履行检察职能,大力惩治国家工作人员犯罪,严厉打击严重刑事犯罪,全面开展诉讼监督,为××市的社会稳定和经济发展做出了积极贡献。”。该条目全文连同标点共115字,基本上是空话套话,放在哪个都适合。当然,不能仅以字数的多少来评价条目质量高低,但综合性条目过于简单,是难以达到年鉴编纂规律对“概况”条目的基本要求的。另一个是过于冗长、拖沓的“极端”。虽然综合性条目讲究内容全面、重点突出、层次清晰、详略得当,但并不是越长越好。眼下,有的“概况’条目动辄3000到5000字,面面俱到且空话连篇,使读者感觉很不舒服。从各地的编纂实践来看,部分优秀的综合性条目,一般在800字左右。大、中型企业,县(市)直综合部门的“综合性条目”字数最多不得超过2000字。

六、概况条目实例分析:

【概况】 2001年,房地产开发所面临的资金环境相对宽松,住房抵押贷款及房地产金融制度创新发展迅速,住房货币分配的全面实施,以及“房改房”进入市场,刺激了广州市住宅消费市场,推动房地产业持续、稳定发展。

房地产投资继续呈现持续、稳定和较快速的增长势头。全年广州市完成房地产投资387.02亿元,比上年增长8.8%。房地产开发完成住宅建设投资257.14亿元,比上年增长11.2%;完成办公楼宇投资20.81亿元,增长11.3%,改变了长期下挫的格局;商业经营用房投资44.09亿元,增长6.1%。房地产业及其他相关产业的快速、稳定增长,已成为广州市实现经济增长目标的重要保证之一。

商品房空置面积总量仍然较高,消化存量商品房的压力较大。全年全市商品房空置总面积621.84万平方米,比上年增长6.5%。其中空置住宅365.83万平方米,下降0.4%;空置商务写字楼45.55万平方米,增长1.3%。从总体面积方面分析,商品房空置总量仍然较高的现状,说明广州市商品房市场供过于求,呈现买方市场的特征。

商品房施工面积继续增长,新开工面积增长速度逐月回落,竣工面积出现下降态势。全年全市商品房施工面积4312.37万平方米,比上年增长13.1%,其中商品住宅施工面积2966.32万平方米,增长12.3%。商品房竣工面积849.83万平方米,比上年下降1.4%,其中商品住宅竣工面积671.24万平方米,下降3.9%。商品房新开工面积1245.31万平方米,比上年增长15%,比上年增长速度31.3%显著回落,显示众多投资者对广州房地产市场预期继续看好,同时也预示商品房市场自我调节机制已经开始启动,政府已适时加强对房地产开发用地供应的调控,并积极采取有效措施活跃商品房二级市场,努力促使广州市商品房市场逐步趋向供求相对均衡的状态。

商品房售价稳中有升,市场需求结构基本实现平稳调整。全年全市商品房预售面积513.31万平方米,比上年增长4.2%,其中商品住宅预售面积481.98万平方米,增长6.4%。表明在停止实物分配住房,全面实行货币分房后,广州市商品房市场并未因集团购买力的消失,而对市场有效购买力产生重大影响,市场需求结构基本实现平稳过渡。与此同时,商品房及商品住宅价格继续维持平稳,全年商品房预售均价4474元/平方米,其中住4117元/平方米,分别比上年下降0.3%和1.2%。(《广州年鉴》(2002)P231)

该条目资料翔实具体,有分析、有综合、有点、有面,突出了地方特点、行业特点和年代特点,是一条写得相当不错的概况,值得借鉴。

第二十七条 单一性条目一般不超过500字,综合性条目一般不超过2000字。

一、地方综合年鉴的单一性条目

单一性条目一般是一事一条,记录一条信息,介绍一个单位、一个人或一件事,一种情况,可以含有几个数据资料。内容包括时间、地点、结果和全面的、独立的、完整的、排它性的资料。单一条目一般比较短小,一般不超过500字。

根据其记载的内容,单一性条目可划分为记事类条目、机构类条目、会议类条目、成果类条目、人物类条目等。

记事类条目

记述某一具体事物、事件和现象的条目,是专题性条目中最常见的类型。它以资料重要,信息新颖,内容生动见长,是年鉴内容更新的主体。其基本要素包括事主、时间、地点、过程、原因、结果。重大活动类条目的要素:包括时间、地点、名称、举办单位、参加人员及人数、内容、结果等。着重记述活动的主要内容、特点和结果。避免叙述一般过程、转录领导人讲话。

机构类条目

记述内有重大影响的行政机关、企事业单位、社会团体的条目,一般以内新成立或有重大发展变化的重要机构为记述对象。其基本要素包括机构名称、简要沿革、隶属关系、组织形式、基本职能、发展变化和突出成就等。机构类条目的要素:包括机构名称、成立时间、批准机关、隶属关系、组织形式、主要职能和业务范围、内部机构设置等。着重介绍主要职能和工作成果。机构成立的原因、过程、意义一般不记述。

会议类条目

以内重要会议为记述对象的条目,主要内容包括会议名称、时间、地点、主办单位、主要议程、取得的成效或产生的影响,重点反映会议取得的实质性效果,而会议的气氛和程序可以从略。部门和行业的工作例会和没有实际成效的会议,一般不立目记述。会议类条目应注意两点:一是要增加有效信息,把实质性的内容反映出来,参会的领导人列主要的,领导人的讲话少录以至不录。在来稿中,有些局、部门会有会议的条目,按理应着重反映本地有关通过重大事项的做法和效果。但来稿中往往只写了有哪些领导和部门参加大会,谁发来贺信,谁代表市政府讲话,该局局长如何表态等。因为有效信息太少,未能录用。二是与本地工作确实有关系的全国性或区域性会议,可以作为条目的选题,如果仅仅借本地某个地方开个会,同本地工作没有什么关系,就没有必要写这个条目。

成果类条目

记载内重要新产品(成果)或获得重大奖励的产品(成果)的条目,主要内容要素包括产品(成果)名称及其研制(完成)者、完成时间、主要技术性能、质量特点、鉴定或获奖情况、推广应用效果、生产能力或市场状况等。其中成果类条目的要素:包括成果名称、完成单位或个人、完成时间、成果价值或技术含量、社会效益、经济效益、鉴定结果和获奖等级等。着重介绍成果价值。成果研制的过程、意义一般不记述。项目类条目的要素:包括项目名称、投资总额、工程规模、质量水平、地点、时间(开工、竣工)、施工单位、工程进度、社会效益、经济效益等。重点介绍项目规模、质量水平和效益。项目开工(竣工)庆典场面、领导人讲话一般不写。人物类条目

以人立目,介绍人物的条目。年鉴人物类条目要严格掌握入选标准,格式统一,突出个性特征。该类目一般包括先进人物、新闻人物、著名专家学者、重要逝世人物等,所选录的人物必须具有强烈的感,重点突出,表现集中,所辑入的资料要有鲜明的新颖性和高度的准确性。人物类条目的要素:包括人物的姓名、姓别(男性不注)、民族(汉族不注)、出生年月、籍贯、学历、党派、所在单位、职务职称、主要事迹和贡献、受表彰的情况及被授予的称号等。重点介绍主要经历、重要事迹和成就。

第五篇:个人简历html语言编写

课后练习题五

姓 名 性别 出生年月 照片
毕业院校 专业 学历
政治面貌 民族 身高
健康状况 籍贯
身份证号码 联系电话
主修课程
英语水平
计算机水平
社会实践
奖励情况
自我评价

下载如何编写和语言程序解读word格式文档
下载如何编写和语言程序解读.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    编写一个以C 语言为基础的DSP程序

    实验1.2 : 编写一个以C 语言为基础的DSP程序 一.实验目的 1.学习用标准C语言编制程序;了解常用的C语言程序设计方法和组成部分。 2.学习编制连接命令文件,并用来控制代码的连接。......

    教案编写怎样创新解读

    教案编写怎样创新 【摘 要】课堂教学革新,怎样改,从哪里动手改,随着新课程尺度的渐渐实验,惜时增效课题研究的深入开展,笔者以为传统的编写教案必须改,也到了非改不行的田地。 【......

    编写大型程序的感受

    编写大型程序的感受: 最初,全组人对编写此大程都没有信心。因此,我们的进展一直很缓慢,前进的步伐异常艰难。夏学期第四周,我感觉不能再拖了,我和杨洋决定要投入。周六晚上,我画出......

    编写PLC程序一些心得(精选5篇)

    1. PLC和上位机(或触摸屏)组成监控系统时,在画面上很多时候需要有"手动","自动"等控制模式(一般都是多个只能一个时). 在程序里面可以用"MOV" 指令. 如:当选择"手动" 就将常......

    C语言编写俄罗斯方块论文

    俄罗斯方块 学 号: 班 级:姓 名:指导教师: 完成日期:2012年5月 目 录 1.引言 ...............................................................................................

    C语言 程序代码编写规范

    C语言 程序代码编写规范(初级程序员 讨论版)前言 一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效......

    c语言编写单片机感想

    用C语言对单片机编程感想 起先接触单片机,单片机的程序是用汇编语言编写的。汇编语言是面向机器的低级语言,保持了机器语言的优点,具有直接和简捷的特点,目标代码简短,占用内存少......

    第2章用c语言编写简单程序实训综合练习

    第2章用c语言编写简单程序实训综合练习实验目的 1) 使用if语句计算分段函数 2) 熟练掌握for语句和while语句编写简单的循环程序 3) 学习简单的程序调试方法编程题 1. 编写程......