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

下載本文檔

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

文檔簡介

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

2、 20h,a ;(20h)-(a)mov a,#34h ; (a)=34haddc a,#9ah ; (a)-(a)+9aH+(CY) mov 21h,a ; (21h)-(a) mov a,#12h ; (a)=12haddc 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é)加法課本有 2字節(jié)的,我寫的是 3字節(jié)加法,其他 更高的字節(jié)可以依次類推,

3、首先都要將進(jìn)位標(biāo)志位置0,依次分字節(jié)進(jìn)行帶進(jìn)位的 ADDC加法運(yùn)算并將結(jié)果存放在指定的地址 位置中,在執(zhí)行過程中觀察累加器A,程序狀態(tài)存放器 PSW中CY、AC、 OV、P 的變化.方法二:mov r0,#20h ;(r0)-22hmov r1,#28h ;(r1)-32hmov r2,#03h;(r2)-3hclr cloop1:mov a,r0;(a)-(r0)addc a,r1 mov r0,aloop2:inc r0inc r1;r0-(r0)+1;r1-(r1)+1;mov a,r0 ;(a)-(r0)djnz r2,loop1 ;r2-(r2)-1,假設(shè) r2=0,順序執(zhí)行,否那么

4、轉(zhuǎn)移sjmp $end截圖:內(nèi)部 ROM 的 20h, 21h, 22h, 28h, 29h, 2ah分別初始化執(zhí)行第一次循環(huán):;(a)-(r1)+(a)+(CY);(r0)-(a)執(zhí)行第二次循環(huán)執(zhí)行第三次循環(huán):分析:此代俏口以實(shí)現(xiàn)對任意n字節(jié)的加法運(yùn)算. 本例中針對3字節(jié)來模擬,其他字節(jié)只要改變R2 的值即可,比方四字節(jié)那么 R2=4.首先在兩個加 數(shù)從低位到局位依次存放到內(nèi)部 ROM的單兀, 在利用存放器R0、R1來存放數(shù)據(jù)的地址,利用 存放器R2來進(jìn)行循環(huán)次數(shù)的限制,使R0, R1所 指向的內(nèi)存地址逐次加1,實(shí)現(xiàn)對應(yīng)位置的加法, 結(jié)果再存放到指7E的從20H開始的位置.(2)多字節(jié)減法計(jì)

5、算 34AB12H-1278CDH ,將結(jié)果存放在內(nèi)部 RAM 22H(高 8 位),21H (中 8 位)和 20H (低 8 位)方法一:clr CY ;(CY)-0mov a,#12h ;(a)=12hsubb a,#0cdh ;(a)-(a)-0cdH-(CY)mov 20h,a ;(20h)-(a)mov a,#0abh ;(a)=0abhsubb a,#78h ;(a)-(a)-78H-(CY)mov 21h,a ;(21h)-(a)mov a,#34h ;(a)=34hsubb a,#12h ;(a)-(a)-12H-(CY)mov 22h,a ;(22h)-(a)截圖:內(nèi)部RO

6、M的20h,21h, 22h都默認(rèn)為0進(jìn)位標(biāo)志位置0執(zhí)行完第一次SUBB并將值賦給20H單元后執(zhí)行完第二次SUBB并將值賦給21H單元后執(zhí)行完第三次SUBB并將值賦給22H單元后分析:多字節(jié)減法課本有1字節(jié)的,我寫的是3 字節(jié)減法,其他更高的字節(jié)可以依次類推,首先 都要將進(jìn)位標(biāo)志位 CY置0,由于MCS-51中只 有帶借位的減法指令.依次分字節(jié)進(jìn)行帶進(jìn)位的 SUBB減法運(yùn)算并將結(jié)果存放在指定的地址位置 中,在執(zhí)行過程中觀察累加器 A,程序狀態(tài)存放 器PSW中CY、AC、 OV、P的變化.方法二:mov r0,#20h ;(r0)-22hmov r1,#28h ;(r1)-32hmov r2,#

7、03h;(r2)-3hclr cloopl: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-(r2)-1,假設(shè) r2=0,順序執(zhí)行,否那么轉(zhuǎn)移sjmp $end截圖:內(nèi)部 ROM 的 20h, 21h, 22h, 28h, 29h, 2ah分別初始化執(zhí)行第一次循環(huán):分析:此代俏可以實(shí)現(xiàn)對任意n字節(jié)的減法運(yùn)算. 本例中針對3字節(jié)來模擬,其他字節(jié)只要改變R2 的值即可,比方四字

8、節(jié)那么 R2=4.首先在兩個減 數(shù)從低位到局位依次存放到內(nèi)部 ROM的單兀, 在利用存放器R0、R1來存放數(shù)據(jù)的地址,利用 存放器R2來進(jìn)行循環(huán)次數(shù)的限制,使R0, R1所 指向的內(nèi)存地址逐次加1,實(shí)現(xiàn)對應(yīng)位置的減法, 結(jié)果再存放到指7E的從20H開始的位置.(3)多字節(jié)乘法計(jì)算 1234H * 0abcdH分析:首先令(20H) -34H(21H) -12H(22H) -0cdH(23H) -0abH1234H*0abcdH-0c374fa4H結(jié)果存放在(24H) -0a4H(25H) -4fH(26H) -37H(27H) -0cHmov 20h,#34h;(20h)-24hmov 21h

9、,#12h;(21)-12hmov 22h,#0cdh;(22)-0cdhmov 23h,#0abh;(23)-0abhmov a,20h;將34與cd相乘,低位保存在 24H中,高位暫時保存在25H中,此時24h中的值已經(jīng)算完mov b,22hmul abmov 24h ,amov 25h,bmov a,21h;將12與cd相乘,低位與地址為25h的數(shù)值相加暫時作為25h的值mov b,22hmul abadd a,25hmov 25h,amov a,b ;將高位與之前的進(jìn)位相加,暫時保存在 26h中addc a,#0mov 26h,amov a,20h;34與ab相乘,低位與地址為 25h

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

11、h的值相加,存入地址25h中,此時24h中的值已經(jīng)算完.將12與cd相乘,低位與地址為25h的數(shù)值相加暫時作為25h的值,將高位與之前的進(jìn)位相加,暫時保存在26h中將34與ab相乘,低位與地址為25h的值相加,存入地址25h中,此時25h的值已經(jīng)算完.將高位與之前的進(jìn)位相加,在與地址為 26h的數(shù)值相加暫時作為26h的值將12與ab相乘,低位與地址為26h的值相加,存入地址26h中,此時26h的值已經(jīng)算完.將高位與之前的進(jìn)位相加,作為地址 27h的值,此時 27h的值已經(jīng)算完.分析:本代碼與手動實(shí)際操作相類似,都是根據(jù) 之前兩個數(shù)相乘的進(jìn)位來計(jì)算的,缺點(diǎn)就是對于 實(shí)現(xiàn)更多字節(jié)的乘法運(yùn)算代碼可能

12、顯得冗余過 長.(4)多字節(jié)除法計(jì)算 0abcdh / 12h商是98bh余數(shù)是7分析:mov 20h,#0cdh;(20h)-0cdhmov 21h,#0abh;(21h)-0abhmov 23h,#12h;(23h)-12hmov 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)到LOOP2inc 31h;假設(shè)夠減,商的高位 +1jmp loopl;重復(fù)將除數(shù)的高位與被除數(shù)相減lo

13、op2:add a,23h;求出高位除于被除數(shù)的余數(shù),將其代替原來的高位,等下假設(shè)低位不夠減時,用于作借位用mov 21h,amov a,20hloop3:clr c;進(jìn)位清零subb a,23h;將除數(shù)的低位與被除數(shù)相減,用于保存最終的余數(shù)inc 30h;先將30h單元的值加1jc loop4;札夠減產(chǎn)生借位就跳轉(zhuǎn)到LOOP4jmp loop3;重復(fù)將除數(shù)的高位與被除數(shù)相減loop4:dec 21h;將除數(shù)的高位除于被除數(shù)所產(chǎn)生的余數(shù)減1,表示向低位借了clr c;進(jìn)位清零mov r0,21h;將余數(shù)用于給低位借位存于 R0cjne r0,#0ffh,loop3 ;循環(huán)使高位余數(shù)減為 0de

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

溫馨提示

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

評論

0/150

提交評論