您的位置:首页 > 其它

16位汇编的调试及常用命令

2015-11-06 22:54 302 查看
一、个人吐槽:

最近,学习16位汇编,头痛的是我竟然在vs2013(32位)上配置汇编(32位)环境,现在把它卸载,所以先记录下来。这里顺便延伸一下16汇编。我找了一大堆资料,后来发现一位网友说得很对,16汇编是最基础的,我们应该使用debug来进行调试以便更了解pc机的基层语言。话不多说,开讲。

二、16位汇编环境搭配及使用

1、首先,我来汇总一下,若你的系统是32位且win7以下,直接进行第三步,否则从第二步开始

2、如果你的电脑是32位机且是win7以下的,可以直接打开系统的命令提示符进行debug,否则需要软件辅助才能进行debug。我向大家推荐一个软件dosbox。

地址:http://pan.baidu.com/s/1bnjuLeJ

安装及使用教程参考:http://jingyan.baidu.com/article/ceb9fb10dc75c38cad2ba098.html

(1)这个教程是别人做的,但我有一点小技巧。打开安装路径->DOSbox-0.74->DOSBox 0.74 Options.bat,在倒数第三行【autoexec】加入mount C G:\masm,注意:G:\masm这个是我放masm软件的路径,masm软件在3中放出,你可以将masm放在其他路径,G:masm改为你的路径,最好不要中文路径。然后换行,再加入C:即可。作用:不用每次打开都要输入这两行。这个软件的作用是将这个将这个目录挂载到c盘上。

3、当然,有了这个软件,我的程序应该怎么调试呢?就像上文我说的G:\masm路径一样。这里我向大家推荐一个软件masm,作用:将.asm->.obj->.exe

地址:http://pan.baidu.com/s/1dDmE7FN

4、[环境配置好了],masm软件有了。我在这总结一下以下几点,

(1)用记事本编写汇编(当然,你也可以用其他任何可编辑文本的软件),保存为.asm文件,并放到masm目录下(重点,不然无法debug)。然后进入命令提示符(win7 32位以下)或dosbox(不能再命令提示符使用debug的),

(2)输入masm xx.asm(xx代表你的文件名),你会看到有三个文件(.obj .list ..crf)让你选择生成,若你一直按回车,只生成.obj文件。

(3)输入masm xx.asm(xx代表你的文件名),你会看到有三个文件(.exe .map .lib)让你选择生成,若你一直按回车,只生成.exe文件。

5、好了,我现在提供一个程序给大家调试,看附件

三、调试

1、新建记事本,将附件内容复制粘贴,保存在masm目录下(不要放错啊),后缀名为.asm(记得改啊)

2、汇编(编译)--------- >目标文件 .OBJ(AAA是你的文件名)

D:\MASM>MASM AAA

3、

•链接 --------- > 可执行文件 .EXE

D:\MASM>LINK AAA

4、执行--------- >最终可执行文件名 或双击文件名

D:\MASM>AAA

5、调试--------- > 最终可执行文件名

D:\MASM>DEBUG AAA.EXE

四、汇编常用命令

1、DOS 命令简单介绍

改变盘符: C:\>D: (变成D:\>)

建立子目录: D:\>MD MASM (在D:盘的根目录下建立了MASM子目录)

改变子目录: D:\>CD MASM (转到MASM子目录)

回到上一级目录: D:\ MASM\>CD \

查看目录内文件:D:\MASM>DIR

2、debug常用命令

命令

名称

命令格式

A

汇编

A[<地址>]

G

执行

g=[起始地址] [断点地址]

D显示内存D[<地址>]或D[<范围>]
u反汇编u[地址范围]

r显示寄存器r[寄存器名]或rf

G执行G[=<起始地址>][<断点地址>]

H十六进制计算H
数值1 数值2

五、附件(输出how do you do)

<span style="font-family:SimSun;font-size:18px;">DATA SEGMENT					;数据段开始
STR  DB "How do you do?$"
DATA ENDS					;数据段结束
STACK SEGMENT STACK				;堆栈段开始
DB 200 DUP(?)
STACK ENDS 					;堆栈段结束
CODE SEGMENT					;代码段开始
ASSUME DS:DATA,SS:STACK,CS:CODE		;段分配,声明段
START:   MOV AX,DATA   				;给DS赋初值
MOV DS,AX
LEA DX,STR   ;显示缓冲区首址赋DX
MOV AH,9     ;设置9号调用
INT 21H      ;9号调用输出How do you do?
MOV AH,4CH   ;设置4CH号调用
INT 21H      ;结束程序运行,返回DOS
CODE ENDS		     ;代码段结束
END  START	     ;程序结束
</span>


六、程序结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: