用Keil 編譯匯程式設計序時 的問題

時間 2023-05-20 10:05:10

1樓:網友

我幫你修改好了,你程式的錯誤就是把數字的'0'寫成了字元的'o',這裡要細心一寫,因為在鍵盤上'o'的位置與數字'0'很近,我有的時候也可能會因為寫的快而搞錯了,不過在keil中的預設設定,如果是合法的暫存器,會變成黑體(我一看字型,就找到你的錯誤了)

我這裡除錯的結果是,(30h)上的0x47,變成了0x74,(31h)上的0x36變成了0x63,(32h)上的0x21變成了0x12,,,不知道你要的是不是這樣的效果。個人修改的程式如下:

org 0000h ;這裡的3條語句是為了除錯使用。

ljmp main

org 0100h

main:mov r7,#03h

mov r0,#30h

mov 30h,#47h

mov 31h,#36h

mov 32h,#21h

brln: mov a,r7

mov r2,a

add a,r0

mov r0,a

mov r3,#

brl1: dec r0

mov a,@r0

swap a

mov @r0,a ;你原來把這裡的r0,寫成了ro(而且你這裡'o'是大寫,一下子更難找出來,幸虧你的程式短,你一下就找出來了)

mov a,@r0 ;這裡你錯誤原因同上。

mov r3,a

djnz r2,brl1end

keil裡的c語言問題?

2樓:做而論道

輸出 0xf7,即在 p13 輸出低電平。

如果在 p13 所處的列,沒有按鍵按下,讀回的值,就仍然還是 f7。

如果讀回的值,不是 f7,那就是 p13 列有鍵按下了。

不是 f7,會是什麼?

那就是:77、b7、d7、e7。

分別代表: p13 列,幾個鍵的**。

然後,程式再給它們另外規定鍵值。

是否能在keil中混合編譯c和c++程式

3樓:風若遠去何人留

keil中支援混合編譯c和c++程式, 因為其本質最終都是編譯成彙編,所以是可以同時操作的。

在混合編譯時,需要注意以下幾點:

1、c副檔名必須為。c, c++副檔名必須為。cpp, 頭副檔名必須為。cpp。 如果原始檔的副檔名使用錯誤,會導致編譯出錯。

2、c語言的標頭檔案,需要加上如下條件編譯及限制**:

#ifdef __cplusplus

extern "c"

#endif

其功能為,當使用c++編譯器編譯時,會新增extern "c" {限制。 這樣才可以使c語言的函式宣告被c++正確識別。

3、所有c++檔案中需要被c呼叫的函式,在定義和宣告時都需要加上。

extern "c"

可以是單獨的函式,比如。

extern "c" void func_cpp_for_c(void)

也可以是程式段,比如。

extern "c"

void func2()

求解,keil編譯無法通過,搜不到答案

4樓:元飛珍

主要是三個問題:

第。一、前面兩個警告是說函式定義了卻沒有呼叫, 可以不用管。

第二、error l116的錯誤是說超過2k的程式都被切掉,沒有編譯它們了。可能原因:1、你的軟體沒有註冊,使用的評估版,最多只能編譯2k程式;2、在下圖的code rom size處設定限定了2k。

第。三、後面的error都是ram空間不夠,你可以優化你的程式,或者試試設定下圖紅線區域的memory model:

keil編譯出錯

我試了沒問題。你確認下typedef是不是在extern的宣告之前 tepedef unsigned char unchar tepedef 寫錯了吧,是typedef 這是微控制器寫程式的時候用的標頭檔案 有啦這個標頭檔案你才可以在程式裡面寫函式 stm32 keil 編譯時出現這樣的錯誤是什麼意...

用keil如何把c語言程式生成hex檔案,求步驟

以個例子給你參考,有兩個檔案,一是s.a51,另乙個是 m.c都加到keill的工程中編譯。彙編中有兩個函式,注意c的引數是如何傳遞給彙編的。s.a51 nomod51 name sentbyteup pr?sentbyteup?sentbyteup segment code dt?sentbyte...

C語言的編譯器是用什麼語言寫的,c語言編譯器是用什麼於語言寫的

理論上,c語言的編譯器,用什麼語言寫都可以的 如果已經有乙個不太好的c語言編譯器,那麼完全可以用c語言寫個更好的c語言的編譯器 不過,更大的可以是用另外的語言寫的,如彙編 c語言編譯器是用什麼於語言寫的 第乙個c語言編譯器應該是用彙編寫的,但是第乙個成熟的c語言編譯器應該是由彙編和c語言共同寫的。編...

用keil編寫c51程式變數順序為什麼會影響實際執行

因為i,y,k沒有賦初值,所以編譯的時候順序不同,那麼實際初值也不一樣。當你使用y時,是直接y 的,所以如果此時y初值已經大於20了,那麼就要等到y累加到ffff,再溢位才能回到20,估計就要等很長時間了。現在有兩個辦法,可以讓你不用糾結在順序上 1 定義的時候 uint y 0,i 0,k 0 2...

用keil寫匯程式設計序出現問題求大神

幫你改過了,有幾個錯誤 1 org 0000h後面一般都是跳轉到主程式的指令,因為0003,000b,0013,001b,0023是固定的中斷向量表,如果程式中開啟了中斷,你這樣寫的話程式就飛了。2 對於寫在rom中的常量,應當用偽指令db,data1和data2後面都是 3 在data1和data...