实验1 用机器指令和汇编指令编程
一、实验目的
1. 熟练掌握使用debug工具编写和调试x86汇编命令的方法
2. 掌握8086CPU、寄存器、内存的基础知识
3. 理解并掌握内存中多字节数据的存放:小端法
4. 理解并掌握「栈」内存空间的特性和使用
5. 掌握指令mov, add, sub, jmp, push, pop的基础用法
二、实验内容
1. 教材实验1(P35)
练习教材P35-45「预备知识:Debug的使用」,学习debug启动、退出及常用指令用法;
在练习基础上,完成「2. 实验任务」
2. 教材实验2(P71)
练习「1.预备知识:Debug 的使用」
在练习基础上,完成「2. 实验任务」
为了便于验证实验结果,对「2. 实验任务」的(1)做如下两点调整:
① 在使用 a 命令输入指令调试之前,先使用 e 命令将内存单元 0022:0 ~0022:7连续 8 个字
节数据修改为 50H, 51H, 52H, 53H, 54H, 55H, 56H, 57H
② 将 P74 实验任务(1)中第1行的 mov ax, ffff → 改为 mov ax, 0022
实验前,请先从理论上分析指令执行后各个填空处的值,并记录下来。
实验时,通过在debug中调试,观察实验结果与理论分析是否一致;如果存在不一致的情形,尝试
发现问题所在,并分析原因。
三、实验结论
1.教材实验1结论
实验任务(1)
(机器码数据较多,只用前4行实验即可。)
(用e命令和a命令两种方式,写入内存。用t命令单步调试。)
①采用e命令写入内存和t命令单步调试:


②采用a命令写入内存和t命令单步调试:


实验任务(2)
(附上a命令写入和t命令单步调试实验截图。对于单步调试较多的部分,只截调试开始,和调
试出正确结果的部分即可。)
①使用r命令查看并修改cs:ip为2000:0,再进行a命令的写入:

②用t命令进行单步调试(部分截图):

③调试的结果如下:

实验任务(3)
(附上在debug里实验的截图,并且基于实验结果,作必要的文字说明。)
①使用d命令查看从FFF00H~FFFFFH的内存单元中的内容:

可以发现生产日期为01/01/92。
②当尝试用e命令对其内存单元中的内容进行修改时:

实验结果表示无法进行修改。
③分析原因可知该部分的日期信息存于ROM内存区域,只可进行读操作,无法进行写入修改操作。
实验任务(4)
(附上在debug里实验的截图,并且基于实验结果,作必要的文字说明)
①输入-e B810:0000 01 01 02 02 03 03 04 04,显示图像如下:

②尝试修改填写不同的数据-e B810:0000 11 11 22 22 33 33 44 44,显示图像改变:

③尝试对填写的地址进行修改,显示图像增加:

讨论:由1.15节知识可知,A0000~BFFFF为显存地址空间,向该部分中写入的数据,会被显示卡输出到显示器上。
在内存空间填写数据不同,显示的图形和颜色不同;填写的地址不同,显示的位置不同
2.教材实验2结论
实验任务(1)
① 截图记录:使用 e 命令修改 内存单元0022:0~0022:f 中的数据,及修改后查看是否正确
写入的操作

② 截图记录:使用 a 命令输入的 p74 指令

③ 截图记录:每一行指令单步调试(如单步调试步骤多,可分屏截图,但不要有遗漏)




④ P74 中指令执行后各个寄存器填空结果,以在文档中手工标注或手机拍照截图方式复制在
文档中。 对于③单步调试的观察,与理论上分析的结果进行比较,检验是否一致。如不一
致,分析原因。

预期结果如上图,与实验结果一致。
实验任务(2)
① 截图记录图 3.19 中使用 a命令输入的 7 行指令,使用 e 命令修改 2000:0~2000:f 的值,
及修改后查看的部分

② 单步调试每一行汇编指令的截图。每一条指令单步调试后,都使用 d 命令查看
2000:0~2000:f 的值。观察每一条指令执行后相关寄存器值的变化,及 2000:0~2000:f 单元
值的变化,并思考原因。



讨论:
① 前3行汇编指令的功能,特别是,mov sp, 10意味着什么?初始时栈顶和栈底分别是?
答:第一行指令表示将数据2000H写入寄存器ax中,
第二行指令表示将ax的值传给段寄存器ss,
第三行指令表示将栈指针寄存器 SP 的值改成 0010,即设置栈顶偏移地址为0010。
初始时的栈顶为2000:0010 栈底为2000:0000
② 基于单步调试观察到的变化,给出你对此的思考及可能原因分析。
答:指令mov sp,10在执行时并未显示,原因是t命令在执行修改段寄存器的指令时,会自动执行下一条指令mov sp,10。
同时因为将cs:ip进行了入栈操作,所以栈2000:0-2000:f中的内容会发生变化。

浙公网安备 33010602011771号