临时大总统 發表於 2023-4-10 15:37:11

VScode配置8086汇编环境的过程解析

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>0、感慨&nbsp;</li><li>1、VScode的安装</li><li>2、下载MASM/TASM插件</li><li>3、测试汇编环境</li><ul class="second_class_ul"><li>新建文件</li><li>汇编文件配置</li></ul><li>汇编代码的运行</li><ul class="second_class_ul"></ul></ul></div><p class="maodian"></p><h2>0、感慨&nbsp;</h2>
<blockquote><p>搭配一个简单些的环境,对于我们汇编的学习很有帮助,在这里又不得不感叹vscode的强大,使用VScode+MASM/TASM插件就可以实现8086汇编。真的相对于其他的安装方式,我们都会认同越简单越好。</p></blockquote>
<p class="maodian"></p><h2>1、VScode的安装</h2>
<p>Visual Studio Code - Code Editing. Redefined</p>
<p>vscode的安装过程没有什么难度,出了选择安装路径外,一律通过即可。</p>
<p class="maodian"></p><h2>2、下载MASM/TASM插件</h2>
<p>在扩展当中,搜索并下载MASM/TASM。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202304/2023041015333853.jpg" /></p>
<p class="maodian"></p><h2>3、测试汇编环境</h2>
<p class="maodian"></p><h3>新建文件</h3>
<p><strong>这里我们只需要点击Ctrl+Shift+N即可出现,下面这个界面。</strong></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202304/2023041015333854.png" /></p>
<p><strong>&nbsp;在这里需要已经新建好的工程文件夹。如我下图所示的&ldquo;8086masm&rdquo;。</strong></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202304/2023041015333855.png" /></p>
<p>&nbsp;在其左侧资源管理器中的文件夹下,新建一个temp.asm文件,这里一定要有.asm后缀。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202304/2023041015333856.png" /></p>
<p class="maodian"></p><h3>汇编文件配置</h3>
<blockquote><p>vscode它仅仅是一个代码编辑器,并不会像IDLE一样写好代码就可以点击进行运行,这里需要自己进行相应的配置。在vscode界面,同时按下Ctrl+Shift+P调出命令面板,输入setting。</p></blockquote>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202304/2023041015333857.png" /></p>
<p>打开工作区设置(JSON)。下面是我的配置信息,仅供参考。</p>
<div class="jb51code"><pre class="brush:json;">{
    "masmtasm.ASM.emulator": "msdos player",
    "masmtasm.dosbox.run": "exit",
    "masmtasm.ASM.assembler": "MASM-v5.00",
    "masmtasm.ASM.actions": {
      "TASM": {
            "baseBundle": "&lt;built-in&gt;/TASM.jsdos",
            "before": [
                "set PATH=C:\\TASM"
            ],
            "run": [
                "TASM ${file}",
                "TLINK ${filename}",
                "&gt;${filename}"
            ],
            "debug": [
                "TASM /zi ${file}",
                "TLINK /v/3 ${filename}.obj",
                "TD ${filename}.exe"
            ]
      },
      "MASM-v6.11": {
            "baseBundle": "&lt;built-in&gt;/MASM-v6.11.jsdos",
            "before": [
                "set PATH=C:\\MASM"
            ],
            "run": [
                "masm ${file};",
                "link ${filename};",
                "&gt;${filename}"
            ],
            "debug": [
                "masm ${file};",
                "link ${filename}.OBJ;",
                "&gt;debug ${filename}.exe"
            ]
      },
      "MASM-v5.00": {
            "baseBundle": "&lt;built-in&gt;/MASM-v5.00.jsdos",
            "before": [
                "set PATH=C:\\MASM"
            ],
            "run": [
                "masm ${file};",
                "link ${filename};",
                "&gt;${filename}"
            ],
            "debug": [
                "masm ${file};",
                "link ${filename}.OBJ;",
                "&gt;debug ${filename}.exe"
            ],
            "support": [
                "jsdos",
                "dosbox",
                "dosboxX",
                "msdos player"
            ]
      }
    }
}
</pre></div>
<p class="maodian"></p><h2>汇编代码的运行</h2>
<p>右键可以查看到,可以&ldquo;运行当前程序(汇编+链接+运行)&rdquo;</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202304/2023041015333858.png" /></p>
<p>初学者可能不能看懂下面代码什么意思,我们来点击运行试试吧!</p>
<div class="jb51code"><pre class="brush:plain;">STACK   SEGMENT PARA 'STACK'   ;定义堆栈段,段名为STACK
DB   100 DUP('?')                ;分配堆栈的大小,设置为100字节
STACK   ENDS                     
DATA    SEGMENT                  ;定义数据段,段名为DATA
    STRING   DB'HELLO!','$'    ;定义字符串数据
DATA    ENDS
CODE    SEGMENT                  ;定义代码段,改名为CODE
ASSUMECS:CODE, DS:DATA, SS:STACK
START:MOVAX, DATA            ;程序执行起始点
      MOVDS, AX            ;将数据段地址寄存器指向用户数据段
      MOVAX, STACK
      MOVSS, AX            ;将堆栈段地址寄存器指向用户堆栈段
      LEADX, STRING
      MOVAH, 09H
      INT21H               ;系统调试功能,在显示器上显示字符串
      MOVAH, 4CH
      INT21H               ;系统调试功能,程序结束返回操作系统
CODE    ENDS
      ENDSTART               ;汇编结束,段内程序起点为START</pre></div>
<p><strong>运行结果如下:&nbsp;</strong></p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202304/2023041015333859.png" /></p>
<p>运行过后相信大家明白这就是一个完整的汇编语言源程序示例,该程序就是完成在屏幕中打印显示&ldquo;HELLO!&rdquo;。</p>
<blockquote><p>当然啦,对于这个程序,我们应当侧重于了解它的格式,而不仅仅是内容。通常,完整的汇编语言源程序格式的定义由SEGMENT和ENDS这对伪指令实现,同时需要伪指令ASSUME指定该段加载的段地址寄存器。</p>
<p>以上的ASSUME语句将CS、DS、SS依次指向名为CODE、DATA、STACK的段,然而,ASSUME语句并不为DS、SS赋值,所以,程序开始就是先用传送指令将数据段DATA和堆栈段STACK的段地址分别赋值到DS、SS,然后进行系统功能调用,在显示器上显示字符串。最后,系统功能调用,程序结束返回操作系统。</p></blockquote>
<p>到此这篇关于VScode配置8086汇编环境的文章就介绍到这了,更多相关VScode配置汇编内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>VScode配置汇编语言环境的实现步骤</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: VScode配置8086汇编环境的过程解析