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

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

一 实验环境的配置和测试

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

原文地址:https://www.cnblogs.com/hongyezhu/p/9747357.html

时间: 2024-10-08 16:25:42

【汇编语言】——用机器指令和汇编指令编程的相关文章

实验一 用机器指令和汇编指令编程

一.实验目的 1.熟悉基本debug命令:a.r.d.e.u.t 2.掌握汇编指令与机器指令的对应关系 3.掌握利用debug命令查看修改内存.寄存器的方法 二.实验要求 (1)仔细阅读实验教程中DEBUG的使用部分: (2)使用DEBUG中的A命令输入一段程序段: (3)用DEBUG中的R命令观察寄存器中数据的存放情况,改变寄存器的值: (4)用DEBUG中的D命令查看数据在内存中的表示方法: (5)用DEBUG中的E命令修改内存中的数据: (6)用DEBUG中的T命令执行一条语句: 三.实验

汇编实验二 用机器指令和汇编指令编程

实验二  用机器指令和汇编指令编程 任务一: (1)用E命令将内存单元0021:0~0021:7连续8个字节数据修改为30H,31H,32H,33H,34H,35H,36H,37H. (2)用A命令输入汇编指令: (3)用T命令单步执行: 在用T命令执行MOV SS,AX时,它的下一条指令MOV  SP,0100同时执行. (4)填写书上内容: 任务二: 观察如图实验过程,分析为什么2000:0~2000:f中的内容会发生改变. 任意时刻,SS:SP指向栈顶元素,初始时栈为空.初始时,栈顶为0B

用机器指令和汇编指令编程(修改版)

实验名称 用机器指令和汇编指令编程(1) 实验日期   2018.10.22 学院:计软院 专业:计算机科学与技术 年级:2017级 班次:5班 姓名:陈奕明 学号 20171308194 一.实验目的 1. 掌握使用debug工具编写和调试汇编命令的方法 2. 掌握第1-2章所学的关于CPU.寄存器.内存的基础知识 3. 掌握第1-2章涉及的几条指令mov, add, sub, jmp的用法 二.实验准备 1. 复习教材第1~2章内容,完成教材内相关检测点 2. 结合教材实验1 (P35)及公

【汇编语言】实验2 用机器指令和汇编指令编程(2)

四.实验结论 任务一:使用debug,将下面程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空. 1.使用r命令查看各寄存器初始值. 2.使用a命令编写汇编指令. 3.使用t命令单步执行. 4.分析 此实验使用栈实现了寄存器值的交换 指令 ax bx ss sp mov ax,ffff FFFF 0000 073F 00FD mov ds,ax FFFF 0000 073F 00FD mov ax,2200   2200 0000 073F 00FD mov ss,ax   2200 0

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

·实验任务 (1)使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码        汇编指令 b8 20 4e    mov ax,4e20h 05 16 14    add ax,1416h bb 00 20    mov bx,2000h 01 d8         add  ax,bx 89 c3         mov bx,ax 01 d8         add  ax,bx b8 1a 00    mov ax,001ah bb 26 00    mov bx,002

实验1 —— 用机器指令和汇编指令编程(2)

debug 指令补充 在执行 d 命令时可以带地址参数 (段地址: 偏移地址),其中的段地址会先被送到 ds 寄存器,再交给处理器. 因此,d 命令也可以这样用: d SR:offset (SR指段寄存器) 例如: -r ds :1000 -d ds:0 ;查看从 1000:0 开始的内存区间中的内容 -r ds :1000 -d ds:10 18 ;查看 1000:10 ~ 1000:18 中的内容 -d cs:0 ;查看当前代码段中的指令代码 -d ss:0 ;查看当前栈段中的内容 当然 e

查看CPU和内存,用机器指令和汇编指令编程【Debug模式】

命令 作用 举例 R 查看,改变CPU寄存器的内容 查看:r 改写:r ax D 查看内存中的内容 d 1000:0 f E 改写内存中的内容 e 1000:0 f U 将内存中的机器指令翻译成汇编指令 u 1000:0 T 执行一条机器指令 t A 以汇编指令格式向内存写入一条机器指令 a 1000:0 原文地址:https://www.cnblogs.com/toooney/p/10424981.html

用机器指令和汇编指令编程(1)实验报告

实验结论 实验任务(1) 1.用E命令将指令写入内存 首先用E命令向从1000:0开始的内存单元中写入了任务要求的机器码:然后用R命令查看CPU中寄存器状态,可以看到,CS=073FH.IP=0100H,指向内存073F:0100:接着用R命令修改CS.IP中的内容,使CS:IP指向1000:0.然后用T命令执行写入的指令,执行T命令后,1000:0处的指令b8 20 4e(mov ax,4E20H)得到执行.指令执行后,AX中的内容被改写为4E20H,IP改变为IP+3(因为mov ax,4E

实验1 查看CPU和内存、用机器指令和汇编指令编程

 实验任务 一.使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码        汇编指令 b8 20 4e     mov ax,4E20H 05 16 14     add ax,1416H bb 00 20     mov bx,2000H 01 d8          add  ax,bx 89 c3          mov bx,ax 01 d8          add  ax,bx b8 1a 00     mov ax,001AH bb 26 00     mov