2)條件轉(zhuǎn)移
在程序中可通過條件碼的使用讓微處理器決定是否進(jìn)行轉(zhuǎn)移。例如,為了實(shí)現(xiàn)循環(huán)操作,往往需要轉(zhuǎn)移回到循環(huán)的開始,但是這種轉(zhuǎn)移應(yīng)該僅發(fā)生在執(zhí)行到所需的循環(huán)次數(shù)之前,這以后轉(zhuǎn)移應(yīng)被跳過。這時(shí),在轉(zhuǎn)移指令后加上合適的條件,就可恨容易地實(shí)現(xiàn)該功能。
條件轉(zhuǎn)移還可用來控制循環(huán)的退出。這時(shí),轉(zhuǎn)移與條件碼緊密相連,只有當(dāng)條件碼的值滿足條件時(shí),相應(yīng)的轉(zhuǎn)移才被執(zhí)行。一種典型的循環(huán)控制指令序如下所示:
MOV R0,#0 ;計(jì)數(shù)器初始化
LOOP …
ADD R0,R0,#1 ;循環(huán)計(jì)數(shù)器加1
CMP R0,#10 ;與循環(huán)的限制比較
BNE LOOP ;如果不相等則返回
… ;否則循環(huán)中止
例中給出了條件轉(zhuǎn)移是BNE,即“不等則轉(zhuǎn)移”條件轉(zhuǎn)移的形式共有十幾種,表中同一欄內(nèi)的一對條件的涵義相同,二進(jìn)制代碼也相同,但兩者都是有用的,因?yàn)樵谔囟ǖ沫h(huán)境中每一種條件都可能使得匯編語言源代碼的編譯更加容易。在表中提到有符號數(shù)和無符號數(shù)的比較時(shí),并不是說指令可區(qū)分有符號數(shù)和無符號數(shù),知識說明本條指令可對有符號數(shù)進(jìn)行大小比較,比較的結(jié)果是正確的;當(dāng)操作數(shù)是有符號數(shù)時(shí),結(jié)果不一定正確。