单片机的指令系统课件.pptx
概述機器語言(指令的二進位編碼表示)但機器語言具有程式長、不易書寫、難於閱讀和調試、容易出錯等缺點,那麼使用符號指令就顯得十分必要,通常把表示指令的符號稱之為助記符。
組合語言而以助記符表示的指令就是電腦的組合語言.一條指令通常由兩部分組成,即操作碼和運算元。操作碼用來規定指令進行什麼操作,而運算元則表示指令的操作的對象。單片機的指令是不定長的,在MCS-51指令系統中,有一位元組、二位元組、三位元組等不同長度的指令.
11.2指令分類MCS-51單片機指令系統共有指令111條,分為五大類數據傳送類:29條算術運算類:24條邏輯運算類:24條控制轉移類:17條位操作類:17條
11.3尋址方式尋址的“址”是指運算元所在的單元地址。因此尋址就是如何確定運算元單元地址的問題。共有七種尋址方式寄存器尋址MOVA,R2直接尋址MOVA,3AH立即尋址MOVA,#3AH寄存器間接尋址MOVA,@R0變址尋址MOVCA,@A+DPTR相對尋址JC03H位尋址SETB3DH
1立即尋址指令碼中直接含有所需地址的運算元MOVA,#30HMOVDPTR,#3000H注意:#是唯一區別與地址的標誌。
2直接尋址指令碼中含有運算元的地址,機器根據地址找到運算元MOVA,30H注意:若直接尋址的地址是SFR中的某一個時,可用名稱符號MOVA,TH0MOVA,8CH
3寄存器尋址所需的運算元在某個工作寄存器中(R0~R7)INCR0注意:指令表中INCRn,n取0~7
4寄存器間接尋址指令碼中含有運算元地址的寄存器號。實際上是二次尋址間接尋址採用@Ri或@DPTR,@是區別寄存器尋址的標記若(RO)=30H,(30H)=0FFHMOVA,R0MOVA,@R0
5相對尋址指令碼中含有相對地址的偏移量MOVA,40HADDA,#30HSJMPSOUT;PC=PC+2+rel。;。。SOUT:MOV50H,A
SJMPrel(PC)=(PC)+2+rel例:835AHSJMP35H目的地址=835AH+02H+35H=8391H例:835AHSJMPE7H目的地址=835AH+02H-19H=8343H-19H=-00011001=11100111(補數)
6變址尋址基地址寄存器和偏移量MOVCA,@A+PCMOVCA,@A+DPTR注意:變址尋址區是程式記憶體而不是數據記憶體。執行前,應預先在DPTR和A中存放地址,為指令執行提供條件。
7位尋址指令中含有位地址位地址和位元組地址的區分通過指令區分:MOVA,20HMOVC,20H
可供位尋址的區域片內RAM的20H~2FH為位尋址空間(00~7FH)某些SFR:地址能被8整除的SFR,共11個。位地址的表示方法MOVC,ACC.7MOV20H,CMOV24H.0,C
11.4指令系統MCS-51組合語言是用42種操作碼助記符描述33種操作功能,一種功能可能有幾種助記符,與尋址方式結合共產生111條指令。數據傳送類:29條算術運算類:24條邏輯運算類:24條控制轉移類:17條位操作類:17條
11.5數據傳送類29條傳送數據可在ACC,R0~R7,內部RAM,外部RAM間進行,其中A,R0~R7的操作最多傳送類指令不影響PSW(除P位)數據傳送指令表
續表
例1已知(70H)=60H,(60H)=20H,分析如下程式.MOVR0,#70H;(R0)=#70HMOVA,@R0;(A)=#60HMOVR1,A;(R1)=#60HMOV40H,@R1;(40H)=#20HMOV@R0,R1;(60H)=#60H
例2查表指令舉例1ORG8000H8000H:MOVA,#40H8002H:MOVCA,@A+PC;(8003H+40H-PC)…;(44H-A)ORG8040HDB41H42H43H44H
查表指令舉例2ORG8000H…MOVA,#03HMOVDPTR,#8040HMOVCA,@A+DPTR;A=?(44H)…ORG8040HDB41H42H43H44H
例3分析如下程式執行完成後A,R0,PC的內容.1010H:02H1011H:04