標(biāo)題: 關(guān)于單片機(jī)DPTR查表類的問題 [打印本頁]

作者: zhangzhao2423    時(shí)間: 2019-1-13 14:00
標(biāo)題: 關(guān)于單片機(jī)DPTR查表類的問題
為什么R2R3要先清c然后左移一位啊,clr   c
rlc     a不明白為什么要這么做

Screenshot_20190113-134956.jpg (276.11 KB, 下載次數(shù): 38)

Screenshot_20190113-134956.jpg

作者: 青天上的太陽    時(shí)間: 2019-1-13 15:49
加法ADD可能會產(chǎn)生進(jìn)位,然后ADDC是帶進(jìn)位的加法運(yùn)算,所以C要先清零。(接觸單片機(jī)沒多久,但這應(yīng)該是一個(gè)原因)
作者: 青天上的太陽    時(shí)間: 2019-1-13 16:00
加法會產(chǎn)生進(jìn)位,使C置1,所以要先清C,而且,ADDC是帶進(jìn)位的加法計(jì)算。
作者: xuyaqi    時(shí)間: 2019-1-13 16:13
rlc     a  是循環(huán)左移,不清c,c值會左移到a的最低字節(jié)。
作者: ahshmj    時(shí)間: 2019-1-13 18:14
RLC是帶C的循環(huán)左移指令,指令執(zhí)行后:C的值送入最低位就是A0位,A0位送入A1......,依次往上,最高位A7送入C,執(zhí)行該指令之前,C中的值不確定,就有可能出錯(cuò),所以必須清零。RRC指令也一樣。只是方向相反。
作者: zhangzhao2423    時(shí)間: 2019-1-13 18:43
ahshmj 發(fā)表于 2019-1-13 18:14
RLC是帶C的循環(huán)左移指令,指令執(zhí)行后:C的值送入最低位就是A0位,A0位送入A1......,依次往上,最高位A7送 ...

程序里循環(huán)左移一位是什么意思?為什么要循環(huán)左移一位
作者: Y_G_G    時(shí)間: 2019-1-13 20:36
前面幾個(gè)用過匯編16位查表嗎?
R2和R3是分別放了一個(gè)16位數(shù)據(jù)的高位和低位,左移一位是為了要乘以2,先清除C標(biāo)志位,等到低位的R3位移的時(shí)候,R3的7位(就是最高位)就會變成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)成表的偏移量來查表,才能得到正確的值




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1