实验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盘 输入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