资源描述
成绩
中国农业大学
课程设计报告
(2015-2016学年夏季学期)
设计题目: DOS下屏保程序设计实现
课程名称: 汇编语言课程设计
任课教师:
班 级: 计算机141
学 号:
姓 名:
目 录
一、 要求与需求分析 1
1. 题目重述: 1
2. 需求分析: 1
二、 程序设计分析: 1
1. 屏保绘制模块 1
1.1、 图形录入: 1
1.2、 动画绘制: 2
2. 非工作状态计时模块 2
2.1、 计时功能: 2
2.2、 判断是否处于工作状态 2
3. 检测键盘输入模块 3
4. 中断设置及内存驻留程序 3
三、 程序流程图 3
1. 装载程序: 3
2. 定时器中断处理程序: 4
3. 键盘中断处理程序: 4
4. 屏幕保护程序: 5
四、 核心模块功能介绍 5
1. 装载程序(INSTALL): 5
2. 更改后的计时器中断(FUNCTIMER): 5
3. 更改后的键盘中断(INT9): 6
4. 屏保程序(SCREENSAVER): 6
5. 屏保绘制模块(PRINT): 6
6. 贴图函数(ONEBITMAP/ZEROBITMAP): 6
7. 延时处理函数(ONEBITMAP/ZEROBITMAP): 6
8. 清屏宏(CLRSCREEN): 6
五、 程序运行步骤 6
六、 设计过程中遇到的主要技术难点及解决方案 7
1. 中断设置及驻留: 7
2. 工作状态的判断: 7
3. 动画的绘制: 7
4. 恢复原本工作状态: 7
七、 个人体会 7
八、 参考文献 8
九、 程序清单 8
DOS下屏幕保护程序的设计与实现
一、 要求与需求分析
1. 题目重述:
编写一个DOS下的屏幕保护程序(也可以是windows下的屏保)。该程序具有以下功能:在一段时间内(如1分钟)没有任何键键入时,程序自动进入屏保(一个图画一直在不断的移动显示,图案任意),直到按任意键结束。
2. 需求分析:
在未启动屏幕保护程序的情况下,当长时间不使用电脑的时显示器屏幕的显示换面长时间不变,这将使屏幕发光器件疲劳、变色、甚至烧毁,最终使屏幕某个区域偏色或变暗。因此一个合格的屏幕保护程序应满足条件:
1. 图案动态且在屏幕上的分布尽量均匀
2. 当停止工作后一段时间内才进入屏保
3. 一旦按键后结束屏幕保护程序的绘制并恢复之前工作的内容
二、 程序设计分析:
针对上述对于需求的分析,可将目标程序分为三个功能模块,即:屏保绘制模块、非工作状态计时模块、检测键盘输入模块。同时为了各个模块正常工作,还需使用DOS功能设置中断及将各功能模块在内存中驻留。
1. 屏保绘制模块
1.1、 图形录入:
ROM BIOS显示例程支持多种文本方式和图形方式。在不同的显示方式下屏幕显示的像素分辨率、字符分辨率、颜色数等都不同。为更细致的展现动画细节,本程序调用INT10的0号子功能,选择320*200分别率图形16色显示模式;并基于此模式将要显示的像素图转化为相应的显存矩阵,每个像素点占用一个字节存储颜色及亮度信息,存储图片共占用27*35 Byte。在图形显示时调用INT10的5号子功能将图片置入显存的相应内存区间。
1.2、 动画绘制:
本程序在绘制动画时考虑到动画的连贯性,使用了两个显存页。一个显存页作为显示页,另一个显存页作为后台页,绘制图像时仅仅对后台页执行像素操作,显示显存页。动画通过改变图案的绘制位置实现,当图案绘制触及屏幕边缘时改变绘图方向,且绘制图案鹿的方向与动画运动方向同向。动画绘制过程涉及以下变量作为参数:当前绘制页数(后台页)RECENTPAGE、上一次绘制页数(显示页)LASTPAGE、当前绘图的顶点坐标CURSORX, CURSORY;上一次的绘制坐标LASTX,LASTY;横向绘图方向DIRECX;纵向绘图方向DIRECY;常量的水平绘制速度和垂直绘制速度VX,VY。下面将详细介绍动画绘制的过程。
1. 通过交换RECENTPAGE与LASTPAGE的值,完成对后台页与显示页的页码的交换;
2. 根据DIRECX判断绘图方向,选择调用贴图函数ONEBITMAP或ZEROBITMAP在后台页上以CURSORX, CURSORY为顶点绘制图案。其中ONEBITMAP为每列从左到右向显存录入像素,ZEROBITMAP为每列从右到左向显存录入数据;
3. 显示绘制完成的后台页并将调用宏CLRSCREEN把原显示页清屏;
4. 保存绘制坐标CURSORX, CURSORY到LASTX,LASTY,判断图片是否绘制到屏幕边缘。如是,改变绘图方向DIRECX、DIRECY;
5. 计算下次绘图的坐标,根据方向选择顶点坐标加绘制速度VX,VY或减VX,VY。
2. 非工作状态计时模块
2.1、 计时功能:
由于计算机的8259A可编程中断控制器以18.2HZ的频率产生中断信号,每次8259A产生中断信号时CPU将处理1CH号中断向量所指向的终端处理程序。本程序通过改变1CH号中断处理程序实现计时功能。
在每次1CH号中断发生时,若判断运行标志FLAG得屏保绘制程序未运行,将定时计数变量CLKCNT减一,若CLKCNT归零,则调用屏幕保护函数进入屏保绘制过程。
2.2、 判断是否处于工作状态
在DOS环境下,可认为当无字符输入时为非工作状态。因此本程序通过改变键盘中断处理程序实现非工作状态的计时。具体实现方法为每次有键盘输入时将定时计数变量CLKCNT复位,对非工作状态重新计时并调用原键盘中断处理函数。
3. 检测键盘输入模块
该模块功能为当屏保绘制时若有按键输入,则结束屏保绘制并返回原工作界面。在具体实现上调用INT16H 的1号子功能读键盘缓冲区字符,若缓存区存在字符,结束屏保的绘制,返回文字显示方式并显示原工作页的缓存。
4. 中断设置及内存驻留程序
该程序作用为设置中断及把上述所有模块在内存中驻留,即装载程序。调用INT 21H的35H号子功能保存键盘中断的原中断向量到SAVINT9,调用INT 21H的25H号子功能将非计时器中断及键盘中断重置为工作状态计时模块中的相应程序。利用宏操作PROLEN EQU $-FUNCTIMER计算屏保程序占用内存的字节数,调用INT 21H的31H号子功能完成内存驻留。
三、 程序流程图
1. 装载程序:
2. 定时器中断处理程序:
3. 键盘中断处理程序:
4. 屏幕保护程序:
四、 核心模块功能介绍
1. 装载程序(INSTALL):
完成修改中断计时器(FUNCTIMER)和键盘(INT9)的中断向量,改变中断屏蔽,实现屏保程序的驻留。
2. 更改后的计时器中断(FUNCTIMER):
对非工作状态计时;调用屏保程序(SCREENSAVER)。
3. 更改后的键盘中断(INT9):
若回到工作状态,将计时器变量复位。继承了原键盘中断的其他功能。
4. 屏保程序(SCREENSAVER):
设置初始值,控制整个屏保绘制过程。
5. 屏保绘制模块(PRINT):
确定图片像素信息写入显存位置,计算每次贴图的顶点位置,实现动画的产生。
6. 贴图函数(ONEBITMAP/ZEROBITMAP):
屏保绘制模块(PRINT)的子函数,根据获取的顶点位置进行贴图。ONEBITMAP与ZEROBITMAP的区别为贴图的横向方向不同。
7. 延时处理函数(ONEBITMAP/ZEROBITMAP):
屏保绘制模块(PRINT)的子函数,起到延时贴图的作用,让动画能流畅显现。
8. 清屏宏(CLRSCREEN):
清除将要绘制的页码上的像素。
五、 程序运行步骤
1. 在DOS环境下运行装载程序,将程序驻留在内存中;
2. 若在五秒内没有任何键键入时,程序自动进入屏保,绘制一只跳动的小鹿;
3. 在屏保绘制状态下任何键键入时返回原工作状态。
六、 设计过程中遇到的主要技术难点及解决方案
1. 中断设置及驻留:
使用宏操作PROLEN EQU $-FUNCTIMER(FUNCTIMER为驻留区的首地址, PROLEN在程序末尾)计算屏保程序占用内存的字节数,调用INT 21H的31H号子功能完成内存驻留。其中屏保程序中所用到的所有数据及变量等一并写入代码段,而非数据段,以实现同步驻留。
2. 工作状态的判断:
更改键盘中断,使键盘每次发生中断时(即触发按键)都对非工作状态的计时复位。
3. 动画的绘制:
为消除动画设计时的图像闪烁的,本程序使用多页动画技术。多页动画是通过使用页切换技术实现的。页切换改变显示页以绘制出给定动画序列的相邻帧。由于图像通常绘制在不同的页上(不是当前可见页),用户不会看到图像被绘制或擦除,从而产生高质量的动画而没有图像闪烁。
4. 恢复原本工作状态:
本问题暂未解决。设想中的解决方案是将原本的文本显存页保存起来,动画绘制操作选择其他的页面进行,在结束绘制后调用INT 10H的0号子功能重新显示原文本页。但在实际实验后发现页面仍会被清空。
七、 个人体会
我在课程学习阶段对中断向量的驻留理解不够深刻,经过这一周对屏幕保护程序的研究,我对中断向量的驻留及图形处理有了较深刻的了解、认识。我在动画绘制函数中遇到了一些特别奇怪的错误,总不能得到正确的图像浪费了很多时间。后来在排查时,发现所有变量前都忘记添加跨越段前缀CS:XX,这让我想到作为计算机系的学生,正因为我们所有的工作容错性都很低,所以更需要加倍得细心,每一个细节都可能会成为限制我们发展上限的潜在敌人。通过这一周的汇编课程设计,我也克服了对汇编程序的恐惧,在合理分块的前提下,哪怕是汇编程序这样低级、灵活的语言,也能一步步实现所有设计的功能;而且正是因为没有太多功能复杂的语句,只要实现进行充分的思考和妥善的设计,程序在逻辑上出错的几率非常小,排错并没有高级语言这么难(当然要建立在熟练掌握每种语句的用法的基础上)。
八、 参考文献
[1]. 沈美明, 温冬婵. IBM-PC汇编语言程序设计(第二版)[M].北京.清华大学出版社: 2014
[2]. 黄向明. 多页动画技术[J]. 微电脑世界,1996,07:71.
九、 程序清单
;清屏宏
CLRSCREEN MACRO
LOCAL LOOPR,LOOPC
MOV DX,CS:LASTY
MOV BX,35
LOOPR:
PUSH BX
MOV AX,27
MOV CX,CS:LASTX
LOOPC:
PUSH AX
MOV AH,0CH
MOV AL,0
MOV BH,CS:LASTPAGE
INT 10H
INC SI
INC CX
POP AX
DEC AX
CMP AX,0
JNZ LOOPC
INC DX
POP BX
DEC BX
CMP BX,0
JNZ LOOPR
ENDM
CODES SEGMENT
;安装中断及中断驻留函数(入口)
INSTALL PROC FAR
ASSUME CS:CODES
START:
; 设置定时器中断向量
MOV DX,OFFSET FUNCTIMER
MOV AX,SEG FUNCTIMER
MOV DS,AX
MOV AL,1CH
MOV AH,25H
INT 21H
; 保存INT9的键盘中断
MOV AL,09H
MOV AH,35H
INT 21H
MOV WORD PTR CS:SAVINT9,BX
MOV WORD PTR CS:SAVINT9+2,ES
; 设置键盘中断向量
MOV DX,OFFSET INT9
MOV AX,SEG INT9
MOV DS,AX
MOV AL,09H
MOV AH,25H
INT 21H
; 中断屏蔽设定
IN AL,21H
AND AL,0FDH ;11111100B
OUT 21H,AL
STI
; 中断驻留
MOV AH,31H
MOV AL,0
MOV DX,PROLEN
INT 21H
; 结束安装程序
MOV AH,4CH
INT 21H
INSTALL ENDP
;计时器中断
FUNCTIMER PROC FAR
STI
; 置EOI位为1,允许外部中断
MOV AL,20H
OUT 20H,AL
CMP CS:FLAG,0
JNZ EXIT
DEC CS:CLKCNT
JNZ EXIT
MOV FLAG,1
CALL SCREENSAVER
EXIT:
CLI
IRET
FUNCTIMER ENDP
;更改后的键盘中断
INT9 PROC FAR
STI
MOV CS:CLKCNT,100
MOV AL,20H
OUT 20H,AL
PUSHF
PUSHF
POP AX
AND AH,11111100B
PUSH AX
POPF
CALL DWORD PTR CS:SAVINT9
IRET
INT9 ENDP
;屏保程序
SCREENSAVER PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
; 初始化
MOV CS:CURSORX,0
MOV CS:CURSORY,0
MOV CS:DIRECX,0
MOV CS:DIRECY,0
MOV AL,1
MOV AH,05H
INT 10H
MOV AH,00H
MOV AL,0DH
INT 10H
; 屏保绘制循环
NEXTGRA:
CALL PRINT
MOV AH,01H
INT 16H
JNZ PRESSED
JMP NEXTGRA
;按键后跳出屏保程序
PRESSED:
MOV AH,00H
MOV AL,03H
INT 10H
MOV AL,0
MOV AH,05H
INT 10H
MOV CS:CLKCNT,100
MOV CS:FLAG,0
POP DX
POP CX
POP BX
POP AX
;终止屏保程序
RET
SCREENSAVER ENDP
;屏保绘制程序
PRINT PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
; 设置两页动画,分别为后台和前台
MOV AH,CS:LASTPAGE
MOV AL,CS:RECENTPAGE
MOV CS:RECENTPAGE,AH
MOV CS:LASTPAGE,AL
; 根据方向选择贴图
CMP CS:DIRECX,0
JZ BMP
CALL ONEBITMAP
JMP NNNN
BMP:
CALL ZEROBITMAP
NNNN:
; 更换显示页面
MOV AL,CS:RECENTPAGE
MOV AH,05H
INT 10H
CLRSCREEN
; 将光标位置保存
MOV AX,CS:CURSORX
MOV CS:LASTX,AX
MOV AX,CS:CURSORY
MOV CS:LASTY,AX
CALL FUNCWAIT
; 若图片到达边缘,改变运动方向
CMP CS:CURSORX,0
JZ CHANGX
CMP CS:CURSORX,290
JBE CMPY
CHANGX:
MOV AL,CS:DIRECX
XOR AL,1
MOV CS:DIRECX,AL
CMPY:
CMP CS:CURSORY,0
JZ CHANGY
CMP CS:CURSORY,160
JBE OUT1
CHANGY:
MOV AL,CS:DIRECY
XOR AL,1
MOV CS:DIRECY,AL
; 根据运动方向确定下次贴图坐标
OUT1:
CMP CS:DIRECX,0
JZ SUBX
ADD CS:CURSORX,VX
JMP CULY
SUBX:
SUB CS:CURSORX,VX
CULY:
CMP CS:DIRECY,0
JZ SUBY
ADD CS:CURSORY,VY
JMP PRIEND
SUBY:
SUB CS:CURSORY,VY
PRIEND:
POP DX
POP CX
POP BX
POP AX
RET
PRINT ENDP
;向左贴图
ONEBITMAP PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV DX,CS:CURSORY
LEA SI,CS:GRAPH
MOV BX,35
LOOPR1:
PUSH BX
MOV AX,27
MOV CX,CS:CURSORX
LOOPC1:
PUSH AX
; 设置像素
MOV AH,0CH
MOV AL,CS:[SI]
MOV BH,CS:RECENTPAGE
INT 10H
INC SI
INC CX
POP AX
DEC AX
CMP AX,0
JNZ LOOPC1
INC DX
POP BX
DEC BX
CMP BX,0
JNZ LOOPR1
POP DX
POP CX
POP BX
POP AX
RET
ONEBITMAP ENDP
;向右贴图
ZEROBITMAP PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV DX,CS:CURSORY
LEA SI,CS:GRAPH
MOV BX,35
LOOPR0:
PUSH BX
MOV AX,27
MOV CX,CS:CURSORX
ADD CX,AX
LOOPC0:
PUSH AX
; 设置像素
MOV AH,0CH
MOV AL,CS:[SI]
MOV BH,CS:RECENTPAGE
INT 10H
INC SI
DEC CX
POP AX
DEC AX
CMP AX,0
JNZ LOOPC0
INC DX
POP BX
DEC BX
CMP BX,0
JNZ LOOPR0
POP DX
POP CX
POP BX
POP AX
RET
ZEROBITMAP ENDP
;延时处理函数
FUNCWAIT PROC NEAR
PUSH AX
PUSH CX
; 空循环
MOV CX,0FFFFH
DELY:
MOV AL,0
MOV AH,0
SUB AL,AH
LOOP DELY
POP CX
POP AX
RET
FUNCWAIT ENDP
;在CODE SEGMENT中定义的数据段
SAVINT9 DW ?,?
LASTPAGE DB 1 ;保存上一次绘制的页数
RECENTPAGE DB 2 ;保存当前动画绘制的页数
LASTX DW 0 ;保存上一次绘图的坐标
LASTY DW 0
FLAG DB 0 ;用于判断屏保程序是否已运行
CURSORX DW 0 ;保存当前绘图的光标位置X
CURSORY DW 0 ;保存当前绘图的光标位置Y
DIRECX DB 0 ;横向绘图方向
DIRECY DB 0 ;纵向绘图方向
CLKCNT DB 100 ;进入屏保的时间
;位图像素信息
GRAPH DB 0,0,2,0,0,0,0,0,0,0,0FH,0,0FH,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DB 0,2,0,2,0,0,0,0,0,0,0FH,0,0FH,0,0,0,0FH,0,0,0,0,0,0,0,0,0,0
DB 0,0,2,0,0,0,0,0,0,0,0,0FH,0,0,0,0,0FH,0,0FH,0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0FH,0,0,0,0FH,0,0,0,0,0,0FH,0,0,0,0,0,2,0,0,0
DB 0,0,0,0,0,0,0,0FH,0,0,0,0FH,0,0,0,0,0,0FH,0,0,0,0,2,0,2,0,0
DB 0,0,0,0,0,0,0,0FH,0,0,0,0FH,0,0,0,0,0,0FH,0,0,0,0,0,2,0,0,0
DB 0,0,0,0,0,0,0,0,0FH,0,0,0,0,0FH,0FH,0FH,0,0,0FH,0FH,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0,0,0FH,0,0,0,0,0,0,0FH,0FH,0,0,0,0,0,0,0,0,0
DB 0,0,0,0,0,2,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0,0,0,0,0
DB 0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0FH,0FH,0,0FH,0FH,0FH,0,0,0,0,0,0
DB 0,0,0,0,0,2,0,0,0,0,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0,0
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0,0,0
DB 0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0FH,0FH,0FH,0,0,0,0,0,0,0,0,0
DB 0,2,0,2,0,0,0,0,0,2,0,2,0,0,0,0FH,0FH,0FH,0FH,0,0,0,0,0,2,0,0
DB 0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0FH,0FH,0FH,0FH,0,0,0,0,2,0,2,0
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0,0,0,0,2,0,0
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0,0,0
DB 0,0,0,0,0,0FH,0,0,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0,0,0
DB 0,0,0,0,0,0FH,0,0,0,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0,0,0
DB 0,0,0,0,0,0FH,0FH,0,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0,0,0
DB 0,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0,0FH,0FH,0FH,0FH,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0FH,0FH,0FH,0FH,0,0FH,0FH,0FH,0FH,0FH,0,0FH,0FH,0FH,0FH,0FH,0FH,0,0,0,0
DB 0,0,0,0,0,0,0FH,0FH,0FH,0FH,0FH,0,0FH,0FH,0,0,0,0,0,0,0,0,0FH,0FH,0,0,0
DB 0,0,0,0,0,0,0FH,0FH,0FH,0FH,0,0,0,0,0,0,0,0,0,0,0,0FH,0,0FH,0,0,0
DB 0,0,0,0,0,0,0FH,0FH,0FH,0,0,0,0,0,0,0,0,0,0,0,0,0FH,0,0FH,0,0,0
DB 0,0,0,0,0,0FH,0FH,0FH,0,0,0,0,0,0,0,0,0,0,0,0,0FH,0,0,0FH,0,0,0
DB 0,0,0,0,0FH,0FH,0FH,0,0FH,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0FH,0,0,0
DB 0,0,0,0FH,0FH,0FH,0,0FH,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0FH,0,0,0,0
DB 0,0,0,0FH,0FH,0,0FH,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0
DB 0,0,0,0FH,0,0FH,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0
DB 0,0,0FH,0FH,0,0FH,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0
DB 0,0,0FH,0,0,0FH,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0
DB 0,0,0FH,0,0,0FH,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DB 0,0,0FH,0FH,0,0FH,0FH,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
VX EQU 5 ;每次绘制水平方向移动五个像素点
VY EQU 2 ;每次绘制垂直方向移动两个像素点
PROLEN EQU $-FUNCTIMER
CODES ENDS
END START目 录
第一章 总论 5
1.1项目概要 5
1.2可行性研究报告编制依据 8
1.3综合评价 8
第二章 项目背景及必要性 11
2.1项目建设背景 11
2.2项目建设的必要性 13
第三章 建设条件 16
3.1项目区概况 16
3.2项目建设条件优劣势分析 21
第四章 市场分析与销售方案 26
4.1市场分析 26
4.2销售策略、营销方案和模式 29
4.3风险分析 30
第五章 项目建设方案 32
5.1建设任务和规模 32
5.2建设规划和布局 32
5.3工艺(技术)方案 32
5.4建设内容 35
5.5实施进度安排 36
第六章 环境影响评价 38
6.1环境影响 38
6.2环境保护与治理措施 38
第七章 项目组织与管理 40
7.1组织机构与职能划分 40
7.2劳动定员 40
7.3经营管理模式 41
7.4经营管理措施 41
7.5技术培训 42
7.6劳动保护、安全卫生与消防 42
第八章 投资概算与资金来源 44
8.1投资概算依据 44
8.2投资概算 44
8.3资金来源 46
第九章 财务评价 47
9.1财务评价依据 47
9.2销售收入、销售税金和附加估算 47
9.3总成本及经营成本估算 48
9.4财务效益分析 49
9.5不确定性分析 50
9.6财务评价结论 51
第十章 社会效益评价 52
10.1社会评价基本结论 52
10.2农业产业化经营 52
10.3农民增收、农业增效评价 54
10.4其它社会影响 55
第十一章 可行性研究结论与建议 56
11.1可行性研究结论 56
11.2问题与建议 56
17
展开阅读全文