㈠ C語言中調用_nop_();應包含什麼頭文件
#include<intrins.h>
intrins.h一般出現在C51單片機編程中,一般程序中需要使用到空指令_nop_();字元循環移位指令_crol_等時使用。
這個頭文件中的其他函數:
_crol_ 字元循環左移
_cror_ 字元循環右移
_irol_ 整數循環左移
_iror_ 整數循環右移
_lrol_ 長整數循環左移
_lror_ 長整數循環右移
_nop_ 空操作 (相當於8051 NOP 指令)
_testbit_ 測試並清零位 (相當於8051 JBC 指令)
函數名: _crol_,_irol_,_lrol_
原 型:
unsigned char _crol_(unsigned char val,unsigned char n);
unsigned int _irol_(unsigned int val,unsigned char n);
unsigned int _lrol_(unsigned int val,unsigned char n);
㈡ 單片機中整數循環左移_irol,整數循環右移_iror。這個整數怎麼移位的呢 位移位我懂。
既然你懂位移位,你把操作數A5A5和結果轉換成二進制就明白了:
A5A5: 1010010110100101
D2D2: 1101001011010010
其中D2D2是操作數a左移1位後得到的結果,末尾補零,最高位的1是標志位。
㈢ 利用匯編語言寫代碼怎樣實現循環左移如圖的功能。急
.286
CODES SEGMENT
ASSUME CS:CODES
ORG 100H
START: MOV DX,5678H
MOV CX,0F000H
AND CX,DX ;提取原DX的高4位保存於CX
SHR CX,12 ;CX低4位即原DX高4位
;;;;
MOV AX,1234H
MOV BX,0F000H
AND BX,AX ;提取原AX的高4位保存於BX
SHR BX,12 ;使BX低4位即原AX高4位
;;;;
SHL AX,4 ;AX左移4位,低4位自動補0
OR AX,CX ;使原DX高4位成為AX低4位
;;;;
SHL DX,4 ;DX左移4位,低4位自動補0
OR DX,BX ;使原AX高4位成為DX低4位
;;;;
INT 3
CODES ENDS
END START
;;;;
;;以上匯編程序編譯鏈接生成exe文件在Win7的DOS環境運行通過,
;;程序運行結果:DX=6781H, AX=2345H
㈣ C51中循環左移右移什麼指令
左移函數_crol_();
右移函數_cror_();
這兩指令都在頭文件<intrins.h>
㈤ 51單片機如何在一個工程中同時加入循環左移和循環右移,
這個問題很簡單,因為循環左移和循環右移並不相互排斥,可以單獨存在,不僅僅在一個工程中,在用一個文件或者同一個程序段中都是可以的。比如。
#include<reg51.h>
#include<intrins.h>
void delay(int a)
{
int i,j;
for(i=0;i<a;i++)
for(j=0;j<110;j++);
}
main()
{
unsigned char led1=0xfe,led2=0x7f;
while(1)
{
P0=_crol_(led1);
P1=_cror_(led2);
delay(100);
}
}
㈥ 利用<intrins.h>文件中的_crol_函數(循環左移函數)實現流水燈(共陽極)請將程序補充完整
temp=_crol_(oxef,1);
㈦ 循環左移可直接採用哪個頭文件的庫函數
頭文件中主要就是包含標准庫函數的有關信息,主要是聲明,要直接用標准庫函數,就必須在編譯預處理包含要調用函數的頭文件。
㈧ 單片機C語言
#ⅰnclude<reg52.h>
#include<intrins.h>//循環左移右移頭文件
typedef unsigned char u8
typedef unsigned int u16
#define led P1
delay(u16 i)
{
while(i--);
}
void main( )
{
u8 i=0;
led=0xfe;
while(1)
{
for(i=0,ⅰ<7,i++)
{
led=_crol_(led,1);//循環左移一位
delay(50000);
}
for(i=0,i<7,i++)
{
led=_cror_(led,1);//循環右移一位
delay(50000);
}
}
}
㈨ 如何用c語言實現循環左移
循環左移時,用從左邊移出的位填充字的右端,而循環右移時,用從右邊移出的位填充字的左側。這種情況在系統程序中時有使用,在一些控製程序中用得也不少。設有數據說明:
a=01111011,循環左移2位 正確結果: 11101101
過程:
b=a>>(8-2) 用來得到正常左移丟失的位和循環移位後其正確位置 b=00000001;
a=a<<2;左移 a=11101100
a=a|b; a=11101101
如果不是用中間變數 a=(a>>(8-2))|(a<<2)
總長度N(8 16 32)
循環左移n: (a>>(N-n))|(a>>n)
循環右移n: (a<<(N-n))|(a>>n)
C語言的位運算功能是其區別於其他大多數高級程序設計語言的特色之一,用它可以方便實現一些特殊功能,靈活掌握是用C程序編寫系統程序的基礎。
(9)循環左移用哪個文件擴展閱讀:
C語言高效編程技巧:
一:以空間換時間
計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題
二:數學方法解決問題
數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。
三:使用位操作
實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。
在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效提高程序運行的效率。
㈩ 51單片機流水燈程序中頭文件#include<intrinsh>的解析
intrins.h 編輯本段intrins.h 在C51單片機編程中,頭文件INTRINS.H的函數使用起來,就會讓你像在用匯編時一樣簡便. 內部函數 描述 _crol_ 字元循環左移 _cror_ 字元循環右移 _irol_ 整數循環左移 _iror_ 整數循環右移 _lrol_ 長整數循環左移 _lror_ 長整數循環右移 _nop_ 空操作8051 NOP 指令 _testbit_ 測試並清零位8051 JBC 指令函數名: _crol_,_irol_,_lrol_ 原 型: unsigned char _crol_(unsigned char val,unsigned char n); unsigned int _irol_(unsigned int val,unsigned char n); unsigned int _lrol_(unsigned int val,unsigned char n); 舉例: _crol_,_cror_:將char型變數循環向左(右)移動指定位數後返回 _testbit_: 相當於JBC bitvar測試該位變數並跳轉同時清除。 _chkfloat_: 測試並返回源點數狀態。 就是匯編中的子函數。 _crol_,_cror_:如果二進制數為01010101 那麼_crol_(1) 左移1位後將高位補低位。 結果10101010。 功 能:_crol_,_irol_,_lrol_以位形式將val 左移n 位,該函數與8051「RLA」指令相關,上面幾個函數不同於參數類型。