我遇到麻烦得到正确的答案。据我所知,JL指令是在左操作数<右操作数。我怎么知道哪个是我的右边还是左边?当我手工完成时,我选择了1111 1110b作为我的右操作数。所以,我以十六进制的形式收到了00FC。在节目中,我收到了00FB,谁能帮我搞清楚我的错误?谢谢!
MOV AL, 1111 1110b
CMP AL, 1111 0110b
JL DEST
DEC AL
DEST: DEC AL
DEC AL
答案 0 :(得分:1)
在func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
print("didUpdateHeading");
if (newHeading.headingAccuracy > 0) {
variation = newHeading.trueHeading - newHeading.magneticHeading;
doneLoading = true;
locationManager.stopUpdatingHeading();
mvc.goingToCalculateData();
if (calcData) {
calculateData();
print ("Calculating data");
calcData = false;
}
}
print(newHeading.magneticHeading)
}
CMP AL, 1111 0110b
中,AL
是左操作数,并且保持1111 1110b
(这当然是略微过度简化,但这是Jcc
助记符的方式。选择)。因此,条件为1111 1110b < 1111 0110b
但是比较是有符号的,因此被解释为-2 < -10
,这不是真的,因此不进行跳转意味着AL
将减少3
提供0xFB
(-5
)。