实验1用机器指令和汇编指令编程
一、实验目的
1.熟练掌握使用debug工具编写和调试x86汇编命令的方法
2.掌握8086CPU、寄存器、内存的基础知识
3.理解并掌握内存中多字节数据的存放:小端法
4.理解并掌握「栈」内存空间的特性和使用
5.掌握指令mov,add,sub,jmp,push,pop的基础用法
二、实验准备
1.复习教材第1~2章内容,完成教材内相关检测点
2.复习教材第3章「栈」的知识:栈的特性、寄存器 SS和SP、指令push和pop,完成教材3.6~3.9 节内的问题 3.6~3.12,检测点 3.1~3.2
3.结合教材实验1(P35)和课程QQ群文件中的文档,学习debug工具用法。在课程QQ群文件->工具软件及相关文档说明文件夹,有如下文档:
1)关于汇编实验软件的简要说明.pdf 2)debug工具简介及用法.pdf
三、实验内容
① 在使用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)(由于机器码数据较多,故仅选取前四行实验)
用E命令将指令写入内存:

用T命令执行:

用A命令将指令写入内存:

用T命令执行:

实验任务(2)
a命令写入:

t命令单步调试:(只给出调试开始和调试出正确结果部分)


说明:在十进制中2的8次方为0100,在十六进制中2的8次方为100H
实验任务(3)


说明:通过E命令试图修改内存单元的部分数据,CPU向内存单元写入数据的操作是没有结果的,内存单元中的内容不会被改变,该内存单元实际上就是ROM存储器的一个单元。
实验任务(4)
向内存从B8100H开始的单元填写数据:

填写不同数据:

改变填写地址:

说明:用E命令向内存地址为B810H的内存单元中写入数据,会发现右上角出现四个不同颜色的彩色图案,当只改变内存单元中的数据时,图案的位置未发生改变,发生改变的是图案的颜色和形状;当只改变内存地址时,图案的颜色和形状未发生改变,改变的是图片所处的位置。
教材实验2结论
实验任务(1)







说明:经检查核对,理论分析与实验结果一致
实验任务(2)



说明:
前三行汇编指令功能:将ax赋值为2000H,再把ax中的值赋值给段寄存器ss,mov sp,10意味着留10个内存空间给接下来的寄存器;初始时栈顶是23,栈底是31
变化:从执行完mov ss,ax后,内存单元中的数据就发生了变化,出现了不需要的数字
原因:栈顶在有数据变动的sp值的变化规则为入栈:sp=sp-2;出栈:sp=sp+2
五、实验总结
本次实验主要应用到R命令(查看,修改寄存器中的内容),D命令(查看内存中的内容),E命令(修改内存中的内容),T命令(执行代码行命令),在实验2中一定要理解栈在系统内存中的变化原理和栈顶在有数据变动时sp值的变化规则。

浙公网安备 33010602011771号