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】符合出栈情况。
    
  • 相关阅读:
    如何提高网站在Google的排名(2)
    Key Words in my 2006
    UML: 关系
    What's SOAP
    "你试图打开的项目是Web项目,请指定URL路径"问题及解决方法
    WinXP下装SQL2000企业版
    多表联合查询的问题。。。。。
    实习技术员的基本功(十一)
    实习技术员的基本功(五)
    实习技术员的基本功(六)
  • 原文地址:https://www.cnblogs.com/tp0829/p/8253520.html
Copyright © 2011-2022 走看看