**:
(1)、
c51語言中呼叫組合語言程式;
c51語言呼叫組合語言程式要注意以下幾點:
1:在檔案欄選中
file group
和c51
程式原檔案,在配置檔案選項中啟用
「產生彙編(
src)檔案,
「編譯(
src)檔案」和
「建立工程(目標)時包含
」三個選項。
2:根據選擇的編譯模式,把相應的庫檔案(如
small
模式,庫檔案為
keil\c51\lib\c51s.lib
)加入工程中。
3:在c51語言中必須宣告需要呼叫的函式為外部函式。
extern void delay(void);
4:在組合語言程式中必須宣告被呼叫子程式為公共子程式,在被呼叫的檔案中還需要宣告此檔案是可從新定位的。
public delay,del
delayy segment code
rseg delayy
例項如下:
c51語言檔案:
[cpp]
view plain
copy
#include "reg51.h"
extern
void
delay(
void
);
extern
void
del(
void
);
void
main(
void
)
組合語言檔案:
public delay,del
delayy segment code
rseg delayy
delay: mov r2,#3h
djnz r2,$
retdel: mov r3,#03h
djnz r3,$
retend
(2)、
c51語言中呼叫外部的
c51函式;
c51語言呼叫外部的
c51函式的注意事項如下:
1:在主調函式中必須宣告被呼叫的函式為外部型別的函式,其餘都一樣。
例項如下:
主調函式a:
[cpp]
view plain
copy
#include "reg52.h"
extern
void
delay(
void
);
sbit p1_1=p1^1;
void
main(
void
)
被呼叫的函式b:
[cpp]
view plain
copy
delay()
(3)、
c51語言中嵌入匯程式設計序;
在c51
語言中巢狀使用組合語言編寫程式要注意以下的幾個問題:
1:在檔案欄選中
file group
和c51
程式原檔案,在配置檔案選項中啟用
「產生彙編(
src)檔案,
「編譯(
src)檔案」和
「建立工程(目標)時包含
」三個選項。
2:根據選擇的編譯模式,把相應的庫檔案(如
small
模式,庫檔案為
keil\c51\lib\c51s.lib
)加入工程中。
3:用#pragma asm
,和#pragma endasm
語句包含嵌入的組合語言程式。
例項如下:
[cpp]
view plain
copy
#include "reg51.h"
void
delay(
void
);
void
main(
void
)
void
delay(
void
) (4
)、組合語言中外部子程式的呼叫
組合語言中外部子程式的呼叫
在遍寫程式的時候,可以在乙個檔案的匯程式設計序中呼叫另乙個檔案的子程式。具體的方法如下。
1:在主程式檔案中要宣告所呼叫的子程式在外部。比如在主程式中呼叫子程式名為
delay
的子程式,其格式為:
extrn code (delay)
2:在被呼叫的檔案中要宣告,被呼叫的子程式為公共型別的。比如
delay
要宣告的格式為:
public delay
3:在被呼叫的檔案中還需要宣告此檔案是可從新定位的。
ss segment code
rseg ss
整個事例如下,檔案a:
extrn code (delay)
extrn code (del)
org 0000h
ajmp main
org 0030h
main: nop
tt: mov p0,#00h
lcall delay
lcall del
mov p0,#0ffh
ljmp tt
end檔案b:
public delay
public del
ss segment code
rseg ss
delay: mov r2,#3h
djnz r2,$
retdel: mov r3,#03h
djnz r3,$
retend
(5)採用__asm進行彙編的嵌入,例如:
[cpp]
view plain
copy
if(sys_ctrl.t_run_num!=sys_ctrl.nt_run_num)
編譯時,進入如下對話方塊,選中其中標出的兩項:
c51彙編偽指令
dbit指令在內部資料區的bit 段內以位為單位保留儲存器 rseg是段選擇指令,要想明白它的意思就要了解段的意思。段是程式 或資料物件的儲存單位。程式 放到 段,資料物件放到資料段。段分兩種,一是絕對段,一是再定位段。絕對段在組合語言中指定,在用l51聯接的時候,位址不會改變。用於如訪問乙個固定儲...
C51 彙編指令英文全稱
建立人 ruo xiao 修改人 ruo xiao 內容 增加了傳送 邏輯 算術 轉移和位運算。指令 英文全稱 意義mov move 對內部ram和sfr的資料進行傳送 movc move code 傳送程式儲存器中的資料 movx move external ram 對外部ram的資料進行傳送 x...
C51儲存的優化
我們知道51微控制器只有128byte的ram,有的增強型有xram,此時程式設計時就要注意,否則就有可能超出空間 1 對於各模組的全域性變數 靜態變數 全域性列舉型常量,靜態列舉型常量 個別操作儲存 如外部spi flash 的區域性變數都要修飾成xdata型別,從而節省空間。2 對於bit型變數...