微機(jī)原理匯編實(shí)驗(yàn)二_第1頁
微機(jī)原理匯編實(shí)驗(yàn)二_第2頁
微機(jī)原理匯編實(shí)驗(yàn)二_第3頁
微機(jī)原理匯編實(shí)驗(yàn)二_第4頁
微機(jī)原理匯編實(shí)驗(yàn)二_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理與接口技術(shù)課程實(shí)驗(yàn)報告實(shí)驗(yàn)名稱:___數(shù)碼轉(zhuǎn)換程序?qū)嶒?yàn)________姓名:學(xué)號:同組:實(shí)驗(yàn)日期:一、實(shí)驗(yàn)?zāi)康恼莆詹煌M(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計(jì)方法。熟悉掌握用debug調(diào)試程序的方法。掌握部分DOS功能調(diào)用使用方法。加深對數(shù)碼轉(zhuǎn)換的理解。實(shí)驗(yàn)內(nèi)容(1)完成基本實(shí)驗(yàn),將30H,30H,30H,31H,32H轉(zhuǎn)換為十六進(jìn)制數(shù)輸出:1、繪制程序流程圖;2、編寫實(shí)驗(yàn)程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng);3、待轉(zhuǎn)換數(shù)據(jù)存放于數(shù)據(jù)段,根據(jù)自己要求輸入,默認(rèn)為30H,30H,30H,31H,32H;4、運(yùn)行程序,然后停止程序;5、輸出AX寄存器的值,即轉(zhuǎn)換結(jié)果,應(yīng)為:000C。(2)數(shù)值修改輸出:將30H,30H,30H,31H,32H改為30H,30H,32H,35H,35H進(jìn)行實(shí)驗(yàn)輸出AX寄存器的值,即轉(zhuǎn)換結(jié)果,應(yīng)為:00FF。將30H,30H,30H,31H,32H改為30H,30H,32H,35H,36H進(jìn)行實(shí)驗(yàn),若有問題,請修改程序修改前:輸出AX寄存器的值,即轉(zhuǎn)換結(jié)果,應(yīng)為:0000。修改后:輸出AX寄存器的值,即轉(zhuǎn)換結(jié)果,應(yīng)為:0100。實(shí)驗(yàn)方案(簡要總結(jié))實(shí)驗(yàn)方案運(yùn)行Tddebug軟件,選擇Edit菜單,根據(jù)實(shí)驗(yàn)內(nèi)容的描述編寫實(shí)驗(yàn)程序,本實(shí)驗(yàn)顯示部分參考實(shí)驗(yàn)流程如下圖所示。使用Compile菜單中的Compile和Link對實(shí)驗(yàn)程序進(jìn)行匯編、連接。使用Rmrun菜單中的Run,運(yùn)行程序,觀察運(yùn)行結(jié)果。使用Rmrun菜單中的Debug,調(diào)試程序,觀察調(diào)試過程中,數(shù)據(jù)傳輸指令執(zhí)行后,各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。圖2十進(jìn)制ASCII轉(zhuǎn)換為二進(jìn)制數(shù)參考流程圖四、實(shí)驗(yàn)結(jié)果及體會實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)1:將ASCII碼轉(zhuǎn)換為十六進(jìn)制結(jié)果:顯示結(jié)果為000C,與預(yù)期結(jié)果相符結(jié)論:實(shí)驗(yàn)成功實(shí)驗(yàn)2:修改為DB30H,30H,32H,35H,35H后顯示結(jié)果結(jié)果:顯示結(jié)果為00FF,與預(yù)期結(jié)果相符結(jié)論:實(shí)驗(yàn)成功實(shí)驗(yàn)3:修改為DB30H,30H,32H,35H,36H后顯示結(jié)果結(jié)果:顯示結(jié)果為0000,與預(yù)期結(jié)果0100不符結(jié)論:代碼有誤,代碼需要修改分析:0100H至少需要9bits表示,而AL寄存器只有8bits,產(chǎn)生溢出現(xiàn)象,AL寄存器的值為00H,而AH寄存器中的值仍為00H,故顯示的AX值為0000H改進(jìn):使用帶進(jìn)位的加法ADC,使得AL產(chǎn)生溢出時,向AH進(jìn)位:在A1中的ADDAL,[SI+01]SUBAL,30H兩行代碼之間再加一行ADCAH,00H即可正確顯示結(jié)果修改后的A1為:A1:IMULBXADDAL,[SI+01]ADCAH,00H;向AH進(jìn)位SUBAL,30H;也可寫成SUBAX,30HINCSILOOPA1編譯測試:結(jié)果:顯示結(jié)果為0100,與預(yù)期結(jié)果相符結(jié)論:實(shí)驗(yàn)成功(2)實(shí)驗(yàn)體會在做顯示程序?qū)嶒?yàn)實(shí)驗(yàn)前,我以為不會難做,就像以前做物理實(shí)驗(yàn)一樣,做完實(shí)驗(yàn),然后兩下子就將實(shí)驗(yàn)報告做完。直到做完實(shí)驗(yàn)時,我才知道其實(shí)并不容易做,但學(xué)到的知識與難度成正比,使我受益匪淺。通過這個實(shí)驗(yàn),我學(xué)習(xí)了匯編語言,掌握了匯編語言的基本語法和編程,同時我掌握了在PC機(jī)上不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計(jì)方法,部分DOS功能調(diào)用使用方法,并且熟悉了Tddebug調(diào)試環(huán)境和對TurboDebugger的使用。這次的實(shí)驗(yàn),我學(xué)到了不少實(shí)用的知識,更重要的是,做實(shí)驗(yàn)的過程,思考問題的方法,這與做其他的實(shí)驗(yàn)是通用的,真正使我受益匪淺。實(shí)驗(yàn)程序清單相關(guān)代碼:代碼1:將30H,30H,30H,31H,32H轉(zhuǎn)換為十六進(jìn)制數(shù)輸出STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDDATASEGMENTMES1DB'Theasciicodeofdecimalcodeare:$'BUFDB30H,30H,30H,31H,32HDB10HDUP(0)DDATAENDSCODESEGMENTASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVSI,OFFSETBUFMOVBX,000AHMOVCX,0004HMOVAH,00HMOVAL,[SI]SUBAL,30HA1:IMULBXADDAL,[SI+01]SUBAL,30HINCSILOOPA1MOV[SI],AXMOVDX,OFFSETMES1MOVAH,09HINT21HINCSI;顯示高字節(jié)CALLSHOWDECSI;顯示低字節(jié)CALLSHOWMOVAX,4C00HINT21HSHOWPROCNEARMOVAL,DS:[SI]ANDAL,0F0H;取高4位 MOVCX,4SHRAL,CXCMPAL,0AH;是否是A以上的數(shù)JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;showcharacterMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FH;取低4位CMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,AL;showcharacterMOVAH,02HINT21HRETSHOWENDPCODEENDSENDSTART代碼2:將30H,30H,32H,35H,35H轉(zhuǎn)換為十六進(jìn)制數(shù)輸出STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDDATASEGMENTMES1DB'Theasciicodeofdecimalcodeare:$'BUFDB30H,30H,32H,35H,35HDB10HDUP(0)DDATAENDSCODESEGMENTASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVSI,OFFSETBUFMOVBX,000AHMOVCX,0004HMOVAH,00HMOVAL,[SI]SUBAL,30HA1:IMULBXADDAL,[SI+01]SUBAL,30HINCSILOOPA1MOV[SI],AXMOVDX,OFFSETMES1MOVAH,09HINT21HINCSI;顯示高字節(jié)CALLSHOWDECSI;顯示低字節(jié)CALLSHOWMOVAX,4C00HINT21HSHOWPROCNEARMOVAL,DS:[SI]ANDAL,0F0H;取高4位 MOVCX,4SHRAL,CXCMPAL,0AH;是否是A以上的數(shù)JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;showcharacterMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FH;取低4位CMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,AL;showcharacterMOVAH,02HINT21HRETSHOWENDPCODEENDSENDSTART代碼3:將30H,30H,32H,35H,36H轉(zhuǎn)換為十六進(jìn)制數(shù)輸出修改后的代碼(為使轉(zhuǎn)換256時不溢出):STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDDATASEGMENTMES1DB'Theasciicodeofdecimalcodeare:$'BUFDB30H,30H,30H,31H,32HDB10HDUP(0)DDATAENDSCODESEGMENTASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVSI,OFFSETBUFMOVBX,000AHMOVCX,0004HMOVAH,00HMOVAL,[SI]SUBAL,30HA1:IMULBXADDAL,[SI+01]ADCAH,00H;向AH進(jìn)位SUBAL,30H;也可寫成SUBAX,30HINCSILOOPA1MOV[SI],AXMOVDX,OFFSETMES1MOVAH,09HINT21HINCSI;顯示高字節(jié)CALLSHOWDECSI;顯示低字節(jié)CALLSHOWMOVAX,4C00HINT21HSHOWPROCNEARMOVAL,DS:[SI]ANDAL,0F0H;取高4位MOVCX,4SHRAL,CXCMPAL,0AH;是否是A以上的數(shù)JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;showcharacter

溫馨提示

  • 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

提交評論