單片機(jī)實(shí)驗(yàn)二 匯編程序設(shè)計(jì)初步_第1頁(yè)
單片機(jī)實(shí)驗(yàn)二 匯編程序設(shè)計(jì)初步_第2頁(yè)
單片機(jī)實(shí)驗(yàn)二 匯編程序設(shè)計(jì)初步_第3頁(yè)
單片機(jī)實(shí)驗(yàn)二 匯編程序設(shè)計(jì)初步_第4頁(yè)
單片機(jī)實(shí)驗(yàn)二 匯編程序設(shè)計(jì)初步_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)報(bào)告2 匯編程序設(shè)計(jì)初步姓名: 學(xué)號(hào):學(xué)院:光電與信息工程學(xué)院 班級(jí):2012級(jí)網(wǎng)絡(luò)工程2班實(shí)驗(yàn)?zāi)康氖煜?51 單片機(jī)的指令系統(tǒng),掌握匯編語(yǔ)言程序的設(shè)計(jì)方法,掌 握開(kāi)發(fā)的調(diào)試方法。實(shí)驗(yàn)環(huán)境1、PC 機(jī) 1 臺(tái) 2、仿真器軟件 偉福6000內(nèi)容與步驟(1)多字節(jié)加法 (2)多字節(jié)減法 (3)多字節(jié)乘法 (4)多字節(jié)除法過(guò)程分析(1)多字節(jié)加法計(jì)算123456H+789ABCH,將結(jié)果存放在內(nèi)部RAM 22H(高8位),21H(中8位)和20H(低8位)方法一:clr C ;(CY)<-0 mov a,#56h ; (a)=56h addc a,#0bch ; (a)<-(a)+0

2、bcH+(CY) mov 20h,a ;(20h)<-(a) mov a,#34h ; (a)=34h addc a,#9ah ; (a)<-(a)+9aH+(CY) mov 21h,a ; (21h)<-(a) mov a,#12h ; (a)=12h addc a,#78h ; (a)<-(a)+78H+(CY) mov 22h,a ; (22h)<-(a)截圖:內(nèi)部ROM的20h,21h,22h都默認(rèn)為0進(jìn)位標(biāo)志位置0執(zhí)行完第一次ADDC并將值賦給20H單元后執(zhí)行完第二次ADDC并將值賦給21H單元后執(zhí)行完第三次ADDC并將值賦給22H單元后分析:多字節(jié)加法

3、課本有2字節(jié)的,我寫(xiě)的是3字節(jié)加法,其他更高的字節(jié)可以依次類推,首先都要將進(jìn)位標(biāo)志位置0,依次分字節(jié)進(jìn)行帶進(jìn)位的ADDC加法運(yùn)算并將結(jié)果存放在指定的地址位置中,在執(zhí)行過(guò)程中觀察累加器A,程序狀態(tài)寄存器PSW中CY 、AC、 OV 、P的變化。方法二: mov r0,#20h ;(r0)<-22h mov r1,#28h ;(r1)<-32h mov r2,#03h ;(r2)<-3h clr cloop1: mov a,r0 ;(a)-<(r0) addc a,r1 ;(a)-<(r1)+(a)+(CY) mov r0,a ;(r0)<-(a)loop2:

4、inc r0 ;r0<-(r0)+1; inc r1 ;r1<-(r1)+1; mov a,r0 ;(a)-<(r0) djnz r2,loop1 ; r2<-(r2)-1,若r2=0,順序執(zhí)行,否則轉(zhuǎn)移 sjmp $ end截圖:內(nèi)部ROM的20h,21h,22h,28h,29h,2ah分別初始化執(zhí)行第一次循環(huán):執(zhí)行第二次循環(huán)執(zhí)行第三次循環(huán):分析:此代碼可以實(shí)現(xiàn)對(duì)任意n字節(jié)的加法運(yùn)算。本例中針對(duì)3字節(jié)來(lái)模擬,其他字節(jié)只要改變R2的值即可,比如四字節(jié)則R2=4。首先在兩個(gè)加數(shù)從低位到高位依次存放到內(nèi)部ROM的單元,在利用寄存器R0、R1來(lái)存放數(shù)據(jù)的地址,利用寄存器R2來(lái)

5、進(jìn)行循環(huán)次數(shù)的控制,使R0,R1所指向的內(nèi)存地址逐次加1,實(shí)現(xiàn)對(duì)應(yīng)位置的加法,結(jié)果再存放到指定的從20H開(kāi)始的位置。(2)多字節(jié)減法計(jì)算34AB12H-1278CDH,將結(jié)果存放在內(nèi)部RAM 22H(高8位),21H(中8位)和20H(低8位)方法一:clr CY ;(CY)<-0 mov a,#12h ;(a)=12h subb a,#0cdh ;(a)<-(a)-0cdH-(CY) mov 20h,a ;(20h)<-(a) mov a,#0abh ;(a)=0abh subb a,#78h ;(a)<-(a)-78H-(CY) mov 21h,a ;(21h)&l

6、t;-(a) mov a,#34h ;(a)=34h subb a,#12h ;(a)<-(a)-12H-(CY) mov 22h,a ;(22h)<-(a)截圖:內(nèi)部ROM的20h,21h,22h都默認(rèn)為0進(jìn)位標(biāo)志位置0執(zhí)行完第一次SUBB并將值賦給20H單元后執(zhí)行完第二次SUBB并將值賦給21H單元后執(zhí)行完第三次SUBB并將值賦給22H單元后分析:多字節(jié)減法課本有1字節(jié)的,我寫(xiě)的是3字節(jié)減法,其他更高的字節(jié)可以依次類推,首先都要將進(jìn)位標(biāo)志位CY置0,因?yàn)镸CS-51中只有帶借位的減法指令。依次分字節(jié)進(jìn)行帶進(jìn)位的SUBB減法運(yùn)算并將結(jié)果存放在指定的地址位置中,在執(zhí)行過(guò)程中觀察累加

7、器A,程序狀態(tài)寄存器PSW中CY 、AC、 OV 、P的變化。方法二:mov r0,#20h ;(r0)<-22h mov r1,#28h ;(r1)<-32h mov r2,#03h ;(r2)<-3h clr cloop1: mov a,r0 ;(a)<-(r0) subb a,r1 ;(a)<-(r1)-(a)-(CY) mov r0,a ;(r0)<-(a)loop2: inc r0 ;r0<-(r0)+1; inc r1 ;r1<-(r1)+1; mov a,r0 ;(a)<-(r0) djnz r2,loop1 ; r2<

8、-(r2)-1,若r2=0,順序執(zhí)行,否則轉(zhuǎn)移 sjmp $end截圖:內(nèi)部ROM的20h,21h,22h,28h,29h,2ah分別初始化執(zhí)行第一次循環(huán):執(zhí)行第二次循環(huán):執(zhí)行第三次循環(huán):分析:此代碼可以實(shí)現(xiàn)對(duì)任意n字節(jié)的減法運(yùn)算。本例中針對(duì)3字節(jié)來(lái)模擬,其他字節(jié)只要改變R2的值即可,比如四字節(jié)則R2=4。首先在兩個(gè)減數(shù)從低位到高位依次存放到內(nèi)部ROM的單元,在利用寄存器R0、R1來(lái)存放數(shù)據(jù)的地址,利用寄存器R2來(lái)進(jìn)行循環(huán)次數(shù)的控制,使R0,R1所指向的內(nèi)存地址逐次加1,實(shí)現(xiàn)對(duì)應(yīng)位置的減法,結(jié)果再存放到指定的從20H開(kāi)始的位置。(3)多字節(jié)乘法計(jì)算1234H * 0abcdH分析:首先令(20

9、H)=34H (21H) =12H(22H) =0cdH(23H) =0abH1234H*0abcdH=0c374fa4H結(jié)果存放在(24H) =0a4H(25H) =4fH(26H) =37H(27H) =0cH mov 20h,#34h ;(20h)<-24h mov 21h,#12h ;(21)<-12h mov 22h,#0cdh ;(22)<-0cdh mov 23h,#0abh ;(23)<-0abh mov a,20h ;將34與cd相乘,低位保存在24H中,高位暫時(shí)保存在25H中,此時(shí)24h中的值已經(jīng)算完 mov b,22h mul ab mov 24h

10、 ,a mov 25h,b mov a,21h ;將12與cd相乘,低位與地址為25h的數(shù)值相加暫時(shí)作為25h的值 mov b,22h mul ab add a,25h mov 25h,a mov a,b ;將高位與之前的進(jìn)位相加,暫時(shí)保存在26h中 addc a,#0 mov 26h,a mov a,20h ;34與ab相乘,低位與地址為25h的值相加,存入地址25h中,此時(shí)25h的值已經(jīng)算完 mov b,23hmul ab add a,25h mov 25h,a mov a,b addc a,#0 ;將高位與之前的進(jìn)位相加,在與地址為26h的數(shù)值相加暫時(shí)作為26h的值 add a,26h

11、mov 26h,a mov a,21h ;12與ab相乘,低位與地址為26h的值相加,存入地址26h中,此時(shí)26h的值已經(jīng)算完 mov b,23h mul ab add a,26h mov 26h,a mov a,b ;將高位與之前的進(jìn)位相加,作為地址27h的值,此時(shí)27h的值已經(jīng)算完 addc a,#0 mov 27h,a截圖:初始化賦值執(zhí)行34*cd完后,低位與地址為25h的值相加,存入地址25h中,此時(shí)24h中的值已經(jīng)算完。將12與cd相乘,低位與地址為25h的數(shù)值相加暫時(shí)作為25h的值,將高位與之前的進(jìn)位相加,暫時(shí)保存在26h中將34與ab相乘,低位與地址為25h的值相加,存入地址25

12、h中,此時(shí)25h的值已經(jīng)算完。將高位與之前的進(jìn)位相加,在與地址為26h的數(shù)值相加暫時(shí)作為26h的值將12與ab相乘,低位與地址為26h的值相加,存入地址26h中,此時(shí)26h的值已經(jīng)算完。將高位與之前的進(jìn)位相加,作為地址27h的值,此時(shí)27h的值已經(jīng)算完。分析:本代碼與手動(dòng)實(shí)際操作相類似,都是根據(jù)之前兩個(gè)數(shù)相乘的進(jìn)位來(lái)計(jì)算的,缺點(diǎn)就是對(duì)于實(shí)現(xiàn)更多字節(jié)的乘法運(yùn)算代碼可能顯得冗余過(guò)長(zhǎng)。(4)多字節(jié)除法計(jì)算0abcdh / 12h商是98bh 余數(shù)是7分析: mov 20h,#0cdh ;(20h)<-0cdh mov 21h,#0abh ;(21h)<-0abh mov 23h,#12h

13、 ;(23h)<-12h mov 31h,#0h ;(31h)<-0h ;31h用于保存商的高位值 mov 30h,#0h ;(30)<-0h ; 30h用于保存商的低位值 mov a,21hloop1: clr c ; 進(jìn)位清零 subb a,23h ;將除數(shù)的高位先與被除數(shù)相減 jc loop2 ;若不夠減產(chǎn)生借位就跳轉(zhuǎn)到LOOP2 inc 31h ;若夠減,商的高位+1 jmp loop1 ; 重復(fù)將除數(shù)的高位與被除數(shù)相減loop2: add a,23h ;求出高位除于被除數(shù)的余數(shù),將其代替原來(lái)的高位,等下若低位不夠減時(shí),用于作借位用 mov 21h,a mov a,2

14、0hloop3: clr c ;進(jìn)位清零 subb a,23h ;將除數(shù)的低位與被除數(shù)相減 ,用于保存最終的余數(shù) inc 30h ; 先將30h單元的值加1 jc loop4 ;若不夠減產(chǎn)生借位就跳轉(zhuǎn)到LOOP4 jmp loop3 ;重復(fù)將除數(shù)的高位與被除數(shù)相減loop4: dec 21h ;將除數(shù)的高位除于被除數(shù)所產(chǎn)生的余數(shù)減1,表示向低位借了 clr c ;進(jìn)位清零 mov r0,21h ;將余數(shù)(用于給低位借位)存于R0 cjne r0,#0ffh,loop3 ; 循環(huán)使高位余數(shù)減為0 dec 30h ;減去之前l(fā)oop3多加的1add a,23h ;a保存此時(shí)的余數(shù)值end 截圖:初

15、始化除數(shù)與被除數(shù)賦值將除數(shù)的高位先與被除數(shù)相減,若不夠減產(chǎn)生借位就跳轉(zhuǎn)到LOOP2,若夠減,商的高位+1。重復(fù)將除數(shù)的高位與被除數(shù)相減。經(jīng)過(guò)幾次相減后不夠減跳轉(zhuǎn)到loop2求出高位除于被除數(shù)的余數(shù),將其代替原來(lái)的高位,等下若低位不夠減時(shí),用于作借位用將除數(shù)的低位與被除數(shù)相減 ,用于保存最終的余數(shù), 先將30h單元的值加1, 若不夠減產(chǎn)生借位就跳轉(zhuǎn)到LOOP4, 重復(fù)將除數(shù)的高位與被除數(shù)相減經(jīng)過(guò)幾次相減后不夠減跳轉(zhuǎn)到loop4, 將除數(shù)的高位所產(chǎn)生的余數(shù)減1,表示向低位借了,將余數(shù)(用于給低位借位)存于R0循環(huán)使高位余數(shù)減為0,低位向高位借位后,繼續(xù)和被除數(shù)對(duì)減過(guò)程中的一種狀態(tài)執(zhí)行循環(huán)后,30h減去之前l(fā)oop3多加的1, a保存此時(shí)的余數(shù)值分析:這個(gè)除法是針對(duì)2字除于1字節(jié)的,有局限性。程序先利用除數(shù)高位除于被除數(shù),得到商的高位和用于借位的余數(shù),接下來(lái)用除數(shù)的低位除于被除數(shù),若不夠除則依次向高位的余數(shù)借位,直到高位的余數(shù)為0,累加器A用于保存最后余數(shù)的值。結(jié)果總結(jié)由于這周有很多考試,此處實(shí)驗(yàn)由于時(shí)間有點(diǎn)緊,我之前寫(xiě)的多字節(jié)加法和減法都是比較簡(jiǎn)單的,存在局限性,后來(lái)看了網(wǎng)上的一些教程,才改進(jìn)多了方法2,可針對(duì)任意字節(jié)的加減法。對(duì)于多字節(jié)的乘法

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論