汇编运行环境

这个学期学习汇编,就想去运行个小的汇编程序,结果弄了一下午得到一个并非自己想要的结果。为了方便自己以后能快点过坑,先写个总结。


采用的环境是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的结果为:

这其实并不是我想要的结果,感觉他给出的是地址信息。

最后感谢一些博主的分享!

猜你喜欢

转载自blog.csdn.net/weixin_39025871/article/details/83062959