x64汇编第一讲,Vs系列配置x64环境与x86环境

目录

  • x64汇编环境配置

    • 一丶x64环境配置

      • 1.1 VS系列编译器配置X64Asm开发环境.
    • 二丶Vs配置X86汇编环境.

x64汇编环境配置

一丶x64环境配置

现在windows系统都是64位了,那么对应的汇编也就是说已经升级到64位了.
一直没有时间写博客将64位汇编写出来.所以现在细心整理一下.
首先我们先配置好开发环境,然后我们才能进行开发.

1.1 VS系列编译器配置X64Asm开发环境.

1.1新建一个项目.项目里面添加一个.asm后缀的文件.

当然后缀.asm文件没有,所以我们随便添加一个文本文件.或者一个.cpp文件.在添加的时候将后缀名改为.asm即可.

1.2 配置x86 /x64汇编环境

我们要生成一个应用程序,可以进行选择是生成x86还是x64
现在汇编中也是一样的.直接进行配置.

当然你也可以自定义一个解决方案,是专门编译汇编的.
只需要你在 上方Debug哪里新建一个解决方案即可.这个自己研究不在累赘,如果嫌麻烦自己只用用x64的即可.

1.3 设置asm属性.

右键对.asm文件 点击属性,如下图表示
从项目中排除选择否, 然后项目类型改正自定义类型

1.4 asm属性继续设置

如果第三不应用之后则会出现如下显示界面

此时在自定义生成工具里面,点击常规. 里面会出现很多内容.我们只关心
命令行跟输出即可.

如下;

命令行: ml64 /Fo $(IntDir)%(fileName).obj /c %(fileName).asm

输出: $(IntDir)%(fileName).obj;%(Outputs)

1.5设置程序入口点以及子系统

如果单纯的编写x64汇编.那么你就需要设置了.
解决方案右键点击属性.找到链接->子系统

设置子系统位console控制台

然后设置入口点.

你写的x64汇编入口是哪个你就指定那个即可.

x64汇编代码


.DATA        ;定义数据段

IBinary DQ ?  ;自定义了一个常量为IBinary

.CODE         ;定义代码段

Fun PROC    ;定义函数
    ret
Fun ENDP

Main PROC

    sub rsp,20h
    xor r9,r9
    xor r8,r8
    xor rdx,rdx
    xor rcx,rcx
    call Fun
    add rsp,20h
    ret
Main ENDP

END

最后编译执行即可.

x64dbg 下的内容

1.6配置生成依赖项

如果上方编译不成功,则设置一下生成依赖项.

1.7 配置高亮插件

当时配置高亮插件是在Vs2019上面,点击扩展更新. 搜索ASM会出现两个
一个是 AsmHighlighter,另个好想是 AsmHxxxx
两个安装那个都可以.

二丶Vs配置X86汇编环境.

2.1.设置编译环境为win32

首先我们要选择编译为win32程序.这个自己直接在配置管理器选择即可.

2.2.设置附加依赖项.

附加依赖项在x64可设置可不设置,我没有设置.

如下:

2.3.设置Asm文件属性.

右键对.asm文件 点击属性,如下图表示
从项目中排除选择否, 然后项目类型改正自定义类型


此时跟X64设置的不一样了,我们选择项目类型为 Microsoft Macro Assembler即可.

设置 use safe Excetion Handlers 设置为是即可.

此时就设置成功了.

x86汇编代码测试

INCLUDELIB kernel32.lib

.MODEL flat,stdcall

;.code
ExitProcess PROTO,              ; exit program
dwExitCode:DWORD        ; return code

.data
.code
Main PROC

    mov eax,10000h      ; EAX = 10000h
    add eax,40000h      ; EAX = 50000h
    sub eax,20000h      ; EAX = 30000h

    push 0h
    call ExitProcess

main ENDP
END Main

直接拷贝到自己工程即可.直接编译即可.

此时你还需要 在解决方案属性里面的连接器里面 设置一下系统具体如下

解决方案 -> 连接器 -> 系统 -> 子系统 : 设置为 console (控制台)
解决方案 -> 连接器 -> 高级 -> 入口点 : 设置为你汇编代码的入口点. 如我的就是 Main

x32Dbg代码截图

原文地址:https://www.cnblogs.com/iBinary/p/10849915.html

时间: 2024-10-28 23:25:46

x64汇编第一讲,Vs系列配置x64环境与x86环境的相关文章

16位汇编第一讲简介

汇编第一讲 汇编简介 一.什么是汇编 汇编语言他是计算机语言,计算机语言通俗点说就是人类和计算机(也就是CPU)沟通的桥梁,计算机不认识人类的语言,只认得二进制(0和1)但是我们想让你算计完成我们的工作,每次都是0,和1,那样会崩溃的,(老一辈的是这样的)所以后面汇编语言出现了,用一些简单的助记符来替代机器语言(二进制)通用的语言,比如 + - * / 这种助记符, add....汇编语言是和机器语言一一对应的. 二.汇编语言有什么用处好处     1.学好汇编了,你可以理解计算机更为透彻  

x64汇编第一课

x64相关文档: 0.环境 编译器:ml64.exe 链接器:link.exe cmd选择:这个不要选兼容,不然link不过,不需要配置环境bi 1.32位和64位的区别: 1.eax赋值为1,64位的高32位自动补0 mov eax, ffffffff rax = 0x00000000ffffffff mov eax,1 add rax,rax 2 2 1 mov eax,1 2    add rax,rax 2.传参的四个寄存器统一规定依次是rcx.rdx.r8.r9 3.64位汇编中声明和

Windows X64汇编入门(1)

Windows X64汇编入门(1) tankaiha 最近断断续续接触了些64位汇编的知识,这里小结一下,一是阶段学习的回顾,二是希望对64位汇编新手有所帮助.我也是刚接触这方面知识,文中肯定有错误之处,大家多指正. 文章的标题包含了本文的四方面主要内容: (1)Windows:本文是在windows环境下的汇编程序设计,调试环境为Windows Vista 64位版,调用的均为windows API. (2)X64:本文讨论的是x64汇编,这里的x64表示AMD64和Intel的EM64T,

2020达索系统工业新体验在线研讨会第一讲重磅来袭!

工业转型的路上除了"难啃的骨头",还要面临可持续发展的挑战,这需要我们共同的智慧来实现产品.生命与自然的和谐.工业转型不只是实现高附加值,更是人类追求美好健康生活的重要路径.疫情当下,创新发展之路挑战更多,催人奋进,短暂的困难让我们可以重新审视自己的转型方向.达索系统上半年先把精华内容在线上与您分享,下半年将在巡展中与您面对面静心深入探讨. 2020达索系统工业新体验在线研讨会核心议程 第一讲:新一代的一体化体验平台 竞争环境瞬息万变,在体验经济时代,面对客户越来越个性化.多样化的需求

VS2010中编写x64汇编的具体方法

编写涉及系统特性的一些底层程序,特别是ShellCode,不可避免地要采用直接编写汇编代码的方式. 在目标平台为x86模式时,可以直接使用内联汇编,这个很多人都比较熟悉了,也非常地方便. 但是当目标平台为x64时,微软不再允许直接内联汇编了,这给我们编程造成了一些不便. 怎么解决这个问题呢? 一种办法是改用Intel的编译器,它仍然支持内联汇编. 另一种办法还是用VS了,但是不能内联,需要把汇编部分单独写到一个asm文件里,然后在其它源文件中引用. 我参考了一些网上的说明,在这里把过程写详细些,

DDK编写64位驱动时加入x64汇编的方法

上篇讲了如何在编写x64应用程序时加入x64汇编,这里来说说如何在编写x64驱动时加入x64汇编. 一.在asm文件中单独编写功能函数 比如要实现一个64位的加法函数,原型如下: ULONG64 myAdd(ULONG64 u1,ULONG64 u2); 那么源码目录(一般是sources文件所在的目录)新建一个文件夹,名字叫做 amd64. 然后新建一个文件,写入以下内容: .CODE myAdd PROC add rcx,rdx mov rax,rcx ret myAdd ENDP END

日更第2期-2015-1-15-openFrameworks系列第一讲-手把手制作openFrameworks上的第一个程序!

恩,今天和朋友打球来着,于是今天的案例程序就做一个球吧!O(∩_∩)O哈哈~ 首先,没有看过上一篇教程的同学,还有还没有下载好VS和OpenFrameworks的同学,都去下一下. 传送地址:http://www.cnblogs.com/linongbo/p/4227552.html 那么,开始今天的日更啦! Hello OpenFrameworks! VS的安装部分我就不说了,不过我个人建议——默认是安装在C盘的,不过你要是手动改到别的盘上的话,C盘上 依然会有6G左右的内容.......Σ(

AWS云计算技术分享系列直播课-第一讲课程邀请函

科技的不断创新与演进时刻在改变我们所处的时间,人们从未停止用科技的力量去探索和实现.越来越多的企业和人们正在通过 AWS 重新构建,构建更好的用户体验,构建更强大的业务平台,构建更安全的系统架构- 今天光环云社群为大家带来AWS云计算技术分享系列直播课,帮助大家由浅入深的了解和使用AWS云服务. 直播课程规划如下: 第一讲 快速开始使用AWS 第二讲 计算.存储和访问权限管理 第三讲 利用 Amazon VPC 服务搭建经典 Web 三层架构 第四讲 弹性与负载均衡 第五讲 使用 Amazon

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首先我们知道32位汇编是可以调用Windows API的,那么今天我们就调用windowsAPI来写一个窗口程序 如果你有windows开发知识,那么就很理解了,如果没有,那么跟着我写,跟着步骤去写,那么也可以写出来 首先我们要编写一个窗口程序(使用SDKAPI编写)有几个步骤 1.设计窗口类 2.注