1、第二章第二章 微机应用系统设计方法微机应用系统设计方法应用应用系统系统 MENURETURNRETURN应用系统设计的基本原则和要求应用系统设计的基本原则和要求2.22.32.4应用系统设计的基本内容和步骤应用系统设计的基本内容和步骤微机应用系统的软件结构微机应用系统的软件结构高级语言和汇编语言的混合编程高级语言和汇编语言的混合编程2.1 2.1 应用系统设计的基本原则和要求应用系统设计的基本原则和要求应用应用系统系统 MENURETURNRETURN一、一、操作性能要好操作性能要好 二、二、通用性好,便于扩展通用性好,便于扩展三、三、可靠性高可靠性高 四、四、设计周期短,价格便宜设计周期短,
2、价格便宜2.22.32.1Part 1Part 2Part 3Part 42.4 一、操作性能要好一、操作性能要好应用应用系统系统 MENURETURNRETURN系统的人系统的人机界面友好,操作方便、便于维护机界面友好,操作方便、便于维护 硬件硬件 开关不能太多,操作顺序简单。开关不能太多,操作顺序简单。软件软件 配置什么样的软件和环境,降低对专业配置什么样的软件和环境,降低对专业知识的要求知识的要求提供自检或诊断程序,及时排除故障。提供自检或诊断程序,及时排除故障。其他其他 操作台便于操作人员工作,显示器颜色操作台便于操作人员工作,显示器颜色和谐等。和谐等。2.22.32.1Part 1P
3、art 2Part 3Part 42.4 二、通用性好,便于扩展二、通用性好,便于扩展应用应用系统系统 MENURETURNRETURN系统的通用性要好,在必要时能灵活地进行扩充。系统的通用性要好,在必要时能灵活地进行扩充。要求:要求:(1 1)采用通用的系统总线结构。)采用通用的系统总线结构。需要扩充时,加相应接口插件板需要扩充时,加相应接口插件板(2 2)接口部件尽量采用标准通用芯片。)接口部件尽量采用标准通用芯片。(3 3)系统的设计指标留有余量:)系统的设计指标留有余量:微机的工作速度微机的工作速度电源功率电源功率 内存容量内存容量I/O I/O 通道通道 尽可能标准化。尽可能标准化。
4、2.22.32.1Part 1Part 2Part 3Part 42.4 三、可靠性高三、可靠性高应用应用系统系统 MENU最突出的和最重要的一个基本要求最突出的和最重要的一个基本要求。两台微机同时投入系统运行,分别完成不同任务。一台主控,另一台一般性工作。1.1.采用双机系统:用两台微型机组成核心控制器。采用双机系统:用两台微型机组成核心控制器。备份机备份机 工作方式工作方式 主主从从 工作方式工作方式 双工工双工工 作方式作方式一台投入系统运行,另一台也处于运一台投入系统运行,另一台也处于运行状态,但脱离系统,只作为备份机。行状态,但脱离系统,只作为备份机。两台微机同时运行,同步执行一个任
5、务两台微机同时运行,同步执行一个任务 核对运算单元 微机2 微机12.22.32.1Part 1Part 2Part 3Part 42.4 三、可靠性高三、可靠性高应用应用系统系统 MENU2.2.采用多机多级分散控制采用多机多级分散控制 把系统所有控制任务分把系统所有控制任务分散地由多台微型机来承担,散地由多台微型机来承担,再用一台适当功能的微型机再用一台适当功能的微型机作为上一级的管理主机,对作为上一级的管理主机,对多台分散的下一级微型机进多台分散的下一级微型机进行监督和管理。这就组成了行监督和管理。这就组成了一个两级多机分散的应用系一个两级多机分散的应用系统。统。RETURNRETURN
6、2.22.32.1Part 1Part 2Part 3Part 42.4 四、设计周期短,价格便宜四、设计周期短,价格便宜应用应用系统系统 MENURETURNRETURN 除此之外,如精度、速度、重量、监视手段、抗干扰能力等都是应考虑。2.22.32.1Part 1Part 2Part 3Part 42.4 2.2 应用系统设计的基本内容和步骤应用系统设计的基本内容和步骤应用应用系统系统 MENURETURNRETURN 一、一、引入微型机的必要性分析引入微型机的必要性分析 二、二、分析被控对象需求分析被控对象需求 三、三、选择基本微机系统选择基本微机系统 四、四、确定整个应用系统的方案确定
7、整个应用系统的方案 五、五、硬件和软件的具体设计硬件和软件的具体设计 2.22.32.1Part 1Part 2Part 3Part 42.4Part 5六、六、调试调试 一、引入微型机的必要性分析一、引入微型机的必要性分析应用应用系统系统 MENURETURNRETURN估价成本:经济效益、社会效益估价成本:经济效益、社会效益系统性能改善程度系统性能改善程度系统的通用性、可靠性、可维护性等系统的通用性、可靠性、可维护性等2.22.32.1Part 1Part 2Part 3Part 42.4Part 5 二、分析被控对象需求二、分析被控对象需求应用应用系统系统 MENURETURNRETUR
8、N被控对象工作过程分析被控对象工作过程分析明确微机功能明确微机功能应用系统的响应时间、系统精度、可靠性、应用系统的响应时间、系统精度、可靠性、安全性、可维护性、可操作性安全性、可维护性、可操作性使用环境:电源稳定性及干扰情况、温度、使用环境:电源稳定性及干扰情况、温度、湿度湿度 2.22.32.1Part 1Part 2Part 3Part 42.4Part 5 三、选择基本微机系统三、选择基本微机系统应用应用系统系统 MENURETURNRETURN 先选择一个最基本的微机系统,然后进行扩展先选择一个最基本的微机系统,然后进行扩展,并配上相应的软件而形成一个实用的应用系统。并配上相应的软件而
9、形成一个实用的应用系统。4.尽量选用有较多软件支持的机型尽量选用有较多软件支持的机型 1.微处理器的字长微处理器的字长 2.微处理器的工作速度微处理器的工作速度 3.系统结构对环境的适应性系统结构对环境的适应性 考虑的依据考虑的依据2.22.32.1Part 1Part 2Part 3Part 42.4Part 5 5.其它要求:体积、重量、其它要求:体积、重量、功耗、价功耗、价格格、安装方式、安装方式 四、确定整个应用系统的方案四、确定整个应用系统的方案应用应用系统系统 MENURETURNRETURN1.通道划分及输入输出方式的确定通道划分及输入输出方式的确定 根据被控对象所要根据被控对象
10、所要求的求的I/O参数的数目参数的数目 根据被控对象要求根据被控对象要求 I/O通道通道数目数目采用采用I/O方式方式 一般一般方式方式中断方式:效率较高,成本高。中断方式:效率较高,成本高。定时方式:效率较低,成本低。定时方式:效率较低,成本低。查询方式:效率较低,速度较慢,但成本低。查询方式:效率较低,速度较慢,但成本低。2.22.32.1Part 1Part 2Part 3Part 42.4Part 5 4.确定整个应用系统的大体结构确定整个应用系统的大体结构应用应用系统系统 MENURETURNRETURN注意,不要使用用户程注意,不要使用用户程序占用基本微机系统的工作区。序占用基本微
11、机系统的工作区。2.内存分配内存分配 对通用性和可扩展性有重要意义。对通用性和可扩展性有重要意义。3.系统总线的选择系统总线的选择2.22.32.1Part 1Part 2Part 3Part 42.4Part 5.常规外设及接口常规外设及接口5.其他硬件其他硬件 操作控制台、报警设备、电源、机箱、操作控制台、报警设备、电源、机箱、机架等机架等 五、硬件和软件的具体设计五、硬件和软件的具体设计应用应用系统系统 MENURETURNRETURN硬件设计硬件设计 系统硬件设计的难点系统硬件设计的难点:I/O接口设计接口设计 I/O接口设计和相应的驱动程序设计有关接口设计和相应的驱动程序设计有关 基
12、本微机基本微机系统系统扩展扩展系统系统2.22.32.1Part 1Part 2Part 3Part 42.4Part 5 五、硬件和软件的具体设计五、硬件和软件的具体设计应用应用系统系统 MENURETURNRETURN软件的设计过程软件的设计过程 1.首先根据系统框图画出控制流程图首先根据系统框图画出控制流程图。2.2.再根据系统需要配备的软件情况,用高级语言或汇编再根据系统需要配备的软件情况,用高级语言或汇编 语言编制各用户源程序。语言编制各用户源程序。3.3.经编译或汇编经编译或汇编 目的软件目的软件 可执行的用户程序。可执行的用户程序。4.4.一般可执行文件需进行多次调试和查错才能改
13、正编程一般可执行文件需进行多次调试和查错才能改正编程 中存在的逻辑错误。中存在的逻辑错误。软件设计软件设计2.22.32.1Part 1Part 2Part 3Part 42.4Part 5五、五、硬件和软件的具体设计硬件和软件的具体设计应用应用系统系统 MENURETURNRETURN系统设计特点系统设计特点.软、硬联系更加紧密。软、硬联系更加紧密。2.2.研制手段和调试工具研制手段和调试工具。3.3.系统的设计周期可以大大缩短,一般硬件和软件可以独系统的设计周期可以大大缩短,一般硬件和软件可以独 立地并行进行。立地并行进行。2.22.32.1Part 1Part 2Part 3Part 4
14、2.4Part 5 六、调试六、调试应用应用系统系统 MENURETURNRETURN1.1.实验室联调实验室联调2.2.现场调试现场调试3.鉴定或验收鉴定或验收2.22.32.1Part 1Part 2Part 3Part 42.4Part 5 2.3 微机应用系统的软件结构微机应用系统的软件结构应用应用系统系统 MENURETURNRETURN应用系统软件的特点与分类应用系统软件的特点与分类 单任务结构软件单任务结构软件 通用的应用系统软件结构通用的应用系统软件结构 2.22.32.1Part 1Part 2Part 32.4 一、一、应用系统软件的特点与分类应用系统软件的特点与分类应用应
15、用系统系统 MENURETURNRETURN 1.特点特点既可以由硬件来实现既可以由硬件来实现 增加物理设备增加物理设备 也可以由软件来完成也可以由软件来完成 系统的某些功能系统的某些功能 软件与硬件密不可分,紧密配合软件与硬件密不可分,紧密配合。软件开发一次完成,长期运行。软件开发一次完成,长期运行。增加程序的长度和复杂性增加程序的长度和复杂性 2.22.32.1Part 1Part 2Part 32.4 一、一、应用系统软件的特点与分类应用系统软件的特点与分类应用应用系统系统 MENURETURNRETURN 2.分类分类单任务结构单任务结构 整个计算机系统仅有一个程序在整个计算机系统仅有
16、一个程序在 运行,执行一个任务的软件结构运行,执行一个任务的软件结构适用于功能比较单一的系统适用于功能比较单一的系统 多任务结构多任务结构计算机系统并行地运行着计算机系统并行地运行着 几个不同的程序几个不同的程序 适用于比较复杂的系统,多个适用于比较复杂的系统,多个任务将分时占用任务将分时占用CPU2.22.32.1Part 1Part 2Part 32.4 二、单任务结构软件二、单任务结构软件应用应用系统系统 MENURETURNRETURN单任务查询式结构单任务查询式结构 单任务中断式结构单任务中断式结构 123单任务软件的开发环境单任务软件的开发环境 2.22.32.1Part 1Par
17、t 2Part 32.4 1.单任务查询式结构单任务查询式结构 应用应用系统系统 MENURETURNRETURN系统中只有一个程序,按照事系统中只有一个程序,按照事先安排好的顺序执行。先安排好的顺序执行。(1)结构简单、功能确切、调试方便。)结构简单、功能确切、调试方便。(2)适用:小型专用系统)适用:小型专用系统 规模较大、功能复杂系统规模较大、功能复杂系统 2.22.32.1Part 1Part 2Part 32.4单片机单片机 智能化的测量仪表、家用电器智能化的测量仪表、家用电器 2.单任务中断式结构单任务中断式结构 应用应用系统系统 MENURETURNRETURN时间陷阱时间陷阱由
18、规定的时间定时来激活。由规定的时间定时来激活。事件陷阱事件陷阱由规定的事件来激活。由规定的事件来激活。中断服务程序的简繁程度是根据系统的需要而设中断服务程序的简繁程度是根据系统的需要而设计的,为了能够准确地激活它,在主程序中的适当位计的,为了能够准确地激活它,在主程序中的适当位置上要设置陷阱。置上要设置陷阱。陷阱陷阱2.22.32.1Part 1Part 2Part 32.4 2.单任务中断式结构单任务中断式结构 应用应用系统系统 MENURETURNRETURN 时间中断式时间中断式 分为:主程序分为:主程序 初始化:系统参数、初始化:系统参数、I/O、定时、定时器器 中断处理子程序。中断处
19、理子程序。准确记录突发变化,且分辨出发生的时间差、先准确记录突发变化,且分辨出发生的时间差、先后顺序后顺序。中断量参数,以共享内存参数区的方法来传递参数中断量参数,以共享内存参数区的方法来传递参数 中断处理简化缩短处理时间,提高事件发生时中断处理简化缩短处理时间,提高事件发生时间的分辨率。间的分辨率。事件中断式事件中断式 2.22.32.1Part 1Part 2Part 32.4开关量开关量 3.单任务软件的开发环境单任务软件的开发环境 应用应用系统系统 MENURETURNRETURN计算机的外围设备计算机的外围设备 支持开发环境的操作系统支持开发环境的操作系统 用于程序的输入、编辑和存储
20、的支持软件用于程序的输入、编辑和存储的支持软件 用于程序的编译或汇编的软件用于程序的编译或汇编的软件 用于连接目标模块、生成下装模块的支持软件用于连接目标模块、生成下装模块的支持软件 调试程序的支持硬件和软件调试程序的支持硬件和软件 1.下装下装 2.EPROM编程编程 软件集成软件集成2.22.32.1Part 1Part 2Part 32.4 三、通用的应用系统软件结构三、通用的应用系统软件结构应用应用系统系统 MENURETURNRETURN以多变量闭环控制系统为例 应用程序模块应用程序模块 过程数据的输入与输出过程数据的输入与输出 数据采集、数据采集、控制任务输出控制任务输出16543
21、2控制算法的实现控制算法的实现 PID实时数据的存储管理实时数据的存储管理 实时通信实时通信 人人-机会话功能的实现机会话功能的实现 其他功能模块:图形显示、报警、其他功能模块:图形显示、报警、历史数据管理历史数据管理 2.22.32.1Part 1Part 2Part 32.4 1.实时数据库的存储管理实时数据库的存储管理应用应用系统系统 MENURETURNRETURN(1 1)实时数据库)实时数据库(2)实时数据库的结构实时数据库的结构(3 3)实时数据库的访问和管理)实时数据库的访问和管理 2.22.32.1Part 1Part 2Part 32.4 (1)实时数据库)实时数据库应用应
22、用系统系统 MENURETURNRETURN 设置一个公共的实时数据区。设置一个公共的实时数据区。(共享)(共享)实时数据库实时数据库 实时数据库的存在是必要而有效的实时数据库的存在是必要而有效的 过程物理量巡检任务将数值周期地采集进来过程物理量巡检任务将数值周期地采集进来 对于采集到的数据需要进行各种处理对于采集到的数据需要进行各种处理 趋势跟踪以及控制调解等趋势跟踪以及控制调解等在实时测控系统中,存在着大量的实时数据需要处理在实时测控系统中,存在着大量的实时数据需要处理 2.22.32.1Part 1Part 2Part 32.4 (1)实时数据库)实时数据库应用应用系统系统 MENURE
23、TURNRETURN实时数据库是应用系统软件通用化的基础实时数据库是应用系统软件通用化的基础 实时数据库设计方法实时数据库设计方法 对应每一个测控点设置一项记录对应每一个测控点设置一项记录 对应每一个记录用一个二进制数设置记录标识符对应每一个记录用一个二进制数设置记录标识符ID各个记录排列顺序,按各个记录排列顺序,按ID大小顺序排列大小顺序排列 实时数据库实时数据库使用频繁使用频繁,每一项,每一项定义要简单定义要简单。数据。数据库的结构应简单化库的结构应简单化,对其对其访问方式访问方式应直接化,快速化应直接化,快速化 2.22.32.1Part 1Part 2Part 32.4 (2)实时数据
24、库的结构)实时数据库的结构 应用应用系统系统 MENURETURNRETURN应当设置记录点应当设置记录点 测控点(数据采集点)测控点(数据采集点)输出控制点输出控制点 计算中间变量点计算中间变量点 应确定信息应确定信息 点索引标识点索引标识ID 点字符名称点字符名称说明信息说明信息 报警管理信息报警管理信息 显示用信息显示用信息 转换用信息转换用信息 一些算法的一些算法的计算用信息计算用信息 信息长度信息长度 模拟量点比较长,可能达模拟量点比较长,可能达100个字节以上个字节以上 开关量点比较短,可能只需开关量点比较短,可能只需60个字节左右个字节左右2.22.32.1Part 1Part
25、2Part 32.4 (2)实时数据库的结构)实时数据库的结构 应用应用系统系统 MENURETURNRETURN数据结构的种类:数据结构的种类:硬件支持的信号类型有:硬件支持的信号类型有:模拟量输入信号模拟量输入信号 模拟量输出信号模拟量输出信号 开关量输入信号开关量输入信号 开关量输出信号开关量输出信号 中间结果,以便参与报警检测和显示中间结果,以便参与报警检测和显示 定义数据结构:定义数据结构:模拟量输入模拟量输入/输出信号输出信号 AN 开关量输入开关量输入/输出信号输出信号 DG 模拟计算量模拟计算量 AC 2.22.32.1Part 1Part 2Part 32.4 (3)实时数据
26、库的访问和管实时数据库的访问和管理理应用应用系统系统 MENURETURNRETURN 在设计软件时,即要考虑到实时数据库的在设计软件时,即要考虑到实时数据库的访访问速度问速度,又要考虑到尽量,又要考虑到尽量简化某些任务的操作简化某些任务的操作。公共数据访问方式公共数据访问方式 实时数据放在公共数据区,任务程序要清楚实时数据库的实时数据放在公共数据区,任务程序要清楚实时数据库的存储结构,保持实时数据库的指针。存储结构,保持实时数据库的指针。事件(信息)格式访问方式事件(信息)格式访问方式 以事件(信息)的形式向实时数据库管理任务发出请求。以事件(信息)的形式向实时数据库管理任务发出请求。2.2
27、2.32.1Part 1Part 2Part 32.4访问频度高访问频度高简化操作简化操作 2.数据采集和控制输出任务数据采集和控制输出任务应用应用系统系统 MENURETURNRETURN(1 1)数据采集和控制输出任务的功能数据采集和控制输出任务的功能 (2)对开关量输入数据的处理)对开关量输入数据的处理(3 3)对模拟量输入数据的处理)对模拟量输入数据的处理 (4 4)显示程序的设计)显示程序的设计 2.22.32.1Part 1Part 2Part 32.4 (1)数据采集和控制输出任务的功能数据采集和控制输出任务的功能应用应用系统系统 MENURETURNRETURN主要主要功能模块
28、功能模块有:有:对各个输入点周期扫描对各个输入点周期扫描 对输入信号进行滤波处理和消除尖峰处理对输入信号进行滤波处理和消除尖峰处理 对模拟信号进行工程值转换对模拟信号进行工程值转换 检测警报检测警报 对事件进行中断处理对事件进行中断处理 将输出值转换成硬件输出值将输出值转换成硬件输出值 将输出信号周期地输出到控制通道将输出信号周期地输出到控制通道 2.22.32.1Part 1Part 2Part 32.4 (2)对开关量输入数据的处理对开关量输入数据的处理应用应用系统系统 MENURETURNRETURN每一次输入操作,可以输每一次输入操作,可以输入入8位或位或16位开关量状态位开关量状态
29、对开关量对开关量DI的操作的操作典型过程如图所示典型过程如图所示:2.22.32.1Part 1Part 2Part 32.4 (3 3)对模拟量输入数据的处理)对模拟量输入数据的处理应用应用系统系统 MENURETURNRETURN 模拟量信号在输入计算机以后,输入任务要对其模拟量信号在输入计算机以后,输入任务要对其进行读取,平滑滤波,尖峰抑制,工程单位转换,报进行读取,平滑滤波,尖峰抑制,工程单位转换,报警检测等处理。警检测等处理。尖峰信号的抑制尖峰信号的抑制 尖峰尖峰是指电信号中是指电信号中突然发生很大的变化突然发生很大的变化2.22.32.1Part 1Part 2Part 32.4
30、(3 3)对模拟量输入数据的处理)对模拟量输入数据的处理应用应用系统系统 MENURETURNRETURN平滑滤波平滑滤波 由于各种电器干扰或设备不稳,信号到达计算机时,由于各种电器干扰或设备不稳,信号到达计算机时,不可避免地要引入一些微小的波动。有时,电源电压的不可避免地要引入一些微小的波动。有时,电源电压的纹波也会在信号上产生一个周期的波动。纹波也会在信号上产生一个周期的波动。滤波的方法:滤波的方法:算术平均值滤波,算术平均值滤波,中值滤波,中值滤波,一阶滞后滤波一阶滞后滤波 2.22.32.1Part 1Part 2Part 32.4 (4 4)显示程序的设计)显示程序的设计应用应用系统
31、系统 MENURETURNRETURN 人机会话界面,包括:窗口人机会话界面,包括:窗口 菜单菜单 现场状态图形画面现场状态图形画面 支持平台支持平台 系统分为两层:人机会话层系统分为两层:人机会话层 测控层测控层 图形画面的更新图形画面的更新 在磁盘和显示缓冲区之间直接进行读写的方法在磁盘和显示缓冲区之间直接进行读写的方法 动态数据曲线的技术处理动态数据曲线的技术处理 采用采用直接读写显示缓冲区直接读写显示缓冲区的方法,即直接读取欲被移动的的方法,即直接读取欲被移动的显示区的数据,并将其直接写入新的区域的方法。显示区的数据,并将其直接写入新的区域的方法。2.22.32.1Part 1Part
32、 2Part 32.42.4 高级语言和汇编语言的混合编程高级语言和汇编语言的混合编程应用应用系统系统 MENURETURNRETURNn概述概述nC语言程序对汇编语言程序的调用语言程序对汇编语言程序的调用nC语言程序调用汇编程序实例语言程序调用汇编程序实例 n汇编语言对汇编语言对C C语言程序的调用语言程序的调用 n其他语言对汇编的调用其他语言对汇编的调用2.22.32.1Part 1Part 2Part 32.4 概述概述应用应用系统系统 MENURETURNRETURN 一般与控制端口有关的输入输出程序及执行速度要求一般与控制端口有关的输入输出程序及执行速度要求高的程序用汇编语言编写,如
33、数据采集、实时时钟管理程高的程序用汇编语言编写,如数据采集、实时时钟管理程序,主程序及数据处理序,主程序及数据处理 程序用高级语言编写。程序用高级语言编写。我们把这种高级语言和汇编语言的混合编程称为混合我们把这种高级语言和汇编语言的混合编程称为混合语言。混合语言只是一种程序接口技术语言。混合语言只是一种程序接口技术。高级语言与汇编语言程序的连接,在技术上有两个问题:高级语言与汇编语言程序的连接,在技术上有两个问题:1.1.高级语言的程序如何调用汇编语言程序。高级语言的程序如何调用汇编语言程序。2.2.高级语言程序和汇编语言程序如何实现互相之间的通信高级语言程序和汇编语言程序如何实现互相之间的通
34、信。2.22.32.1Part 1Part 2Part 32.4 C语言程序对汇编语言程序的调用语言程序对汇编语言程序的调用应用应用系统系统 MENURETURNRETURN 命名原则命名原则 调用原则调用原则 参数传递原则参数传递原则 编写编写C语言和汇编语言过程时,必须遵守三个原则(约定)语言和汇编语言过程时,必须遵守三个原则(约定)1.C语言程序的接口处理语言程序的接口处理 2.2.汇编语言程序的接口处理汇编语言程序的接口处理 内容内容2.22.32.1Part 1Part 2Part 32.4 1.C语言程序的接口处理语言程序的接口处理应用应用系统系统 MENURETURNRETURN
35、 (1)(1)命名原则命名原则 编译系统自动地把在程序中出现的变量名或函数名的编译系统自动地把在程序中出现的变量名或函数名的前面加一个下划线前面加一个下划线”_”,如将,如将fact _fact。C 语言源程序中调用一个外部汇编过程中,则直接使语言源程序中调用一个外部汇编过程中,则直接使用该过程名而不加下划线。比如,在汇编语言程序中用该过程名而不加下划线。比如,在汇编语言程序中有一个被调用的过程名有一个被调用的过程名_demo_demo,在,在C C语言程序中可直接语言程序中可直接用用demo()demo()对其产生调用。对其产生调用。C语言规定名称的有效长度为语言规定名称的有效长度为8个字符
36、个字符(不包括下划线(不包括下划线)2.22.32.1Part 1Part 2Part 32.4 1.C语言程序的接口处理语言程序的接口处理应用应用系统系统 MENURETURNRETURNextern语言的说明形式语言的说明形式:extern 返回值类型返回值类型 名称(参数类型表)名称(参数类型表)返回值类型是对函数过程而言的。返回值类型是对函数过程而言的。若是变量则指变量类型是若是变量则指变量类型是C语言语言所允许的任何数据类型,默认为所允许的任何数据类型,默认为int型。型。名称是对应的函数过程名或变量名等,它应符合命名原则。名称是对应的函数过程名或变量名等,它应符合命名原则。例:例:
37、extern short thing(int,short);extern power();extern para;外部变量说明,不需要括号和参数类型表。(2)(2)调用原则调用原则2.22.32.1Part 1Part 2Part 32.4 1.C语言程序的接口处理语言程序的接口处理应用应用系统系统 MENURETURNRETURN(3)参数传递原则参数传递原则 若没有参数传递,则外若没有参数传递,则外部说明和调用时都予以部说明和调用时都予以空缺。空缺。如果参数是传值传送,如果参数是传值传送,可以直接写出实参。可以直接写出实参。地址传送,则在地址传送,则在extern说明中,将参数类型说说明中
38、,将参数类型说明成指针型,并在放实明成指针型,并在放实参时给出参数的地址。参时给出参数的地址。例例extern thing():/*外部函数说明*/:thing();/*表示调用函数thing()*/extern int thing(int*)int n=10;thing(&n);2.22.32.1Part 1Part 2Part 32.4 2.2.汇编语言程序的接口处理汇编语言程序的接口处理应用应用系统系统 MENURETURNRETURN1为了与为了与C语言命名原则相符,在定义和编写汇编语言语言命名原则相符,在定义和编写汇编语言程序的被调用过程时,应以程序的被调用过程时,应以下划线开头下划
39、线开头,用,用PUBLIC(公共块,可被其他模块使用和访问(公共块,可被其他模块使用和访问)说明,过程名说明,过程名最好不要超过最好不要超过8个字符。个字符。如数据被其他模块使用,必如数据被其他模块使用,必须用须用PUBLIC说明。说明。例例:PUBLIC _fact。2如果如果C 语言程序以语言程序以巨型(巨型(huge)、大型(大型(large)或或者者中型(中型(medium)存储模式编译,被存储模式编译,被C语言调用的语言调用的汇编过程应说明成汇编过程应说明成FAR,例:,例:_fact proc far。如如C语言程序以语言程序以小型(小型(small)或者或者紧凑型(紧凑型(com
40、pact)存储存储模式编译,被调用的汇编过程应说明成模式编译,被调用的汇编过程应说明成NEAR。2.22.32.1Part 1Part 2Part 32.4 2.2.汇编语言程序的接口处理汇编语言程序的接口处理应用应用系统系统 MENURETURNRETURN3考虑调用约定,考虑调用约定,C语言程序向汇编过程传送参数是通语言程序向汇编过程传送参数是通过过堆栈堆栈进行的。进行的。注意注意:C 语言参数堆栈顺序与语言参数堆栈顺序与参数调用时参数表中出现顺序参数调用时参数表中出现顺序相反。第一个参数的地址最低,相反。第一个参数的地址最低,是最后压入堆栈的,各种类型是最后压入堆栈的,各种类型参数在堆栈
41、中所占的字节数也参数在堆栈中所占的字节数也不同的。如不同的。如int 型占型占2个字节个字节,float 型占型占4个字节。个字节。(类型对应的字节数与机器有(类型对应的字节数与机器有关,使用时须十分注意)。关,使用时须十分注意)。如调用顺序是fact(A、B),则B先入栈而A在后。2.22.32.1Part 1Part 2Part 32.4 2.2.汇编语言程序的接口处理汇编语言程序的接口处理应用应用系统系统 MENURETURNRETURN4汇编过程的进入汇编过程的进入 汇编过程的进入一般以两条指令开始,即汇编过程的进入一般以两条指令开始,即 PUSH BP MOV BP,SPBP是一个是
42、一个区域指针区域指针,用来访问参数和局部数据。,用来访问参数和局部数据。这些数据都存放在堆栈中,所以,这些数据都存放在堆栈中,所以,BP 也成为一也成为一个指向堆栈中各元素的指针个指向堆栈中各元素的指针,正是这个正是这个BP成为了成为了参数传递的关键。参数传递的关键。BP基址寄存器基址寄存器SP堆栈指针堆栈指针2.22.32.1Part 1Part 2Part 32.4 2.2.汇编语言程序的接口处理汇编语言程序的接口处理应用应用系统系统 MENURETURNRETURN5结果和值的返回结果和值的返回 在在PC系列机上,当返回值的数据类型是简单系列机上,当返回值的数据类型是简单类型时,同时长度
43、不超过类型时,同时长度不超过4个字节,约定一般为:个字节,约定一般为:数据大小数据大小 返回值所放寄存器返回值所放寄存器 1 1字节字节 ALAL 2 2字节字节 AXAX 3 3字节字节 高端地址(或段地址)在高端地址(或段地址)在DXDX 低端地址(或位移量)在低端地址(或位移量)在AXAX 返回值超过返回值超过4个字节时,个字节时,C语言调用过程为返回值语言调用过程为返回值分配一个存储空间,将地址放在寄存器分配一个存储空间,将地址放在寄存器DX:AX中。中。2.22.32.1Part 1Part 2Part 32.4 2.2.汇编语言程序的接口处理汇编语言程序的接口处理应用应用系统系统
44、MENURETURNRETURN6退出汇编程序退出汇编程序 在被在被C C语言调用的汇编过程中用语言调用的汇编过程中用指令指令RETRET返回。而在返回。而在BASICBASIC,FORTRANFORTRAN等其他语言中要求用等其他语言中要求用指令指令RET nRET n返回。返回。因为因为C C语言的调用程序会自动恢复堆栈。语言的调用程序会自动恢复堆栈。另外,如果另外,如果C语言程序以语言程序以small或或compact模式编译模式编译,其其堆栈中的返回地址只占堆栈中的返回地址只占2个字节(个字节(NEAR)。如果。如果C语语言程序以言程序以huge、large或或medium模式编译模式
45、编译,则返回地址则返回地址中要占中要占4个字节(个字节(FAR)。2.22.32.1Part 1Part 2Part 32.4 2.2.汇编语言程序的接口处理汇编语言程序的接口处理应用应用系统系统 MENURETURNRETURN7C C语言参数传递方式是语言参数传递方式是传值传值,数组总是采用,数组总是采用传址传址方式方式。C C语言调用汇编程序的语言调用汇编程序的步骤步骤为:为:按约定编写按约定编写C语言程序,编译后得到目标文件,语言程序,编译后得到目标文件,注意注意extern和参数的类型的使用。和参数的类型的使用。按约定编写并汇编语言源程序,得到重定位的目标按约定编写并汇编语言源程序,
46、得到重定位的目标文件文件(OBJOBJ文件)文件),注意下划线,注意下划线,PUBLICPUBLIC和和BPBP的使用的使用。将两种语言程序的目标文件连接成一个可执行的文件。将两种语言程序的目标文件连接成一个可执行的文件。运行该执行文件。运行该执行文件。在连接之前,在连接之前,C C语言程序和汇编语言语言程序和汇编语言程序都有各自的代码段,数据段,他们是不相重合的程序都有各自的代码段,数据段,他们是不相重合的,而连接之后,它们便合二为一。而连接之后,它们便合二为一。2.22.32.1Part 1Part 2Part 32.4 2.2.汇编语言程序的接口处理汇编语言程序的接口处理应用应用系统系统
47、 MENURETURNRETURN 两个被连接的目标模块中,总有一个应当是起始执行两个被连接的目标模块中,总有一个应当是起始执行模块。模块。或者,在汇编程序中有起始模块,调用或者,在汇编程序中有起始模块,调用C语言程序时,语言程序时,C语言程序本身不能自行运行,一般以语言程序本身不能自行运行,一般以C语言为主。语言为主。如果以如果以C C语言为主,语言为主,C C语言中应用语言中应用main()main()模块,对汇编过模块,对汇编过程进行调用,程进行调用,而汇编模块本身不能自行运行。而汇编模块本身不能自行运行。如果两个程序模块都有起始模块,在连接时会出现错误。如果两个程序模块都有起始模块,在
48、连接时会出现错误。2.22.32.1Part 1Part 2Part 32.4 C语言程序调用汇编程序实例语言程序调用汇编程序实例应用应用系统系统 MENURETURNRETURN例例1.用汇编过程完成用汇编过程完成Ax2B计算,由计算,由C语言程序将结果输出。语言程序将结果输出。此即为此即为C语言调用一个汇编程序,传送两个参数语言调用一个汇编程序,传送两个参数A和和B,并由,并由汇编返回一个计算结果。汇编返回一个计算结果。程序清单如下:程序清单如下:/*C语言程序:语言程序:CAC1C*/*CAC1C_MSC CALLS MASM routine*/extern int power2(int
49、,int);main()printf(“3 times 2 to the power of 5 is%dn”,power2(3,5);2.22.32.1Part 1Part 2Part 32.4 C语言程序调用汇编程序实例语言程序调用汇编程序实例应用应用系统系统 MENURETURNRETURN;汇编语言程序;汇编语言程序:CAA1.ASM;CAA1.ASM-MASM routine called by msc.MODEL SMALL.CODE PUBLIC _power2 _power proc near PUSH BP ;SAVE BP MOV BP,SP ;PIONT TO STACK MOV AX,BP+4 ;LOAD ARG1 MOV CX,BP+6 ;LOAD ARG2 SHL AX,CL ;CALCULATE POP BP ;RET _power2 ENDP END 2.22.32.1Part 1Part 2Part 32.4