汇编语言——dosbox的相关操作

安装准备

在这里下载完了之后,在C盘根目录下(比较方便,爱建哪建哪)创建名为dosbox的文件夹,里面放好debug、edit、link、masm等工具。打开dosbox会见到如下图所示的界面:
dosbox界面
之后需要挂载工作目录,输入mount C C:\dosbox(刚才的目录)
效果

之后再输入C:即可

再输入debug就可以进入debug模式。

在这里插入图片描述

debug相关操作

总览

  • R命令:查看、改变CPU寄存器的内容
  • D命令:查看内存中的内容
  • E命令:改写内存中的内容
  • U命令:将内存中的机器指令翻译成汇编指令
  • T命令:执行一条机器指令
  • A命令:以汇编指令的格式在内存中写入一条机器指令

R命令

-r : 直接查看寄存器中的内容

在这里插入图片描述

-r [寄存器名] : 修改寄存器中的值

输完之后会弹出该寄存器当前存储的值,下面会有一个冒号,在里面输入数据即可改变寄存器的值,比如输入0001再用-r查看:
在这里插入图片描述

D命令

注意,D命令中的段地址都可以省略,只给出偏移地址的[偏移地址],此时段地址默认从ds段寄存器中取得。

-d : 查看内存中的内容

在这里插入图片描述

随后再使用-d命令看的就是下一段内存里的内容。其他D指令也同理

-d 段地址:偏移地址 : 查看指定地址后的内容

在这里插入图片描述

-d 段地址:偏移地址1 偏移地址2 : 查看指定地址段的内容

在这里插入图片描述

E命令

-e 段地址:偏移地址 : 修改内存中的内容

直接连续修改

直接将要添加进去的数据写在段地址:偏移地址后面,如图
在这里插入图片描述

以提问的方式逐个修改

输完-e 段地址:偏移地址之后换行,之后会逐个跳出来该内存原本存放的内容,在.后面填写想要变更成的内容。按空格键继续填写下一个,按enter键结束修改
在这里插入图片描述

写入字符

如果想写进去的是字符,只需要加一个‘’即可,如下图
在这里插入图片描述

我们可以看到加了引号的几个元素被存进去的是它们的ascII码而不是原本的数值了。

U指令

-u 段地址:偏移地址 : 将机器码翻译成汇编代码

先用-e写入一段机器码。下面是它的涵义:

机器码对应的汇编指令
b80100mov ax,0001
b90200mov cx,0002
01c8add ax,cx

接下来用-u查看这段机器码的汇编指令
查看汇编指令

T指令

-t : 执行CS:IP指向的指令

还是上面那段汇编码,首先我们得把CS:IP指向写入代码的1000:0(利用之前的-r指令)
在这里插入图片描述
接下来就可以用-t指令来执行这段汇编代码,而且每次都会显示执行完各个寄存器的结果。
在这里插入图片描述

A指令

-a 段地址:偏移地址 : 向指定地址写入汇编代码

输完一行按enter键,全部输完按两次enter键即可
在这里插入图片描述
如图所示用-a指令写完汇编代码之后再用-u查看
先改变CS:IP再执行这段汇编代码的结果:
在这里插入图片描述
在这里插入图片描述

G命令

-g [偏移地址]

直接显示到该偏移地址的指令的运行结果。(图片来自《汇编语言》第三版-王爽)
在这里插入图片描述
可以用于跳过loop循环的重复计算过程。

P命令

-p

跳过循环执行过程
在这里插入图片描述

程序相关操作

编辑

输入edit进入源程序的编辑
在这里插入图片描述
在这里插入图片描述
(在输文件名的时候记得加上后缀.asm)
有不明白的地方可以按F1查看提示。
编辑好源程序之后按F3+E保存并退出。保存的地方是和edit相同的路径

编译

输入masm对汇编源程序进行编译。把待编译的文件放在和masm同一个目录下(否则之后的操作都要加上路径名,连接时同理)。这次输入文件名不需要再输入扩展名。跳出来的几项中只需用输入第一项,后几项全部回车跳过即可
在这里插入图片描述
快速编译:直接输入masm [文件名];(注意结尾的分号)即可
在这里插入图片描述
要注意的是,masm对于偏移地址的解释是与debug不同的,单独出现时,masm将[ ]里的数据直接理解成常量而不是一个内存单元(如果是寄存器则没有关系)。这时候需要在前面显式地给出段地址所在的段寄存器,ds:[数据]

连接

输入link对汇编源程序进行编译。同样,输入文件名不需要再输入扩展名。跳出来的几项中只需用输入第一项,后几项全部回车跳过即可。

在这里插入图片描述
快速连接:直接输入link [文件名];(注意结尾的分号)即可
在这里插入图片描述

运行

输入文件名(带不带后缀均可)即可。下图为有显示效果的程序的执行效果。
在这里插入图片描述

对该程序进行debug

输入debug [文件名(带后缀)]即可,其余操作和debug模块无差。
在这里插入图片描述
执行int 21h需要用-p退出

  • 7
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值