我正在加入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
you正在添加2个单词,这才是最重要的。
考虑添加字节:
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
。