【问题标题】:My Sign flag value is showing wrong? Am I wrong about how sign flag works?我的标志标志值显示错误?我对标志标志的工作方式有误吗?
【发布时间】:2019-04-06 16:11:48
【问题描述】:

我正在添加axbx。因此,如果结果的 MSB 为 1,则符号标志 = 1,否则符号标志 = 0。我对吗?如果我是对的,为什么 sign flag=0 会显示在输出中?不应该是 SF=1 吗?如果我错了,请纠正我。我很困惑

mov ax,20h
mov bx,80h
add ax,bx

【问题讨论】:

    标签: assembly flags emu8086


    【解决方案1】:

    因此,如果结果的 MSB 为 1,则符号标志=1,否则符号标志=0。我说的对吗?

    您对反映结果最重要位的标志标志是正确的,但是在您添加的 add ax, bx您添加了 2 个单词,这就是所有不同之处。 p>

    考虑添加字节

    mov     al, 20h
    mov     bl, 80h
    add     al, bl     ; -> AL = 20h + 80h = A0h
    

    AL 中的结果具有最高有效位(第 7 位)设置,因此 SF=1

    考虑添加单词

    mov     ax, 0020h
    mov     bx, 0080h
    add     ax, bx     ; -> AX = 0020h + 0080h = 00A0h
    

    AX 中的结果具有最高有效位(第 15 位)已清除,因此 SF=0

    提示

    使用所涉及的寄存器可以容纳的尽可能多的数字写入十六进制数字可能会有所帮助。
    mov ax, 0020h 而不是mov ax, 20h

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多