如何將BCD碼減一 |
答題得分者是:阿信
|
topevo6
一般會員 發表:9 回覆:21 積分:16 註冊:2005-04-14 發送簡訊給我 |
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
|
cls9215
一般會員 發表:18 回覆:28 積分:9 註冊:2004-12-21 發送簡訊給我 |
|
topevo6
一般會員 發表:9 回覆:21 積分:16 註冊:2005-04-14 發送簡訊給我 |
我目前正設計一個計數器可上數及下數功能,上數的功能有出來能另外加上一段下數程式,程式如下
;分別以RAM位址40H 41H 42H由高位數至低位數做5位數計數器暫存計數值
SUB1 ;計數器減1
CLR C
SB1 MOV A,42H ;個位數及十位數減一
ADD A,#99
DA A
MOV 42H,A MOV A,41H ;百位數及千位數減一
ADDC A,#99
DA A
MOV 41H,A MOV A,40H ;萬位數及十萬位數減一
ADDC A,#99
DA A
MOV 40H,A
執行後上數可執行,但下數卻變成亂數
請問我的這一段設計對嗎?
|
㊣
版主 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
|
topevo6
一般會員 發表:9 回覆:21 積分:16 註冊:2005-04-14 發送簡訊給我 |
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
回覆topevo6 發文章時 有個"#"
按下它 會出現 code /code
把程式碼放在中間
縮排效果才不會被清掉 你的程式應修改成下面這樣
SUB1: clr C SB1: mov a,42h add a,#99h da a mov 42h,a jc SUB1_Exit ;沒有借位 高位元就不需要做減1 mov a,41h add a,#99h da a mov 41h,a jc SUB1_Exit ;沒有借位 高位元就不需要做減1 mov a,40h add a,#99h da a mov 40h,a SUB1_Exit:------------------------------------ 回覆cls9125 1.一樣的套用呀! ;舉例99-1 mov R1,#99H mov R2,#(9AH-1H) mov a,R1 add a,R2 da a mov R3,a nop2.da a是十進制調整指令 用於BCD加法後 對BCD數值做十進制調整. 無法將99h變成99! 3.這個問題跟這個主題 "如何將BCD碼減一" 已經沒有直接關係了 應該另開主題 "如何不使用7447驅動七段顯示器" 不過 其實只要建表就解決了! ------------------- 美好的事物 稍縱即逝 |
topevo6
一般會員 發表:9 回覆:21 積分:16 註冊:2005-04-14 發送簡訊給我 |
引言: 減法跟加法一樣 16進制中 減1=加#FFH BCD中 減1=加#99H 貼個範例再請問版大: 上述範例是做2位數減法,那我要做二個4位數以上bcd相減的話該要如何解? 例如在內部RAM (40H)(41H)-(42H)(43H)=(40H)(41H) 上述RAM(40H)(41H)(42H)(43H)已轉BCD碼 1〉作法可否(40H)(41H)(42H)(43H)位址內容先轉十六進制碼後做相減,之後再轉BCD碼存入(40H)(41H)位址,好像很複雜的樣子有更簡單的做法嗎 2〉十六進制運算如果減數大於被減數相減的話,所產生的結果會不會正確,其負數該要如何表示?;舉例71-55 mov R1,#71H mov R2,#(9AH-55H) mov a,R1 add a,R2 da a mov R3,a nop------------------- 美好的事物 稍縱即逝 發表人 - 阿信 於 2005/06/03 21:14:09 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |