MASM 64汇编

Posted 不会写代码的丝丽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MASM 64汇编相关的知识,希望对你有一定的参考价值。

前言

微软宏编译器 MASM 有32位版本(ml)以及64版本(ml64)。

其中相关路径如下:

“C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.33.31629\\bin\\Hostx86\\x64\\ml64.exe”

当然你可以用VS自带的命令行工具打开使用:

命令行进行编译

这里给出一个Demo程序


extern MessageBoxA:proc
includelib   user32.lib

NULL EQU 0
MB_OK EQU 0


.const
    msg   BYTE  "Hello x64 World!", 13, 10, 0
.CODE

    main PROC
        sub rsp,8
        sub rsp,20h
        mov rcx,NULL
        mov rdx,offset msg
        mov r8,offset msg
        mov r9d,MB_OK
        call MessageBoxA
        xor ecx, ecx        ; exit code = 0
        ret
    main ENDP

END

相关编译命令

//汇编器编译生成progx.obj
ml64 /c progx.asm
//设置入口为main函数生成可执行二进制
link /ENTRY:main progx.obj

使用VS进行汇编

Tip:64程序不支持内联汇编


//main.cpp
#include<iostream>
using namespace std;

extern "C" int calcFun();

int main() 


	int ret = calcFun();


	cout << ret << endl;


	return EXIT_SUCCESS;

;masm.asm
.code

calcFun proc

	mov rax,123
	ret

calcFun endp 


end

参考

Modern x64 Assembly 1: Beginning Assembly Programming

Microsoft Macro Assembler reference

以上是关于MASM 64汇编的主要内容,如果未能解决你的问题,请参考以下文章

MASM 64汇编

Win10(64位)安装汇编环境(MASM)

win10 64位 汇编环境

64位的汇编怎么搞

ASM:MASM、NASM、FASM?

masm32和masm的区别?