汇编语言x86 JL指令

时间:2016-03-07 01:04:32

标签: assembly x86

我遇到麻烦得到正确的答案。据我所知,JL指令是在左操作数<右操作数。我怎么知道哪个是我的右边还是左边?当我手工完成时,我选择了1111 1110b作为我的右操作数。所以,我以十六进制的形式收到了00FC。在节目中,我收到了00FB,谁能帮我搞清楚我的错误?谢谢!

MOV AL, 1111 1110b
CMP AL, 1111 0110b
JL DEST 
DEC AL
DEST: DEC AL
DEC AL

1 个答案:

答案 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)。