【汇编语言】实验1查看CPU和内存,用机器指令和汇编指令编程

  • Post author:
  • Post category:其他




前言

最近学了王爽教授写的《汇编语言》,整理一下学习笔记。



一、Debug模式

Debug是DOS、Windows都提供的实时模式(8086 方式)程序的调试工具。使用它,可以查看CPU各种寄存器的内容、内存的情况和在机器码级跟踪程序的运行。



Debug功能

(1)用Debug的

R

命令

查看、改变CPU寄存器的内容



(2)用Debug的

D

命令

查看内存中的内容



(3)用Debug的

E

命令

改写内存中的内容



(4)用Debug的

U

命令

将内存中的机器指令翻译成汇编指令



(5)用Debug的

T

命令

执行一条机器指令



(6)用Debug的

A

命令

以汇编指令的格式在内存中写入一条机器指令


Windows 32

位系统可以直接从

DOS方式

下进入

Debug

Win32位系统进入Debug



Windows 64

位系统已经不再支持命令行模式下进入

Debug

了,想要进入Debug模式,需安装

DOSBox



debug.exe

来进入Debug模式。



二、下载安装DOSBox和debug.exe

通过下面的链接即可下载:

链接:

https://pan.baidu.com/s/1eMB0ddYycOdF42QmoXhJOQ?pwd=DDOS


提取码:DDOS

在这里我将DOSBox 默认安装在 C:\Program Files (86X) 目录下。将debug.exe 放在D盘的Debug目录下;

打开后是这样的界面,有两个窗口,两个窗口必须同时打开,不能关闭任意一个!

DOSBox

我们可以看到

Z:>

,这是DOSBox的虚拟盘符

然后依次输入下面的命令


mount D D:\Debug

D:

debug

在这里插入图片描述

这样就可以进入Debug模式了(其中D盘是在DOSBox中创建的

虚拟D盘

,并不是本地的D盘)



三、实战



用R命令修改寄存器中的内容

以寄存器

ax

为例

R命令



Enter

键,

R

命令操作结束。



用D命令查看内存中的内容

以内存

10000H

处的内容为例,用“

d 段地址:偏移地址

”的格式来查看

D命令

图中


左边

,是每行的

起始地址




中间

,是指定地址开始的

128个单元的内容

,用16进制的格式输出,每行输出从16的整数倍的地址开始,最多输出16个单元的内容。


右边

,是每个单元中的数据

对应的ASCII码字符

,当数据没有对应的ASCII字符时,Debug就会用 “

.

” 代替。

若查看指定内存处的内容,可以用“

d 段地址:起始偏移地址 结尾偏移地址

”的格式来查看。



Enter

键,

D

命令操作结束。



用E命令改写内存中的内容

以内存

1000:0-1000:9

单元为例,将其中的内容改为0、1、2······7、8、9,可以用“

e 起始地址 数据 数据 数据······

”的格式来进行。

E命令

同时,还可以用e命令以提问的方式来逐个的修改从某一地址开始的内存单元内容

E命令



Enter

键,结束

E

命令。



向内存中存入机器码

要知道,机器码也是数据,当然可以

用e命令将机器码写入内存

,比如写下面的指令:

指令

可以用e命令这样写:

e命令写入机器码



用U命令将内存中的机器指令翻译成汇编指令

类比上面的命令,u命令运用如下:

u命令

从左到右依次是:

每一条机器指令的地址



机器指令



机器指令所对应的汇编指令



Enter

键,结束

U

命令。



用T命令执行一条或多条指令

T命令

图中标红线的地方就是下一步要进行的指令,用

t命令

即可立刻执行。



Enter

键,结束

T

命令。



用A命令以汇编指令的形式在内存中写入机器指令

通过上面的练习我们发现用E命令写入机器指令很麻烦,所以我们可以用A命令直接写入汇编指令:

A命令



Enter

键,结束

A

命令。



总结

以上为本人学习汇编语言时的摘录总结,主要内容来源于

汇编语言(第四版) 王爽 著

,大家若是感兴趣可以看看原书,很值得推荐,以上内容如果有什么错误的话,还请大家指正!



版权声明:本文为qq_62068476原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。