Re: [問題] keilc問題

看板ASM (組合語言)作者 (此人掛網中……)時間17年前 (2007/09/08 20:38), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/4 (看更多)
※ 引述《CuckooBoy (阿書)》之銘言: : 請問想看變數的狀態 : 譬如i=i+1; : 我想看這列的 ......左邊i的值是多少,要怎麼做呢? 你的問題有點怪,左邊是指i=的i吧? 以c語言的語法,是指i+1-->i,也就是當該行執行完後的值。 因為各家的ICE對於斷點的處理不一定相同,所以比較保險的方式是: 260 i=i+1 261 nop 然後在261行前加上斷點,中斷時去檢查i的值就可以了 當然,如果你不是用ICE的話,那可能是在261行的地方換成輸出指令,將值在某個 port或rs232或其他的方式將資料輸出。 ps.說真的,這裡是asm版,你的問題大多是C的問題,雖然說是單晶片上面的問題,但 主要又不是單晶片的問題,我想會有一些人覺得是不必要的問題也是可以理解的。 又及:你的需求可以去相關的論壇得到更多的幫助,如雷兒電子論壇、51硬派論壇、 大鳥實驗室論壇(名稱可能有錯,但是我以前去過覺得不錯的論壇)。 另外,你在上一篇問說是否可以針對一個位元的存取,在51而且,只有一小個區段的 記憶體可以做位元存取,在keilC中以bdata做為標示。 xdata unsigned char abc; bdata unsigned char bitbuffer; bit bit7 = bitbuffer^7; bit bit6 = bitbuffer^6; bit bit5 = bitbuffer^5; bit bit4 = bitbuffer^4; bit bit3 = bitbuffer^3; bit bit2 = bitbuffer^2; bit bit1 = bitbuffer^1; bit bit0 = bitbuffer^0; abc = 0x55; bitbuffer = abc; P1.1 = bit2; 這樣也可以做到,事實上,你去看keilc對於51.h的宣告,會發現他P0~P3的各位元宣告 是相同的,但不是每種編譯器都是用這種方法宣告,像是arm的c編譯器就是用上幾篇的 結構式宣告完成的。 這主要是因為C原本沒有對位元處理的指令、符號的定義,因此各家編譯器會用一些方法 來支援這部份。 -- 我只是個想賺 P 幣的迷途小羔羊 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.228.75

09/08 20:58, , 1F
推 針對一個位元的存取 ...感謝
09/08 20:58, 1F

09/08 20:59, , 2F
一個位元的存取 一般書好像沒教,這...應該是經驗吧^^蘒
09/08 20:59, 2F

09/09 22:58, , 3F
單位元存取多是C編譯器手冊說明,因為他也要說明內部
09/09 22:58, 3F

09/09 22:59, , 4F
暫存器的設定及控制方式。這就是我為何我說你沒看資料
09/09 22:59, 4F

09/09 22:59, , 5F
,拿到編譯器第一件事情是看手冊,不是去寫程式。再說
09/09 22:59, 5F

09/09 23:00, , 6F
一遍「是看手冊、不要先去寫程式」。這是台灣學生最大
09/09 23:00, 6F

09/09 23:01, , 7F
的通病。自己以為懂C然後就不看手冊,結果程式寫出來
09/09 23:01, 7F

09/09 23:02, , 8F
不是錯誤就是執行的跟設計的不一樣。
09/09 23:02, 8F
文章代碼(AID): #16ufUfVW (ASM)
文章代碼(AID): #16ufUfVW (ASM)