混合编程方法:

模块链接法

汇编指令嵌入法

1: 模块链接法则

模块链接法是指分别用汇编语言和C语言实现独立的模块(或子程序),再用链接程序把各模块生成的obj文件连接成一个可执行程序。

1:C语言调用汇编语言子程序:即由汇编语言实现子程序,C语言实现主程序。

2: 汇编语言调用C语言子程序:即由C语言实现子程序,汇编语言实现主程序。

1.1 C语言调用汇编语言子程序

首先准备汇编语言子程序,如下(采用了简化段定义方式):

.

.model flat, C

.STACK

.CODE

getmax PROC Param1:SDWORD, Param2:SDWORD

MOV EAX, Param1

CMP EAX, Param2

JG EXIT

MOV EAX, Param2

EXIT:

RET

getmax ENDP

END

用新的汇编程序ML汇编源文件,格式为:ML /c /coff 源文件名

这样就会生成一个Win32下支持的格式的obj文件

成功生成 ok.obj

在VC6中创建一个项目,添加C语言源文件到项目,再把汇编生成obj文件也添加到项目(跟源文件一样),然后编译即可。

extern int getmax(int a, int b);

#include

int main(int argc, char* argv[])

{

int m = getmax(, );

printf("%d",m);

return ;

}

如何添加OBJ文件:

方式一: 右键你创建的项目添加文件到工程即可正常链接

方式二: 工程选项》设置

将刚才的ok.obj 这个可以是你的汇编程序生成的任何obj文件,添加到

注意:ok.obj 必须在当前工程的目录下

运行

1.2汇编语言调用C语言子程序

在VC6下编译c程序为obj或lib(注意在C++下定义C函数要加extern “C”前缀表明是一个C语言函数,而不是C++);

在汇编里使用proto申明c函数的原型,使用invoke伪指令调用c函数;

声明调用者代码:

.

.model flat, stdcall

printf PROTO C param1:ptr sbyte, param2:vararg ; 声明调用函数

.data

szMsg byte 'Hello World!', 0ah,

.code

start:

mov eax, OFFSET szMsg

invoke printf, eax

ret

end start

用新的汇编程序ML汇编源文件,格式为:ML /c /coff 汇编程序文件名

用link32.exe将编译c程序生成的obj/lib与汇编生成的obj文件链接在一起即可,格式如下:

link32 汇编生成的obj文件名 c程序生成的obj/lib文件 /subsystem:console

如果直接调用C语言库函数,直接连接msvcrt.lib文件

例如:

link32 testmix.obj msvcrt.lib /subsystem:console

/subsystem:console表示生成的控制台程序,不是图形窗口程序

C语言调用者程序:

extern int getmax(int a, int b);

int main(int argc, char* argv[])

{

int m = getmax(, );

printf("%d",m);

return ;

}

2: X86汇编指令嵌入法

指令意思差异还是很大的

单片机C 语言与汇编语言混合编程

在单片机应用系统设计中,过去主要采用汇编语言开发程序. 汇编语言编写的程序对单片机硬件操作很方便,编写的程序代码短,效率高,但系统设计的周期长,可读性和可移植性都很差.C语言程序开发是近年来单片机系统 ...

keil C语言与汇编语言混合编程

C与汇编混合编程主要有以下几种:(1)C语言中嵌入汇编(2)无参数传递的函数调用(3)有参数传递的函数调用 一.C语言中嵌入汇编 1.在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码: #prag ...

C51与汇编语言混合编程

函数内部混合编程 若想在C语言函数内部使用汇编语言,应使用以下Cx51编译器控制命令: #pragma asm ; Assembly code #pragma endasm  功能作用:asm和end ...

c语言环境初始化&c语言和汇编混合编程

bootloader通常会分为两个阶段:第一阶段采用汇编语言来编写,主要是一些核心的初始化工作(内存,时钟的初始化),第二阶段使用C语言来编写,主要是它会完成一些板载硬件的初始化(串口,网口)然后其启 ...

arm:c语言和汇编混合编程

仅作演示. 1.C和汇编可相互调用,汇编子函数格式参考 汇编:普通的函数调用的汇编代码解析 http://www.cnblogs.com/mylinux/p/4139972.html 本文演示了 : ...

C语言调用Python 混合编程

导语 Python有很多库,Qt用来编写界面,自然产生C++调用Python的需求.一路摸索,充满艰辛 添加头文件搜索路径,导入静态库 我的python头文件搜索路径:C:\Python27amd64 ...

【转】VxWorks中高精度实时时钟的实现及C语言汇编混合编程

最近一个项目中需要在VxWorks下使用一个高精度实时时钟,要求精度为1ms,溢 出时间大于5小时.VxWorks提供系统时钟,该时钟在操作系统启动后开始计数,精度为1个tick,可以通过tickGe ...

Java语言与C语言混合编程(2)--在Java中调用C语言本地库

在上一篇文章中介绍了Java语言中的native关键字,以及Java语言调用C语言的编译生成本地动态链接库(DLL)实现加法运算的小例子,本文通过一个更加详细的例子,深入讲解Java语言调用C语言的函 ...

批处理与python代码混合编程的实现方法

批处理可以很方便地和其它各种语言混合编程,除了好玩,还有相当的实用价值, 比如windows版的ruby gem包管理器就是运用了批处理和ruby的混合编写, bathome出品的命令工具包管理器bc ...

随机推荐

给li标签添加自定义属性

给li标签添加属性

  • < ...

    U盘启动盘的制作--用U盘硬装Windows系统、或是重装Windows系统

    借助IT天空的优启通U盘启动盘的制作--用U盘装Windows系统.或是重装Windows系统之U盘启动盘的制作 1.==================================== 2.== ...

    loadrunner中切割字符串

    下面函数的作用: http://blog.csdn.net/hgj125073/article/details/8447605 通过-与: 字符切割字符串,即-与:字符已经被\0 字符取代 char  ...

    Python中import的使用

    python中的import语句是用来导入模块的,在python模块库中有着大量的模块可供使用,要想使用这些文件需要用import语句把指定模块导入到当前程序中. import语句的作用 import ...

    Mysql自定义函数总结

    存储函数 创建存储函数,需要使用CREATE FUNCTION语句,基本语法如下: CREATE FUNCTION func_name([func_parameter]) RETURNS TYPE [ ...

    HTML 属性

    HTML 属性 HTML 元素 HTML 标题 属性为 HTML 元素提供附加信息. HTML 属性 HTML 标签可以拥有属性.属性提供了有关 HTML 元素的更多的信息. 属性总是以名称/值对的形 ...

    linux下的mount命令的用法详解

    挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的. 命令格式:mount [-t vfstype] [-o option ...

    BrandZ:2016年全球最具价值品牌百强榜&lpar;完整报告&rpar;

    https://wppbaz.com/admin/uploads/files/BZ_Global_2016_Report.pdf Millward Brown编制的BrandZ最新排行榜(2016 B ...

    linux系统学习笔记:文件、目录、用户

    本篇主要从stat函数开始,逐个说明stat结构的每一个成员,以此来了解文件的所有属性.同时将说明修改这个属性的各个函数. 一.文件 使用stat函数族得到和文件有关的信息结构. #include & ...

    jmeter按比例执行业务场景

    可用函数 __counter实现: 函数助手中 找到 __counter,如 ${__counter(false,num)},功能简介 ---- 参数为true,每个用户有自己的计数器 ---- 参数 ...

c语言与汇编语言混合编程实验,C语言与汇编语言混合编程实验相关推荐

  1. c汇编语言实验,C语言与汇编语言编程实验

    1. 掌握在ADT IDE中编写汇编和C语言混合编程程序; 2. 掌握C语言和汇编语言相互调用的过程; 3. 掌握GNU C中内嵌汇编语言的编程方法. C语言与汇编语言编程实验 实验目的 1. 掌握在 ...

  2. 嵌入式c语言汇编混合编程,嵌入式C语言和汇编语言的混合编程

    此文章简单介绍 单片机 C语言和汇编语言混合编程的例子.主要用单片机汇编语言编写DS1302的底层驱动,在C语言里通过调用汇编语言,从而实现C和汇编的混合编程. ;汇编语言源文件 ;========= ...

  3. 汇编c语言混合编程pdf,C语言及汇编语言混合编程的方法.pdf

    维普资讯 1993矩 化 工 电 子 计 算 第 2期 C语言与汇编语言混合编程的方法 f/1) (南京犬李葛于如丽顶吾学系) 摘 要 本文通过实例阐述了当前较为漉行的两种c语盲 (Microsoft ...

  4. 计算机编程实验,c语言下的计算机软件编程实验

    c语言下的计算机软件编程实验 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 C语言下的计算机软件编程实验 摘 要C语言是计算机应用的 ...

  5. 定时器计数器实验C语言程序,实验二 单片机定时器和计数器编程

    仲恺农业工程学院实验报告纸 信息学院 (院.系)专业班组单片机原理及接口技术课实验二单片机定时器/计数器编程 一.实验目的 1.掌握单片机定时器/计数器的工作方式: 2.掌握单片机定时器/计数器的编程 ...

  6. 单片机c语言实验,单片机实验C语言编程.doc

    单片机实验C语言编程.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所 ...

  7. java 168转换成861_java实验-java语言面向对象编程基础

    java实验-java语言面向对象编程基础 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 8.90 积分 广州大学学生实验报告广州大学学生实验报告 ...

  8. 单片机汇编语言编程_单片机编程用C语言还是汇编?

    单片机是一种可编程器件,单片机的出现使硬件设计变得更为简单,产品的功能也更强大,而程序就是单片机的灵魂.目前功能稍微复杂一点的电子产品,都是以单片机为核心,再加以不通的外设电路实现不通的功能需求.单片 ...

  9. 实验c语言程序数据类型,C语言编程实验.doc

    C语言编程实验.doc C语言程序设计上机安排C语言上机实验32学时序号实验项目名称内容提要学时数1上机操作初步熟悉VC语言上机环境:了解如何编辑.编译.连接和运行一个C程序.22简单的C程序设计掌握 ...

最新文章

  1. 操作临时表+事务级别临时表操作+会话级别临时表操作
  2. 【BZOJ1146】【CTSC2008】网络管理 [整体二分]
  3. 基于VTK User Guide和VTK Textbook学习
  4. 一个Java快速排序实现的调试
  5. 人民邮电出版社图灵公司的两本SQL Server 2005图书诚征译者
  6. 用python做自我介绍_python入门教程NO.2 用python做个自我介绍
  7. 文字描边_6招迅速做出炫酷PPT字效!|10分钟干货第二期(文字描边)
  8. 怎么重新启动协议服务器,如何启用或禁用服务器网络协议 (SQL Server PowerShell)
  9. 云应用性能管理哪家强?性能魔方mmTrix自动测评、检测与加速
  10. C# 异步TCP Socket聊天室(1服务器,N客户端)
  11. 【Git/Github学习笔记】Git常用命令(代码拉取)
  12. oscache 与 ehcache的对比
  13. word中方框中打钩
  14. 修改植物大战僵尸游戏存档(Java实现版)
  15. 关于redis创建集群时出现[ERR] Node x.x.x.x:6379 is not empty. Either the node already knows other nodes (check
  16. SD从零开始38-40
  17. 微信小程序--搜索框样式 及form提交实现
  18. 2015ccpc——G - Ancient Go
  19. PT-RS for PUSCH
  20. QtCreator代码对齐的方法

热门文章

  1. 最大公约数Stein算法之verilog实现
  2. Stein variational gradient descent(SVGD)
  3. 用计算机视觉可以做什么项目,面向初学者的10个热门计算机视觉项目
  4. 大话设计模式之爱你一万年:第二十三章 行为模式:解释器模式:在也不用担心工资计算错误了:3.解释器模式之简单计算器3.0
  5. Jenkins 中基于角色的权限管理
  6. C#AE练习 (1)地图、图层加载及图层的属性访问
  7. measure_ball_bond.hdev普通的焊点检测,也就是找两个圆黑洞 相关例程学习
  8. 如何把闲置的手机或平板变成显示器
  9. Mob使用:Mob用户后台使用的方法
  10. vue 项目中引入 .ttf 字体