許一洲
(西北民族大學 電氣工程學院,甘肅 蘭州730106)
80C51單片機指令系統共有111條指令,由操作碼和操作數兩部分構成[1]。這些指令包括數據傳送類指令、算術運算類指令、邏輯運算類指令、控制轉移類指令和位操作類指令[2]。其中,數據傳送類指令在單片機中使用頻繁,除了一般傳送指令外,還有4類特殊傳送指令。
一般傳送類指令都是采用MOV操作符,可以分為16位傳送和8位傳送。
16位傳送指令僅僅只有一條,功能是將源操作數data16送入目的操作數DPTR中,如:
MOV DPTR,#data16;
當源操作數data16為3456H時,執行以上操作后,(DPH)=34H,(DPL)=56H。這條指令一般用于給DPTR賦予ROM中的數據表的表頭地址,也可以是某一片外RAM緩沖區的首地址或者是擴展的片外接口地址。
8位傳送指令能夠將源字節的內容拷貝至目的字節,且源字節的內容不會變化,屬于字節傳送。目的字節可以是累加器A、寄存器Rn或Ri、片內RAM單元地址及SFR地址direct。源字節中除了上述4類以外,8位立即數#data也可以作為源字節。以目的字節為準,將8位傳送指令分成4類。
以累加器A為目的操作數的指令使用最頻繁,其指令可以構造成以下4種,如:
MOV A,Rn;
MOV A,direct;
MOV A,@Ri;
MOV A,#data;
累加器A作為目的字節,執行后源字節即可送入累加器A。
由于目的字節為工作寄存器,因此源字節不能采用工作寄存器及其間址方式尋址。它的指令有以下3種,如:
MOV Rn,A;
MOV Rn,direct;
MOV Rn,#data;
指令執行后,源字節即可送入到工作寄存器Rn中。
由于direct也可以作為源字節(這里用direct1表示),因此其構造有5種方式……