汇编语言个C语言的图形处理.doc

上传人:M****1 文档编号:557264816 上传时间:2023-09-01 格式:DOC 页数:4 大小:34KB
返回 下载 相关 举报
汇编语言个C语言的图形处理.doc_第1页
第1页 / 共4页
汇编语言个C语言的图形处理.doc_第2页
第2页 / 共4页
汇编语言个C语言的图形处理.doc_第3页
第3页 / 共4页
汇编语言个C语言的图形处理.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《汇编语言个C语言的图形处理.doc》由会员分享,可在线阅读,更多相关《汇编语言个C语言的图形处理.doc(4页珍藏版)》请在金锄头文库上搜索。

1、汇编语言和C语言在图形处理中的综合应用汇编语言(Assembly Language)是面向机器的程序设计语言.汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言

2、的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。随着计算机与各相关学科的交叉促进,计算机图形在各领域的应用越来越广泛。计算机图形的广泛应用对图形的处理技术提出更高的要求,尤其是在存取效率与质量方面。C语言提供了丰富的图形函数且开发效率高,但在要求执行速度快, 占用空间少或要求直接控制硬件的场合, 汇编语言就可以提高程序的运行效率。 充分发挥两种语言的优点,实现两种语言之间的混合编程,是解决问题的有效方法。本文以画直线为例,讨论汇编语言与C语言在图形处理过程中的综合应用技术。随着 3G 时代的到来,计算机形处理的信息量越来越大, 处理的技术也越来越复杂。 衡量图形处理的标准,

3、不仅取决于质量,还取决于存取效率。图形的质量与分辨率,每点位数、 颜色定标及校正等因素有关,存取效率与在处理过程中 所消耗的时间有关。计算机处理图形的方式,可以采用 C 语言,也可以采用汇编语言。作为一种高级语言,语言毫无疑问是杰出的,C 它的功能丰富、表达能力强、使用灵活、开发效率高,因而比汇编语言使用更为广泛。 通常在软件开发过程中,大部分 程序采用高级语言编写, 以提高程序的开发效率; 但在要求执行速度快、占用空间少或要求直接控制硬件的场合, 则利用汇编语言编写,以提高程序的运行效率。汇编语言是一种面向机器的语言,其特点是运行速度快、占用存储空间小, 可直接对硬件进行控制,在一些实时控制

4、的场合, 有着不可替代的作用。然而汇编语言也有它的不足,如编写及调试相对高级语言程序来说要困难、复杂一些,尤其在进行数据处理、数值的混合运算时更是如此。本文将重点探讨 C语言和汇编语言在图形处理的综合编程技术, 发挥它们各自的优势,提高图形的处理效果。 C 语言程序中调用汇编语言程序进行混合编程时,一个任务往往被分为若干个功能模块, 每个模块以函数或子程序的形式存在,根据每一模块的特点选用适合的语言编程,然后使用相应的编译系统对其进行编译形成目标文件,最后将多个目标文件连接在一起形成 一个完整的可执行文件。汇编语言与C 语言混合编程,需要解决四个问题: 一是存储模式的约定; 二是函数名的约定;

5、 三是汇编语言与 C 语言之间的参数传递;四是编译方法。 2.1 存储模式的约定 C 语言共有 6 种不同的存储模式: 微模式 Tiny、 小模式 Small、中模式 Medium、紧凑模式 Compact、大模式 Large、 巨模式 Huge。混合编程时必须保持汇编语言和 C 语言的存储模式一致。在汇编语言中使用伪指令Model*,表示 在汇编语言中采用的存储模式,其中*表示上述 6 种模式 中的一种。若 C 采用小模式,则在汇编语言中要使用。 2.2 函数名的约定 编译系统在对 C源程序编译时,会在其中的变量名、 函数名前面加下划线。为使连接后的程序保持一致性,被 C 语言调用的汇编子程

6、序中,所有标识符都要加下划线。在 C 语言调用的汇编子程序中,所有标识符都要加下划线;在 C 语言中,C 对所要调用的汇编子程序中的函数、变量,都要 用 Extern 伪命令予以说明,一般将其放在各函数体外部。 同时,为了使汇编语言的标识符能在 C 语言中可见,必须 用 Public 操作符定义标识符。图形方式下,显示屏幕由若干行和列的像素点组成。运用汇编语言操作像素的方法共有两种:一是利用BIOS功能调用;另外一种是直接写屏。各种显示模式在显示缓冲区存储方式上的明显差异,操作像素方法的难易程度相差也很大。同时,图形方式下的直接写屏较为复杂,在使用MOV指令将像素信息写入显存之前,需要首先设置

7、VGA接口内的“图形控制寄存器”,所以,不采用直接操作显示缓冲区的办法来达到改变显示像素的目的,最好是通过BIOS内的中断功能来实现相应的功能,这样,所编写的程序能很方便地适应不同的图形显示模式。 INT 10H 提供了图形方式下的读像素和写像素的两项功能。 AH = 0CH,写像素 入口参数:AL = 像素值,BH = 显示页 返回参数:无 AH = 0DH,读像素 入口参数:BH = 显示页,CX = X坐标,DX=Y坐标 返回参数:AL = 像素值 下面的实例运用汇编语言在屏幕上画一条直线,直线的参数起始坐标,直线长度以及颜色,是通过C语言函数模块传递给汇编语言函数。以下是程序清单及其简

8、要说明。首先,在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

9、 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 调用程序 再次,编辑工程文件,如算法3所示。 masml.obj cline.c 算法3 工程文件 最后,按F9运行程序。 C语言和汇编语言相互交叉调用,进行参数传递,共享数据信息和数据结构,使由此开发的软件更实用,更安全可靠,尤其是在计算机图形方面。它们的综合应用,使开发和编程工作达到事半功倍的效果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号