addInt:
clc
mov ax, cx
add ax, bx
JNC convert
我如何能够测试总和是否在16位范围内,因为如果我使用16位寄存器加上结果,即使总和大于16位,结果也不显示残留值,OF不会因为使用16位寄存器,它永远不会溢出。我应该如何继续使用此代码使其跳转到转换循环。例如,如果我有FFFF + FFFE
,则总和将为1FFFD
,但eax寄存器将仅显示FFFD
,而不会结转1
感谢提前帮助
答案 0 :(得分:2)
如果结果值大于16位,您应该能够告诉add
指令。
ADD指令执行整数加法。它评估两个签名的结果 和无符号整数操作数,并设置OF和CF标志,分别表示有符号或无符号结果中的进位(溢出)。 SF标志表示符号 签署的结果。
由于您似乎正在处理无符号的16位值,因此您应该在添加后查看CF
进位标志:
addInt:
clc
mov ax, cx
add ax, bx ; Sets CF if result is larger than 16-bits
jc .larger_than_16_bits