[問題] _cror_有bug還是我的問題呢?

看板ASM (組合語言)作者 (Tops)時間13年前 (2012/06/27 18:00), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
板上高手好 小弟有個程式debug很久了總是無解 而且當我開始使用_cror_ 與_crol_這兩個funciton以來 總是會有莫名奇妙出錯的問題 所以在這邊想要請各位高手幫我看一下 以下是跑馬燈的程式 #include <at89x51.h> #include <intrins.h> typedef unsigned char uchar; uchar x; sfr Data=0x80; uchar LEDON() //Led on { data uchar tmp; tmp=Data; tmp=_crol_(tmp,1); return tmp; } void main() { Data=0x01; while(1) { Data=LEDON(); } } bug是 不知道為什麼到了某一段 tmp總會自己變成零 但是 _cror_與 不就是一直 rotate嗎? 怎麼會有我這樣的狀況出現呢? 請高手幫我解答一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.230.227

06/27 19:19, , 1F
CALL過程中CFLAG會發生變化
06/27 19:19, 1F

06/27 22:52, , 2F
狼大,看不懂!可否明示!
06/27 22:52, 2F

06/28 20:43, , 3F
CROR會連C FLAG一起轉,當你在DO WHILE時CFLAG會變化,所
06/28 20:43, 3F

06/28 20:44, , 4F
以你在CALL時會把MAIN 的FLAG帶進去。你應該先儲存C再離
06/28 20:44, 4F

06/28 20:44, , 5F
開副程式
06/28 20:44, 5F
文章代碼(AID): #1FwjdFUF (ASM)
文章代碼(AID): #1FwjdFUF (ASM)