实验目的
通过实验观察和分析在不同的寻址方式下存储单元逻辑地址的表示以及指令的执行结果。熟练掌握 DEBUG 的 R 命令、A 命令、T 命令和 D 命令的用法。
实验内容
参考示例一和各种寻址方式完成下列实验内容:
(1)两个操作数相减运算,结果放在数据段的 16 号单元
1.AX、BX 寄存器分别赋值为 0008H 和 0010H;
2.AX 和 BX 的内容相减(SUB 指令),结果在 AX 中;
3.用直接寻址方式将相减的结果保存到 16 号单元。在 DEBUG 下,用 A 命令输入上述四条指令,再用 R 命令显示寄存器的情况:
用 T 命令单步执行(注意:第一条指令的偏移地址是 0100,IP 寄存器的值也应是 0100);用 D 命令观察结果:
实验分析
1.执行两次 T 命令后,AX=0008H, BX=0010H。
2.执行减法命令后,AX=FFF8H;相应的标志位:进位标志 即 CF=1;符号标志 即 SF=1;零标志 NZ,即 ZF=0;溢出标志 NV,即 OF=0;表示运算结果有借位、不溢出、结果不为 0、结果是负数。
3.直接寻址方式对应的存储单元为 16 号,逻辑地址为 DS:0010。 执行完 MOV DS:[0010],AX 指令后,DS:0010 单元中的内容变为FFF8了。
(2)两个操作数相加运算,结果放在附加段的 0020H 号单元
1.AX 的值为 0034H;
2.AX 和 65 相加,结果在 AX 中;
3.用寄存器间接寻址方式(段超越)保存运算结果。
在 DEBUG 下,用 A 命令输入上述四条指令,再用 R 命令显示寄存器的情况:
用 T 命令单步执行(注意:第一条指令的偏移地址是 0100,IP 寄存器的值也应是 0100);用 D 命令观察结果:
实验分析
1.执行两次 T 命令后,AX=0034H。
2.执行加法命令后,AX=FFF8H;相应的标志位:进位标志 即 CF=0;符号标志 即 SF=1;零标志 NZ,即 ZF=0;溢出标志 NV,即 OF=0;表示运算结果无进位、不溢出、结果不为 0、结果是正数。
3.寄存器间接寻址方式将AX值传入附加段中,逻辑地址为 ES:0020。 执行完 MOV ES:[0020],AX 指令后,ES:0020 单元中的内容变为0075了。
(3)将 AX 寄存器中的 1234H 写入数据段的 2 号单元,读出 3 号单元的 12H 传送给 BL 寄存器(寻址方式自定)
在 DEBUG 下,用 A 命令输入上述四条指令,再用 R 命令显示寄存器的情况:
用 T 命令单步执行(注意:第一条指令的偏移地址是 0100,IP 寄存器的值也应是 0100);用 D 命令观察结果:
实验分析
1.执行 T 命令后,AX=1234H。
2.执行MOV命令后,DS:[0002]中变为34H,DS:[0003]中变为12h
实验要求
1.写出相关命令及操作步骤
2.实验内容用截图形式记录实验结果。
3.写出实验结果分析。
**提示**:减法的结果以补码形式表示,对应的真值为负数。标志位发生了改变。
实验拓展
1.根据自己的理解和偏好,设计并完成其他寻址方式的指令。
2.这些实验对你有何启发?
答:让我更加了解了DOS的指令系统和汇编中不同的寻址方式。通过对立即寻址方式(Immediate addressing),寄存器寻址方式(Register addressing),直接寻址方式(Direct addressing),寄存器间接寻址方式(Register indirect addressing),寄存器相对寻址方式(Register relative addressing),基址变址寻址方式(Based indexed addressing),相对基址变址寻址方式(Relative based indexed addressing)这其中寻址方式的运用了解,实现了在不同寄存器中的值传递,帮助很大,学会了很多知识。
学习时间 90分钟
操作时间 66分钟
按键次数 1638次
实验次数 3次
报告字数 2561字
是否完成 完成