我要添加ax
和bx
。因此,如果结果的MSB为1,则符号标志= 1或符号标志= 0。我对吗?如果我是对的,为什么输出中显示sign flag = 0?难道不是SF = 1?如果我错了,请纠正我。我很困惑
mov ax,20h
mov bx,80h
add ax,bx
答案 0 :(得分:2)
因此,如果结果的MSB为1,则符号标志= 1或符号标志= 0。我说的对吗?
您正确地看到了反映结果最高有效位的符号标志,但是在您添加的内容add ax, bx
中,您要添加2个单词,这就是所有不同之处。
考虑添加字节:
mov al, 20h
mov bl, 80h
add al, bl ; -> AL = 20h + 80h = A0h
AL
中的结果具有最高有效位(第7位) set ,因此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
。