匯編jb指令用法 匯編語(yǔ)言里jc指令時(shí)啥意思?
匯編語(yǔ)言里jc指令時(shí)啥意思?JC=JumpifCarry當(dāng)運(yùn)算產(chǎn)生進(jìn)位標(biāo)志時(shí),即CF=1時(shí),跳轉(zhuǎn)到目標(biāo)程序處。例如:addal,bljccarrybitincal如果al bl產(chǎn)生了進(jìn)位,這一句就不執(zhí)
匯編語(yǔ)言里jc指令時(shí)啥意思?
JC=JumpifCarry當(dāng)運(yùn)算產(chǎn)生進(jìn)位標(biāo)志時(shí),即CF=1時(shí),跳轉(zhuǎn)到目標(biāo)程序處。例如:addal,bljccarrybitincal如果al bl產(chǎn)生了進(jìn)位,這一句就不執(zhí)行了。carrybit:negal這段程序沒(méi)有任何意義,僅僅作為示例哈。。。相同的指令還有:JNC,當(dāng)CF=0時(shí)跳轉(zhuǎn);JZ,當(dāng)ZF=1時(shí)跳轉(zhuǎn),JNZ,當(dāng)ZF=0時(shí)跳轉(zhuǎn);JO,當(dāng)OF=1時(shí)跳轉(zhuǎn),JNO,當(dāng)OF=0時(shí)跳轉(zhuǎn);JP,當(dāng)PF=1時(shí)跳轉(zhuǎn)……依此類推,標(biāo)志寄存器的各個(gè)位基本上都可以用來(lái)做“條件跳轉(zhuǎn)”的條件。當(dāng)然,條件跳轉(zhuǎn)不僅僅是標(biāo)志寄存器位,還可以是CX如:a_loop:dosomethingdeccxjcxzjmpa_loop可以看出,這一段相當(dāng)于一個(gè)loop指令。。。還有,用于大小判斷型的:cmpop1,op2JXXXXXX其中JXX有以下幾種:JA表示op1>op2,JNA表示op1<=op2;JB表示op1<op2,JNB表示op1>=op2;JE表示op1=op2,JNE表示op1<>op2;還有JAE、JNAE、JBE、JNBE等等功能重復(fù)不再贅述。以上是無(wú)符號(hào)數(shù)的比較。有符號(hào)數(shù)的比較將A換成G,將B換成L即可。A=aboveB=belowG=greaterL=less介紹的夠詳細(xì)了吧。。。
單片機(jī)匯編語(yǔ)言指令中,條件轉(zhuǎn)移指令JBC與JC的區(qū)別是什么?
JC是判斷C進(jìn)位標(biāo)志是否為1,為1則跳轉(zhuǎn)到指定位置。 JBC是判斷可位尋址區(qū)域內(nèi)指定位是否為1,為1則跳轉(zhuǎn)到指定位置,并同時(shí)清除該位(置0)。
“JC”在匯編語(yǔ)言中是什么意思?
JC 在匯編語(yǔ)言 是一個(gè)條件轉(zhuǎn)移指令的操作碼 后面應(yīng)該再加上一個(gè)字節(jié)的偏移量 即要轉(zhuǎn)移到地址(為操作數(shù)) 例如 JC LLLA ;其中 JC 為操作碼 表示指令要執(zhí)行的功能 J 表示轉(zhuǎn)移 C表示轉(zhuǎn)移到條件 (當(dāng)進(jìn)位標(biāo)志C=1 即有進(jìn)位時(shí) 轉(zhuǎn)移 否則不轉(zhuǎn)移) LLLA 是操作數(shù) 表示要轉(zhuǎn)移到地址
為什么在匯編語(yǔ)言中需大量使用跳轉(zhuǎn)指令,而在C語(yǔ)言中卻盡量避免使用goto語(yǔ)句呢?
C語(yǔ)言中盡量避免的不是goto,而是無(wú)條件使用goto。
匯編語(yǔ)言中是有大量跳轉(zhuǎn)指令,但是那些不是無(wú)條件跳轉(zhuǎn),前面肯定都要有ifne,ifeq這些條件判斷的。注意,在匯編語(yǔ)言的使用中,雖然有jump這些,但是也不是就建議無(wú)條件的使用這些跳轉(zhuǎn)指令,肯定是要配合一定條件判斷來(lái)使用的。
經(jīng)常編碼的人都知道,像if、while break、for這些都是包含跳轉(zhuǎn)功能的,只不過(guò)是有一定條件才跳轉(zhuǎn)。要是匯編真的沒(méi)有jump這些跳轉(zhuǎn)指令了,C語(yǔ)言就連if、while break、for這些都沒(méi)法實(shí)現(xiàn)了。
所以,匯編有跳轉(zhuǎn)很正常,是用來(lái)實(shí)現(xiàn)程序控制邏輯的必備元素。C語(yǔ)言要避免的是無(wú)條件濫用goto。