推 odahawk:問題二。用兩個記憶區,加一次判斷是否大於某值就進位 03/21 22:34
→ eternal1879:判斷如果C的話我知道用if寫 組合語言判斷溢位 有好的 03/21 22:43
→ eternal1879:寫法嗎? 03/21 22:43
→ mepass:你可以先判斷大小 大的放一邊 小的放一邊 03/22 00:00
→ mepass:要加減的時候再統一取正負 03/22 00:00
→ mepass:比如說 i2>i1就取i2-i1放到正的暫存器 03/22 00:01
→ mepass: i3<i1就取i1-i3放到負的暫存器 03/22 00:02
→ mepass:這邊說的正負 是指後面相加減的時候你取的正負號 03/22 00:02
推 mepass:add addc差別是一個溢位後會有旗標 簡單講就是表示進位 03/22 00:05
→ mepass:就好比兩個個位數相加超過十會進一位一樣 03/22 00:06
→ mepass:如果要把兩個8bit暫存器合起來變成一個16bit暫存器 03/22 00:06
→ mepass:你就需要那個進位旗標 詳細作法應該書上都會有 03/22 00:07
→ mepass:8051的書找不到就去找8086的看看 03/22 00:07
推 stool100:問題一. 你可以把(新值*14+舊值)/15 放入舊值 03/22 01:45
推 ksmrt0123:你會用8-bit指令做出16-bit加法嗎? 03/22 13:59
→ ksmrt0123:平均還是累加後再除比較好做, 最好取2的冪次方個再平均 03/22 14:01
→ ksmrt0123:如除16可用右移4 bit完成 03/22 14:02
感謝大家給我的想法
目前是利用
時脈一直讀取 A B C D E...一直跑N個
讀取A之後先存到一邊
B判斷 B>A B-A 得差值存到一邊(正)
B<A A-B 得差值存到一邊(數值為正,但意義上應該是負)
C D E..等等同B的計算方法
差值正的累加得到X
差值負的累加得到Y
再次判斷差值X>Y (X-Y)/N+A
X<Y A-(Y-X)/N
比大小是利用SUBB看CY是1或0來跑 利用JC決定放哪邊
有關2的N次方我之前有想過 可是我不會16BIT的加減法 有人要教我一下嗎
感覺利用16BIT的寫法會比較快一點
之前我是想說如果取2的一次方的數量 RR1次
2的二次方的數量 RR2次
2的三次方的數量 RR3次來計算平均
可是我只知道用ADD來計算 可是這樣會使A溢位
也想過利用類似邏設的半加法的方法..可是這樣要寫很多迴圈
16BIT是利用這樣寫嗎..?
應該不是吧...
※ 編輯: eternal1879 來自: 59.125.93.19 (03/22 16:09)
推 kissy:印象中溢不溢位用組語來寫的話,可以靠STATUS來判斷 ? 03/22 17:16
推 joy830:你讀取的是什麼東西? 如果是A/D 03/23 01:56
→ joy830:已經自動平均了 只要把讀取頻率調低 自然會平均多一點 03/23 01:56