久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 32620|回復: 0
收起左側

單片機C語言左移和右移的方法

[復制鏈接]
ID:104835 發表于 2016-2-3 23:05 | 顯示全部樓層 |閱讀模式

#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
從這里看來,“<<”和“>>”應該是帶進位的。但是不能把C里原來的值移進去。而且移到C里的數會丟掉,這里千萬小心,例如a=0x80; a=a<<1;現在這里a=0x00了,1被移到C里丟掉。

再來看看_crol_和_cror_,這里要程序開頭要包含#include<intrins.h>
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void main(void)
{
    volatile uchar a;
    a=0x01;
    a=_crol_(a,1);
}
生成的代碼為
     MOV      08H,#01H
     MOV      R7,08H
     MOV      R0,#01H
     MOV      A,R7
     INC      R0
     SJMP     L1
L1:RL       A
     DJMZ     R0,L1
     MOV      08H,A
這里可以看出_crol_和_cror_是不帶C移動的,_iror_和_irol_是一樣的。




回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美福利一区 | 男人的天堂在线视频 | 久久99久久 | 国产日韩欧美一区二区 | 免费在线精品视频 | 欧美三级在线 | 久久精品国产一区二区三区不卡 | 精品网站999www | av黄色片 | 国产精品成人一区二区三区 | 午夜精品一区二区三区在线观看 | 日韩欧美高清dvd碟片 | 国产免费一区二区 | 亚洲福利在线观看 | 久久久精彩视频 | 日韩一区二区三区视频在线观看 | 欧美成人h版在线观看 | 成人性生交大片免费看中文带字幕 | 欧美一级在线免费 | 亚洲精品国产电影 | 久久婷婷国产麻豆91 | 国产精品国产三级国产aⅴ无密码 | 日本人做爰大片免费观看一老师 | 老司机精品福利视频 | 精品伊人久久 | 9191在线播放 | 91视频免费观看 | 国产超碰人人爽人人做人人爱 | 偷拍第一页 | 激情网站在线观看 | 九九久久精品 | 狠狠干美女| 久久精品成人 | 日韩不卡一区二区三区 | 欧美久久一区二区 | 在线中文字幕第一页 | 亚洲精品一区二三区不卡 | 久久在线| 国产精品久久久久久久午夜 | 国产成人99久久亚洲综合精品 | 久久精品视频网站 |