c++ vs2019中编写nasm
- 在项目中创建"xor.asm"
- 在文件列表"xor.asm"上右键,点击属性
- 将项目类型设置为"自定义工具"
- 设置生成工具
- 编写"xor.asm"
section .text
global asm_xor
asm_xor:
push rbp
mov rbp,rsp
xor ecx,edx
mov eax,ecx
mov rsp,rbp
pop rbp
ret
- 编写main.cpp
#include <iostream>
extern "C" int asm_xor(uint32_t, uint32_t);
int main()
{
printf("%d\n", asm_xor(2, 1)); // 3
return 0;
}
调用 MessageboxA 示例
extern MessageBoxA
section .text
global asm_msg
asm_msg:
push rbp
mov rbp,rsp
sub rsp,32
mov r8,rdx
mov rdx,rcx
xor rcx,rcx
mov r9,3
call MessageBoxA
add rsp,32
mov rsp,rbp
pop rbp
ret
#include <iostream>
extern "C" uint32_t asm_msg(const char*, const char*);
int main()
{
uint32_t r = asm_msg("body", "caption");
printf("%d\n", r); // 3
return 0;
}
注: nasm中的数字默认是10进制