回覆列表
-
1 # kdiog3644
-
2 # 使用者6518681440059
cjnea,#0,l1;
該指令執行的操作是,首先用(a)-0結果不儲存但影響進位c,只判斷結果是否為零以確定轉移與否。
另外:“微控制器語言中全是無符號數”的說法是不對的,有很多數就是有符號的,視具體情況而定。
-
3 # 使用者3521174684886
51微控制器中,沒有專門的有符號數比較指令,只能透過一些變通的方法來實現,比如: 比較30H和40H中有符號數的大小,結果放在R2中,大於則為1,等於為0,小於為128: CMPDAT: MOV A,30H JB ACC.7,CMPF1 MOV B,A MOV A,40H JB ACC.7,CMPZ2 ;30H正,40H負所以30H>40H CJNE A,B,CMPZ1 ;均為正,比較大小 MOV R2,#0 RET CMPZ1: JC,CMPZ2 CMPZ11: MOV R2,#128 RET CMPZ2: MOV R2,#1 RET CMPF1: ANL A,#7FH MOV B,A MOV A,40H JNB ACC.7,CMPF3 ;30H負,40H負 SJMP CMPZ11 ;30負,40H正,所以30H<40H CMPF3: ANL A,#7FH CJNE A,B,CMPF10 ;兩個均為負數 MOV R2,#0 RET CMPF10: JC CMPZ2 ;30H<40H(負數小者大) SJMP CMPZ11 ;30H>40H
微控制器比較大小可以用減法指令來實現,比如比較兩個數A與B的大小,步驟如下:
1、先將借位清0。
2、執行指令SUBB,也就是A-B。
3、判斷,借位C的狀態,如果C等於1,那麼A<B,反之A>B。舉例如下:CMPDAT:MOVA,30H;將被減數送累加器ACLRC;清借位SUBBA,31H;減法運算JCCMPD1;如果有借位轉CLRP1.0;點亮P1.0LED燈,說明30H數大RETCMDPD1:CLRP1.1;點亮P1.1燈,說明31H數大。RET