版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
深圳大學實驗報告課程名稱:微機原理及應用實驗實驗項目名稱:二進制到BCD轉換學院:物理科學與技術學院專業(yè):應用物理指導教師:報告人:學號:班級:應用物理班實驗時間:2015-10-19實驗報告提交時間:2015-11-02教務處制實驗名稱:二進制到BCD轉換二、實驗目的(1)進一步熟練掌握8086匯編語言編譯調試工具和環(huán)境的操作;(2)掌握完整8086匯編的程序設計編寫方法;(3)掌握簡單的數值碼制轉換方法;(4)掌握鍵盤輸出的DOS功能調用方法。三、實驗內容將AX中的一個二進制數(對應的十進制數范圍是0-65535),轉換成非壓縮性BCD碼表示的十進制。要求用減法實現(xiàn)。除法實現(xiàn)。具體:簡要說明算法,并畫出正確的程序流程圖;給出完整正確的源程序代碼,要求給每一句偽指令或指令加上注釋;分別在DOS和Windows下編譯、連接源程序生成可執(zhí)行文件并調試,比較兩個環(huán)境下生成的機器碼的長度、寄存器內容、計算結果的異同。舉例說明如何觀察轉換過程中標志寄存器中各標志位的結果。如何觀察轉換結果的變化?試改變被轉換數值,對結果與標志位的變化加以說明和解釋。通過在EMU8086環(huán)境下運行你的程序和除法方法的程序,給出的運行速度比較結果。寫出完整的實驗報告,特別是“實驗結果”與“實驗總結體會”部分,是評分的主要依據。實驗總結中要求結合實驗中的經驗、教訓或體會對匯編語言格式、調試方法和微機原理學習方法作出總結。四、實驗任務分析與算法分析(軟件實驗)或實驗電路及連線(硬件實驗)除法實現(xiàn)思路:對輸入的五位數先整除10000,得到的商保存在寄存器中,再賦予萬位變量,恢復保存余數;同理對余數整除1000,得到的商保存在寄存器中,再賦予千位變量,恢復保存余數;同理對余數整除100,得到的商保存在寄存器中,再賦予百位變量,恢復保存余數;同理對余數整除10,得到的商保存在寄存器中,再賦予十位變量,恢復保存余數;得到的余數即為個位。減法實現(xiàn):五位數先循環(huán)減10000,直到不夠減了,做減法的次數就是萬分位的結果;將不夠減之前一次的余數恢復,再循環(huán)減去1000,直到不夠減了,做減法的次數就是千分位的結果;將不夠減之前一次的余數恢復,再循環(huán)減去100,直到不夠減了,做減法的次數就是百分位的結果;將不夠減之前一次的余數恢復,再循環(huán)減去10,直到不夠減了,做減法的次數就是十分位的結果;最后恢復的正余數就是個位的結果。五、程序說明(預習)包括程序功能,程序框圖,算法與變量說明,主要符號及所用到的寄存器等。除法實現(xiàn):算法說明:對輸入的五位數先整除10000,得到的商賦予低八位的AL保存在寄存器中,再賦予萬位變量,DX中恢復保存余數,重新賦予AX;同理對余數整除1000,得到的商保存在低八位的AL寄存器中,再賦予千位變量,DX中恢復保存余數,重新賦予AX;同理對余數整除100,得到的商賦予低八位的AL保存在寄存器中,再賦予百位變量,DX中恢復保存余數,重新賦予AX;同理對余數整除10,得到的商賦予低八位的AL保存在寄存器中,再賦予十位變量,DL中恢復保存余數,重新賦予AL(節(jié)省資源空間);得到的余數即為個位。用到主要寄存器:AX:開始用于目標數接收,后面用于每次保存被除數CX:用作每次除數保存DX:用作每次除數保存減法實現(xiàn):算法說明:五位數先循環(huán)減10000,直到不夠減了,做減法的次數就是萬分位的結果,用CL累加次數得到;將不夠減之前一次的余數恢復,再循環(huán)減去1000,直到不夠減了,做減法的次數就是千分位的結果,用CL累加次數得到;將不夠減之前一次的余數恢復,再循環(huán)減去100,直到不夠減了,做減法的次數就是百分位的結果,用CL累加次數得到;將不夠減之前一次的余數恢復,再循環(huán)減去10,直到不夠減了,做減法的次數就是十分位的結果,用CL累加次數得到;最后恢復的正余數就是個位的結果。用到主要寄存器:AX:開始目標數的接收和每次操作的余數保存CL:每減一次權數時就累加一次1,最后得到的即為商六、源程序清單及其每句的注釋除法:;除法實現(xiàn)DATASEGMENT;數據段RESULT_1DB1;定義存取位權數變量RESULT_2DB1RESULT_3DB1RESULT_4DB1RESULT_5DB1DATAENDSSTACKSEGMENTSTACK;堆棧段STADB64DUP(0)STACK_TOPDB0STACKENDSCODESEGMENT;代碼段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:;程序開頭必須要有的五條指令MOVAX,DATAMOVDS,AX;設置數據段MOVAX,STACKMOVSS,AX;設置堆棧段LEASP,STACK_TOP;設置棧頂指針;;除法實現(xiàn)核心代碼部分;程序的中間部分MOVAX,00000;對AX賦值目標數值 MOVDX,0;對DX清零,用作余數存取MOVCX,10000;賦值CX10000,用作除數DIVCX;除以CX中10000MOVRESULT_1,AL;除以10000,得萬位數,存入AL,并賦予萬位變量MOVAX,DX;恢復余數,重新賦值AX MOVDX,0;對DX清零MOVCX,1000;賦值CX1000,用作除數DIVCX;除以CX中1000MOVRESULT_2,AL;除以1000,得千位數,存入AL,并賦予千位變量MOVAX,DX ;恢復余數,重新賦值AX MOVDX,0;對DX清零MOVCX,100;賦值CX100,用作除數DIVCX;除以CX中100MOVRESULT_3,AL;除以100,得百位數,存入AL,并賦予百位變量MOVAX,DX ;恢復余數,重新賦值AX MOVDX,0;對DX清零MOVCX,10;賦值CX10,用作除數DIVCX;除以CX中10MOVRESULT_4,AL;除以10,得十位數,存入AL,并賦予十位變量 MOVAL,DL;恢復余數,重新賦值AXMOVRESULT_5,AL;得到的個位數直接賦予個位變量;;實現(xiàn)將結果送顯到屏幕代碼部分;采用循環(huán) MOVCX,04H;將循環(huán)次數賦予CX記數 MOVAL,0;0賦予AL,用于比較 LEADI,RESULT_1;從高位開始,循環(huán)記數自加獲取變量,賦予指針DI;主循環(huán)部分 FOR: MOVDL,BYTEPTR[DI];一個字節(jié),低八位賦予DL CMPDL,AL;判斷比較DL中與AL(0)大小 JZLP;兩個數比較,相等,比較后ZF=0,跳轉至LP ;ORDL,30HADDDL,30H;不相等則獲取目標數值對應ASCII碼 MOVAH,02;調用DOS系統(tǒng)2號功能,送顯 INT21H;返回DOS LP:INCDI;指針自加1 LOOPFOR;循環(huán)執(zhí)行;當前面4位高位均為0時,控制個位輸出 MOVDL,RESULT_5;個位變量數值賦予DL ADDDL,30H;獲取對應ASCII碼 MOVAH,02H;調用DOS系統(tǒng)2號功能,送顯 INT21H;返回DOS;;程序結束必須要有的兩條指令MOVAX,4C00H;INT21H;;CODEENDSENDSTART;最后一行要按回車鍵減法:;減法實現(xiàn)DATASEGMENT;數據段BCD_0DB0;定義存取位權數變量BCD_1DB0BCD_2DB0BCD_3DB0BCD_4DB0DATAENDSSTACKSEGMENTSTACK;堆棧段STADB64DUP(0);STACK_TOPDB0STACKENDSCODESEGMENT;代碼段 ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK;;減法實現(xiàn)核心代碼部分;程序的中間部分START: MOVAX,DATAMOVDS,AX ;設置數據段MOVAX,STACKMOVSS,AX ;設置堆棧段LEASP,STACK_TOP ;設置棧頂指針 MOVAX,00000;對AX賦值目標數值 MOVCL,0;計數器清零 NEXT4: SUBAX,10000;減10000 JCOVER4;有借位說明不夠減 INCCL;否則夠減,計數器加1 JMPNEXT4;無條件跳轉OVER4: ADDAX,10000;最后恢復不夠減時AL的余數 MOVBCD_0,CL;CL累計的計數值賦予萬位變量 MOVCL,0;計數器清零 NEXT3: SUBAX,1000;減1000 JCOVER3;有借位說明不夠減 INCCL;否則夠減,計數器加1 JMPNEXT3;無條件跳轉OVER3: ADDAX,1000;最后恢復不夠減時AL的余數 MOVBCD_1,CL;CL累計的計數值賦予千位變量 MOVCL,0;計數器清零 NEXT2: SUBAX,100;減100 JCOVER2;有借位說明不夠減 INCCL;否則夠減,計數器加1 JMPNEXT2;無條件跳轉OVER2: ADDAX,100;最后恢復不夠減時AL的余數 MOVBCD_2,CL;CL累計的計數值賦予百位變量 MOVCL,0;計數器清零 NEXT1: SUBAX,10;減10 JCOVER1;有借位說明不夠減 INCCL;否則夠減,計數器加1 JMPNEXT1;無條件跳轉OVER1: ADDAX,10;最后恢復不夠減時AL的余數 MOVBCD_3,CL;CL累計的計數值賦予十位變量 MOVCL,0;計數器清零 MOVBCD_4,AL;剩下的余數為個位,賦予個位變量;;實現(xiàn)將結果送顯到屏幕代碼部分;采用循環(huán) MOVCX,04H;將循環(huán)次數賦予CX記數 MOVAL,0;0賦予AL,用于比較 LEADI,BCD_0;從高位開始,循環(huán)記數自加獲取變量,賦予指針DI;主循環(huán)部分 FOR: MOVDL,BYTEPTR[DI];一個字節(jié),低八位賦予DL CMPDL,AL;判斷比較DL中與AL(0)大小 JZLP;兩個數比較,相等,比較后ZF=0,跳轉至LP ;ORDL,30HADDDL,30H;不相等則獲取目標數值對應ASCII碼 MOVAH,02;調用DOS系統(tǒng)2號功能,送顯 INT21H;返回DOS LP:INCDI;指針自加1 LOOPFOR;循環(huán)執(zhí)行;當前面4位高位均為0時,控制個位輸出 MOVDL,BCD_4;個位變量數值賦予DL ADDDL,30H;獲取對應ASCII碼 MOVAH,02H;調用DOS系統(tǒng)2號功能,送顯 INT21H;返回DOS; ;程序結束必須要有的兩條指令MOVAX,4C00H;INT21H;;CODEENDSENDSTART ;程序最后一行要輸入回車七、實驗源程序清單(實驗后以電子報告形式存儲到指定位置)源程序路徑及文件名:D:\masm\D_BCD-D.ASMD:\masm\D_BCD-S.ASM可執(zhí)行程序路徑及文件名:D:\masm\D_BCD-D.EXED:\masm\D_BCD-S.EXE八、上機調試情況說明樣例僅供參考,需根據自己的實際情況撰寫。MASM:EMU8086:九、實驗結果與分析1.分別在DOS和Windows下編譯、連接源程序生成可執(zhí)行文件并調試,比較兩個環(huán)境下生成的機器碼的長度、寄存器內容、計算結果的異同。a.減法1)Windows下調試結果:2)DOS下調試結果:2.Windows:DOS:WindowsDOS寄存器內容CS07160770IP00800082SS0711076BSP00400041BP00000000SI00000000DI00040004DS0710076AES0700075A計算結果110110b.除法將操作數改為01)Windows下2)DOS下各標志位:溢出OV(溢出)NV(未溢出)零位ZF(等于零)NZ(不等于零)方向DN(減少)UP(增加)輔助進位AC(進位)NA(無進位)中斷EI(許可)DI(禁止)奇
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品集中招標合作協(xié)議樣本
- 學校網絡升級國防光纜施工合同
- 養(yǎng)殖行業(yè)培訓租賃協(xié)議
- 退休工程師技術支持合同
- 機場航站樓幕墻安裝協(xié)議
- 舞蹈室租賃合同
- 酒店屋頂防水維護服務合同
- 醫(yī)療衛(wèi)生合作的經濟合同管理辦法
- 暫停職務留薪協(xié)議
- 博物館展區(qū)鐵藝欄桿施工合同
- 花木綠化養(yǎng)護考核評分表
- (完整版)拌合站、水泥罐、攪拌站地基計算
- 錫柴6110發(fā)動機圖冊
- 中小企業(yè)辦公無線網絡設計與實現(xiàn)畢業(yè)設計論文
- 可研勘察設計費計費標準
- 刮泥機出廠檢測調試報告
- 運動處方知識點
- 某企業(yè)員工違規(guī)處理登記表(doc 2頁)
- 生物地理學熱帶生物群
- 小學數學科教師家長會優(yōu)秀PPT完整版
- 養(yǎng)殖恒溫室設計方案
評論
0/150
提交評論