芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片破解单片机C语言左移和右移的方法


芯片破解#include<reg52.h>
芯片破解#define uchar unsigned char     
芯片破解#define uint unsigned int
void main(void)
{
    uchar a;
    a=0x01;
    a=a<<1;
}
在这段程序中,看起来没有什么问题,但是编译后不能生成代码

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void main(void)
{
    volatile uchar a;
    a=0x01;
    a=a<<1;
}
改成这样后就能生成代码,但是生成的代码为
MOV      08H,#01H
MOV      A,08H
ADD      A,A
MOV      08H,A
这里我本来想象中应该有RL A这条指令的,但是没有。

当程序改成下面的时
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void main(void)
{
    volatile uchar a;
    a=0x01;
    a=a<<2;
}
生成的代码是
MOV      08H,#01H
MOV      A,08H
ADD      A,A
ADD      A,A
MOV      08H,A
改成a=a<<3;时
MOV      08H,#01H
MOV      A,08H
RLC      A
RLC      A
RLC      A
ANL      A,#0F8
MOV      08H,A
这里有点搞不懂了,“<<”和“>>”,到底是否带进位移动。

再来看看这个
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void main(void)
{
    volatile uchar a;
    a=0x01;
    CY=1;
    a=a>>1;
}
生成的代码是
MOV      08H,#01H
MOV      A,08H
CLR      C
RRC      A
MOV      08H,A



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信