51单片机


2.1寻址方式

7种寻址方式

立即寻址:  直接给出数据  #20H
直接寻址  :给出寄存器的地址  20H
寄存器寻址 :(A,B,DPTR R1~R7)
寄存器间接寻址 : (R0,R1,DPTR)
变址寻址:  (DPTR,PC)
相对寻址:  只用于修改PC的值
位寻址:   位寻址是一种直接寻址

2.2数据传送与交换指令


传送指令

内部RAM和SFR之间的传送指令 MOV

外部RAM和外部ROM与寄存器A之间传送

RAM(寄存器间接寻址)

    MOVX    @Ri,A
                  @DPTR,A
                  A,@Ri
                  A,@DPTR

ROM (变址寻址) 只能读不能写

        MOVC  A,@A+DPTR
                    A,@A+PC

堆栈操作(在51单片机中,堆栈被安排在内部RAM中)

寄存器SP  指向栈头   (sp默认指向07H)

push  dir  入栈  (sp先加1,后入)
pop   dir  出栈   (先出,sp后减1)


交换指令

 


 
假设 A = FFH  R1 = 30H  (30H)= 87H

XCH  两个字节间的交换   
    XCH  A,@Ri  ;A = 87H (30H)= FFH
XCHD 两个字节间低半位的交换
    XCH  A,@Ri  ;A = F7H (30H)= 8FH
swap 一个字节的低半位和高半位交换
    swap 30H    ;(30H)= 78H

2.3 算术运算和逻辑运算指令

标志位

P奇偶标志位(只对A操作的指令有影响)  A中有奇数个1,P=1 否则P=0
OV (溢出)加减,乘除(当积大于255或除数为0时,OV=1)
CY进位(常写作C)
AC(辅助进位) 低位向高位进一,AC = 1

异或:同为0,异为1,与0异或值不变,与1异或值取反


加一  INC
减一  DEC

十进制调整指令

DA  A
能够进行十进制调整的十进制运算只有加法
 

 

乘除法



MUL AB   ;A×B-->BA 高八位存B,低八位存A



DIV AB  ;商在A中,余数在B中
若除数B=00H,则指令执行后,OV=1,A,B内容不变
 

2.4控制转移指令

调用程序和返回类指令

长调用指令       LCALL   addr16  ; 地址范围为 2^16  64k  本指令的机器码为3个字节

短调用指令       ACALL   addr11 ;地址范围为 2^11  2k  本指令的机器码为2个字节   

                         RET;从子程序返回

                         ERTI;从中断服务程序返回

转移指令

无条件转移指令(4条)

 

长转移  LJMP addr16; 转移范围 2^16  64KB  3字节

短钻以  AJMP addr11; 转移范围 2^11  2KB  2字节

间接转移      JMP  @A+DPTR;  A+DPTR--->PC      2字节  因为AJMP指令是2字节指令,所以A必须为偶数

以上均为绝对转移,

无条件相对转移  SJMP rel    ;   PC+rel-->PC

 

条件转移指令(条件转移都为相对转移指令)


累加器非零转移     JZ  rel ;A=0转移(PC+rel-->PC) 

                              JNZ  rel ;A != 0转移(PC+rel-->PC)

减一非零转移         DJNZ  Rn,rel  ;Rn-1-->Rn, Rn != 0 ,转移(PC+rel-->PC)

                               DJNZ  dir,rel  ;(dir)  -1-->(dir)  , (dir)  != 0 ,转移(PC+rel-->PC)

比较转移                 CJNE  A,dir / A,#data / Rn,#data / @Ri,#data  ,rel   ;前者不等于后者,则转移(PC+rel-->PC)

                           CJNZ  不送回结果,影响CY(进位标志)  第一操作数大于或等于第二操作数,CY=0;反之,CY=1;

 

 

 

         

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值