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

下載本文檔

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

文檔簡(jiǎn)介

深圳大學(xué)實(shí)驗(yàn)報(bào)告課程名稱(chēng):微機(jī)原理及應(yīng)用實(shí)驗(yàn)實(shí)驗(yàn)項(xiàng)目名稱(chēng):二進(jìn)制到BCD轉(zhuǎn)換學(xué)院:物理科學(xué)與技術(shù)學(xué)院專(zhuān)業(yè):應(yīng)用物理指導(dǎo)教師:報(bào)告人:學(xué)號(hào):班級(jí):應(yīng)用物理班實(shí)驗(yàn)時(shí)間:2015-10-19實(shí)驗(yàn)報(bào)告提交時(shí)間:2015-11-02教務(wù)處制實(shí)驗(yàn)名稱(chēng):二進(jìn)制到BCD轉(zhuǎn)換二、實(shí)驗(yàn)?zāi)康模?)進(jìn)一步熟練掌握8086匯編語(yǔ)言編譯調(diào)試工具和環(huán)境的操作;(2)掌握完整8086匯編的程序設(shè)計(jì)編寫(xiě)方法;(3)掌握簡(jiǎn)單的數(shù)值碼制轉(zhuǎn)換方法;(4)掌握鍵盤(pán)輸出的DOS功能調(diào)用方法。三、實(shí)驗(yàn)內(nèi)容將AX中的一個(gè)二進(jìn)制數(shù)(對(duì)應(yīng)的十進(jìn)制數(shù)范圍是0-65535),轉(zhuǎn)換成非壓縮性BCD碼表示的十進(jìn)制。要求用減法實(shí)現(xiàn)。除法實(shí)現(xiàn)。具體:簡(jiǎn)要說(shuō)明算法,并畫(huà)出正確的程序流程圖;給出完整正確的源程序代碼,要求給每一句偽指令或指令加上注釋?zhuān)环謩e在DOS和Windows下編譯、連接源程序生成可執(zhí)行文件并調(diào)試,比較兩個(gè)環(huán)境下生成的機(jī)器碼的長(zhǎng)度、寄存器內(nèi)容、計(jì)算結(jié)果的異同。舉例說(shuō)明如何觀察轉(zhuǎn)換過(guò)程中標(biāo)志寄存器中各標(biāo)志位的結(jié)果。如何觀察轉(zhuǎn)換結(jié)果的變化?試改變被轉(zhuǎn)換數(shù)值,對(duì)結(jié)果與標(biāo)志位的變化加以說(shuō)明和解釋。通過(guò)在EMU8086環(huán)境下運(yùn)行你的程序和除法方法的程序,給出的運(yùn)行速度比較結(jié)果。寫(xiě)出完整的實(shí)驗(yàn)報(bào)告,特別是“實(shí)驗(yàn)結(jié)果”與“實(shí)驗(yàn)總結(jié)體會(huì)”部分,是評(píng)分的主要依據(jù)。實(shí)驗(yàn)總結(jié)中要求結(jié)合實(shí)驗(yàn)中的經(jīng)驗(yàn)、教訓(xùn)或體會(huì)對(duì)匯編語(yǔ)言格式、調(diào)試方法和微機(jī)原理學(xué)習(xí)方法作出總結(jié)。四、實(shí)驗(yàn)任務(wù)分析與算法分析(軟件實(shí)驗(yàn))或?qū)嶒?yàn)電路及連線(xiàn)(硬件實(shí)驗(yàn))除法實(shí)現(xiàn)思路:對(duì)輸入的五位數(shù)先整除10000,得到的商保存在寄存器中,再賦予萬(wàn)位變量,恢復(fù)保存余數(shù);同理對(duì)余數(shù)整除1000,得到的商保存在寄存器中,再賦予千位變量,恢復(fù)保存余數(shù);同理對(duì)余數(shù)整除100,得到的商保存在寄存器中,再賦予百位變量,恢復(fù)保存余數(shù);同理對(duì)余數(shù)整除10,得到的商保存在寄存器中,再賦予十位變量,恢復(fù)保存余數(shù);得到的余數(shù)即為個(gè)位。減法實(shí)現(xiàn):五位數(shù)先循環(huán)減10000,直到不夠減了,做減法的次數(shù)就是萬(wàn)分位的結(jié)果;將不夠減之前一次的余數(shù)恢復(fù),再循環(huán)減去1000,直到不夠減了,做減法的次數(shù)就是千分位的結(jié)果;將不夠減之前一次的余數(shù)恢復(fù),再循環(huán)減去100,直到不夠減了,做減法的次數(shù)就是百分位的結(jié)果;將不夠減之前一次的余數(shù)恢復(fù),再循環(huán)減去10,直到不夠減了,做減法的次數(shù)就是十分位的結(jié)果;最后恢復(fù)的正余數(shù)就是個(gè)位的結(jié)果。五、程序說(shuō)明(預(yù)習(xí))包括程序功能,程序框圖,算法與變量說(shuō)明,主要符號(hào)及所用到的寄存器等。除法實(shí)現(xiàn):算法說(shuō)明:對(duì)輸入的五位數(shù)先整除10000,得到的商賦予低八位的AL保存在寄存器中,再賦予萬(wàn)位變量,DX中恢復(fù)保存余數(shù),重新賦予AX;同理對(duì)余數(shù)整除1000,得到的商保存在低八位的AL寄存器中,再賦予千位變量,DX中恢復(fù)保存余數(shù),重新賦予AX;同理對(duì)余數(shù)整除100,得到的商賦予低八位的AL保存在寄存器中,再賦予百位變量,DX中恢復(fù)保存余數(shù),重新賦予AX;同理對(duì)余數(shù)整除10,得到的商賦予低八位的AL保存在寄存器中,再賦予十位變量,DL中恢復(fù)保存余數(shù),重新賦予AL(節(jié)省資源空間);得到的余數(shù)即為個(gè)位。用到主要寄存器:AX:開(kāi)始用于目標(biāo)數(shù)接收,后面用于每次保存被除數(shù)CX:用作每次除數(shù)保存DX:用作每次除數(shù)保存減法實(shí)現(xiàn):算法說(shuō)明:五位數(shù)先循環(huán)減10000,直到不夠減了,做減法的次數(shù)就是萬(wàn)分位的結(jié)果,用CL累加次數(shù)得到;將不夠減之前一次的余數(shù)恢復(fù),再循環(huán)減去1000,直到不夠減了,做減法的次數(shù)就是千分位的結(jié)果,用CL累加次數(shù)得到;將不夠減之前一次的余數(shù)恢復(fù),再循環(huán)減去100,直到不夠減了,做減法的次數(shù)就是百分位的結(jié)果,用CL累加次數(shù)得到;將不夠減之前一次的余數(shù)恢復(fù),再循環(huán)減去10,直到不夠減了,做減法的次數(shù)就是十分位的結(jié)果,用CL累加次數(shù)得到;最后恢復(fù)的正余數(shù)就是個(gè)位的結(jié)果。用到主要寄存器:AX:開(kāi)始目標(biāo)數(shù)的接收和每次操作的余數(shù)保存CL:每減一次權(quán)數(shù)時(shí)就累加一次1,最后得到的即為商六、源程序清單及其每句的注釋除法:;除法實(shí)現(xiàn)DATASEGMENT;數(shù)據(jù)段RESULT_1DB1;定義存取位權(quán)數(shù)變量RESULT_2DB1RESULT_3DB1RESULT_4DB1RESULT_5DB1DATAENDSSTACKSEGMENTSTACK;堆棧段STADB64DUP(0)STACK_TOPDB0STACKENDSCODESEGMENT;代碼段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:;程序開(kāi)頭必須要有的五條指令MOVAX,DATAMOVDS,AX;設(shè)置數(shù)據(jù)段MOVAX,STACKMOVSS,AX;設(shè)置堆棧段LEASP,STACK_TOP;設(shè)置棧頂指針;;除法實(shí)現(xiàn)核心代碼部分;程序的中間部分MOVAX,00000;對(duì)AX賦值目標(biāo)數(shù)值 MOVDX,0;對(duì)DX清零,用作余數(shù)存取MOVCX,10000;賦值CX10000,用作除數(shù)DIVCX;除以CX中10000MOVRESULT_1,AL;除以10000,得萬(wàn)位數(shù),存入AL,并賦予萬(wàn)位變量MOVAX,DX;恢復(fù)余數(shù),重新賦值A(chǔ)X MOVDX,0;對(duì)DX清零MOVCX,1000;賦值CX1000,用作除數(shù)DIVCX;除以CX中1000MOVRESULT_2,AL;除以1000,得千位數(shù),存入AL,并賦予千位變量MOVAX,DX ;恢復(fù)余數(shù),重新賦值A(chǔ)X MOVDX,0;對(duì)DX清零MOVCX,100;賦值CX100,用作除數(shù)DIVCX;除以CX中100MOVRESULT_3,AL;除以100,得百位數(shù),存入AL,并賦予百位變量MOVAX,DX ;恢復(fù)余數(shù),重新賦值A(chǔ)X MOVDX,0;對(duì)DX清零MOVCX,10;賦值CX10,用作除數(shù)DIVCX;除以CX中10MOVRESULT_4,AL;除以10,得十位數(shù),存入AL,并賦予十位變量 MOVAL,DL;恢復(fù)余數(shù),重新賦值A(chǔ)XMOVRESULT_5,AL;得到的個(gè)位數(shù)直接賦予個(gè)位變量;;實(shí)現(xiàn)將結(jié)果送顯到屏幕代碼部分;采用循環(huán) MOVCX,04H;將循環(huán)次數(shù)賦予CX記數(shù) MOVAL,0;0賦予AL,用于比較 LEADI,RESULT_1;從高位開(kāi)始,循環(huán)記數(shù)自加獲取變量,賦予指針DI;主循環(huán)部分 FOR: MOVDL,BYTEPTR[DI];一個(gè)字節(jié),低八位賦予DL CMPDL,AL;判斷比較DL中與AL(0)大小 JZLP;兩個(gè)數(shù)比較,相等,比較后ZF=0,跳轉(zhuǎn)至LP ;ORDL,30HADDDL,30H;不相等則獲取目標(biāo)數(shù)值對(duì)應(yīng)ASCII碼 MOVAH,02;調(diào)用DOS系統(tǒng)2號(hào)功能,送顯 INT21H;返回DOS LP:INCDI;指針自加1 LOOPFOR;循環(huán)執(zhí)行;當(dāng)前面4位高位均為0時(shí),控制個(gè)位輸出 MOVDL,RESULT_5;個(gè)位變量數(shù)值賦予DL ADDDL,30H;獲取對(duì)應(yīng)ASCII碼 MOVAH,02H;調(diào)用DOS系統(tǒng)2號(hào)功能,送顯 INT21H;返回DOS;;程序結(jié)束必須要有的兩條指令MOVAX,4C00H;INT21H;;CODEENDSENDSTART;最后一行要按回車(chē)鍵減法:;減法實(shí)現(xiàn)DATASEGMENT;數(shù)據(jù)段BCD_0DB0;定義存取位權(quán)數(shù)變量BCD_1DB0BCD_2DB0BCD_3DB0BCD_4DB0DATAENDSSTACKSEGMENTSTACK;堆棧段STADB64DUP(0);STACK_TOPDB0STACKENDSCODESEGMENT;代碼段 ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK;;減法實(shí)現(xiàn)核心代碼部分;程序的中間部分START: MOVAX,DATAMOVDS,AX ;設(shè)置數(shù)據(jù)段MOVAX,STACKMOVSS,AX ;設(shè)置堆棧段LEASP,STACK_TOP ;設(shè)置棧頂指針 MOVAX,00000;對(duì)AX賦值目標(biāo)數(shù)值 MOVCL,0;計(jì)數(shù)器清零 NEXT4: SUBAX,10000;減10000 JCOVER4;有借位說(shuō)明不夠減 INCCL;否則夠減,計(jì)數(shù)器加1 JMPNEXT4;無(wú)條件跳轉(zhuǎn)OVER4: ADDAX,10000;最后恢復(fù)不夠減時(shí)AL的余數(shù) MOVBCD_0,CL;CL累計(jì)的計(jì)數(shù)值賦予萬(wàn)位變量 MOVCL,0;計(jì)數(shù)器清零 NEXT3: SUBAX,1000;減1000 JCOVER3;有借位說(shuō)明不夠減 INCCL;否則夠減,計(jì)數(shù)器加1 JMPNEXT3;無(wú)條件跳轉(zhuǎn)OVER3: ADDAX,1000;最后恢復(fù)不夠減時(shí)AL的余數(shù) MOVBCD_1,CL;CL累計(jì)的計(jì)數(shù)值賦予千位變量 MOVCL,0;計(jì)數(shù)器清零 NEXT2: SUBAX,100;減100 JCOVER2;有借位說(shuō)明不夠減 INCCL;否則夠減,計(jì)數(shù)器加1 JMPNEXT2;無(wú)條件跳轉(zhuǎn)OVER2: ADDAX,100;最后恢復(fù)不夠減時(shí)AL的余數(shù) MOVBCD_2,CL;CL累計(jì)的計(jì)數(shù)值賦予百位變量 MOVCL,0;計(jì)數(shù)器清零 NEXT1: SUBAX,10;減10 JCOVER1;有借位說(shuō)明不夠減 INCCL;否則夠減,計(jì)數(shù)器加1 JMPNEXT1;無(wú)條件跳轉(zhuǎn)OVER1: ADDAX,10;最后恢復(fù)不夠減時(shí)AL的余數(shù) MOVBCD_3,CL;CL累計(jì)的計(jì)數(shù)值賦予十位變量 MOVCL,0;計(jì)數(shù)器清零 MOVBCD_4,AL;剩下的余數(shù)為個(gè)位,賦予個(gè)位變量;;實(shí)現(xiàn)將結(jié)果送顯到屏幕代碼部分;采用循環(huán) MOVCX,04H;將循環(huán)次數(shù)賦予CX記數(shù) MOVAL,0;0賦予AL,用于比較 LEADI,BCD_0;從高位開(kāi)始,循環(huán)記數(shù)自加獲取變量,賦予指針DI;主循環(huán)部分 FOR: MOVDL,BYTEPTR[DI];一個(gè)字節(jié),低八位賦予DL CMPDL,AL;判斷比較DL中與AL(0)大小 JZLP;兩個(gè)數(shù)比較,相等,比較后ZF=0,跳轉(zhuǎn)至LP ;ORDL,30HADDDL,30H;不相等則獲取目標(biāo)數(shù)值對(duì)應(yīng)ASCII碼 MOVAH,02;調(diào)用DOS系統(tǒng)2號(hào)功能,送顯 INT21H;返回DOS LP:INCDI;指針自加1 LOOPFOR;循環(huán)執(zhí)行;當(dāng)前面4位高位均為0時(shí),控制個(gè)位輸出 MOVDL,BCD_4;個(gè)位變量數(shù)值賦予DL ADDDL,30H;獲取對(duì)應(yīng)ASCII碼 MOVAH,02H;調(diào)用DOS系統(tǒng)2號(hào)功能,送顯 INT21H;返回DOS; ;程序結(jié)束必須要有的兩條指令MOVAX,4C00H;INT21H;;CODEENDSENDSTART ;程序最后一行要輸入回車(chē)七、實(shí)驗(yàn)源程序清單(實(shí)驗(yàn)后以電子報(bào)告形式存儲(chǔ)到指定位置)源程序路徑及文件名:D:\masm\D_BCD-D.ASMD:\masm\D_BCD-S.ASM可執(zhí)行程序路徑及文件名:D:\masm\D_BCD-D.EXED:\masm\D_BCD-S.EXE八、上機(jī)調(diào)試情況說(shuō)明樣例僅供參考,需根據(jù)自己的實(shí)際情況撰寫(xiě)。MASM:EMU8086:九、實(shí)驗(yàn)結(jié)果與分析1.分別在DOS和Windows下編譯、連接源程序生成可執(zhí)行文件并調(diào)試,比較兩個(gè)環(huán)境下生成的機(jī)器碼的長(zhǎng)度、寄存器內(nèi)容、計(jì)算結(jié)果的異同。a.減法1)Windows下調(diào)試結(jié)果:2)DOS下調(diào)試結(jié)果:2.Windows:DOS:WindowsDOS寄存器內(nèi)容CS07160770IP00800082SS0711076BSP00400041BP00000000SI00000000DI00040004DS0710076AES0700075A計(jì)算結(jié)果110110b.除法將操作數(shù)改為01)Windows下2)DOS下各標(biāo)志位:溢出OV(溢出)NV(未溢出)零位ZF(等于零)NZ(不等于零)方向DN(減少)UP(增加)輔助進(jìn)位AC(進(jìn)位)NA(無(wú)進(jìn)位)中斷EI(許可)DI(禁止)奇

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論