ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在VS Code中调试nasm,使用golink连接

2021-02-21 13:01:42  阅读:749  来源: 互联网

标签:__ Code golink 16 imp MessageBoxA VS push nasm


VS Code非常好用,但是安装The Netwide Assembler(NASM)后,依然无法调试nasm,尝试着修改launch.json和tasks.json实现了nasm运行。

1.下载nasmx,解压缩到D:\nasmx-1.4,将bin和inc分别添加到path中。

下载连接:https://download.csdn.net/download/lordyoung/15401097

2.用VS Code打开一个Code文件夹

3.新建一个asm文件

extern __imp__MessageBoxA@16    ;in user32.dll  或是__imp_MessageBoxA@16
extern __imp__ExitProcess@4    ;in kernel32.dll 或是__imp__ExitProcess@4

global SayHello
global _main 

[SECTION .text USE32 ]
szTitle:
    db "SayHello",0
szMsg: 
    db "New World!", 0
SayHello:
    push 0                ;uType
    push dword szTitle    ;lpCaption
    push dword szMsg      ;lpText
    push 0                ;hWnd
    call [__imp__MessageBoxA@16]  ;或是__imp_MessageBoxA@16
    ret 16    

_main:
    call SayHello
    push 0
    call [__imp__ExitProcess@4]  ;或是__imp_MessageBoxA@16

4.在文件夹的.vscode目录中添加tasks.json

{
    "version": "2.0.0",
    "tasks":[
        {
            "label": "nasm",
            "type": "shell",
            "command": "D:\\nasmx-1.4\\bin\\nasm.exe",
            "args": [
                "-fwin32",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.obj",
                "${file}"
            ]
        },
        {
            "label": "golink",
            "type": "shell",
            "command": "D:\\nasmx-1.4\\bin\\GoLink.exe",
            "args": [
                "/entry",
                "_main",
                "${fileDirname}\\${fileBasenameNoExtension}.obj",
                "kernel32.dll",
                "user32.dll"
            ],
            "dependsOn":["nasm"]
        }
    ]    
}

5.在文件夹的.vscode目录中添加launch.json

{
    "version": "0.2.0",
    "configurations": [        
        {
            "name":"(windows)launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "stopAtEntry": false,        //选为true则会在打开控制台后停滞,暂时不执行程序
            "preLaunchTask": "golink",   //task的名字
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true                        
        }        
    ]
}

6.选择文件夹asm文件,按F5就能运行,并跳出对话框了。

标签:__,Code,golink,16,imp,MessageBoxA,VS,push,nasm
来源: https://blog.csdn.net/lordyoung/article/details/113916368

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有