freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

keil中的變量和常量定位問題-展示頁

2025-06-16 13:35本頁面
  

【正文】 高級語言C51windows環(huán)境編程與應用》或馬忠梅所寫的《單片機的c語言應用程序設計》有關混合語言編程有關章節(jié).//****************************************************************************************** 關于在 KEIL C51 中直接嵌入匯編。 SOURCE LINE 17?C0001:RET。這里調用了用c51寫的函數。 這里說明R6,R7內容就是tp_vint。R6/R739。tp_vint?04339。 SOURCE LINE 14MOV C,v_bflag?041CLR AMOV R6,ARLC AMOV R7,A。 tp_vint=(uint)v_bflag。 uint tp_vint。 uchar tmp_vchr。 {。R739。v_achr?04039。 SOURCE LINE 8。 uint AFUNC(uchar v_achr,bit v_bflag)RSEG ?PR?_AFUNC?A51FUNC_AFUNC: 。 define uchar unsigned char。 //。}第二步是按89852帖子的step2,3,4把用c51寫的(匯編)函數變成a51文件(今天我試了一下step3可以不要)例程編譯結果如下:。return CFUNC(tp_vint)。tmp_vchr=v_achr。uint AFUNC(uchar v_achr,bit v_bflag) //c51寫的匯編函數,最終要變成匯編代碼{uchar tmp_vchr。mvintrslt=AFUNC(mav_chr,BFLAG)。mav_chr=0xd4。uchar mav_chr。例程如下://include define uchar unsigned chardefine uint unsigned intextern uint AFUNC(uchar v_achr,bit v_bflag)。參考文獻:,彭秀華。 SOURCE LINE 13?C0001:RET。 SOURCE LINE 12MOV R6,AMOV R4,00HCLR AADD A,R5MOV R7,AMOV A,R4ADDC A,R6MOV R6,A。 return tmp_vchr+(tp_vint8)。R6/R739。tp_vint?04339。 SOURCE LINE 11MOV C,v_bflag?041CLR ARLC A。 tp_vint=(uint)v_bflag。R539。tmp_vchr?04239。 SOURCE LINE 10。 tmp_vchr=v_achr。 SOURCE LINE 6。 。 assigned to Register 39。 Variable 39。 uint AFUNC(uchar v_achr,bit v_bflag)RSEG ?PR?_AFUNC?CFUNC_AFUNC:USING 0。 define uint unsigned int。//.\ generated from: NAME CFUNC?PR?_AFUNC?CFUNC SEGMENT CODE?BI?_AFUNC?CFUNC SEGMENT BIT OVERLAYABLEPUBLIC ?_AFUNC?BITPUBLIC _AFUNCRSEG ?BI?_AFUNC?CFUNC?_AFUNC?BIT:v_bflag?041: DBIT 1。}step2. 在 Project 窗口中包含匯編代碼的 C 文件上右鍵,選擇“Options for ...”,點擊右邊的“Generate Assembler SRCFile”和“Assemble SRC File”,使檢查框由灰色變成黑色(有效)狀態(tài)。tp_vint=(uint)v_bflag。uint tp_vint。mvintrslt=AFUNC(mav_chr,BFLAG)。mav_chr=0xd4。uchar mav_chr。相關文件如下://include define uchar unsigned chardefine uint unsigned intextern uint AFUNC(uchar v_achr,bit v_bflag)。該方法讓編譯器自動完成各種段的安排,提高了匯編程序的編寫效率。在這個例子里,闡述了編寫c51程序調用匯編函數的一種方法,這個外部函數的入口參數是一個字符型變量和一個位變量,返回值是一個整型變量。 //*******************************************************************************************如何在 KEIL C51() 中調用匯編函數的一個示例 [ycong_kuang]有關c51調用匯編的方法已經有很多帖子講到,但是一般只講要點,很少有對整個過程作詳細描述,對于初學者是不夠的,這里筆者通過一個簡單例子對這個過程進行描述,希望能對初學者有所幫助。 常量定位及初始化: , 寫入 char code table[]={ 初始值}。//*****************************************************************************************keil中的變量和常量定位問題變量定位:char tab1[10] _at_ 0x200。 賦值:在函數中賦值,如tab1[0]=0x01。 KEIL定位:選擇 optionBL51 Locate, 在CODE:欄中寫入如: ?CO?TABLE(0x7000) 這樣,table[]表就定位到了0x7000開始的程序段。幾年來,在這個論壇里筆者得到很多熱心人指導,因此也希望藉此盡一點綿薄之力。例中,先用c51寫出這個函數的主體,然后用SRC控制指令編譯產生asm文件,進一步修改這個asm文件就得到我們所要的匯編函數。step1. 按寫普通c51程序方法,建立工程。void main(){bit BFLAG。uint mvintrslt。 BFLAG=1。}//define uchar unsigned chardefine uint unsigned intuint AFUNC(uchar v_achr,bit v_bflag){uchar tmp_vchr。tmp_vchr=v_achr。return tmp_vchr+(tp_vint8)。step3. 根據選擇的編譯模式,把相應的庫文件(如 Small 模式時,是 Keil\C51\Lib\)加入工程中,該文件必須作為工程的最后文件;step4. ,(件),然后在工程里去掉庫文件(),。 define uchar unsigned char。 SOURCE LINE 5。v_achr?04039。R739。 {。 uchar tmp_vchr。 uint tp_vint。 Variable 39。 assigned to Register 39。 MOV R5,AR7。 Variable 39。 assigned to Register 39。 。 }。 END OF _AFUNCENDstep5. “Generate Assembler SRC File”和“Assemble SRC File”是否有效,若是有效則點擊使檢查框變成無效狀態(tài);再次build這個工程,到此你已經得到匯編函數的主體,修改函數里面的匯編代碼就得到你所需的匯編函數了。單片機高級語言C51windows環(huán)境編程與應用,電子工業(yè)出版社.................................................................................................................keil中匯編函數調用c51函數 [ycong_kuang]第一步在工程里多了一個被匯編調用的c51的函數文件(),至于匯編函數還是先用c51編寫出主體(),這樣匯編程序接口和段都交給編譯器處理,你只管在編譯成匯編代碼后按你的要求改寫匯編代碼就行了。void main(){bit BFLAG。uint mvintrslt。 BFLAG=1。}//define uchar unsigned chardefine uint unsigned intextern uint CFUNC(uint)。uint tp_vint。tp_vint=(uint)v_bflag。 //這里調用一個c51函數}//define uchar unsigned chardefine uint unsigned intuint CFUNC(uint v_int) //被匯編函數調用c51函數{return v_int2。 .\ generated from: NAME A51FUNC?PR?_AFUNC?A51FUNC SEGMENT CODE?DT?_AFUNC?A51FUNC SEGMENT DATA OVERLAYABLE?BI?_AFUNC?A51FUNC SEGMENT BIT OVERLAYABLEEXTRN CODE (_CFUNC)PUBLIC ?_AFUNC?BITPUBLIC _AFUNCRSEG ?DT?_AFUNC?A51FUNC?_AFUNC?BYTE:tmp_vchr?042: DS 1RSEG ?BI?_AFUNC?A51FUNC?_AFUNC?BIT:v_bflag?041: DBIT 1。 define uint unsigned int。 extern uint CFUNC(uint)。c51所寫的函數產生的匯編代碼從這里開始USING 0。 Variable 39。 assigned to Register 39。 。 SOURCE LINE 9。 tmp_vchr=v_achr。 SOURCE LINE 13MOV tmp_vchr?042,R7。 Variable 39。 assigned to Register 39。 。 return CFUNC(tp_vint)。 SOURCE LINE 16LCALL _CFUNC 。 }。 END OF _AFUNCEND這個文件就是你的匯編函數所在文件,把函數里面的匯編代碼修改成你所需的匯編函數就ok了。 [Youth]*************************************************************************************有時在C51程序中需要嵌入一些匯編代碼,這時當然可以用通常的作法:按照 C51 與匯編的接口寫一個匯編函數,然后在 C51 程序中調用該函數。 Assembler Code Herepragma ENDASM在 Project 窗口中包含匯編代碼的 C 文件上右鍵,選擇“Options for ...”,點擊右邊的“Generate Assembler SRC File”和“Assemble SRC File”,使檢查框由灰色變成黑色(有效)狀態(tài);根據選擇的編譯模式,把相應的庫文件(如 Small 模式時,是 Keil\C51\Lib\)加入工程中, 該文件必須作為工程的最后文件;編譯,即可生成目標代碼。對用慣了匯編的人來說,總覺得高級語言’可控性’不好,不如匯編那樣隨心所欲。一、C51熱啟動代碼的編制對于工業(yè)控制計算機,往往設有有看門狗電路,當看門狗動作,使計算機復位,這就是熱啟動。因而在程序必須判斷是熱啟動還是冷啟動,常用的方法是:確定某內存單位為標志位(如0x7f位和0x7e位),啟動時首先讀該內存單元的內容,如果它等于一個特定的值(例如兩個內存單元的都是0xaa),就認為是熱啟動,否則就是冷啟動,程序執(zhí)行初始化部份,并將0xaa賦與這兩個內存單元。if((*HotPoint==0xaa)amp。(*(HotPoint)==0xaa)){ /*熱啟動的處理 */ }else{ HotPoint=0x7e。*(++HotPoint)=0xaa。這是為什么呢?原來,用C語言編程時,開機時執(zhí)行的代碼并非是從main()函數的第一句語句開始的,在main()函數的第一句語句執(zhí)行前要先執(zhí)行一段’起始代碼’。C編譯程序提供了這段起始代碼的源程序,,打開這個文件,可以看到如下代碼:.IDATALEN EQU 80H 。如何解決這個問題呢?好在啟動代碼是可以更改的,方法是:, ,然后用這段代碼代替原來的起始代碼。 執(zhí)行如下命令: A51 。 用 L51 HOTSTART, 命令連接,得到絕對目標文件HOTS
點擊復制文檔內容
教學教案相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1