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

www.zsMCU.com   2006-1-4    中山單片機(jī)學(xué)習(xí)網(wǎng)

語  法
RET
編  碼
0
0000
0001
0010
 
操作內(nèi)容
[Top of Stack] --> PC
受影響的標(biāo)志
說  明
從子程序中返回﹐堆棧最上面的數(shù)值載入程序計(jì)數(shù)器(Program counter)。
舉例說明
TEST:
    ·
    ·
    ·
    RET

    ·
    ·
    ·
    CALL    TEST
HERE:
    ADD A,@0x1
    ·
    ·
    ·
 在呼叫RET指令之前。
    堆棧的頂端Top of Stack = address HERE
 在呼叫RET指令之后。
    程序計(jì)數(shù)器PC = address HERE
 
語  法
RETL k
編  碼
1
1100
kkkk
kkkk
 
操作內(nèi)容
k -->  A
[Top of Stack] --> PC
受影響的標(biāo)志
說  明
從子程序返回﹐并將立即值載入A寄存器(累加器)中。
堆棧最頂端的數(shù)值載入程序計(jì)數(shù)器中。
 
建立一個(gè)7段顯示器轉(zhuǎn)換表﹐並用port6驅(qū)動(dòng)7段顯示器。


;REGISTER DEFINE
PC  ==  2

 
TRANS:
    ADD PC,A
    RETL    0XFC
    RETL    0XC0
    RETL    0XEA
    RETL    0XF2
    RETL    0X66
    RETL    0XB6
    RETL    0XBE
    RETL    0XE0
    RETL    0XFE
    RETL    0XF6
 
MAIN:
    ·
    ·
    ·
    MOV A,0x10  ;將寄存器的內(nèi)含值載入A中
    CALL    TRANS
    MOV 0x6,A   ;輸出到7段顯示器
    ·
    ·
    ·

 
語  法
RLCA    R
編  碼
0
0110
10rr
rrrrr
 
操作內(nèi)容
R(n) -->  A(n+1), R(7) --> C, C --> A(0)
受影響的標(biāo)志
C﹔進(jìn)位標(biāo)志
說  明
將所指定的寄存器的內(nèi)容﹐連同進(jìn)位標(biāo)志一起向左移1位﹐并將結(jié)果存於A寄存器。
舉例說明
將指定的寄存器放向左移1位﹐并將結(jié)果由port6輸出。
BIT_BUF ==  0x10
 
    RLCA    BIT_BUF
    MOV 0x6,A
 
語  法
RLCA    R
編  碼
0
0110
11rr
rrrrr
 
操作內(nèi)容
R(n) --> R(n+1), R(7) --> C, C --> R(0)
受影響的標(biāo)志
C﹔進(jìn)位標(biāo)志
說  明
將所指定的寄存器的內(nèi)容﹐連同進(jìn)位標(biāo)志向左移1個(gè)位原﹐結(jié)果存在原先的寄存器。
 
舉例說明
將0X10寄存器的內(nèi)容向左移1個(gè)位﹐進(jìn)位標(biāo)志并不包含在內(nèi)。


    RLCA    0x10    ﹔寄存器的bit7移到進(jìn)位標(biāo)志                 ﹔中。并將結(jié)果存於A寄存器
    RLC     0x10    ﹔將0x10寄存器的值向左移1                  ﹔位﹐此時(shí)執(zhí)行的結(jié)果如上圖。
 
 
語  法
RRCA    R
編  碼
0
0110
00rr
rrrrr
 
操作內(nèi)容
R(n) --> A(n-1), R(0) --> C, C --> A(7)
受影響的標(biāo)志
C﹔進(jìn)位標(biāo)志被影響
說  明
R寄存器的內(nèi)含值又移1-bit﹐右移時(shí)包含C(進(jìn)位標(biāo)志) ﹐如下圖﹐并將結(jié)果存于A寄存器。
舉例說明
將指定的寄存器放向右移1位﹐并將結(jié)果由port6輸出。
BIT_BUF ==  0x10
 
    RRCA    BIT_BUF
    MOV 0x6,A

 
語  法
RRC R
編  碼
0
0110
01rr
rrrrr
 
操作內(nèi)容
R(n)  -->  R(n-1), R(0)  -->  C, C --> R(7)
受影響的標(biāo)志
C﹔進(jìn)位標(biāo)志
說  明
所指定的寄存器的內(nèi)容﹐連帶著進(jìn)位標(biāo)志接向右移1位﹐如下圖。
 
舉例說明
    MOV A,@0x0f
    CLR 0x3,0           ;clear C flag
    MOV 0x10,A      ;R10 = 00001111
    RRC 0x10        ;R10 = 00000111, C = 1
 
 
 
語  法
SUB A,R
編  碼
0
0001
00rr
rrrrr
 
操作內(nèi)容
R-A --> A
受影響的標(biāo)志
Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助標(biāo)志都會(huì)受影響
說  明
將R寄存器中的值減去A寄存器中的值﹐再存回A寄存器中。
 
 
語  法
SUB R,A
編  碼
0
0001
01rr
rrrrr
 
操作內(nèi)容
R-A --> R
受影響的標(biāo)志
Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助標(biāo)志都會(huì)受影響
說  明
將R寄存器中的值減去A寄存器中的值﹐再存回R寄存器中。
 
 
語  法
SUB A, k
編  碼
1
1101
kkkk
kkkk
 
操作內(nèi)容
k-A --> A
受影響的標(biāo)志
Z,C,DC﹔零標(biāo)志﹐進(jìn)位標(biāo)志和輔助標(biāo)志都會(huì)受影響
說  明
將立即值k的值減去A寄存器中的值﹐再存回A寄存器中。
 
 
舉例說明
說明如何完成A = 0x99-0x55的計(jì)算式

    MOV A,@0x99
    MOV 0x10,A      ;R10 = 0x99
    MOV A,@0x55
    SUB A,0x10          ;A = 0x44

說明如何完成 A = 0x02 - A 的計(jì)算式

    MOV A,@0x01     ;A = 0x01
    SUB     A,@0x02     ;A = 0x02 - 0x01 = 0x01
                        ;C flag = 1 , 進(jìn)位標(biāo)志C =                       ; 1﹐相減結(jié)果為正值。
 
 
語  法
SWAPA R
編  碼
0
0110
00rr
rrrrr
 
操作內(nèi)容
R(3::0) --> A(7::4)
R(7::4) --> A(3::0)
受影響的標(biāo)志
說  明
將所選定的寄存器﹐高4位以及低4位﹐互換﹐并將結(jié)果存于A寄存器。
舉例說明
將port6的內(nèi)容﹐高4位以及低4位互換。

    MOV A,0x6
    MOV 0x10,A
    SWAP    0x10
    MOV 0x6,A
 
語  法
SWAP    R
編  碼
0
0110
01rr
rrrrr
 
操作內(nèi)容
R(3::0)  <-->  R(7::4)
受影響的標(biāo)志
說  明
將所選定的寄存器﹐高4位以及低4位﹐互換。
舉例說明
    MOV A,@0x43
    MOV 0x10,A      ;R10 = 0x43
    SWAP    0x10        ;R10 = 0x34
 
 
 
 

 
 
語  法
XOR A,R
編  碼
0
0011
00rr
rrrrr
 
操作內(nèi)容
A Å R --> A
受影響的標(biāo)志
Z ﹔零標(biāo)志
說  明
將A寄存器的值和R寄存器的值XOR在一起﹐并且將結(jié)果存入A寄存器中。
 
 
語  法
XOR R,A
編  碼
0
0011
01rr
rrrrr
 
操作內(nèi)容
A Å R --> R
受影響的標(biāo)志
Z ﹔零標(biāo)志
說  明
將A寄存器的值和R寄存器的值XOR在一起﹐并且將結(jié)果存入R寄存器中。
 
 
語  法
XOR A, k
編  碼
1
1011
kkkk
kkkk
 
操作內(nèi)容
A Å k --> A
受影響的標(biāo)志
Z ﹔零標(biāo)志
說  明
將A寄存器的值和R寄存器的值XOR在一起﹐并且將結(jié)果存入A寄存器中。
舉例說明
測(cè)試0x10寄存器內(nèi)含值是否為0x55﹐如果0x10寄存器的內(nèi)含值不為0x55﹐就跳到ERROR這支子程序。

STATUS  ==  3
Z_FLAG  ==  2

    MOV A,@0x55
    XOR A,0x10
    JBS     STATUS,Z_FLAG
    JMP     ERROR


下面的指令敘述﹐完成R10 = R11 XOR R12

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


下面的指令敘述﹐完成 A = A XOR 0xF0.

    MOV A,@0x00     ;A = 0x00
    XOR A,@0xF0     ;A = 0xF0
  • 上一篇: 第四章 EM78系列單片機(jī)程序設(shè)計(jì) ( 1 )
  • 下一篇: 第三章 EM78指令系統(tǒng) (2)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(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ī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

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

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