我正在查看MSP430的指令集,偶然发现了一些我无法理解的内容。我似乎无法区分JC和JNZ以及JNC和JEQ之间的区别。我理解JEQ和JNZ的功能,但我对JC和JNC的使用有点模糊。
我知道事实上JC和JNC使用了进位标志,但我不确定它使用的方式以及它们与JNZ和JEQ的区别。
答案 0 :(得分:2)
JC = Jump if carry set (C=1)
JNC = Jump if carry is not set (C=0)
JZ = Jump if zero-flag is set
JNZ = Jump if zero-flag is not set
JEQ = Jump if equal => another 'name' for JZ
(There are many instruction aliases').
当您添加两个最高位设置的数字时,您最终会得到比原始数字长一位的结果。这个新位"去#34;携带。它也被用作减法中的借旗。除了不存储结果值之外,Compare与减法相同。
这就是SBC对旗帜所做的事情:
Status Bits N: Set if result is negative, reset if positive
Z: Set if result is zero, reset otherwise
C: Set if there is a carry from the MSB of the result, reset otherwise.
Set to 1 if no borrow, reset if borrow.
V: Set if an arithmetic overflow occurs, reset otherwise.