您的位置:首页单片机义隆单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

第三章 EM78指令系统 (3)

[日期:2008-02-12 ] [来源:东哥开发网(www.picavr.com) 作者:] [字体: (投递新闻)
第三章 EM78指令系统 ( 3 end )

www.zsMCU.com   2006-1-4    中山单片机学习网

语  法
RET
编  码
0
0000
0001
0010
 
操作內容
[Top of Stack] --> PC
受影响的标志
说  明
从子程序中返回﹐堆栈最上面的数值载入程序计数器(Program counter)。
举例说明
TEST:
    ·
    ·
    ·
    RET

    ·
    ·
    ·
    CALL    TEST
HERE:
    ADD A,@0x1
    ·
    ·
    ·
 在呼叫RET指令之前。
    堆栈的顶端Top of Stack = address HERE
 在呼叫RET指令之后。
    程序计数器PC = address HERE
 
语  法
RETL k
编  码
1
1100
kkkk
kkkk
 
操作內容
k -->  A
[Top of Stack] --> PC
受影响的标志
说  明
从子程序返回﹐并将立即值载入A寄存器(累加器)中。
堆栈最顶端的数值载入程序计数器中。
 
建立一个7段显示器转換表﹐並用port6驱动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  ;将寄存器的內含值载入A中
    CALL    TRANS
    MOV 0x6,A   ;输出到7段显示器
    ·
    ·
    ·

 
语  法
RLCA    R
编  码
0
0110
10rr
rrrrr
 
操作內容
R(n) -->  A(n+1), R(7) --> C, C --> A(0)
受影响的标志
C﹔进位标志
说  明
将所指定的寄存器的內容﹐连同进位标志一起向左移1位﹐并将结果存於A寄存器。
举例说明
将指定的寄存器放向左移1位﹐并将结果由port6输出。
BIT_BUF ==  0x10
 
    RLCA    BIT_BUF
    MOV 0x6,A
 
语  法
RLCA    R
编  码
0
0110
11rr
rrrrr
 
操作內容
R(n) --> R(n+1), R(7) --> C, C --> R(0)
受影响的标志
C﹔进位标志
说  明
将所指定的寄存器的內容﹐连同进位标志向左移1个位原﹐结果存在原先的寄存器。
 
举例说明
将0X10寄存器的內容向左移1个位﹐进位标志并不包含在內。


    RLCA    0x10    ﹔寄存器的bit7移到进位标志                 ﹔中。并将结果存於A寄存器
    RLC     0x10    ﹔將0x10寄存器的值向左移1                  ﹔位﹐此时执行的結果如上图。
 
 
语  法
RRCA    R
编  码
0
0110
00rr
rrrrr
 
操作內容
R(n) --> A(n-1), R(0) --> C, C --> A(7)
受影响的标志
C﹔进位标志被影响
说  明
R寄存器的內含值又移1-bit﹐右移时包含C(进位标志) ﹐如下图﹐并将结果存于A寄存器。
举例说明
将指定的寄存器放向右移1位﹐并将结果由port6输出。
BIT_BUF ==  0x10
 
    RRCA    BIT_BUF
    MOV 0x6,A

 
语  法
RRC R
编  码
0
0110
01rr
rrrrr
 
操作內容
R(n)  -->  R(n-1), R(0)  -->  C, C --> R(7)
受影响的标志
C﹔进位标志
说  明
所指定的寄存器的內容﹐连带着进位标志接向右移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
 
操作內容
R-A --> A
受影响的标志
Z,C,DC﹔零标志﹐进位标志和辅助标志都会受影响
说  明
將R寄存器中的值减去A寄存器中的值﹐再存回A寄存器中。
 
 
语  法
SUB R,A
编  码
0
0001
01rr
rrrrr
 
操作內容
R-A --> R
受影响的标志
Z,C,DC﹔零标志﹐进位标志和辅助标志都会受影响
说  明
将R寄存器中的值减去A寄存器中的值﹐再存回R寄存器中。
 
 
语  法
SUB A, k
编  码
1
1101
kkkk
kkkk
 
操作內容
k-A --> A
受影响的标志
Z,C,DC﹔零标志﹐进位标志和辅助标志都会受影响
说  明
将立即值k的值减去A寄存器中的值﹐再存回A寄存器中。
 
 
举例说明
说明如何完成A = 0x99-0x55的计算式

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

说明如何完成 A = 0x02 - A 的计算式

    MOV A,@0x01     ;A = 0x01
    SUB     A,@0x02     ;A = 0x02 - 0x01 = 0x01
                        ;C flag = 1 , 进位标志C =                       ; 1﹐相减结果为正值。
 
 
语  法
SWAPA R
编  码
0
0110
00rr
rrrrr
 
操作內容
R(3::0) --> A(7::4)
R(7::4) --> A(3::0)
受影响的标志
说  明
将所选定的寄存器﹐高4位以及低4位﹐互換﹐并将结果存于A寄存器。
举例说明
将port6的內容﹐高4位以及低4位互換。

    MOV A,0x6
    MOV 0x10,A
    SWAP    0x10
    MOV 0x6,A
 
语  法
SWAP    R
编  码
0
0110
01rr
rrrrr
 
操作內容
R(3::0)  <-->  R(7::4)
受影响的标志
说  明
将所选定的寄存器﹐高4位以及低4位﹐互換。
举例说明
    MOV A,@0x43
    MOV 0x10,A      ;R10 = 0x43
    SWAP    0x10        ;R10 = 0x34
 
 
 
 

 
 
语  法
XOR A,R
编  码
0
0011
00rr
rrrrr
 
操作內容
A Å R --> A
受影响的标志
Z ﹔零标志
说  明
将A寄存器的值和R寄存器的值XOR在一起﹐并且将结果存入A寄存器中。
 
 
语  法
XOR R,A
编  码
0
0011
01rr
rrrrr
 
操作內容
A Å R --> R
受影响的标志
Z ﹔零标志
说  明
将A寄存器的值和R寄存器的值XOR在一起﹐并且将结果存入R寄存器中。
 
 
语  法
XOR A, k
编  码
1
1011
kkkk
kkkk
 
操作內容
A Å k --> A
受影响的标志
Z ﹔零标志
说  明
將A寄存器的值和R寄存器的值XOR在一起﹐并且将结果存入A寄存器中。
举例说明
测试0x10寄存器內含值是否为0x55﹐如果0x10寄存器的內含值不为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
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
    老顾 于12日评论道: 查看全部评论  
好东西
发表评论


点评: 字数
姓名:
站长推荐