一、之所以不用DOSBox

不利于集成到VScode,执行代码需要新开窗口,配置繁琐。ps:而且加断点和调试复杂。

感谢masm-code插件的作者,终于可以补全啦qaq

添加关于调试的一些建议

二、步骤

0.网络状况不好可以用度盘资源:

//20200403 update

1.安装VScode

2.安装masm-code, code runner插件

3.从masm32 sdk ver11下载所需的masm,如果下载不了可以自行换镜像,或者百度下载。

3.1.解压,然后换路径,一路yes就可以了。

3.2.记下安装位置,比如我的在g盘根目录。

4.百度或谷歌搜索ms-dos player,下载这个软件,或者从链接的GitHub上面下载源码,编译安装。

4.1.解压里面的msdos到X:\Program Files (x86),X为想安装到的盘符。

4.2.记下安装位置。

5.添加环境变量:对于win10,win+R输入SystemPropertiesAdvanced>环境变量>系统变量>找到Path变量>打开>添加如下两个变量(根据安装masm和msdos的位置不同前面的路径要调整):

*note:如果不是64位系统就在binary文件夹下选择相应的文件夹

*note:可以测试,如果加入Path成功,在PowerShell里面输入msdos , ml /? 以及link16 /?会有出现相应的信息。如果没有可以尝试重启。

6.打开VScode, ctrl+shift+P打开搜索json,选择:

7.在末尾添加设置:

*经评论中 @影生 提出,将选项/AT去除然后将输出文件的扩展名改为.EXE,这样可以用伪指令格式书写程序。

"code-runner.executorMap": {

"javascript": "node",

"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",

"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"php": "php",

"python": "python -u",

"perl": "perl",

"perl6": "perl6",

"ruby": "ruby",

"go": "go run",

"lua": "lua",

"groovy": "groovy",

"powershell": "powershell -ExecutionPolicy ByPass -File",

"bat": "cmd /c",

"shellscript": "bash",

"fsharp": "fsi",

"csharp": "scriptcs",

"vbscript": "cscript //Nologo",

"typescript": "ts-node",

"coffeescript": "coffee",

"scala": "scala",

"swift": "swift",

"julia": "julia",

"crystal": "crystal",

"ocaml": "ocaml",

"r": "Rscript",

"applescript": "osascript",

"clojure": "lein exec",

"haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",

"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",

"racket": "racket",

"scheme": "csi -script",

"ahk": "autohotkey",

"autoit": "autoit3",

"dart": "dart",

"pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",

"d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",

"haskell": "runhaskell",

"nim": "nim compile --verbosity:0 --hints:off --run",

"lisp": "sbcl --script",

"kit": "kitc --run",

"v": "v run",

"masm":"cls && cd $dir &&ml /nologo /Bl link16.exe /AT ./$fileName /link /NOLOGO *>null && msdos ./$fileNameWithoutExt.com"

},

"code-runner.clearPreviousOutput": true,

"code-runner.saveFileBeforeRun": true

三、helloworld测试

; *************************************************************************

; 16-bit MS-DOS COM Hello World Application

; COM File size: 26 Bytes

; Created by Visual MASM (http://www.visualmasm.com)

; For 16-bit DOS running restricts under Windows 2000/XP see below.

; For more information about DOS interrupts, see:

; http://spike.scu.edu.au/~barry/interrupts.html

; *************************************************************************

.model tiny; MASM's support for COM files

.dosseg; Make sure you are using dos segment CODE, DATA + STACK

; *************************************************************************

; Our data section. Here we declare our strings for our console message

; *************************************************************************

.data

strMessageDB "Hello world", 0Dh, 0Ah, '$'

; *************************************************************************

; Our executable assembly code starts here in the .code section

; *************************************************************************

.code

.startup

; **********************************

; Prepare our message to the console

; **********************************

movah, 09h; Write string to standard output

movdx, offset strMessage

int21h; Call DOS interrupt 21h

; ************************************************

; Get ready to exit and return control back to DOS

; ************************************************

movah, 4Ch ; Exit with return code (AL = return code)

int21h; Call DOS interrupt 21h

end

这里的.code 写法相当于 :

_TEXT SEGMENT WORD PUBLIC 'CODE'

详细如下:

输出:

一键运行。

//20200403 update

利用emu8086完成复杂的调试:

**先安装open插件**

在emu8086设置中设置(工具栏)默认打开(右下角)

在vsc里面编辑好文件后利用ctrl+alt+O用emu8086打开,然后进行各种调试

note:如果要链接额外的文件可以参考官方文档:ML and ML64 Command-Line Reference​docs.microsoft.com

MSVC Linker options:MSVC Linker options​docs.microsoft.com

*note:链接器的选项要写在/link选项

三、关于调试[patch] Connect a Gdb client to DOSBox​www.vogons.org

最近又找到了一个调试汇编的方案,如果成功的话可以用vscode的native debug来调试:

路线1:编译安装djgpp版本的gdb -- 安装到dos里面 --利用里面的gdbserver连接虚拟机的COM端口 -- vsocde里面用native debug 连接,调试

路线2(最接近完成):利用上面dosbox-x 的patch --编译dosbox-x --连接gdbserver -- vscode 用native debug连接

路线3:利用wsl或者msys2安装或者编译qemu -- 利用gdbserver连接COM口 -- 连接vscode

但是现在的难点是找不到相应dosbox-x的版本,如果有找到的大佬麻烦留言呀!

后续应该会怎加一些汇编的例子和专门讲比较c和汇编的文章。(20201108)

gdb vscode 不进入断点_VScode配置MASM32运行环境(断点/运行/debug/配合emu8086(非DOSBox))...相关推荐

  1. VsCode配置Python开发环境后运行代码会报错“无法加载文件 D:\Code\xxx\poetry-demo\.venv\Scripts\Activate.ps1”

    问题描述:在VsCode中配置Python开发环境后运行代码会报错"无法加载文件 D:\Code\xxx\poetry-demo\.venv\Scripts\Activate.ps1&quo ...

  2. vscode输入vue自动_vscode配置总结可收藏/vscode用户设置大全/vue代码模板,vscodevue...

    vscode配置总结可收藏/vscode用户设置大全/vue代码模板,vscodevue ​ ​ //用户设置 { //-------- 搜索配置 -------- "search.excl ...

  3. 超详细Visual Studio Code配置PHP开发环境 / 如何运行HTML,PHP文件

    文章目录 (一)VSCode如何新建一个HTML文件并在网页打开? (二)VSCode配置PHP开发环境 (一)VSCode如何新建一个HTML文件并在网页打开? 原文链接:vscode如何运行htm ...

  4. 【Android 插件化】VirtualAppEx 编译运行 ( VirtualAppEx 简介 | 配置 VirtualAppEx 编译环境 | 编译运行 VirtualAppEx 代码 )

    文章目录 一.VirtualAppEx 简介 二.配置 VirtualAppEx 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配 ...

  5. 【Android 插件化】VirtualApp 编译运行 ( VirtualApp 简介 | 配置 VirtualApp 编译环境 | 编译运行 VirtualApp 官方示例 )

    文章目录 一.VirtualApp 简介 二.配置 VirtualApp 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配置远程仓 ...

  6. 怎么改变java安装环境,安卓如何修改大师配置Java运行环境?运行环境修改步骤一览...

    安卓修改大师是一款专业免费对任何APK安装包进行反编译的软件,但是运行软件之前首先需要配置电脑上的Java运行环境,否则无法运行.下面来说一下如何配置Java环境. 安卓修改大师需要在JDK1.7以上 ...

  7. vscode的eslint无效_vscode配置eslint自动保存功能不生效

    今天给一个项目添加eslint, 按照网上的教程,配置完就是不生效,半天没解决, 后来终于解决了, 在此总结,把一些坑分享出去. 1. vscode 扩展中安装eslint 2. eslint 扩展要 ...

  8. vscode 新版eslint自动修复_VSCODE 配置eslint规则和自动修复

    全局安装eslint 打开终端,运行npm install eslint -g全局安装ESLint. vscode安装插件 vscode 扩展设置 依次点击 文件 > 首选项 > 设置 { ...

  9. vscode的eslint无效_VSCode配置eslint

    在Vue.js项目中,使用的是eslint检查. 而在我写完代码后,cnpm run dev运行命令...然后悲剧了,一大堆报错!╮(╯▽╰)╭ 安装插件:Vetur:这是vscode上一个vue.j ...

最新文章

  1. keras 的 example 文件 addition_rnn.py 解析
  2. 小程序之获取用户信息取消授权处理
  3. 解决Teamviewer连接出现的黑屏问题
  4. IOS基础之毛毛虫案例-重力
  5. Python三维绘图--Matplotlib colorbar生成
  6. 接口测试(apipost、jmeter和python脚本)
  7. 一个有趣的IP不同的问题?
  8. 免费的html空间,免费HTML网页空间(每月200 GB 流量托管静态网页超简单)
  9. 【渝粤教育】国家开放大学2018年秋季 0299-22T中国古代文学(1) 参考试题
  10. 谷歌浏览器整个网页截图方法
  11. Python 批量更改文件名、更改文件格式
  12. 卡牌大师怎么玩_LOL高端局中的常客,卡牌大师上分攻略,最完美的节奏大师!...
  13. limbo模拟器安装linux,limbo模拟器win10镜像安装使用教程(附下载)
  14. 动态规划 计算二项式系数
  15. AutoCAD.NET实现CAD截图
  16. MySQL的学习笔记(超详细超完整)
  17. 从IMDB上爬取MovieLens数据集中的详细电影信息
  18. CSS-position: fixed固定定位
  19. 记一次COLA架构的实践
  20. 单片机中常用的串口通信协议帧

热门文章

  1. java 当前时间小时数,java获取当前时间前几个小时的时间
  2. php多图片上传封装类,php----图片上传封装类:单张,多张图片上传,生成缩略图...
  3. element table多选只能选中当前页数据_关于“列表多选”操作流的小思考
  4. python paramiko exec_command()和invoke_shell()
  5. linux oracle11g客户端安装
  6. 吐槽大会4_《吐槽大会4》不愧都是国家队,真吐槽!孙杨霸气喊话霍顿
  7. java 查看虚拟机状态_深入理解java虚拟机学习笔记(四)虚拟机性能监控与故障处理工具...
  8. ajax 隔x秒发送一次,如何使用XAJAX和PHP编写实时聊天?
  9. java pdf转为png_java-使用icepdf实现pdf转换成png
  10. 微信上传素材 java_java微信接口之四—上传素材