美文网首页
[汇编语言] 检测点11.2

[汇编语言] 检测点11.2

作者: 耿杰 | 来源:发表于2019-08-03 13:34 被阅读0次

一、写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值

sub al, al
mov al, 10H
add al, 90H
mov al, 80H
add al, 80H
mov al, 0FCH
add al, 05H
mov al, 7DH
add al, 0BH

答案:逐条分析

  • 1、sub al, al
al = 0

答案:
            CF = 0
            OF = 0
            SF = 0
            ZF = 0
            PF = 0
  • 2、mov al, 10H
al = 10H

答案:传递指令,对标志寄存器没有影响
            CF = 0
            OF = 0
            SF = 0
            ZF = 0
            PF = 0
  • 3、add al, 90H
al = A0H

答案: 
             CF = 0
                   a、10H +90H = A0H,对应着10进制值为160。对于无符号数来说,没有进位,所以为0
              
             OF = 0
                    a、10H对应的10进制值为16,小于127,对应的有符号数也是10H  
                    b、90H对应的10进制值为144,大于127。对应的有符号数 = 256 - 144 = -112。也就是90H是有符号数-112的补码。
                    c、对于有符号数运算,16 + (-112) = -96
                    d、没有溢出
                           
             SF = 1
                    a、对于有符号数运算,结果是-96,是负数。所以为1

             ZF = 0
                    a、结果是-96,所以为0.

             PF = 1
                    a、结果是-96。1的个数为偶数,所以为1
                           96的补码  0110 0000
                          -96的补码  1010 0000
  • 4、mov al, 80H
al = 80H

答案:传递指令,对标志寄存器没有影响
            CF = 0
            OF = 0
            SF = 1
            ZF = 0
            PF = 1
  • 5、add al, 80H
al = 00H

答案:  
              CF = 1
                    a、80H + 80H = 256, 对应着10进制值为256。对于无符号数来说,产生进位,所以为1。
                    b、255    1111 1111
                       256  1 0000 0000

              OF = 1
                     a、80H对应着无符号数值为128, 对应着有符号数-128。
                     b、-128 + (-128) = -256,8位寄存器放不下,最小为-128。溢出了1位,al寄存器的值为00,所以OF为1,
              
               SF = 0
                      a、对于有符号运算结果来说,是负数,所以为1

               ZF = 1
                      a、al寄存器为1,所以为1

               PF = 1
                      a、-256 二进制码 1 0000 0000,8位寄存器中,没有任何1,所以为偶数。所以PF=1
  • 6、mov al, 0FCH
al = 0FCH

答案:传递指令,对标志寄存器没有影响
            CF = 1
            OF = 1
            SF = 0
            ZF = 1
            PF = 1
  • 7、add al, 05H
al = 01

答案:
              CF = 1
                    a、0FC表示无符号数252,同时又表示有符号数 -(256-252)= -4。
                    b、05H表示有(无)符号数5。
                    c、无符号计算:252 + 5 > 256,借位了,所以CF=1
             
              OF = 0
                    a、有符号计算:-4 + 5 = 1, 没有溢出,所以OF=0
               
              SF = 0
                    a、有符号计算:-4 + 5 = 1,不是负数,所以SF = 0

              ZF = 0
                    a、有符号计算:-4 + 5 = 1,不是0,所以ZF = 0
              
              PF = 0
                    a、有符号计算:-4 + 5 = 1,对应着二进制: 0000 0001, 只有奇数1,所以PF = 0
  • 8、mov al, 7DH
al = 7DH

答案:
              CF = 1
              OF = 0  
              SF = 0
              ZF = 0
              PF = 0
  • 9、add al, 0BH
al = 

答案:
            CF = 1
                      a、7DH表示有(无)符号数125。
                      b、0BH表示有(无)符号数11。
                      c、有符号计算: 125 + 11 < 255, 所以为0

            OF = 1
                      a、无符号计算:125 + 11 > 127,溢出了,所以1
            
            SF = 1
                      a、有符号计算:125 + 11 = 136,136对应着无符号数为-120,是负数,所以SF = 1

            ZF = 0
                      a、因为有符号计算值为-120,不为0,所以ZF =0

            PF = 1
                       a、136,对应着二进制:1000 1000,有偶数个1,所以PF=1

总结:

1、al的值实际是无符号运算的
2、SF的值是CPU对有符号数运算结果的一种记录
3、PF的值是CPU对无符号数运算结果的一种记录
4、CF的值是CPU对无符号数运算结果的一种记录
5、OF的值是CPU对有符号数运算结果的一种记录
6、ZF的值是CPU对无符号数运算结果的一种记录

相关文章

  • [汇编语言] 检测点11.2

    一、写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值 答案:逐条分析 1、sub al, al 2...

  • [汇编语言] 检测点11.3

    一、 补全下面的程序,统计F000:0处32个字节中,大小[32, 128]的数据的个数。 解答 二、 补全下面的...

  • [汇编语言] 检测点11.4

    一、下面的程序执行后:(ax) = ? 解答 1、mov ax, 0 2、push ax 3、pops 4、mov...

  • [汇编语言] 检测点13.1

    一、在上面的内容中,我们用7ch 中断例程实现loop的功能,则上面的7ch 中断例程所能进行的最大转移位移是多少...

  • [汇编语言] 检测点13.2

    一、我们可以编程改变FFFF:0处的指令,使得CPU不去执行BIOS中的硬件系统检测和初始化程序。 答案 1、FF...

  • [汇编语言] 检测点10.5

    目录 1、下面的程序执行后,ax中的数值为多少? 2、下面的程序执行后,ax和bx中的数值为多少? 正文 1、下面...

  • [001][汇编语言]检测点1.1 地址总线

    《汇编语言》检测点1.1 8421 16进制转二进制 需要知道简单的8421十六进制到二进制转换法,不然可能会看不...

  • 汇编语言第三版-检测点13.1

    分析:1. 首先我们知道中断例程是中断处理程序,它是安装在内存的某处地方,并在中断向量表中登记。所以我们可以把这个...

  • 汇编语言(第三版)-- 检测点9.1

    若要使程序中的jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据? 要使jmp指令执...

  • 汇编语言(第三版)-- 检测点9.3

    loop只有当 cx-1> 0时才会继续循环,因此如果传入cl的值为0,则cl与ch组合为0,需加上1才可以满足c...

网友评论

      本文标题:[汇编语言] 检测点11.2

      本文链接:https://www.haomeiwen.com/subject/yhyddctx.html