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

一、个人吐槽:

最近,学习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>

六、程序结果



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值