zoukankan      html  css  js  c++  java
  • 80X86汇编 pushf 和 popf 指令

    pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中弹出数据,送入标志寄存器中。

    pushfpopf 为直接访问标志寄存器提供了一种方法。

    8086CPU 的 flag 寄存器(即标志寄存器) 的结构如下:

    20201113213430

    王爽汇编语言 检测点 11.4 帮助理解

    题目:下面的程序执行后:(ax) = ?

    mov ax,0 ; (ax) = 0
    push ax ; 将 (ax) 入栈
    popf ; 将 flag 寄存器的所有位都初始化为 0. 因为它们使用的是同一个栈结构.
    mov ax,0ff0h ; (ax) = 0ff0h
    add ax,0010h ; 执行 add 后, 结果是: (ax) = 0000h(作为无符号数, 产生进位 CF = 1)
                 ; 而作为有符号数没有溢出, OF = 0, 其它 ZF = 1, SF = 0, PF = 1. 我们把这些
                 ; 标志位按照顺序组合起来(不能确定的用 x 表示, 没有使用的用 0 表示) --> 00000xxx010x0101
    pushf ; 将 flag 的值入栈
    pop ax ; 弹栈, (ax) = 00000xxx010x0101
    and al,11000101B ; ax 低八位按位与, 010x0101 and 11000101 = 01000101B = 45H
    and ah,00001000B ; ax 高八位按位与, 00000xxx and 00001000 = 00000000B = 00H
    

    答案是 (ax) = 0045h

  • 相关阅读:
    07-图5 Saving James Bond
    07-图4 哈利·波特的考试(25 分)多源最短路,邻接矩阵
    最短路径问题
    最小生成树
    06-图3 六度空间(30 分)
    06-图2 Saving James Bond
    06-图1 列出连通集(25 分)邻接矩阵

    05-树9 Huffman Codes(30 分)
    集合及运算
  • 原文地址:https://www.cnblogs.com/fanlumaster/p/13971856.html
Copyright © 2011-2022 走看看