基于C语言与汇编语言的混合编程方法研究.pdf
《基于C语言与汇编语言的混合编程方法研究.pdf》由会员分享,可在线阅读,更多相关《基于C语言与汇编语言的混合编程方法研究.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机与信息技术第27卷第5期广西民族师范学院学报Vol.27No.52010年10月JOURNAL OF GUANGXI NORMAL UNIVERSITY FOR NATIONALITIESOct.20100引 言C语言是在当今软件开发领域中应用十分广泛的一种高级程序设计语言,具有数据类型丰富、表达能力强、效率高、可移植性好且使用灵活方便等优点。既具有高级语言程序设计的特点,又具有汇编语言的功能1。在实际应用中,为了完成某种特定的功能、或者需要缩短程序的运行时间、或者需要对计算机硬件进行直接操作以及可能需要利用操作系统的某些功能模块时,往往要使用汇编语言程序,即要应用C语言与汇编语言的混合
2、编程技术。由C语言程序调用汇编语言程序的方法通常有两种形式:一种是在程序中嵌入汇编代码,主要适用于汇编语言程序较短的情况;另一种是直接调用汇编语言子程序。通过分析与研究,给出了TurboC与汇编语言的混合编程应用方法和具体实例。1汇编语言子程序的一般形式276-98MODEL内存模式DATA;定义数据CODEPUBLIC_子程序名1;说明在C程序中调用的子程序名PUBLIC_子程序名n_子程序名1 PROC过程类型;子程序体RET_子程序名1 ENDP;其它子程序_子程序名n PROC过程类型;子程序体RET_子程序名n ENDPEND子程序中的过程类型通常有FAR和NEAR两种。NEAR表示
3、“近过程”,调用程序和被调用程序在同一个段内,调用和返回时仅改变IP寄存器的值,为默认设置的类型;FAR表示“远过程”,调用程序和被调用程序可以不在同一个段内,调用和返回时改变IP和CS寄存器中的值。C语言对应的汇编语言程序中,函数名和变量名前要加一个下划线(_)。在混合编程时,汇编语言子程序的内存收稿日期:2010-7-19作者简介:邹海荣(1972-),男,陕西咸阳人,硕士,陕西理工学院计算机与科学技术系讲师,主要研究方向:计算机应用技术与信息安全。基于C语言与汇编语言的混合编程方法研究邹海荣(陕西理工学院 计算机与科学技术系,陕西 汉中723000)摘要:C语言具简洁、灵活的特点以及丰富
4、的库函数和功能强大的调试手段,适用面非常广泛。但在实际应用中,为了完成某种特定的功能,或需要缩短程序的运行时间,或需要对硬件进行直接操作,或需要利用操作系统的某些功能模块,这时就会使用到汇编语言程序,即要采用C语言与汇编语言的混合编程技术实现。通过研究与分析Turbo C与汇编语言的混合编程方法,为C语言应用开发人员提供方便。关键字:C语言;汇编语言;Turbo C;子程序中图分类号:TP311.1文献标识码:A文章编号:1674-8891(2010)05-0062-04Research on Method of Mixed Programming Based on C Language an
5、d Assembly LanguageZOU Hai-Rong(Department of Computer Science and Technology,Shaanxi Institute of Technology Shaanxi HanZhong 723000)Abstract:In practical applications,in order to complete a specific function,programming has to mix the assembly language and C language.Theresearch and analysis of mi
6、xed programming based on Turbo C and Assembly Language can offer conveniences for C language application developers.Key words:C language;Assembly language;Turbo C;Subroutine62-模式一般和C语言的内存模式要保持一致。常用的内存模式有五种,如表1所示3256-257。表1内存模式2 C程序中嵌入汇编代码的方法2.1嵌入汇编代码的C程序结构在C语言程序中可以内嵌汇编代码,对于TurboC而言,嵌入汇编指令的格式为:asm 。该
7、方式主要适用于汇编语言程序较短的情况。下面为含有内嵌汇编指令的C程序结构实例。#include“stdio.h”int max(int a,int b)asm mov ax,aasm cmp ax,basm jg okasm mov ax,bOk:return _ax;void main()printf(“%d”,max(5,9);return 0;通过该实例的分析与研究,对于在C语言程序中内嵌汇编代码时,要遵循如下规则:(1)汇编语言代码中所使用的C语言变量应初始化且用ptr指明对应的汇编类型。(2)汇编指令不需要用(;)做语句的结束。(3)在asm块中不用ret指令返回,而用C语言的ret
8、urn语句返回。(4)asm块中的注释是汇编语言的注释,即分号(;)。(5)汇编语言的伪指令(如db等)不能嵌入到C程序中。2.2嵌入汇编指令的C程序的编译与连接在Turbo C集成环境中,嵌入汇编指令的C程序采用TCC命令进行编译和连接,其命令格式为:TCC 。“命令行选项”中和嵌入汇编指令程序相关的选项主要有以下几种形式:(1)/mx开关告诉TASM(由MASM改名而得)区分大小写;(2)-B编译嵌入汇编指令的C程序;(3)-C编译和汇编扩展名为.c和.asm的文件,但不进行连接;(4)-E改变处理嵌入汇编指令的汇编程序为;(5)-e生成可执行文件;(6)-I指定半酣文件的路径;(7)-L
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 语言 汇编语言 混合 编程 方法 研究
限制150内