zoukankan      html  css  js  c++  java
  • 【汇编】补码的理解+标志寄存器的相关探索

    补码的理解

    标志寄存器的相关探索



    课本P68 例5.16 查看标志寄存器入栈、出栈情况

    1.按课本走一遍


    2.pushf执行后查看标志寄存器是否进栈,观察是在低8位还是高8位;修改8位中的1位,-t运行popf,再观察标志寄存器变化

    结论

    刚开始寄存器标志为:
    空     空     空     空     NV     UP     EI     空     PL     NZ     空     NA     空     PO     空     NC
    m15  m14  m13  m12     0       0       1      m8    0       0	    m5    0       m3    0       m1     0
    执行“LAHF”后
    AH内的值为:	0	0	0	0	0	0	1	0
    我们可以确定:m1的初始值为1,m3 m5的初始值为0;
    
    执行“MOV AH,14”“SAHF”后
    寄存器为:
    空	空	空	空	NV	UP	EI	空	PL	NZ	空	NA	空	PO	空	NC
    m15	m14	m13	m12	0	0	1	m8	0	0	0	1	0	1	0	0
    结果符合要求:AH中八位二进制数进入寄存器低八位中。
    
    执行“PUSHF”后
    “-D 073F:00FD”查看栈内元素情况:
    0	1	1	1	0	0	1	0	0	0	0	1	0	1	1	0
    我们可以确定寄存器此前的状态是:
    空	空	空	空	NV	UP	EI	空	PL	NZ	空	NA	空	PO	空	NC
    0	1	1	1	0	0	1	0	0	0	0	1	0	1	1	0
    理论上讲:后八位应该是:14H,结果现在是16H,只有一种可能,m2又恢复到了初始状态1
    
    执行“-E 073F:00FD ”把16H修改成15H,再执行“POPH”进栈,这时寄存器中显示:
    空	空	空	空	NV	UP	EI	空	PL	NZ	空	NA	空	PO	空	NC
    m15	m14	m13	m12	0	0	1	m8	0	0	m5	1	m3	1	m1	0
    此时当m1,m3,m5都为0时,后八位为00010101【15H】符合出栈情况。
    
  • 相关阅读:
    站立会议02(冲刺2)
    站立会议01(冲刺2)
    测试计划
    cnblogs.com用户体验
    对其他组所提建议的回复(第一阶段)
    对各个小组的评论和一些建议
    团队会议第十天
    团队绩效评估规划
    团队会议第九天
    每日scrum(1)
  • 原文地址:https://www.cnblogs.com/tp0829/p/8253520.html
Copyright © 2011-2022 走看看