51單片機(jī)加1指令(5條) 舉例說(shuō)明
這5條指令的的功能均為原寄存器的內(nèi)容加1,結(jié)果送回原寄存器。上述提到,加1指令不會(huì)對(duì)任何標(biāo)志有影響,如果原寄存器的內(nèi)容為FFH,執(zhí)行加1后,結(jié)果就會(huì)是00H。這組指令共有直接、寄存器、寄存器減間址等尋址方式:
INC A;(A)+1→(A) 累加器A中的內(nèi)容加1,結(jié)果存在A中
INC data;(data)+1→(data) 直接地址單元中的內(nèi)容加1,結(jié)果送回原地址單元中
INC @Ri;((Ri))+1→((Ri)) 寄存器的內(nèi)容指向的地址單元中的內(nèi)容加1,結(jié)果送回原地址單元中
INC Rn;(Rn)+1→(Rn)寄存器Rn的內(nèi)容加1,結(jié)果送回原地址單元中
INC DPTR;(DPTR)+1→(DPTR)數(shù)據(jù)指針的內(nèi)容加1,結(jié)果送回?cái)?shù)據(jù)指針中
用途很簡(jiǎn)單,就是將后面目標(biāo)中的值加1。
例:(A)=12H,(R0)=33H,(21H)=32H,(34H)=22H,DPTR=1234H。執(zhí)行下面的指令;
INC A;(A)=13H
INC R0;(R0)=34H
INC 21H;(21H)=33H
INC @R0;(34H)=23H
INC DPTR;(DPTR)=1235H
這些指令執(zhí)行后的結(jié)果都附在了指令的后面。
說(shuō)明:從結(jié)果上看,INC A和ADD A,#1差不多,但I(xiàn)NC A是單字節(jié),單周期指令,而ADD A,#1則是雙字節(jié)雙周期指令,而且INC A不會(huì)影響PSW位,如(A)=0FFH,INC A后(A)=00H,而CY依然保持不變。如果是ADD A,#1,則(A)=00H,而CY一定是1。因此加1指令并不適合做加法運(yùn)算,事實(shí)上它主要是用來(lái)做計(jì)數(shù)、地址增加等用途。另外,加法類指令都是以A為核心的,其中一個(gè)數(shù)必須放在A中,而運(yùn)算結(jié)果也必須放在A中,而加1類指令的對(duì)象則廣泛得多,可以是寄存器、內(nèi)存地址、間址尋址的地址等等。
在INC data這條指令中,如果直接地址是I/O,其功能是先讀入I/O鎖存器的內(nèi)容,然后在CPU進(jìn)行加1操作,再輸出到I/O上,這就是“讀—修改—寫”操作。