keil c51彙編程式除錯有的指令不能執行

2022-05-16 13:01:54 字數 1112 閱讀 5543

1樓:

c語言會被優化掉一些**,彙編沒有用過,但我判斷不大可能,彙編好像是沒有優化處理的。你游標在mov r0,#00h的上一行是pc值是多少?跳過不跳過時相同嗎,如果相同不可跳過,pc值怎麼會突變的?

如果不同就是被優化了,你調出disassemble視窗就知道有沒有被優化掉了。

看不到圖。我是說mov r0,#00h上一行肯定不是跳轉指令,pc值怎麼會變,pc值不變肯定會連續執行了。能發到我郵箱不?[email protected].

還有一點,如果你修改了程式,沒有重新編譯,進入除錯視窗將執行以前的**。如果整行的增加或減少很容易發現,如果你在一行後面增加刪減,不注意不好發現的。

2樓:

肯定是你的pc值被改變了

要不就是你的程式邏輯錯誤

彙編是不會被keil c51優化的,它是最貼近機器的語言。

你再看看你的程式邏輯。

3樓:弓水蕊僕奧

c和彙編的混合程式設計沒做過

但對於th0、tl0、p1.0這些,你可以是直接用絕對地址代替它們試試

keil c51問題,那程式前面沒有綠色的代表沒有執行吧,為什麼除錯不執行,實際會不會執行呢~~!?

4樓:

可能是優化導致程式的執行過程與你的源**並不能嚴格對應。

你可以檢視生成的彙編,應當是符合你的預期流程的,只不過編譯器自動將一些可以合併的**段合併了。例如你每個函式中都有完全相同的**塊,這正是優化大顯身手的機會。

**級的除錯應當以看彙編為主、原始碼為輔。

5樓:匿名使用者

綠色是表示執行過了,我已前用過的是這樣的,我現在的用的,執行過了不標綠,很不習慣。

請問這個彙編程式為什麼用keil無法除錯?

6樓:做而論道

51 微控制器,是從 0000h 開始執行程式的。

樓主在程式中寫:org 1000h,是什麼意思?

改成 0000h,再試試看。

7樓:匿名使用者

將第一個org 1000h,改為org 0000h

求彙編程式

假設三個數放在記憶體的地址num處 num dw 100,30,78 用氣泡排序的方法 mov cx,3 外層迴圈次數 dec cx loop1 mov di,cx 儲存迴圈次數mov bx,0 內層迴圈的初始狀態,從頭開始loop2 mov ax,num bx cmp ax,num bx 2 同後...

彙編程式按鈕max

max7219不太好用,特別不穩定。不如用兩個4094.也是序列通訊。加減計數簡單多了,二位數十進位制連續加減調整位閃爍彙編程式,以前寫的,肯定有好多漏洞或錯誤。請自己分析,希望對你有所幫助。org 0000h ajmp start org 000bh 定時器0的中斷向量地址 ajmp time0 ...

誰能用Keil C51幫我寫個密碼程式,萬分感謝

include 包含標頭檔案,一般情況不需要改動,標頭檔案包含特殊功能暫存器的定義 define uint unsigned int 巨集定義 define uchar unsigned charsbit key p3 2 定義按鍵輸入埠sbit led p1 2 定義led輸出埠sbit jdq ...