新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)第二次作業(yè)

單片機(jī)第二次作業(yè)

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
作業(yè):將A擴(kuò)大十倍(A值較小,不溢出



,此題方法較多,根據(jù)材料有三種做法,下面就一一列出。(既然此題如此繁瑣,就請(qǐng)大家給個(gè)好評(píng)吧!
當(dāng)然剛開(kāi)始還是新建文件和工程,大家都懂得!那么我就直接粘貼啦!
1、先f(wàn)ileànew建asm文件6.asm
方法一:MOV B,#10
MUL AB
END
為了調(diào)試時(shí)看數(shù)據(jù),預(yù)先在A中賦值為01H(既然A值較小,不溢出,那么就選個(gè)小一點(diǎn)的吧,簡(jiǎn)單嘛?。┧猿绦蚯凹樱?br />MOV A,#01H
2、建新工程,Projectànewproject,選AtemlàAT89C51,導(dǎo)入文件6.asm。
注意,對(duì)初學(xué)者,一個(gè)工程里只能有本程序6.asm,無(wú)關(guān)的程序要?jiǎng)h除,新試驗(yàn)一個(gè)程序最好重新建工程,以保證一個(gè)工程里只有你要試驗(yàn)的那一個(gè)程序。
3、可見(jiàn)程序


4、編譯通過(guò)后,點(diǎn)debug下的start/stop開(kāi)始調(diào)試,step和stepover都是單步調(diào)試,step是遇到子程序或中斷也要進(jìn)入進(jìn)行單步調(diào)試,stepover是遇到子程序或中斷當(dāng)一句一次執(zhí)行完。本程序物子程序,二者是一樣的。我們執(zhí)行一句得到:


可見(jiàn)A中的值變?yōu)?1H,B中還為0,是將要執(zhí)行的語(yǔ)句,再執(zhí)行一步,可見(jiàn):



B中數(shù)據(jù)已變?yōu)?ah,再執(zhí)行一步,可見(jiàn):

.
A與B相乘,A中存放低八位。所以A中的值為0AH,B中的值為00H.
,可知已經(jīng)把A擴(kuò)大了十倍,這個(gè)程序簡(jiǎn)單吧?!不過(guò),別急,有簡(jiǎn)單就有復(fù)雜的,不過(guò)誰(shuí)好誰(shuí)壞就不知道了,總之能用就行。

方法二:新建文件和工程就不羅嗦了,直接看程序吧!

呵呵,是不是復(fù)雜了一些?不過(guò),別怕。一步步來(lái)看。執(zhí)行一步可見(jiàn):


可見(jiàn)A中的值變?yōu)?1H,B中還為0,是將要執(zhí)行的語(yǔ)句,再執(zhí)行一步,可見(jiàn):


可見(jiàn)B中的值也變?yōu)?1H。接著執(zhí)行:

可見(jiàn)A中的值變?yōu)?2H。接著執(zhí)行:

可見(jiàn):RO中的值變?yōu)?2H。接著執(zhí)行:



可見(jiàn):A中的值變?yōu)?4H。接著執(zhí)行:


可見(jiàn):A中的值變?yōu)?5H。接著執(zhí)行:


可見(jiàn):B中的值也變?yōu)?5H。接著執(zhí)行:


哈哈,是不看到A中的值變?yōu)?AH了,那就對(duì)了!至此,第二種方法也搞定!

,有點(diǎn)困了,不過(guò)還是要把它寫(xiě)完吧!加快速度!??!

第三種方法:照樣是直接看程序啦!


嗯,不是很復(fù)雜,一會(huì)就搞定了!執(zhí)行一步:




可見(jiàn)A中的值變?yōu)?1H,B中還為0,是將要執(zhí)行的語(yǔ)句,再執(zhí)行一步,可見(jiàn):


可見(jiàn):B中的值也變?yōu)?1H。接著執(zhí)行:


對(duì)A進(jìn)行循環(huán)左移,相當(dāng)于乘二,所以A中的值為02H.接著執(zhí)行:


原因如上,就不說(shuō)了。所以A中的值為04H.接著執(zhí)行:


A和B相加,結(jié)果放到A中,所以A中的值為05H.接著執(zhí)行:


還是循環(huán)左移,大家都懂吧,所以就不說(shuō)啦!直接得到結(jié)果了。

,還行吧,三種方法都實(shí)現(xiàn)了A擴(kuò)大十倍,只不過(guò)這只適合不溢出的情況。OK!寫(xiě)完了


關(guān)鍵詞: 單片機(jī)溢

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉