汇编语言上机环境搭建
一、汇编语言上机的几种方式
汇编语言的上机方式,主要指的是调试方式的不同。
1.1 指令调试方式
DOS上机主要指的是采用指令进行调试,如下图所示,通过DEBUG各种调试指令调试程序,每次打印出寄存器的值,以及打印结果。
1.2 可视化的调试环境
-
Masm for windows 集成上机环境,下载链接,特点是安装方便,附有一些资料的链接。不足之处,使用可视化的调试需要注册,注册就是要money。
-
Vscode + MASM/TASM模块进行调试
-
Vscode + MASM + Dosbox 搭建上机环境
二、Vscode + MASM/TASM
一站式方案,很砂锅
- Vscode的安装,参考链接
- 安装扩展模块
安装MASM/TASM。安装后应该能看到MASM/TASM 和 VSCode DOSBox,这样满足汇编调试的基本要求。安装Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code,可以汉化一下。
终于可以新建文件,敲入代码
示例代码:HELLO.ASM
DATA SEGMENT
MES1 DB 'hello world !','$'
MES2 DB 50,0,50 DUP(0)
DATA ENDS
SSTACK SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:SSTACK
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES2
MOV AH,0AH
INT 21H
;不会自动输入$ 符号 手动输入$ 符号也可以运行
MOV DI,OFFSET MES2+1
MOV BL,[DI]
MOV AX,'$'
MOV [BX+DI+1],AX
CALL ENTERR ;回车换行
MOV DX,OFFSET MES2+2
MOV AH,9
INT 21H
MOV AH,01H
INT 21H ;读键盘输入到AL中并回显
CALL ENTERR ;回车换行
MOV CX,04H
MOV DL,41H
AA: MOV AH,02H
INT 21H
INC DL
LOOP AA ;将DL中的数据显示出来
CALL ENTERR ;回车换行
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES1
MOV AH,09H
INT 21H
CALL ENTERR
MOV AX,4C00H
INT 21H
ENTERR:
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
RET
CODE ENDS
END START
在文件HELLO.ASM编辑窗口,点击右键,可以看到两个模式:
运行当前程序(汇编+链接+运行)
调试当前程序(汇编+链接+调试)
这里因为Run Code并不支持汇编,所以不要像处理c/c++时选择“Run Code”
选择“运行当前程序(汇编+链接+运行)”,运行结果如下:
选择“运行当前程序(汇编+链接+调试)”,运行结果如下:
“专业”的界面出现了……
三、Vscode + MASM + Dosbox 搭建上机环境
这种配置下,Vscode只用作代码编辑功能,通过Dosbox调用MASM进行调试和运行。
Dosbox 0.74-3下载链接
MASM 资料太杂,百度网盘链接:https://pan.baidu.com/s/1FIXw2f5IMAeIL7gVS57uUA
提取码:9981
3.1 配置Dosbox分辨率,启动加载
在Dosbox安装目录下,找到DOSBox 0.74-3 Options.bat,双击运行,
dosbox-0.74-3.conf,先修改dosbox窗口的分辨率,这里我设置为1920x1080
fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=original
output=surface
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper-0.74-3.map
usescancodes=true
改为如下:
fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=1920x1080
output=opengl
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper-0.74-3.map
usescancodes=true
在文件中的最后部分,添加自动运行的指令,设置挂载:
[autoexec]
#Lines in this section will be run at startup.
#You can put your MOUNT lines here.
mount c: c:\masm
c:
启动Dosbox,自动执行之前的指令,实际就是让"c:\masm"映射到"c:",可以通过dir指令查询目录下文件和文件夹。
3.2 测试运行
还有用上文的代码,编译,链接,运行,调试的功能:
C:>masm HELLO.asm-------------编译.asm文件
C:>link HELLO.OBJ----------------链接.obj文件
C:>HELLO.EXE----------------------运行.exe文件
C:>TD HELLO.EXE-----------------调试程序
总结
为方便在window10及以上的平台进行汇编语言的编程练习,对比几种汇编语言的上机方式并进行测试。比较推荐的Vscode + MASM + Dosbox 搭建上机环境,操作反应比较快,比较稳定,vscode编程界面风格比较好。