首先在VS里面创建个空项目,然后添加汇编文件 .asm,    右键asm文件属性  --- 常规,改成下图的设置  , 从生成中排除改为否, 项类型改为自定义生成工具 然后点确定。

再次右键asm文件属性, 配置属性 ---自定义生成工具  --- 常规  :在命令行中写入: ml /c /coff %(fileName).asm

输出:%(fileName).obj;%(OutPuts)     然后点确定就可以正常运行了

.asm  汇编代码

 ;测试函数   三个数相加
;.
.model flat, c
;public test_
.code test_ proc ;初始化栈帧指针
push ebp
mov ebp,esp
push ebx ;确保除数不为0
xor eax,eax ;加载参数值
mov ecx,[ebp+] ;ecx = a
mov edx,[ebp+] ;edx = b
or edx,edx
jz test1_ ;诺b为0 则跳转 ;计算积并保存
imul edx,ecx
mov ebx,[ebp+]
mov [ebx],edx ;计算商和余数 ,并保存结构
mov eax,ecx
cdq
idiv dword ptr [ebp+] mov ebx,[ebp+]
mov [ebx],eax
mov ebx,[ebp+]
mov [ebx],edx
mov eax , test1_: pop ebx
pop ebp
ret
test_ endp end

.cpp 代码

 #include <stdio.h>
#include <stdlib.h>
using namespace std;
extern "C" int test_(int a, int b, int* prod , int * quo ,int * rem); int main()
{
int a = , b = ;
int prod = , qro = , rem = ;
int rc; rc = test_(a, b, &prod, &qro, &rem); printf("Input1 - a: %4d b: %4d \n", a, b);
printf("Output1 - rc: %4d prod: %4d\n", rc, prod);
printf(" qro: %4d rem: %4d \n", qro, rem); a = -;
prod = qro = rem = ;
rc = test_(a, b, &prod, &qro, &rem);
printf("Input2 - a: %4d b: %4d \n", a, b);
printf("Output2 - rc: %4d prod: %4d\n", rc, prod);
printf(" qro: %4d rem: %4d \n", qro, rem); b = ;
prod = qro = rem = ;
rc = test_(a, b, &prod, &qro, &rem);
printf("Input3 - a: %4d b: %4d \n", a, b);
printf("Output3 - rc: %4d prod: %4d\n", rc, prod);
printf(" qro: %4d rem: %4d \n", qro, rem); system("pause");
return ;
}

汇编设置的方法参考来源:https://blog.csdn.net/qq_33775402/article/details/78828235

VS2017编写c/c++汇编函数并调用的更多相关文章

  1. 旧文备份:VC中嵌入NASM编写的汇编函数

    在公司开发的RT下没法使用C库,并且替代库函数没有几个,需要用到setjmp和longjmp函数,没办法,只能自己想办法了,上sourceforge淘换到一个小日本的工程,提供这两个函数的替代源码,名 ...

  2. C语言内自定义汇编函数&调用约定

    探究如何在C语言里直接自写汇编函数 裸函数 裸函数与普通函数的区别 普通函数在经过编译器编译时,编译器自动生成保护现场,恢复现场等反汇编代码 当我们想要自己实现函数内部的汇编代码时,就可以告诉汇编器不 ...

  3. keil 中用函数指针调用函数的参数限制

    NSIC中,通过函数指针调用的函数的参数的个数没有限制,但是KeilC对此有限制,至多3个参数.因为,KeilC编译时,无法通过函数指针找到该函数的局部数据段,也就无法通过局部数据段传递参数,只能通过 ...

  4. 函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal)

    关于函数的调用规则(调用约定),大多数时候是不需要了解的,但是如果需要跨语言的编程,比如VC写的dll要delphi调用,则需要了解. microsoft的vc默认的是__cdecl方式,而windo ...

  5. GO汇编-函数

    GO汇编-函数 终于到函数了!因为Go汇编语言中,可以也建议通过Go语言来定义全局变量,那么剩下的也就是函数了.只有掌握了汇编函数的基本用法,才能真正算是Go汇编语言入门.本章将简单讨论Go汇编中函数 ...

  6. LR自定义函数以及调用

    2.2.自定义函数以及调用 2.2.1.虚拟用户编程,使用C# 语言DLL 在VS中建立DLL类库项目,编写函数时使用public声明:实现函数后编译生成DLL: 在LR中建立 .Net Vuser脚 ...

  7. LR常用函数以及调用自定义函数

    2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...

  8. Matlab(3) -- 编写M文件(函数)

    转自:http://blog.csdn.net/misskissc/article/details/8178089 matlab的命令编辑窗口(Command Window)界面主要是用来调用系统命令 ...

  9. python 函数的调用 和执行 小知识

    1.符号表 执行一个函数会引入一个用于函数的局部变量的新符号表. 更确切地说, 函数中的所有的赋值都是将值存储在局部符号表: 而变量引用首先查找局部符号表, 然后是上层函数的局部符号表, 然后是全局符 ...

随机推荐

  1. 数据预处理 | 使用 Pandas 统一同一特征中不同的数据类型

    出现的问题:如图,总消费金额本应该为float类型,此处却显示object 需求:将 TotalCharges 的类型转换成float 使用 pandas.to_numeric(arg, errors ...

  2. HDFS写入数据

    HDFS副本摆放策略 不同的版本副本摆放策略可能并不一致,HDFS主要采用一种机架感知(rack-ware)的机制来实现摆放策略. 由于不同的机架上节点间通信要通过交换机(switches),同一机架 ...

  3. 其他 - PotPlayer - 基础快捷键总结

    概述 尝试使用 potplayer 的快捷键 背景 最近需要反复看录像 回看 慢速 其他各种 没错, 我的需求就是 游戏复盘... 环境 os win10.1903 player potplayer. ...

  4. [CF994B] Knights of a Polygonal Table - 贪心,堆

    有 n 个骑士想决战.每个骑士都有能力值(互不相同),且身上带有一些金币.如果骑士 A 的能力值大于骑士 B ,那么骑士 A 就可以杀死骑士 B ,并获得骑士 B 身上的所有金币.但就算是骑士也不会残 ...

  5. phpstorm更换主题

    打开PhpStorm,File -- Settings -- Editor -- Color Scheme --General选择你喜欢的风格进行更改,选择完成后单击Apply

  6. 项目转移时发生的错误<springboot+mybatis(xml逆向工程自动生成)>

    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'app ...

  7. tcp与http协议 以及python的实现

    htpp协议 Rquest Headers格式: 请求方法空格URL空格协议版本回车符换行符 头部字段名:值回车符换行符 ··· 头部字段名:值回车符换行符 回车符换行符 请求数据 socket网络聊 ...

  8. fastadmin 框架中图片点击放大

    fastadmin的原生图片预览,重新打开一个窗口太麻烦,使用layui做一个弹窗式的图片预览 1.将下面代码放在backend-init.js文件中 $('body').on('click', '[ ...

  9. 0005 修改Django工程名

    写框架非常耗时间,把框架写好以后,经测试稳定的框架,需要保存下来,以后有工程需要,直接更改工程名即可. 01 右键点击工程名,点击Refactor/Rename 02 选择更改工程名 03 关闭PyC ...

  10. OWASP安装

    下载网址:https://sourceforge.net/projects/owaspbwa/files/1.0rc2/ 下载完之后解压 解压之后 打开虚拟机 然后 虚拟机中菜单栏 文件---打开-- ...