汇编-寄存器数据的存储与变化-算术运算对标志位的影响

实验3:寄存器数据的存储与变化-算术运算对标志位的影响

1.项目设计
将操作数放在2000H和2001H两个单元中,编程进行以下的算术运算 ,并记录标志位的状态。
(1)41H+3BH,结果放在2002H单元中;
(2)41H+5AH,结果放在2003H单元中;
(3)AFH+7EH,结果放在2004H单元中;
(4)E3H+1DH,结果放在2005H单元中;
(5)41H-3BH,结果放在2006H单元中;
(6)3BH-41H,结果放在2007H单元中;
2.项目实施
(1)写出指令代码段,例如41H+3BH
MOV AX, [2000H]
ADD AX, [2001H]
MOV [2002H], AX
(2)写出指令的机器代码:
例如上面指令的机器代码为 A0 00 20
04 01 20
A2 02 20
(3)在debug中调试程序。
3.项目运行
(1)运行每一段指令,按表1格式在项目报告中记录结果。

实验步骤:

直接进入DOSBox 进行相关挂载操作

挂载并切换到C盘

切换至c盘 输入debug

  • -A命令进入编写代码界面
  • -R查看当前寄存器中指令
  • -T查看寄存器下一地址的内容以及相应的机器码
  • -D查看DS内数据存放的结果

1.1)程序1代码以及机器码及结果
这里写图片描述
分别写入三条语句来进行计算41H+3BH并放到2002H单元内
按ENTER键 再输入R查看当前寄存器中的内容,可以看到对应汇编语句所对应的机器码。 由于涉及到32位与64位操作系统,所生成的机器码会有所差别。
使用-T查看寄存器下一地址的内容和相应的机器码
注意:使用-T查看直到运行完最后一条汇编指令为止。

此时,使用-D xxx xxx
即-D 2002 2002即可查看写在2002H单元内的内容
可知值为7C 相对于的NV UP EI PL NZ NA PO NC 为状态标志 ,具体参数参见此图

这里写图片描述

当然例题1也能 使用AX 立即数计算 其也能计算41H+3BH的值。结果存在2002H 结果都是7C 但机器码不同
如图:

这里写图片描述

2,1)程序2的相关指令和结果

这里写图片描述
得到对应的SF,ZF,CF

这里写图片描述

3)DEBUG写入代码进行T测试

这里写图片描述
3.3)程序3代码以及机器码

这里写图片描述

3.3)程序3结果及SFZFCF
这里写图片描述
4)找到02的值
这里写图片描述

4.1)程序4代码以及机器码

这里写图片描述

4.3)得到SF,ZF,CF

这里写图片描述

5.1)程序5代码以及机器码
这里写图片描述
5.2)得到SF,ZF,CF与2006h的值

这里写图片描述

6.1)程序6代码以及机器码
这里写图片描述

6.2)程序6结果及SFZFCF
这里写图片描述

7.1)程序7代码以及机器码以及结果

这里写图片描述

个人得到的程序运行结果及CF,SF,ZF值

这里写图片描述

相关参考资料

这里写图片描述
机器码的构成结构

DOSBox下debug的使用 https://www.jianshu.com/p/bf7caf046420

机器码 与 汇编指令的关系https://blog.csdn.net/z3410218746/article/details/7485602

80x86寻址方式及指令系统https://wenku.baidu.com/view/d9bb76a40029bd64783e2c6a.html

计算机组成原理实验报告单算数运算及对标志位的影响https://wenku.baidu.com/view/5ed10f72d1f34693dbef3e12.html

原文地址:https://www.cnblogs.com/whatiwhere/p/9094228.html