• c++ vs2019中编写nasm


    1. 在项目中创建"xor.asm"
    2. 在文件列表"xor.asm"上右键,点击属性

    1. 将项目类型设置为"自定义工具"

    1. 设置生成工具

    1. 编写"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
    
    1. 编写main.cpp
    #include <iostream>
    
    extern "C" int asm_xor(uint32_t, uint32_t);
    
    int main()
    {
      printf("%d
    ", 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
    ", r); // 3
      return 0;
    }
    

    注: nasm中的数字默认是10进制

  • 相关阅读:
    YTU 2928: 取不重复的子串。
    YTU 2922: Shape系列-8
    YTU 2920: Shape系列-7
    STL stl_config.h
    STL defalloc.h
    STL stl_alloc.h
    STL memory.cpp
    STL stl_construct.h
    STL stl_uninitialized.h
    stl_iterator.h
  • 原文地址:https://www.cnblogs.com/ajanuw/p/14422400.html
Copyright © 2020-2023  润新知