汇编语言实验(VScode+masm32+dosbox)

1. VScode

  1. 搜索插件 MASM安装 支持语法高亮等
  2. 终端使用 cmd

2. DOSbox 安装

  1. 下载 https://www.dosbox.com/
  2. 更改路径安装 例如:d:\DOS
  3. 配置 双击打开d:\DOS下的 DOSBox 0.74-3 Options.bat,在末尾添加
    MOUNT D D:\asmdos
    D:
    这样就将D:\asmdos设置成 DOSBox 下的D:
MOUNT  D D:\asmdos       
D:

3. masm32安装

  1. 下载: http://www.masm32.com/
  2. 更改路径,一路next安装

4. 环境变量

  1. 此电脑->右键属性->高级系统设置->环境变量->双击PATH->新建变量
    ->浏览找到 DOSBox.exe->确定保存
  2. 同理,将masm32安装路径下的 bin文件夹(包含ml.exe、link16.exe等)

5. hello world 汇编程序

  1. VScode打开一个文件夹作为工作区
  2. 新建 HLW.asm (后缀是.asm),输入代码
;功能:显示提示PASSWORD ?;      键盘输入字符串与0AB比较
;      相同则输出 Hello world!
;      不同则返回DOs

D       SEGMENT
PASS1   DB '0AB'              ;储存密码
N       EQU $-PASS1           ;密码长度
D1      DB 'PASSWORD ?',0DH,0AH,'$'
PASS2   DB 20
        DB ?
        DB 20 DUP(?)            ;键盘输入缓存
D2      DB 0DH,0AH,'OUTPUT: HELLO WORlD!$'
D       ENDS                            ;数据段
CODE    SEGMENT  ;代码段
        ASSUME CS:CODE,ES:D
BG:     MOV AX,D
        MOV DS,AX       ;D段地址送入DS
        MOV ES,AX
        LEA DX,D1       
        MOV AH,9
        INT 21H         ;显示输入提示
        LEA DX,PASS2
        MOV AH,0AH
        INT 21H         ;输入字符串
        LEA SI,PASS1
        LEA DI,PASS2
 
        MOV CX,N
        LEA DI,PASS2+2
        CLD
        REPZ CMPSB      ;输入字符串与原密码比较
        JZ DISHL
LAST:   MOV AH,4CH      ;返回DOS
        INT 21H
DISHL:  LEA DX,D2       ;屏幕显示helloworld
        MOV AH,9
        INT 21H
        JMP LAST
CODE    ENDS
        END BG;

6. masm, link

  1. VScode 终端cmd 输入
    1. D:\asmdos> cd test 改变到HLW.asm 所在文件夹
    2. D:\asmdos\test>ml HLW.asm 得到HLW.obj
    3. D:\asmdos\test>link16 HLW.OBJ (回车回车使用默认),得到HLW.exe
    4. D:\asmdos\test>DOSbox 运行DOSBox
    5. DOSBox中运行HLW.exe
      运行截图

At last 问题总结

  1. VScode使用cmd来 Debug的方法没找到
  2. DOSBox 使用ml.exe ,link16.exe 出错
    注:这学期学微机原理课,我只会写helloworld, 难免错误一大堆.

版权声明:本文为qq_45974254原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。