熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
前面幾個(gè)用過匯編16位查表嗎? R2和R3是分別放了一個(gè)16位數(shù)據(jù)的高位和低位,左移一位是為了要乘以2,先清除C標(biāo)志位,等到低位的R3位移的時(shí)候,R3的7位(就是最高位)就會(huì)變成C位,之前的清除的C位就變成了R3的0位,再R2帶進(jìn)位位移的時(shí)候,C就變成了R2的0了,這樣就可以達(dá)到一個(gè)乘以2的作用 至于為什么要乘以2,因?yàn)門AB2:DW 這個(gè)表是以兩個(gè)字節(jié)來存放的,因?yàn)槭钦加昧藘蓚(gè)字節(jié)的,乘以2之后,再把這個(gè)結(jié)果當(dāng)成表的偏移量來查表,才能得到正確的值 |
ahshmj 發(fā)表于 2019-1-13 18:14 程序里循環(huán)左移一位是什么意思?為什么要循環(huán)左移一位 |
RLC是帶C的循環(huán)左移指令,指令執(zhí)行后:C的值送入最低位就是A0位,A0位送入A1......,依次往上,最高位A7送入C,執(zhí)行該指令之前,C中的值不確定,就有可能出錯(cuò),所以必須清零。RRC指令也一樣。只是方向相反。 |
rlc a 是循環(huán)左移,不清c,c值會(huì)左移到a的最低字節(jié)。 |
加法會(huì)產(chǎn)生進(jìn)位,使C置1,所以要先清C,而且,ADDC是帶進(jìn)位的加法計(jì)算。 |
加法ADD可能會(huì)產(chǎn)生進(jìn)位,然后ADDC是帶進(jìn)位的加法運(yùn)算,所以C要先清零。(接觸單片機(jī)沒多久,但這應(yīng)該是一個(gè)原因) |
Powered by 單片機(jī)教程網(wǎng)