【汇编语言】——用机器指令和汇编指令编程

时间:2022-04-10 01:13:37

  初入大二,刚刚接触和学习汇编语言这门课程,肯定有很多的不足和漏洞;本篇文章是关于王爽编著的《汇编语言》(第三版)第二章的章后实验的实验报告和总结。

一 实验环境的配置和测试

 Debug是DOS,Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容,内存的情况和在机器码级跟踪程序的运行。64位win10系统下,可以通过安装DOSBox软件来配置一个虚拟的工作环境。

相关的软件放在我的百度云盘,还没有安装的可以通过以下链接下载。

链接: https://pan.baidu.com/s/1ue_s7JaGKTjj6RLKui_9bg 提取码: 15qs

【汇编语言】——用机器指令和汇编指令编程

解压之后将masm.7z文件解压放入D盘(因人而异),然后点击安装即可。

(1)设包含dos工具(edit.com, masm.exe, link.exe, debug.exe)的文件夹masm在windows系统的存放路径为:d:\masm
(2)安装DOSBox完成后,启动DOSBox,出现虚拟盘符z:\,输入如下命令:
mount d: d:\masm
表示:创建虚拟盘符d:,并将你的硬盘d:\masm文件夹的内容虚拟到虚拟 dos平台的d:\下。
(3)输入d:进入虚拟盘符d:\,即可使用dos版的汇编工具。
(4)使用时输入debug<回车> 或 debug32<回车>即可调试。
(具体使用哪一个需要依赖你的电脑是否支持)
*注:如果不想每次启动dosbox都重复上述步骤中的(2)和(3),可以把(2)和(3)的内容写进 dosbox的配置文件,以后每次就可以自动执行这两步。具
体操作如下:
查找到配置文件dosbox-0.74.conf,通常目录是C:\Users\×××\AppData\Local\DOSBox\dosbox-0.74.conf,找到后,在文件最后加上两行:
第 4 页/共 5 页
mount d: d:\masm
d:
这样每次启动dosbox时,系统会自动执行上述两条命令。

TIPS:在帮我室友配置环境的时候发现有的电脑找不到AppData这个文件夹,没有的可能是隐藏了,打开我的电脑——查看——隐藏文件,勾选上就可以了。

一切都准备好以后点开软件,输入debug,出现以下画面,就是配置完毕了。【汇编语言】——用机器指令和汇编指令编程

此时在- 后面输入R命令可以查看,改变CPU寄存器的内容

在-D命令查看内存中的内容balabala,有很多指令就不一一阐述了,书上以及网上都有很多,想要进一步学习的可以自行度娘。

二 实验任务及报告

下面就是完成章后实验的实验过程和结果

实验任务(1)-1用E命令输入机器码

首先我们通过R指令查看寄存器的状态,可以看到CS:IP指向的是073F:0100。

【汇编语言】——用机器指令和汇编指令编程

接着我们使用R命令修改CS,IP中的内容,使CS:IP指向1000:0。

【汇编语言】——用机器指令和汇编指令编程

使用E命令输入 -e 1000:0 b8 20 4e 用U命令查看对应的汇编指令,使用T命令执行。

执行T命令后,1000:0处的指令b8 20 4e(mov ax,4E20H)得到执行。指令执行后,AX中的内容被改写为4E20H,IP改变为IP+3(因为mov ax,4E20H的指令长度为3个字节),CS:IP指向下一条指令。

【汇编语言】——用机器指令和汇编指令编程

重复以上操作,将任务要求的全部指令输入完毕后得到如下图结果:

【汇编语言】——用机器指令和汇编指令编程

最后CS:IP指向1000:0021,说明指令总长度为21个字节。

实验任务(1)-2用A命令输入汇编指令

同E命令类似,用A命令向从1000:0开始的内存单元中写入了任务要求的汇编指令。

【汇编语言】——用机器指令和汇编指令编程

【汇编语言】——用机器指令和汇编指令编程

实验任务(2)

首先用A命令写入汇编指令:

【汇编语言】——用机器指令和汇编指令编程

然后用T指令计算2的8次方:

【汇编语言】——用机器指令和汇编指令编程

最后AX的结果为0010H。

实验(3)

在DEBUG中输入:
-d FFFF:0 F
这句代码的作用是读FFFF:0中的内存数据:
【汇编语言】——用机器指令和汇编指令编程

可以看到 01/01/92,地址是FFFF:0005~FFFF:000C。 另一个室友的笔记本显示的结果也是这个,所以初步猜测可能笔记本都是这个吧……但是后来去百度一下,DOSBox是一个虚拟的工作环境,所以查看到的也是一个虚拟主板……

尝试修改一下吧,-e FFFF:5
FFFF:0005 30. 33.35 2F.
FFFF:0008 33.32 30.33 2F. 30. 36.38
输入完想修改的日期后查看内存。
-d FFFF:0 F,显示的还是一样的:

【汇编语言】——用机器指令和汇编指令编程

就像上面说的,DOSBox环境下虚拟主板应该是预设的,所以应该是改不了的。

实验(4)

用E命令写入数据,再用D命令读取数据:

【汇编语言】——用机器指令和汇编指令编程

再输入-e B810:0000 05 05 06 06 07 07 08 08,进行数据修改,用D命令查看:

【汇编语言】——用机器指令和汇编指令编程

再输入e 2000:0000 01 01 02 02 03 03 04 04:

【汇编语言】——用机器指令和汇编指令编程

三 实验总结及学习感悟:

本次章后实验难度比较低,但是能够帮我们理解课本前两章所学习到的内容。同时熟练的掌握Debug工具的使用对日后汇编语言的学习是有很大帮助的。

学习感悟吗emmm没太多吧,虽然是一门选修课,但是内容还蛮有意思的,至于更高阶的反汇编,安全攻防什么的哈哈哈目前我一个菜鸟还没办法理解吧,希望能够在这门课上学到些知识而且能够学有所用。