c语言与汇编语言混合编程实验,C语言与汇编语言混合编程实验
混合编程方法:
模块链接法
汇编指令嵌入法
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年全球最具价值品牌百强榜(完整报告)
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语言与汇编语言混合编程实验相关推荐
- c汇编语言实验,C语言与汇编语言编程实验
1. 掌握在ADT IDE中编写汇编和C语言混合编程程序; 2. 掌握C语言和汇编语言相互调用的过程; 3. 掌握GNU C中内嵌汇编语言的编程方法. C语言与汇编语言编程实验 实验目的 1. 掌握在 ...
- 嵌入式c语言汇编混合编程,嵌入式C语言和汇编语言的混合编程
此文章简单介绍 单片机 C语言和汇编语言混合编程的例子.主要用单片机汇编语言编写DS1302的底层驱动,在C语言里通过调用汇编语言,从而实现C和汇编的混合编程. ;汇编语言源文件 ;========= ...
- 汇编c语言混合编程pdf,C语言及汇编语言混合编程的方法.pdf
维普资讯 1993矩 化 工 电 子 计 算 第 2期 C语言与汇编语言混合编程的方法 f/1) (南京犬李葛于如丽顶吾学系) 摘 要 本文通过实例阐述了当前较为漉行的两种c语盲 (Microsoft ...
- 计算机编程实验,c语言下的计算机软件编程实验
c语言下的计算机软件编程实验 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 C语言下的计算机软件编程实验 摘 要C语言是计算机应用的 ...
- 定时器计数器实验C语言程序,实验二 单片机定时器和计数器编程
仲恺农业工程学院实验报告纸 信息学院 (院.系)专业班组单片机原理及接口技术课实验二单片机定时器/计数器编程 一.实验目的 1.掌握单片机定时器/计数器的工作方式: 2.掌握单片机定时器/计数器的编程 ...
- 单片机c语言实验,单片机实验C语言编程.doc
单片机实验C语言编程.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所 ...
- java 168转换成861_java实验-java语言面向对象编程基础
java实验-java语言面向对象编程基础 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 8.90 积分 广州大学学生实验报告广州大学学生实验报告 ...
- 单片机汇编语言编程_单片机编程用C语言还是汇编?
单片机是一种可编程器件,单片机的出现使硬件设计变得更为简单,产品的功能也更强大,而程序就是单片机的灵魂.目前功能稍微复杂一点的电子产品,都是以单片机为核心,再加以不通的外设电路实现不通的功能需求.单片 ...
- 实验c语言程序数据类型,C语言编程实验.doc
C语言编程实验.doc C语言程序设计上机安排C语言上机实验32学时序号实验项目名称内容提要学时数1上机操作初步熟悉VC语言上机环境:了解如何编辑.编译.连接和运行一个C程序.22简单的C程序设计掌握 ...
最新文章
- 操作临时表+事务级别临时表操作+会话级别临时表操作
- 【BZOJ1146】【CTSC2008】网络管理 [整体二分]
- 基于VTK User Guide和VTK Textbook学习
- 一个Java快速排序实现的调试
- 人民邮电出版社图灵公司的两本SQL Server 2005图书诚征译者
- 用python做自我介绍_python入门教程NO.2 用python做个自我介绍
- 文字描边_6招迅速做出炫酷PPT字效!|10分钟干货第二期(文字描边)
- 怎么重新启动协议服务器,如何启用或禁用服务器网络协议 (SQL Server PowerShell)
- 云应用性能管理哪家强?性能魔方mmTrix自动测评、检测与加速
- C# 异步TCP Socket聊天室(1服务器,N客户端)
- 【Git/Github学习笔记】Git常用命令(代码拉取)
- oscache 与 ehcache的对比
- word中方框中打钩
- 修改植物大战僵尸游戏存档(Java实现版)
- 关于redis创建集群时出现[ERR] Node x.x.x.x:6379 is not empty. Either the node already knows other nodes (check
- SD从零开始38-40
- 微信小程序--搜索框样式 及form提交实现
- 2015ccpc——G - Ancient Go
- PT-RS for PUSCH
- QtCreator代码对齐的方法
热门文章
- 最大公约数Stein算法之verilog实现
- Stein variational gradient descent(SVGD)
- 用计算机视觉可以做什么项目,面向初学者的10个热门计算机视觉项目
- 大话设计模式之爱你一万年:第二十三章 行为模式:解释器模式:在也不用担心工资计算错误了:3.解释器模式之简单计算器3.0
- Jenkins 中基于角色的权限管理
- C#AE练习 (1)地图、图层加载及图层的属性访问
- measure_ball_bond.hdev普通的焊点检测,也就是找两个圆黑洞 相关例程学习
- 如何把闲置的手机或平板变成显示器
- Mob使用:Mob用户后台使用的方法
- vue 项目中引入 .ttf 字体