二進(jìn)制轉(zhuǎn)換成BCD碼 實(shí)驗(yàn)報告_第1頁
二進(jìn)制轉(zhuǎn)換成BCD碼 實(shí)驗(yàn)報告_第2頁
二進(jìn)制轉(zhuǎn)換成BCD碼 實(shí)驗(yàn)報告_第3頁
二進(jìn)制轉(zhuǎn)換成BCD碼 實(shí)驗(yàn)報告_第4頁
二進(jìn)制轉(zhuǎn)換成BCD碼 實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、、實(shí)驗(yàn)?zāi)康倪M(jìn)一步熟練掌握8086匯編語言編譯調(diào)試工具和環(huán)境的操作;掌握完整8086匯編的程序設(shè)計(jì)編寫方法;掌握簡單的數(shù)值碼制轉(zhuǎn)換方法;掌握鍵盤輸出的DOS功能調(diào)用方法。二、實(shí)驗(yàn)要求:將AX中的一個二進(jìn)制數(shù)(對應(yīng)的十進(jìn)制數(shù)范圍是0-65535),轉(zhuǎn)換成壓縮性BCD碼表示的十進(jìn)制,并從屏幕輸出轉(zhuǎn)換結(jié)果。要求用減法實(shí)現(xiàn),并比較與除法方法進(jìn)行運(yùn)行速度比較。三、實(shí)驗(yàn)及報告要求:3.1、簡要說明算法,并畫出正確的程序流程圖;3.2、給出完整正確的源程序代碼,要求給每一句偽指令或指令加上注釋;3.3、分別在DOS和Windows下編譯、連接源程序生成可執(zhí)行文件并調(diào)試,比較兩個環(huán)境下生成的機(jī)器碼的長度、寄存器

2、內(nèi)容、計(jì)算結(jié)果的異同。3.4、如何觀察轉(zhuǎn)換過程中標(biāo)志寄存器中各標(biāo)志位的結(jié)果?如何觀察轉(zhuǎn)換結(jié)果的變化?試改變被轉(zhuǎn)換數(shù)值,對結(jié)果與編制為的變化加以說明和解釋。3.5、寫出完整的實(shí)驗(yàn)報告,特別是“實(shí)驗(yàn)結(jié)果”與“實(shí)驗(yàn)總結(jié)體會”部分,是評分的主要依據(jù)。3.6、實(shí)驗(yàn)總結(jié)中要求結(jié)合實(shí)驗(yàn)中的經(jīng)驗(yàn)、教訓(xùn)或體會對匯編語言格式、調(diào)試方法和微機(jī)原理學(xué)習(xí)方法作出總結(jié)。四、程序流程圖減法。即五位數(shù)先循環(huán)減10000,直到不夠減了,做減法的次數(shù)就是萬分位的結(jié)果;將不夠減之前一次的余數(shù)恢復(fù),再循環(huán)減去1000,直到不夠減了,做減法的次數(shù)就是千分位的結(jié)果;以此類推,最后恢復(fù)的正余數(shù)就是個位的結(jié)果除法。即五位數(shù)先除以10000,

3、得到的商存放萬位數(shù)的變量上;再將余數(shù)除以1000,得到的商存放千位數(shù)的變量上;之后將余數(shù)除以100,得到的商存放百分位的變量上;以此類推,最后的余數(shù)存放在個位的變量上。A、減法將余數(shù)保存到個位數(shù)結(jié)束恢復(fù)余數(shù)B、除法給出要轉(zhuǎn)換的二進(jìn)制數(shù)將數(shù)除以10000,得萬位數(shù)保存萬位數(shù)將余數(shù)除以.1000,得千位數(shù)保存千位數(shù)將余數(shù)除以400得百位數(shù)保存百位數(shù)將余數(shù)除以lg得十位數(shù)保存十位數(shù)余數(shù)為個位數(shù),將其保存結(jié)束;數(shù)據(jù)段五、源程序代碼A、減法源程序DATASEGMENTRESULTDB0RESULT_2DB0RESULT_3DB0RESULT_4DB0RESULT_5DB0DATAENDSSTACKSEG

4、MENTSTACK;堆棧段STADB64DUP(O);開辟100單元作為堆棧空間STACK_TOPDB0STACKENDSCODESEGMENT;代碼段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX;設(shè)置數(shù)據(jù)段MOVAX,STACKMOVSS,AX;設(shè)置堆棧段LEASP,STACK_TOP;設(shè)置棧頂指針MOVAX,25468MOVCL,0;計(jì)數(shù)器清零NEXT1:SUBAX,10000;減10000JCOVER1;有借位說明不夠減INCCL;否則夠減,計(jì)數(shù)器加1JMPNEXT1;無條件跳轉(zhuǎn)OVER1:ADDAX,100

5、00;最后恢復(fù)不夠減時AL的余數(shù)MOVBX,AXMOVRESULT_1,CLADDCL,30HMOVAH,02MOVDL,CLINT21HMOVCL,0MOVAX,BXNEXT2:SUBAX,1000;減1000JCOVER2;有借位說明不夠減INCCL;否則夠減,計(jì)數(shù)器加1JMPNEXT2;無條件跳轉(zhuǎn)OVER2:ADDAX,1000;最后恢復(fù)不夠減時AL的余數(shù)MOVBX,AXMOVRESULT_2,CLADDCL,30HMOVAH,02MOVDL,CLINT21HMOVCL,0MOVAX,BXNEXT3:SUBAX,100;減100JCOVER3;有借位說明不夠減INCCL;否則夠減,計(jì)數(shù)器

6、加1JMPNEXT3;無條件跳轉(zhuǎn)OVER3:ADDAX,100;最后恢復(fù)不夠減時AL的余數(shù)MOVBX,AXMOVRESULT_3,CLADDCL,30HMOVAH,02MOVDL,CLINT21HMOVCL,0MOVAX,BXMOVCL,0;計(jì)數(shù)器清零NEXT4:SUBAL,10;減10JCOVER4;有借位說明不夠減INCCL;否則夠減,計(jì)數(shù)器加1JMPNEXT4;無條件跳轉(zhuǎn)OVER4:ADDAL,10;最后恢復(fù)不夠減時AL的余數(shù)MOVBL,ALMOVRESULT_4,CLADDCL,30HMOVAH,02MOVDL,CLINT21HMOVCL,0MOVAX,BXMOVRESULT_5,AL

7、ADDAL,30HMOVAH,02MOVDL,ALINT21HMOVAX,4C00H;返回DOS(兩句)INT21H;CODEENDSENDSTART;最后一行要按回車鍵B、除法源程序DATASEGMENT;數(shù)據(jù)段RESULT_1DB1;結(jié)果1為低八位,初始量為RESULT_2DB1;結(jié)果1為低八位RESULT_3DB1;結(jié)果1為低八位RESULT_4DB1;結(jié)果1為低八位RESULT_5DB1;結(jié)果1為低八位DATAENDS;結(jié)束數(shù)據(jù)段STACKSEGMENTSTACK;堆棧段STADB64DUP(0);堆棧段初始化STACK_TOPDB0;棧頂初始化STACKENDS;結(jié)束堆棧段CODES

8、TART:SEGMENT;代碼段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK;假定為指令MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXLEASP,STACK_TOPMOVAX,32345MOVDX,0MOVCX,10000;把具體DATA送至寄存器中;設(shè)置數(shù)據(jù)段;把STACK送至寄存器中設(shè)置堆棧段;設(shè)置棧頂指針;賦予立即數(shù)32345給AX;余數(shù)清零;賦予立即數(shù)10000給CXLP:MOVCX,05HMOVAH,02HLEADI,RESULTADDDL,30HINT21HINCDIMOVAX,4C00H;返回DOS(兩句)DIVCX;除

9、于CX中的立即數(shù)MOVRESULT,AL;除以10000,得萬位數(shù)MOVAX,DX;將DX中的余數(shù)給AXMOVDX,0;余數(shù)清零MOVCX,1000;賦予立即數(shù)1000給CXDIVCX;除以1000MOVRESULT_2,AL;除以1000,得千位數(shù)MOVAX,DX;將DX中的余數(shù)給AXMOVDX,0;余數(shù)清零MOVCL,100;賦予立即數(shù)100給CLDIVCL;除以100;MOVRESULT_3,AL;除以100,得百位數(shù)MOVAL,AH;將AH中的余數(shù)給ALMOVAH,0;余數(shù)清零MOVCL,10;賦予立即數(shù)10給CLDIVCL;除以10MOVRESULT_4,AL;余數(shù)除以10,得十位數(shù)

10、MOVRESULT_5,AH;余數(shù)為個位數(shù);循環(huán)5次;顯示符;將結(jié)果1的偏移量給DIMOVDL,BYTEPTRDI;將SI中的字節(jié)內(nèi)容給DL;DL中的內(nèi)容加30,顯示數(shù)字;DOSINT21功能調(diào)用;每顯示一個字符,DI加1LOOPLP;LP循環(huán)INT21HCODEENDSENDSTART;代碼段結(jié)束;最后一行要按回車鍵六、實(shí)驗(yàn)結(jié)果6.1分別在DOS和Windows下編譯、連接源程序生成可執(zhí)行文件并調(diào)試,比較兩個環(huán)境下生成的機(jī)器碼的長度、寄存器內(nèi)容、計(jì)算結(jié)果的異同。A、減法1、Windows下的調(diào)試結(jié)果他originalsourcecodeEEfi:HQURX.4412HMYCL.0;計(jì)數(shù)器涓N

11、EXT1:JC0VER1;INCC;jupNExrnn2、dos下的調(diào)試結(jié)果U2202302402502E02?028A9Q數(shù)器清忌SUB4X.100有借位說否則夠減,無條件跳nnnnv1-GDS:000017426卩廠og廠目mterminatednormally3、比較機(jī)器碼的長度、寄存器內(nèi)容、計(jì)算結(jié)果的異同-RAX=0000BX=0000CX=00FFDX=0000SP=00i2BP=0000SI=0000DI=0000DS=1403ES=1403SS=1414CS=1口9IP=0000NVUPElPLNZNRP0NC1419:0000B81314MOVAX.U13csF400lp020

12、4ss0711SP003ABP0000SI0000Dl0000DS0710ES0700WindowsDOS寄存器內(nèi)容CSF4001419IP02040000SS07111414SP003A0042BP00000000SI00000000DI00050000DS07101403ES07001403計(jì)算結(jié)果1742617426B、除法1、Windows下的調(diào)試結(jié)果珊originalsourcecode1.=回瑰1iW0X4412H1DVDX.OT.:iUCX.10000JIUCXRESU.r_i.ALvRX.vDX.O-JV*CX.1000JIUC:r冷I1曲dmiRESUL7.2.-jnufiL

13、Stfremulatorscreen(8Dk25char2、DOS下的調(diào)試結(jié)果-GDS:000017426Programterminatednormally3、比較機(jī)器碼的長度、寄存器內(nèi)容、計(jì)算結(jié)果的異同-RRX=0000BX=0000DS=1403ES=14031419:0000B81314CX=00BCDX=0000SP=0042SS=1414CS=1419IP=0000MOVRX.1413BP=0000S0000DI=0000NVUPElPLNZNAPONCWindowsDOS寄存器內(nèi)容CSF4001419ip02040000SS07111414SP003A0042BP00000000S

14、I00000000DI00050000DS07101403ES07001403計(jì)算結(jié)2、如何觀察轉(zhuǎn)換過程中標(biāo)志寄存器中各標(biāo)志位的結(jié)果?如何觀察轉(zhuǎn)換結(jié)果的變化?試改變被轉(zhuǎn)換數(shù)值,對結(jié)果與編制為的變化加以說明和解釋。A、減法4412H改成3012H1、DOS-GDS-090012306Programterminatedno廠m日llyRAX=0000BX=0000CX=0GFFOX=0000SP=0O42BP=0000SI=000001=0000DS=1403ES=1403SS=1414CS=1419IP=00001419:0000B81314NVUPElPLNZNAP0

15、NCMOVAX,14132、WindowsCBorigirialsourcecode1=1倆emulatorscreen(;TZ2023024025026B、除法LESTOCKnm.3012HMOVCL.0;計(jì)NEXT1:JCDUER1;iwrriSUBI有借位說-丕100-巒瘵沁擷4412H改成3012H1、DOS-RAX=0000BK-0000DS=1403ES=14031419:0000B81314-GDS:8000CX=00BCDX=0000SP=0042SS=UUCS=1419IP=000OMOVAX.1413BP=0000SI=0000DI-0000NVUPElPLNZNAP0NC12306Programterminatednormally2、Windows珈orirnalsourcecodeI=EJ出|酹emulatorscreei21LEfiSP.srACKLTDP2810VDX.OC、標(biāo)志寄存器NV無溢出UP串操作指令為自動增量指令El允許中斷請求PL符號為正NZ運(yùn)算結(jié)果不為零NA輔助進(jìn)位無進(jìn)位PO1的個數(shù)為奇數(shù)NC無進(jìn)位七、實(shí)驗(yàn)總結(jié)與體會本次實(shí)驗(yàn),是運(yùn)用減法和除法來進(jìn)行二進(jìn)制轉(zhuǎn)換成BCD碼。在實(shí)驗(yàn)前應(yīng)做好充分的預(yù)習(xí),畫好流程圖并編好程序,可以的話還是在實(shí)驗(yàn)前運(yùn)行一下,若有問題可及

溫馨提示

  • 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

提交評論