熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2021-11-16 07:41
正文摘要:這個(gè)代碼看不懂,有人可以給講一講思路嗎 比如Cy=1時(shí) R5=00H 那么 MOV A,R5 ADDC A,R5 MOV R5,A 執(zhí) ... |
| 這個(gè)還是比較簡單的,如果是開方,三角計(jì)算,則更難。 |
yzwzfyz 發(fā)表于 2021-11-18 16:13 看了你寫的解答,令我驚嘆萬分,為啥我就寫不出這樣的,如此層次清晰的,感覺只要識(shí)字的就能看懂的,答復(fù)呢? |
|
R67是16位二進(jìn)制數(shù),R345是BCD結(jié)果。 1、HB2:將結(jié)果清0,準(zhǔn)累計(jì)結(jié)果。 2、HB3:先將R67的最高位移出,或0或1。 3、移出的0或1,放入結(jié)果的末位,進(jìn)行BCD調(diào)整。 理解:假設(shè)最高位是1(也就是你舉例的),它將被移入CY,通過ADDC,被加入到R5的末位中,未來還會(huì)被向高位移動(dòng)15次,并且還會(huì)被BCD調(diào)整15次,加上本次,一共被移位、調(diào)整16次。 每左移一次相當(dāng)于是二進(jìn)制乘2,16次移動(dòng)是還原成原值(原來在第幾位的還是在第幾位),這個(gè)很好理解。而每次乘2后會(huì)被進(jìn)行BCD調(diào)整,就變成了10進(jìn)制了。進(jìn)行16次移位16次BCD調(diào)整,是否能正確地轉(zhuǎn)換,就不太好理解了。 不過你可以做個(gè)試驗(yàn):R67=1000000000000000,16次操作后看看是否 R345=032768。如此,便于你理解。 第1234次操作后, R345=0008, 第5次操作后, R345=0016,(移位變成0010H,BCD調(diào)整后變成0016) 第6次操作后, R345=0032,(移位變成002CH,BCD調(diào)整后變成0032) 第7次操作后, R345=0064,(移位變成0064H,BCD調(diào)整后變成0064) 第8次操作后, R345=0128,(移位變成00C8H,BCD調(diào)整后變成0128) ...... |
|
我的做法是這樣的。 做一個(gè)表:分別對(duì)應(yīng)16位中各個(gè)位的BCD值,B15...B0,如果該位是1就加這個(gè)值(BCD加法),是0就不加,這樣很好理解。 B15:032768 B14: 016384 B13:008192 …… B0 : 000001 |
yzwzfyz 發(fā)表于 2021-11-18 15:12 ?? 是說我么? 我補(bǔ)充一下, 這個(gè)應(yīng)該是中間步驟, 或者整個(gè)代碼都是匯編寫的。 R6, R7 是原始的16位2進(jìn)制數(shù), 范圍是: 0~65535 轉(zhuǎn)譯出來的 十是進(jìn)制BCD 保存在 R3,R4,R5 由于,沒有把他們移回R5,R6,R7 不在傳參位,所以,故計(jì)要么還有一段代碼,要么就是整個(gè)代碼就是匯編寫的,所以不需要放到傳參位。 |
| 要說清楚,是哪16位,轉(zhuǎn)換成放在哪里。 |
188610329 發(fā)表于 2021-11-16 14:38 好的,謝謝,我去查查相關(guān)資料 |
|
講就是: 2進(jìn)制除法,就是這么一個(gè)計(jì)算過程。16位就是16次,32位就是32次, 說白了,就是利用加法器實(shí)現(xiàn)除法。你看看2進(jìn)制運(yùn)算方面的資料就能看明白了。說要說半天了。 |
Powered by 單片機(jī)教程網(wǎng)