



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言和C语言在图形处理中的综合应用汇编语言(Assembly Language)是面向机器的程序设计语言.汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。随着计算机与各相关学科的交叉促进,计算机图形在各领域的应用越来越广泛。计算机图形的广泛应用对图形的处理技术提出更高的要求,尤其是在存取效率与质量方面。C语言提供了丰富的图形函数且开发效率高,但在要求执行速度快, 占用空间少或要求直接控制硬件的场合, 汇编语言就可以提高程序的运行效率。 充分发挥两种语言的优点,实现两种语言之间的混合编程,是解决问题的有效方法。本文以画直线为例,讨论汇编语言与C语言在图形处理过程中的综合应用技术。随着 3G 时代的到来,计算机形处理的信息量越来越大, 处理的技术也越来越复杂。 衡量图形处理的标准, 不仅取决于质量,还取决于存取效率。图形的质量与分辨率,每点位数、 颜色定标及校正等因素有关,存取效率与在处理过程中 所消耗的时间有关。计算机处理图形的方式,可以采用 C 语言,也可以采用汇编语言。作为一种高级语言,语言毫无疑问是杰出的,C 它的功能丰富、表达能力强、使用灵活、开发效率高,因而比汇编语言使用更为广泛。 通常在软件开发过程中,大部分 程序采用高级语言编写, 以提高程序的开发效率; 但在要求执行速度快、占用空间少或要求直接控制硬件的场合, 则利用汇编语言编写,以提高程序的运行效率。汇编语言是一种面向机器的语言,其特点是运行速度快、占用存储空间小, 可直接对硬件进行控制,在一些实时控制的场合, 有着不可替代的作用。然而汇编语言也有它的不足,如编写及调试相对高级语言程序来说要困难、复杂一些,尤其在进行数据处理、数值的混合运算时更是如此。本文将重点探讨 C语言和汇编语言在图形处理的综合编程技术, 发挥它们各自的优势,提高图形的处理效果。 C 语言程序中调用汇编语言程序进行混合编程时,一个任务往往被分为若干个功能模块, 每个模块以函数或子程序的形式存在,根据每一模块的特点选用适合的语言编程,然后使用相应的编译系统对其进行编译形成目标文件,最后将多个目标文件连接在一起形成 一个完整的可执行文件。汇编语言与C 语言混合编程,需要解决四个问题: 一是存储模式的约定; 二是函数名的约定; 三是汇编语言与 C 语言之间的参数传递;四是编译方法。 2.1 存储模式的约定 C 语言共有 6 种不同的存储模式: 微模式 Tiny、 小模式 Small、中模式 Medium、紧凑模式 Compact、大模式 Large、 巨模式 Huge。混合编程时必须保持汇编语言和 C 语言的存储模式一致。在汇编语言中使用伪指令Model*,表示 在汇编语言中采用的存储模式,其中*表示上述 6 种模式 中的一种。若 C 采用小模式,则在汇编语言中要使用。 2.2 函数名的约定 编译系统在对 C源程序编译时,会在其中的变量名、 函数名前面加下划线。为使连接后的程序保持一致性,被 C 语言调用的汇编子程序中,所有标识符都要加下划线。在 C 语言调用的汇编子程序中,所有标识符都要加下划线;在 C 语言中,C 对所要调用的汇编子程序中的函数、变量,都要 用 Extern 伪命令予以说明,一般将其放在各函数体外部。 同时,为了使汇编语言的标识符能在 C 语言中可见,必须 用 Public 操作符定义标识符。图形方式下,显示屏幕由若干行和列的像素点组成。运用汇编语言操作像素的方法共有两种:一是利用BIOS功能调用;另外一种是直接写屏。各种显示模式在显示缓冲区存储方式上的明显差异,操作像素方法的难易程度相差也很大。同时,图形方式下的直接写屏较为复杂,在使用MOV指令将像素信息写入显存之前,需要首先设置VGA接口内的“图形控制寄存器”,所以,不采用直接操作显示缓冲区的办法来达到改变显示像素的目的,最好是通过BIOS内的中断功能来实现相应的功能,这样,所编写的程序能很方便地适应不同的图形显示模式。 INT 10H 提供了图形方式下的读像素和写像素的两项功能。 AH = 0CH,写像素 入口参数:AL = 像素值,BH = 显示页 返回参数:无 AH = 0DH,读像素 入口参数:BH = 显示页,CX = X坐标,DX=Y坐标 返回参数:AL = 像素值 下面的实例运用汇编语言在屏幕上画一条直线,直线的参数起始坐标,直线长度以及颜色,是通过C语言函数模块传递给汇编语言函数。以下是程序清单及其简要说明。首先,在YLIB.H文件里对写像素宏定义。 WRITE_PIXEL MACRO PAGE1,ROW,COLOUM,COLOR MOV AH,OCHMOV AL,COLOR MOV BH,PAGE1 MOV DX,ROW MOV CX,COLOMN INT 10HENDM 汇编语言源程序画直线程序,如算法1所示。 ;MASML.ASM.MODEL SMALL INCLUDE YLIB.H .DATA OLDMODE DB ? X DW ? Y DW ? LENG DW ? COLOUR DB ? .CODE PUBLIC _LINE ;子程序: _LINE PROC L1:PUSH CX PUSH BP WRITE_PIXEL 0,X,Y, MOV BP,SP COLOUR MOV AL,BP+4 INC X MOV COLOUR,AL POP CX MOV AX,BP+6 LOOP L1 MOV LENG,AX MOV AX,BP+8 POP BP MOV Y,AX RET MOV AX,BP+10 MOV AH,4CH MOV X,AX INT 21H MOV AH,0FH _LINE ENDP INT 10H MOV OLDMODE,AL SETMODE 12H MOV CX,LENG MOV DX,Y END算法1直线程序 其次,在C语言中调用汇编语言,如算法2所示。 #include “stdio.h” extern void line(int row,int column,int len,int color); main() line(100,100,200,5); line(150,150,50,6); 算法2 调用程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 我的成长故事在挑战中成长记事作文5篇
- 活动策划与志愿服务合作承诺函9篇
- 技术团队成果报告评审流程模板多版本比对
- (正式版)DB15∕T 3253.5-2023 《食品生产加工小作坊生产规范 第5部分:熟面食》
- 初中英语语法从句学习教案
- 地球妈妈的家书800字(8篇)
- 团队建设与团队沟通辅助工具包
- 客户关怀与服务水平监测表模板
- 知识产权保护与法律合规性检查工具
- 农业种植基地土地托管合同
- 金属学第三章
- 人工智能训练师(5级)培训考试复习题库-上(单选题汇总)
- 小学科学-哪杯水热教学课件设计
- 酒店明住宿清单(水单)
- 《中国儿童维生素A、维生素D临床应用专家共识》解读
- 应用技术推广中心 报告1212
- 教学第七章-无机材料的介电性能课件
- 应急值班值守管理制度
- 外国文学史-总课件
- 《中小企业划型标准规定》补充说明
- 房屋租赁信息登记表
评论
0/150
提交评论