機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
第三章 EM78指令系統(tǒng) (1)
第三章 EM78指令系統(tǒng) (1)
 更新時間:2008-7-26 20:10:38  點(diǎn)擊數(shù):2
【字體: 字體顏色

3.1.EM78指令概述

    EM78156 & EM78P156 單片機(jī)共有的 58 條指令,其寬度為 13 位。每一個指令碼可分割成兩部份,第一部分為標(biāo)示指令功能的運(yùn)算碼( OPCODE ),第二部份則指出運(yùn)算時所需之參數(shù),亦即運(yùn)算碼( OPERAND )。而指令的類型大致可分為下列四種:
 
(1)控制型指令( control operation ): 如
    INT...等等。
(2)面向寄存器(字節(jié)操作)型指令( register oriented ): 如
 MOV A, Reg_B
; move Reg_B to A
 ADD Reg_B, A
; add Reg_B with A, and
 
; save in Reg_B
    ... 等等。
(3)位操作型指令( bit oriented ): 如
     BC,JBS...等等。
(4)常數(shù)型指令( constant operation ):如
    MOV A, @0x55    ; move 0x55 to A
    XOR @0xFF       ;Xor A with 0xFF
    一般而言,EM78 系列八位微控制器除一個指令需兩個周期之外,其他的指令只需一個指令周期,除了對 PC (Program Counter)做 “寫” 的指令,需二個指令周期,如 (MOV PC, A)。

3.2.EMC 匯編語言指令集

符號解說:
1.符號‘R’:代表一般用途寄存器中的其中一個。
2.符號‘B’:代表一般用途寄存器中的某一位。
3.符號‘K’:代表8位或10位的常數(shù)或內(nèi)容。
4.符號‘A’:代表累加寄存器。

3.2.1.         面向寄存器(字節(jié)操作)型指令(26條)

助記符號
指令動作
標(biāo)志影響
指令周期
語言描述
ADD A,R
A+R->A
Z,C,DC
1
ADD
ADD R,A
A+R->R
Z,C,DC
1
ADD
AND A,R
A&R->A
Z
1
AND
AND R,A
A&R->R
Z
1
AND
CLR R
0->R
Z
1
Clear Register
CLRA
0->A
Z
1
Clear the A register
COM R
/R->R
Z
1
Complement R
助記符號
指令動作
標(biāo)志影響
指令周期
語言描述
COMA R
/R->A
Z
1
Complement R,Place in A
DAA
A寄存器調(diào)整為BCD值
C
1
Decimal Adjust
DEC R
R-1->R
Z
1
Decrement R
DECA R
R-1->A
Z
1
Decrement R,Place in A
DJZ R
R-1->R 結(jié)果為零就跳過下一個指令
 
1
Decrement R,Skip if 0
DJZA R
R-1->A 結(jié)果為零就跳過下一個指令
 
1
Decrement R,Please in A register, Skip if 0
INC R
R+1->R
Z
1
Increment R
INCA R
R+1->A
Z
1
Increment R,Please in A
JZ R
R+1->R, 結(jié)果為零就跳過下一個指令
 
1
Increment R,Skip if 0
JZA R
R+1->A, 結(jié)果為零就跳過下一個指令
 
1
Increment R,Place in the A regiser,Skipif 0
MOV R,A
A->R
 
1
Move Data
MOV A,R
R->A
Z
1
Move Data
MOV R,R
R->R
Z
1
Move Data
OR A,R
A OR R ->A
Z
1
Inclusive OR
OR R,A
A OR R->R
Z
1
Inclusive OR
SUB A,R
R-A->A
Z,C,DC
1
Subtract
SUB R,A
R-A->R
Z,C,DC
1
Subtract
XOR A,R
A XOR R->A
Z
1
Exclusive OR
XOR R,A
A XOR R->R
Z
1
Exclusive OR

3.2.2.         面向位操作類指令(10條)

 
助記符號
指令動作
標(biāo)志影響
指令周期
語言描述
BC R,B
0->R(B)
 
1
Bit Clear
BS R,B
1->R(B)
 
1
Bit Set
JBC R,B
如果R(B)=0,則跳過下一個指令
 
1
Bit Test, Skip if Clear
JBS R,B
如果R(B)=1,則跳過下一個指令
 
1
Bit Test, Skip if Set
RLC R
R(N)->R(N+1)
R(7)->C
C->R(0)
C
1
Rotate Left R through Carry
RLCA R
R(N)->A(N+1)
R(7)->C
C->A(0)
C
1
Rotate Left R through Carry,Place in the A Register
RRC R
R(N)->R(N-1)
R(0)->C
C->R(7)
C
1
Rotate Right R through Carry
助記符號
指令動作
標(biāo)志影響
指令周期
語言描述
RRCA R
R(N)->A(N-1)
R(0)->C
C->A(7)
C
1
Rotate Right R through Carry,Place in the A Register
SWAP R
R(0-3)->R(4-7)
R(4-7)->R(0-3)
 
1
Swap R
SWAPA R
R(0-3)->A(4-7)
R(4-7)->A(0-3)
 
1
Swap R

3.2.3.         常數(shù)操作和控制類指令(22條)

助記符號
指令動作
標(biāo)志影響
指令周期
語言描述
ADD A,K
A+K->A
Z,C,DC
1
ADD
AND A,K
A&K->A
Z
1
AND
CALL K
PC+1->[SP]
(PAGE,K)->PC
 
1
Subroutine Call
CONTR
CONT->A
 
1
Move CONT to the A register
CONTW
A->CONT
 
1
Move A to CONT
DISI
禁止中斷
 
1
Disable Interrupt
ENI
使能中斷
 
1
Enable Interrupt
INT
PC+1->[SP]
001H->PC
 
1
Software interrupt
IOR R
IOCR->A
 
1
Move IOCR to the A register
IOW R
A->IOCR
 
1
Move A to IOCR
JMP K
(PAGE,K)->PC
 
1
Unconditional Branch
MOV A,K
K->A
 
1
Move Data
NOP
 
 
1
No Operation
OR A,K
A OR K->A
Z
1
Inclusive OR
RET
[堆棧頂端]->PC
 
1
Return from Subroutine
RETI
[堆棧頂端]->PC,使能中斷
 
1
Return from Interrupt
RETL K
K->A,
[堆棧頂端]->PC
 
 
Return Immediate Data to the A Register
SLEP
0->WDT,振蕩器停止振蕩
T,P
1
Into Sleep mode
SUB A,K
K-A->A
Z,C,DC
1
Subtract
TBL
PC+A->PC
Z,C,DC
2
Table Look Up
WDTC
0->WDT
T,P
1
Clear Watchdog Timer
XOR A,K
A XOR K->A
Z
1
Exclusive OR
 
 
 

3.3.EM78指令尋址方式

關(guān)于對寄存器的存取,必須要先說明寄存器的位址,說明暫存的位址的方式稱做尋址方式,EM78的尋址方式有兩種,一種為直接尋址,一種為間接尋址。

3.3.1.         立即數(shù)尋址

這種方式就是操作數(shù)為立即數(shù),可直接從指令中獲取。
例:MOV A,@0x16             ;將常數(shù)0x16送給寄存器A

3.3.2.         直接尋址

若是使用者要存取寄存器的內(nèi)容,可以在運(yùn)算碼上直接描述。
l        例:將寄存器0X20的內(nèi)容,COPY到寄存器0X21中。
 
MOV  A, 0X20
MOV  0X21, A

3.3.3.         間接尋址

這種尋址方式是通過寄存器R4來實(shí)現(xiàn)的,R4的bit0-5是用來選擇寄存器(地址:00-06,0F-3F)
若是使用者所需要存取的寄存器,有位址相鄰的特性,使用間接尋址是很方便的。
l        例:寫一個程序,將寄存器0X20~0X3F的值都填0。
 

;設(shè)定A = 0X20。
;設(shè)定間接尋址寄存器(0X04)
;的內(nèi)含值為0X20
;清除0X04所指的寄存器。
;遞增間接尋址寄存器(0X04)
;設(shè)定A=0X04寄存器的值。
;比較間接尋址的位址是否
;以到0X3F。若是則結(jié)束。
;否則在繼續(xù)。
MOV  A, @0X20

MOV  0X04, A
AGAIN:
CLR  0
INC  0X04
MOV  A, 0X04
XOR A, 0X3F
JBS  0X03, 2
JMP  AGAIN
END:
 
 

3.3.4.         位尋址

這種位尋址是對寄存器中的任一位(bit)進(jìn)行操作。
例:BS   0x12,2           ;將寄存器0x12的第2位置為“1”。

3.4.EM78指令說明

 
 
語  法
ADD A,R
編  碼
0
0011
10rr
rrrrr
 
操作內(nèi)容
A + R --> A
受影響的標(biāo)志
Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助進(jìn)位標(biāo)志都會受影響
說  明
將A寄存器的內(nèi)含值加上R寄存器的內(nèi)含值﹐並且把結(jié)果載入A寄存器中。
 
 
語  法
ADD R,A
編  碼
0
0011
11rr
rrrrr
 
操作內(nèi)容
A + R --> R
受影響的標(biāo)志
Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助標(biāo)志都會受影響
說  明
將A寄存器的內(nèi)含值加上R寄存器的內(nèi)含值﹐並且把結(jié)果載入R寄存器中。
 
 
語  法
ADD A, k
編  碼
1
1111
kkkk
kkkk
 
操作內(nèi)容
K + A --> A
受影響的標(biāo)志
Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助標(biāo)志都會受影響
說  明
將A寄存器的內(nèi)含值加上立即值K﹐並且把結(jié)果載入A寄存器中。
舉例說明
下兩行指令敘述為 A = R11 + R12.

    MOV A,0x11
    ADD A,0x12      ;A = R11 + R12


下兩行指令敘述為 R10 = R11 + R12.

    MOV A,0x11
    MOV 0x10,A
    MOV A,0x12
    ADD 0x10,A      ;R10 = R11 + R12


下兩行指令敘述為 A = 0x01 + 0x01.

    MOV A,@0x01 ;A = 0x01
    ADD A,@0x01 ;A = 0x02
 
 
 
語  法
AND A,R
編  碼
0
0010
10rr
rrrrr
 
操作內(nèi)容
A & R --> A
受影響的標(biāo)志
Z﹔零標(biāo)志
說  明
將A寄存器和R寄存器AND在一起﹐并將結(jié)果存入A寄存器。
 
 
 
語  法 
AND R,A
編  碼
0
0010
11rr
rrrrr
 
操作內(nèi)容
A & R --> R
受影響的標(biāo)志
Z﹔零標(biāo)志
說  明
將A寄存器和R寄存器AND在一起﹐并將結(jié)果存入R寄存器。
 
 
語  法 
AND A,K
編  碼
1
1010
kkkk
kkkk
 
操作內(nèi)容
A & K --> A
受影響的標(biāo)志
Z﹔零標(biāo)志
說  明
將A寄存器和立即值K﹐AND在一起﹐并將結(jié)果存入A寄存器。
 
 
舉例說明
將port 6和R10 register AND起來, 并將結(jié)果輸出到port6
    MOV A,0x6       ;從port6輸入內(nèi)容
    AND A,0x10      ;把內(nèi)容和 R10 做AND MOV 0x6,A       ;將結(jié)果輸出到port6


R10 = R11 AND R12

    MOV A,0x11
    MOV 0x10,A
    MOV A,0x12
    AND 0x10,A      ;R10 = R11 AND R12
 
語  法 
BC  R,b
編  碼
0
100b
bbrr
rrrrr
 
操作內(nèi)容
0  -->  R(b)
受影響的標(biāo)志
說  明
R寄存器的位 “b”被清為0。
舉例說明
    MOV A,@0x0f
    MOV 0x10,A      ;R10 = 00001111
    BC      0x10,3      ;R10 = 00000111
 
語  法 
BS  R,b
編  碼
0
101b
bbrr
rrrrr
 
操作內(nèi)容
1  -->  R(b)
受影響的標(biāo)志
說  明
R寄存器的位“b” 被設(shè)成1。
舉例說明
將狀態(tài)寄存器的零標(biāo)志設(shè)成1。

    BS  0x3,2
 
CALL
Subroutine Call
語  法
CALL    k
編  碼
1
00kk
kkkk
kkkk
 
操作內(nèi)容
PC+1  -->  [Top of Stack]
k  -->  PC(9::0)
R3(7::5)  -->  PC(12::10)
受影響的標(biāo)志
說  明
當(dāng)呼叫一個子程序時﹐首先會將下一個指令的執(zhí)行位址存入堆棧中﹐接下來將子程序的進(jìn)入位址載入程序計(jì)數(shù)器中。
舉例說明
HERE:
    CALL    SUBRTN
CONT:
    MOV A,@10

執(zhí)行CALL指令之前
PC = address HERE

執(zhí)行CALL指令之后
PC = address SUBRTN
[Top of Stack] = address CONT
 
 
 
語  法
CLRA
編  碼
0
0000
1000
0000
 
操作內(nèi)容
0 --> A﹔A寄存器清除為0
受影響的標(biāo)志
1 --> Z﹔零標(biāo)志設(shè)成1
說  明
清除A寄存器﹐同時設(shè)定Z標(biāo)志
 
 
舉例說明
    CLRA    ; 清除A寄存器﹐同時設(shè)定Z標(biāo)志
 
 
 
語  法
CLR R
編  碼
0
0000
11rr
rrrrr
 
操作內(nèi)容
0 -->  R﹔R寄存器清除為0
受影響的標(biāo)志
1 -->  Z﹔零標(biāo)志設(shè)成1
說  明
清除R寄存器﹐并設(shè)定零標(biāo)志。
 
 
舉例說明
    CLR 0x10        ;清除 0x10寄存器
 
語  法
COMA    R
編 碼
0
0100
10rr
rrrrr
 
操作內(nèi)容
 --> A
受影響的標(biāo)志
Z﹔零標(biāo)志
說  明
將所指定的寄存器取補(bǔ)數(shù)﹐再放入A寄存器中。
 
從port6輸入一個值﹐將其取補(bǔ)數(shù)之后在由port6輸出。

    MOV A,0x6
    MOV 0x10,A
    COMA    0x10
    MOV 0x6,A
 
語  法
COM R
編  碼
0
0100
11rr
rrrrr
 
操作內(nèi)容
.--> R
受影響的標(biāo)志
Z﹔零標(biāo)志
說  明
將R暫存取補(bǔ)數(shù)﹐再存入R寄存器中。
舉例說明
將0x10寄存器的內(nèi)含值﹐取補(bǔ)數(shù)。

    MOV A,@0x11
    MOV 0x10,A      ;R10 = 0x11
    COM 0x10        ;R10 = 0xEE
  • 上一篇: 第三章 EM78指令系統(tǒng) (2)
  • 下一篇: 第二章 EM78系列單片機(jī)硬件結(jié)構(gòu)( 2.9)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1