匯編cmp指令跳轉(zhuǎn) 為什么在匯編語言中需大量使用跳轉(zhuǎn)指令,而在C語言中卻盡量避免使用goto語句呢?
為什么在匯編語言中需大量使用跳轉(zhuǎn)指令,而在C語言中卻盡量避免使用goto語句呢?在C語言中,應該盡量避免的不是goto,而是無條件地使用goto。匯編語言中有很多跳轉(zhuǎn)指令,但這些指令不是無條件跳轉(zhuǎn)指令
為什么在匯編語言中需大量使用跳轉(zhuǎn)指令,而在C語言中卻盡量避免使用goto語句呢?
在C語言中,應該盡量避免的不是goto,而是無條件地使用goto。
匯編語言中有很多跳轉(zhuǎn)指令,但這些指令不是無條件跳轉(zhuǎn)指令。他們面前一定有伊夫尼和伊夫克。注意在匯編語言的使用中,雖然有跳轉(zhuǎn)指令,但不建議無條件地使用這些跳轉(zhuǎn)指令。它必須與一定的條件判斷一起使用。
經(jīng)常編寫代碼的人知道,if、while break和for all包含跳轉(zhuǎn)函數(shù),但它們只在特定條件下跳轉(zhuǎn)。如果沒有像匯編中的jump這樣的跳轉(zhuǎn)指令,C語言甚至不能實現(xiàn)If,while break和for。
因此,匯編跳轉(zhuǎn)是正常的,是用來實現(xiàn)程序控制邏輯的必要元素。C語言應該避免無條件地濫用goto。
匯編的跳轉(zhuǎn)指令?
JLE(或JNG)(小于或等于或不大于時跳轉(zhuǎn)),匯編語言中的條件轉(zhuǎn)移指令。小于或等于,或不大于,則轉(zhuǎn)移。格式:JLE(或JNG)OPR測試條件:(SF?of)∨ZF=1
我不知道你指的是哪種MCU。最常用的89C51系列單片機匯編語言有111條指令,可分為五類:
[1]。數(shù)據(jù)傳輸指令(共29條)
[2]。算術(shù)運算指令(共24條)][3]。邏輯操作和移位指令(共24條)
[4]。控制轉(zhuǎn)移指令(共17條)][5]。布爾變量運算指令(共17條)]]JZ指令屬于第4類“控制傳輸類”中的條件傳輸指令。具體格式和功能如下:
jzrela=0,(PC)2rel→(PC),累加器中的內(nèi)容為0,
然后將其傳輸?shù)狡屏克赶虻牡刂?,否則程序?qū)⑦\行下去。
JB是5類“布爾變量操作類”指令。其格式和功能如下:
jbbit,rel bit state為1轉(zhuǎn)換。