这5条指令的的功能均为原寄存器的内容加1,结果送回原寄存器。加1指令不会对任何标志有影响,如果原寄存器的内容为FFH,执行加1后,结果就会是00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式:
INC A;(A)+1→(A) 累加器A中的内容加1,结果存在A中
INC data;(data)+1→(data) 直接地址单元中的内容加1,结果送回原地址单元中
INC @Ri;((Ri))+1→((Ri)) 寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中
INC Rn;(Rn)+1→(Rn)寄存器Rn的内容加1,结果送回原地址单元中
INC DPTR;(DPTR)+1→(DPTR)数据指针的内容加1,结果送回数据指针中
用途很简单,就是将后面目标中的值加1。
例:(A)=12H,(R0)=33H,(21H)=32H,(34H)=22H,DPTR=1234H。执行下面的指令;
INC A;(A)=13H
INC R0;(R0)=34H
INC 21H;(21H)=33H
INC @R0;(34H)=23H
INC DPTR;(DPTR)=1235H
这些指令执行后的结果都附在了指令的后面。
说明:从结果上看,INC A和ADD A,#1差不多,但INC A是单字节,单周期指令,而ADD A,#1则是双字节双周期指令,而且INC A不会影响PSW位,如(A)=0FFH,INC A后(A)=00H,而CY依然保持不变。如果是ADD A,#1,则(A)=00H,而CY一定是1。因此加1指令并不适合做加法运算,事实上它主要是用来做计数、地址增加等用途。另外,加法类指令都是以A为核心的,其中一个数必须放在A中,而运算结果也必须放在A中,而加1类指令的对象则广泛得多,可以是寄存器、内存地址、间址寻址的地址等等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)