这个学期学习汇编,就想去运行个小的汇编程序,结果弄了一下午得到一个并非自己想要的结果。为了方便自己以后能快点过坑,先写个总结。
采用的环境是Win10,需要下载的是MASM,DOSBox和debug.exe。
在写汇编程序时可以用任意一个文本编辑器写,包括记事本,我用的是Notepad++,在里面选择的语言是Assembly。其实不选应该也可以,只要在保存时将后缀名改为 .asm 就可以。
先安装MASM并且配置环境变量,环境变量怎么配置可以很容易搜到的。
在安装MASM时,出现Delete Operation of EXE file has Failed!,出现这种问题可能是权限问题或一些杀毒软件的问题,可以尝试将一些360主动防御的进程关掉,并在一个新的管理员权限的用户下面去安装。我就是新建了一个管理员权限的用户才安装成功的,虽然原先使用的用户也是管理员权限的。
参考博客链接:https://blog.csdn.net/u014399084/article/details/79679446
安装完MASM后,就可以在命令行里进入到安装MASM的文件夹的bin目录下(其他人的好像不用这样,可能是环境变量没配好吧),我的路径是D:\masm32\bin ,masm ***.asm (写的汇编程序),成功执行后会生成一个 .obj 的文件。但我的bin目录下并没有masm.exe,而是有一个ml.exe,(微软把masm和Link结合在一起生成一个命令程序ml.exe),那么命令就是 ml ***.asm 就可以了。
参考博客链接:https://www.xuebuyuan.com/1620261.html
下一步是对生成的obj文件进行连接,生成一个 .exe文件,这个时候又出现了一个link错误,可以将link16.exe改为link.exe,而把link.exe改为link32.exe.
参考博客链接:https://blog.csdn.net/qq_21004057/article/details/51620404,我就是用了这里的第二种方法。
之前说ml.exe将masm和link已经结合在一起了,所以执行ml后就不需要手动执行link了。
下一步是安装DOSBox,是因为要用到debug.exe去调试,但是64位机中没有debug.exe,所以需要DOSBox,还得去下载一个debug.exe。记得要将debug.exe放在根目录下,我放在了D盘。
之后打开DOSBox,会生成两个页面,注意如果关闭一个另一个也会随之关闭。
在DOSBox里面有蓝色框的页面输入:
mount c d:\
c
debug
之后会出现一个 - 并有个光标在闪烁,说明安装成功了。
参考博客链接:https://www.cnblogs.com/xuepeng0521/p/3661598.html
https://blog.csdn.net/sinat_27382047/article/details/79305373
当想要运行一个 .exe 时,就在debug 加上这个文件,再输入相应的指令。
-a 汇编
-u 反汇编
-r 显示寄存器内容
-d 查看数据
-q 返回
参考博客链接:https://www.cnblogs.com/wxb20/p/5995650.html
一个关于汇编知识的链接:https://blog.csdn.net/bytxl/article/details/47946325
我运行的代码是书上的实例,代码如下:
求从1开始连续50个奇数之和,并将结果存放在名字为SUM的字存储单元中。
DATA SEGMENT
SUM DW 0
DATA ENDS
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,
CS:CODE
START: MOV AX,DATA
MOV DS,AX
MOV CX,50
MOV AX,0
MOV BX,1
NEXT: ADD AX,BX
INC BX
INC BX
DEC CX
JNE NEXT
MOV SUM,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
最后在DOSBox中debug的结果为:
这其实并不是我想要的结果,感觉他给出的是地址信息。
最后感谢一些博主的分享!