【发布时间】:2019-04-06 16:11:48
【问题描述】:
我正在添加ax 和bx。因此,如果结果的 MSB 为 1,则符号标志 = 1,否则符号标志 = 0。我对吗?如果我是对的,为什么 sign flag=0 会显示在输出中?不应该是 SF=1 吗?如果我错了,请纠正我。我很困惑
mov ax,20h
mov bx,80h
add ax,bx
【问题讨论】:
我正在添加ax 和bx。因此,如果结果的 MSB 为 1,则符号标志 = 1,否则符号标志 = 0。我对吗?如果我是对的,为什么 sign flag=0 会显示在输出中?不应该是 SF=1 吗?如果我错了,请纠正我。我很困惑
mov ax,20h
mov bx,80h
add ax,bx
【问题讨论】:
因此,如果结果的 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。
【讨论】: