Visual Studio-X64汇编编写方法

 更新时间:2024年09月30日 10:00:47   作者:向你扔鸡爪  
本文介绍了在Visual Studio中配置64位汇编环境和C++与汇编的混合编程的方法,详细说明了设置平台工具集、生成依赖项、链接器等步骤,并提供了解决可能出现的编译错误的方案,感兴趣的朋友跟随小编一起看看吧

纯64位汇编:

includelib ucrt.lib
includelib legacy_stdio_definitions.lib
includelib user32.lib
extern printf:proc
extern MessageBoxA:proc
.data
szFormat db "%s",0
szHello db "HelloWorld",0
szRk db "123",0
.code
start proc
	sub rsp,28h
	mov rdx,offset szHello
	mov rcx,offset szFormat
	call printf
	mov r9,0
	mov r8,offset szHello
	mov rdx,offset szRk
	mov rcx,0
	call MessageBoxA
	add rsp,28h
	ret
start endp
end 

注意:

1.平台工具集要选VS2015

2.属性->生成依赖项->masm

3.链接器->高级->入口点

64位混合编程(C++/Asm):一定要严格执行代码规范,不然各种报错

1.asm:

includelib legacy_stdio_definitions.lib
includelib user32.lib
extern printf:proc
.data
	szformat db "%s\n",0
.code
Myadd proc
	sub rsp,28h
	add rcx,rdx
	mov	rax,rcx
	add rsp,28h
	ret
Myadd endp
Myprintf proc
	sub rsp,28h
	mov rdx,rcx
	lea rcx,szformat
	call printf
	add rsp,28h
	ret
Myprintf endp
end 

main.cpp:

#include <iostream>
#include <windows.h>
EXTERN_C UINT64 Myadd(UINT64 a, UINT64 b); 
EXTERN_C void Myprintf(const char* szbuffer);
int main()
{
	UINT64 num = Myadd(1, 2);
	printf("%lld\r\n", num);
	Myprintf("hello word");
	system("pause");
	return 0;
}

注意:

如果生成报错,并且没有属性里面没有Microsoft Macro Assembler,换成VS2015也没有的话,

就在源文件里面找到.asm后缀的文件右键属性->常规->项类型->Microsoft Macro Assembler即可。

到此这篇关于Visual Studio-X64汇编编写的文章就介绍到这了,更多相关Visual Studio-X64汇编内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 纯汇编实现打飞机小游戏的示例代码

    纯汇编实现打飞机小游戏的示例代码

    这篇文章主要介绍了纯汇编实现打飞机小游戏的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 汇编语言之寄存器详解

    汇编语言之寄存器详解

    这篇文章主要介绍了汇编语言之寄存器详解,需要的朋友可以参考下
    2020-01-01
  • 汇编用串检测scasb寻找数的位置实现

    汇编用串检测scasb寻找数的位置实现

    这篇文章主要介绍了汇编用串检测scasb寻找数的位置实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 详解汇编语言中中括号[]作用及lea和mov指令的区别

    详解汇编语言中中括号[]作用及lea和mov指令的区别

    这篇文章主要介绍了汇编语言中中括号[]作用及lea和mov指令的区别,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 在vs2017中编写汇编的实现(图文)

    在vs2017中编写汇编的实现(图文)

    这篇文章主要介绍了在vs2017中编写汇编的实现(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 浅析ELF转二进制允许把 Binary 文件加载到任意位置

    浅析ELF转二进制允许把 Binary 文件加载到任意位置

    本文通过 eip + 偏移地址 实现了运行时计算数据地址,不再需要把 Binary 文件装载到固定的位置。本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2020-02-02
  • 汇编语言 输入10个数排序并输出的实现

    汇编语言 输入10个数排序并输出的实现

    这篇文章主要介绍了汇编语言 输入10个数排序并输出的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 汇编语言 masm5与debug命令使用方法小结

    汇编语言 masm5与debug命令使用方法小结

    本文总结了汇编程序的基本框架及规范、masm5工具的基本使用方法、debug命令的基本使用方法
    2023-08-08
  • 汇编语言之寄存器(详细介绍)

    汇编语言之寄存器(详细介绍)

    这篇文章主要介绍了汇编语言之寄存器(详细介绍),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-01-01
  • 汇编语言 寄存器内存访问原理解析

    汇编语言 寄存器内存访问原理解析

    这篇文章主要介绍了汇编语言 寄存器内存访问原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论