汇编实验二

Posted jinevol

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编实验二相关的知识,希望对你有一定的参考价值。

20171308171 胡欣怡

一、实验目的
1. 熟练掌握使用 debug 工具编写和调试汇编命令的方法
2. 理解并掌握内存中多字节数据的存放
3. 理解并掌握「栈」内存空间的特性和使用
4. 理解并掌握 8086 汇编指令 mov, add, sub, push, pop 的用法
二、实验准备
1. 复习第 3 章「栈」的知识:栈的特性、寄存器 SS 和 SP、指令 push 和 pop
2. 完成教材 3.6~3.9 节内的问题 3.6~3.12,检测点 3.1~3.2
3. 结合教材实验 1(P35)及公邮文件中心→实验下的“实验 1 辅助文档.pdf”复习 debug
工具用法。
三、实验内容
1. 教材实验 2(P71)
(1)练习「1.预备知识:Debug 的使用」
(2)在练习基础上,完成「2. 实验任务」
补充:
为了便于验证实验结果,对「2. 实验任务」中的(1)做如下两点调整:
① 在使用 a 命令输入指令调试前,使用 e 命令将内存单元 0021:0 ~0021:7 连续 8
个字节数据修改为 30H, 31H, 32H, 33H,34H,35H,36H,37H
② 将 P74 实验任务(1)中第 1 行的 mov ax, ffff → 改为 mov ax, 0021
实验前,请理论上分析指令执行后各个填空处的值,并记录下来。
实验时,通过在 debug 中调试,观察实验结果与理论分析是否一致,如不一致,尝试
发现问题所在,并分析原因。

四、实验结论

1.实验一

实验任务(1):
① 截图记录:使用 e 命令修改 0021:0~0021:f 数据,及修改后查看是否正确写入的操

② 截图记录:使用 a 命令输入的 p74 指令
③ 截图记录:每一行指令单步调试(如单步调试步骤多,可分屏截图,但不要有遗漏)
④ P74 中指令执行后各个寄存器填空结果,以在文档中手工标注或手机拍照截图方式
复制在文档中。 对于③单步调试的观察,与理论上分析的结果进行比较,检验是否一致。
如不一致,分析查找原因。

运行dosbox 使用e命令修改 d命令进行查看 a指令输入语句

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

得出结果ax=3130 ax=6462

bx=3534 bx=6C6A 

sp=00FE 

sp=00FC

sp=00FE ax=6C6A

sp=0100 bx=6462

sp=00FE 

sp=00FC

 技术分享图片

 

2.实验二

实验任务(2):
① 截图记录图 3.19 中使用 a命令输入的 7 行指令,使用 e 命令修改 2000:0~2000:f
的值,及修改后查看的部分
② 单步调试每一行汇编指令的截图。且每一条指令单步调试后,都使用 d 命令查看
2000:0~2000:f 的值。观察每一条指令执行后相关寄存器值的变化,及 2000:0~2000:f 单
元值的变化,并思考原因。

技术分享图片

技术分享图片

e命令用来修改从2000:0开始的16个内容为0

d命令查看2000:0开始的16个的内容

r命令查看各寄存器的初始值以做比较

刚开始栈顶地址为2000:0010

push a后,栈顶为2000:000E

再次push a后,栈顶为2000:000C

从mov ax,3123开始使用d命令查看出来的结果发生了变化,但是从截图上也可以看出缺少了mov sp,10的运行,通过阅读书上实验任务部分的文字描述发现这是因为中断机制使得这条指令在执行完 MOV SS, AX 后自动被执行了。所以我认为产生结果变化的原因是因为中断机制。

五、总结与体会

从这次的实验中可以看出我对汇编语言的指令例如-e,-d,-a,-t还不够熟练,还需课后的复习,对于书上的知识仍需巩固加深。

新学习的栈方面的知识也需要及时复习。

(1)「栈」的基础知识

「栈」是一个逻辑上的概念。可以将一段内存空间当作「栈」来使用。

两个概念: 栈底、栈顶
两个操作: 入栈、出栈
一个约定: 8086中栈以字为存取单位

栈顶: 最后入栈的字数据所对应的地址单元
栈底: 固定的一端,栈区最高地址单元的前一个单元
入栈: 把数据存入栈
出栈: 从栈取出数据

(2)与「栈」相关的寄存器SS和SP

SS: 栈段段寄存器,用于存放栈段的「段地址」
SP: 栈指针寄存器,用于存放栈顶的偏移地址。

SS:SP对应的物理地址是栈顶的物理地址。

(SS) × 16 + (SP)  → 栈顶的物理地址

 








































以上是关于汇编实验二的主要内容,如果未能解决你的问题,请参考以下文章

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

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

汇编实验二

汇编实验二

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

汇编语言程序设计实验报告二