1. 程式人生 > >Win7 VS2015 NASM匯編語言環境配置

Win7 VS2015 NASM匯編語言環境配置

coff 系統環境 port detail arc include proc 環境變量 default

參考了以下兩個博客文章

http://blog.csdn.net/x356982611/article/details/51260841

http://www.cnblogs.com/antoniozhou/archive/2008/10/23/1318287.html

首先到CodeProject下載NASM的VS配置文件

https://www.codeproject.com/Articles/410776/Integrating-a-compiler-assembler-in-VS-Using-NASM

解壓3個配置文件到

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations

也就是和masm的配置文件相同的位置

然後把NASM加入到系統環境變量

D:\nasm-2.13.01

新建一個控制臺空工程,同之前MASM的一樣,只不過這次選NASM

http://www.cnblogs.com/kileyi/p/7257852.html

技術分享

建立1個cpp和1個asm文件

cpp01.cpp

#include <iostream>

void main();

extern "C" void nasm_function(void);

void main()
{
    nasm_function();

    system("pause");
}

asm01.asm

segment .text

global _nasm_function

_nasm_function:
	mov eax, 12345h
	ret

asm文件上,鼠標右鍵屬性設置

技術分享

技術分享

編譯應該就能通過了。

有趣的是MASM可以在ASM匯編代碼上下斷點,而NASM的卻不行。不太清楚怎麽回事,不過反正可以在cpp函數前下斷點,也差不了太多。

接下來搞個純ASM的測試

pure01.asm

;filename: sayhellon.asm

;cmd> nasm -fcoff -Xvc sayhellon.asm
;cmd> link sayhellon.obj

extern [email protected]
/* */ ;in user32.dll extern [email protected] ;in kernel32.dll global SayHello global _WinMain [SECTION .drectve info align=8] db " /subsystem:windows" db " /out:sayhellon.exe" db " /defaultlib:kernel32.lib" db " /defaultlib:user32.lib" db " /export:SayHello" db " /entry:WinMain" db " /merge:.rdata=.text",0 [SECTION .text USE32 align=16] szTitle: db "SayHello",0 szMsg: db "Hello World!", 0 SayHello: push 0 ;uType push dword szTitle ;lpCaption push dword szMsg ;lpText push 0 ;hWnd call [email protected] ret 16 _WinMain: call SayHello push 0 call [email protected]

編譯應該就能通過,如果不行,手動設置下工程屬性中的入口函數

技術分享

Win7 VS2015 NASM匯編語言環境配置