北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第1頁
北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第2頁
北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第3頁
北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第4頁
北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

..微機(jī)原理軟件實(shí)驗(yàn)報(bào)告學(xué)院:信息與通信工程學(xué)院班級(jí):2012211123班內(nèi)序號(hào):學(xué)生__學(xué)號(hào):實(shí)驗(yàn)二分支,循環(huán)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.開始獨(dú)立進(jìn)行匯編語言程序設(shè)計(jì);2.掌握基本分支,循環(huán)程序設(shè)計(jì);3.掌握最簡單的DOS功能調(diào)用.二、實(shí)驗(yàn)任務(wù)及內(nèi)容1.安排一個(gè)數(shù)據(jù)區(qū),內(nèi)存有若干個(gè)正數(shù),負(fù)數(shù)和零。每類數(shù)的個(gè)數(shù)都不超過9。2.編寫一個(gè)程序統(tǒng)計(jì)數(shù)據(jù)區(qū)中正數(shù),負(fù)數(shù)和零的個(gè)數(shù)。3.將統(tǒng)計(jì)結(jié)果在屏幕上顯示。4.〔擴(kuò)展題統(tǒng)計(jì)出正奇數(shù)、正偶數(shù),負(fù)奇數(shù)、負(fù)偶數(shù)以及零的個(gè)數(shù)。NYNYN開始初始化判斷是否大于等于零讀入一個(gè)數(shù)ZERO+1是否等于零返回DOS系統(tǒng)結(jié)束MINUS+1PLUS+1NNNNCX=0YCX=0YYY四、給出源程序〔要求加注釋datasegmentbuffdw1,2,0,0,-1;數(shù)據(jù)段,初始化數(shù)據(jù)countequ$-buffplusdb?;定義三種數(shù)的存儲(chǔ)位置zerodb?minusdb?string1db'plusnumber:','$'string2db'zeronumber:','$'string3db'minusnumber:','$'dataendsstacksegmentstack'stack' db100dup<?>stackendscodesegment assumecs:code,ds:data,es:data,ss:stackbegin: movax,data movds,ax movcx,count shrcx,1 movdx,0 movah,0 leabx,buffagain: cmpwordptr[bx],0;首先和0比較 jgeplu incah;小于零MINUS+1 jmpnextplu: jzzer;判斷是否等于零,等于零ZERO+1 incdl;不等于零PLUS+1 jmpnextzer: incdhnext: incbx;下一個(gè)數(shù) incbx loopagain adddl,48 movplus,dl adddh,48 movzero,dh addah,48 movminus,ahshow: subdx,dx;顯示模塊 movdx,offsetstring1 movax,0900h;送顯示指令 int21h movdl,[plus] movax,0200h int21hmovdl,0dhint21hmovdl,0ahint21h movdx,offsetstring2 movax,0900h int21h movdl,[zero] movax,0200h int21hmovdl,0dhint21hmovdl,0ahint21hmovdx,offsetstring3 movax,0900h int21h movax,0200h movdl,[minus] int21h movax,4c00h;結(jié)束程序 int21hcodeends endbegin五、給出程序運(yùn)行結(jié)果〔運(yùn)行結(jié)果抓屏保存datasegment中存入1,2,0,0,-1顯示有2個(gè)0、2個(gè)大于0的數(shù)、1個(gè)小于0的數(shù),結(jié)果正確六、預(yù)習(xí)題1.十進(jìn)制數(shù)0--9所對(duì)應(yīng)的ASCII碼是什么?如何將十進(jìn)制數(shù)0-9在屏幕上顯示出來?答:對(duì)應(yīng)的ASCII碼是30H~39H,把0-9加上30H即可得到對(duì)應(yīng)的ASCII,送給DL,再執(zhí)行INT21H即可顯示。2.如何檢驗(yàn)一個(gè)數(shù)為正,為負(fù)或?yàn)榱?你能舉出多少種不同的方法?答:1先判斷是否大于等于零,否則為負(fù)數(shù),是則判斷是否等于零,否則為整數(shù)。2.判斷ZF標(biāo)志位,為零則循環(huán)左移一直判斷,為1為負(fù),為0為正七、實(shí)驗(yàn)總結(jié)、建議要求、心得體會(huì)之前小學(xué)期中已經(jīng)用匯編語言編寫過比較大型的程序,但是是在編譯器中運(yùn)行,比較容易查錯(cuò),而且顯示、輸入等功能都是調(diào)用硬件實(shí)現(xiàn),因此很多經(jīng)驗(yàn)不能照搬,遇到了很多問題,我發(fā)現(xiàn)匯編語言對(duì)程序內(nèi)部存儲(chǔ)器等的利用雖然比C語言麻煩,但是都是真正可以控制、可以調(diào)用顯示的,可以直接DEBUG看到內(nèi)存空間,非常直觀。由于在程序中存在很多條件跳轉(zhuǎn)語句,所以需要在最初設(shè)計(jì)時(shí)就考慮好各種分支情況,在畫好程序流程圖之后,程序的編寫工作變得簡單了很多,簡化了編寫代碼過程中的思考過程。實(shí)驗(yàn)三代碼轉(zhuǎn)換程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?.掌握幾種最基本的代碼轉(zhuǎn)換方法;2.運(yùn)用子程序進(jìn)行程序設(shè)計(jì).二、實(shí)驗(yàn)任務(wù)及內(nèi)容1.從鍵盤上輸入若干兩位十進(jìn)制數(shù),尋找其中的最小值,然后在屏幕上顯示出來.2.兩個(gè)十進(jìn)制數(shù)之間的分隔符,輸入結(jié)束標(biāo)志自定,但要在報(bào)告中說明.3.對(duì)輸入要有檢錯(cuò)措施,以防止非法字符輸入,并有適當(dāng)?shù)奶崾?4.將整個(gè)程序分解為若干模塊,分別用子程序?qū)崿F(xiàn).在報(bào)告中要給出模塊層次圖.與MIN比較,與MIN比較,刷新最小值YY顯示YNY輸入結(jié)束符.N輸入空格開始初始化鍵盤輸入兩個(gè)字符,存儲(chǔ)在連續(xù)空間檢測輸入是否正確ERROR!ERROR!四、給出源程序〔要求加注釋注:本程序段中中斷字符為空格結(jié)束字符為回車datasegment ;數(shù)據(jù)段初始化mindb'9','9'string0db0dh,0ah,'PLEASEINPUTSOMEINTEGERS.DEVIDEDwithSPACE.STOPwithENTER',0dh,0ah,'$'string1db0dh,0ah,'ERROR!PLEASEINPUTAGAIN!',0dh,0ah,'$'string2db0dh,0ah,'THEMINESTNUMBERIS:',0dh,0ah,'$'dataendsSTACKSEGMENTSTACK'STACK'DB100DUP<?>STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKINPUTPROCNEAR;輸入子函數(shù)MOVAH,01H INT21H retinputendptest1 procnear;測試輸入是否為數(shù)字子函數(shù) cmpal,'0' jberror cmpal,'9' jaerror jmpexiterror: moval,0;輸入不為數(shù)字返回0exit: rettest1 endpstart: movax,data movds,ax movdx,offsetstring0 movax,0900h int21hround:;循環(huán)主體 callinput;輸入第一個(gè)數(shù) calltest1 cmpal,00h jzwrong1;錯(cuò)誤提示 movbh,al;存儲(chǔ)callinput;輸入第二個(gè)數(shù) calltest1 cmpal,00h jzwrong1 movbl,al callinput cmpal,0dh;輸入是否結(jié)束 jzshow;輸入結(jié)束轉(zhuǎn)移到顯示 cmpal,'';輸入分隔符,開始比較 jzcompare jmpwrong1wrong1: movdx,offsetstring1 movax,0900h int21h jmproundcompare:cmpbx,WORDPTRmin;比較并刷新MIN jbchange jmproundchange:movwordptrmin,bx jmproundshow: ;顯示子函數(shù) cmpbx,WORDPTRmin jbswapswap: movwordptrmin,bxoutt: movdx,offsetstring2 movax,0900h int21h movdl,min+1 movax,0200h int21h movdl,min int21h movax,4c00h int21hcodeends endstart五、給出程序運(yùn)行結(jié)果〔運(yùn)行結(jié)果抓屏保存結(jié)果講解:第一次由于輸入了三位數(shù),所以報(bào)錯(cuò);第二次由于輸入字母,所以報(bào)錯(cuò);第三次輸出正常結(jié)果,運(yùn)行成功。六、回答預(yù)習(xí)題如何將輸入的兩個(gè)字符<0~9>變?yōu)槭M(jìn)制或二進(jìn)制數(shù)?答:減30H。如何將選出的最小值<二進(jìn)制或十進(jìn)制>變?yōu)锳SCII碼再進(jìn)行顯示?答:直接存儲(chǔ)輸入的ASCII,不需要轉(zhuǎn)換。如要轉(zhuǎn)換則加30H。你覺得采用二進(jìn)制運(yùn)算還是十進(jìn)制運(yùn)算更適合于這個(gè)實(shí)驗(yàn)?答:二進(jìn)制運(yùn)算,直接保存輸入的數(shù)的二進(jìn)制編碼,直接比較,不需要區(qū)分十位個(gè)位。七、實(shí)驗(yàn)總結(jié)、建議要求、心得體會(huì)練習(xí)了調(diào)用子函數(shù),發(fā)現(xiàn)子函數(shù)調(diào)用的PROCNEAR必須和子函數(shù)名同一行顯示,不然程序會(huì)報(bào)錯(cuò),還有不能把存儲(chǔ)器操作數(shù)作為目的操作數(shù),一定要通過寄存器轉(zhuǎn)換。匯編語言有很多需要注意的語法細(xì)節(jié),應(yīng)該多多練習(xí)。實(shí)驗(yàn)四子程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康?.進(jìn)一步掌握子程序設(shè)計(jì)方法;2.進(jìn)一步掌握基本的DOS功能調(diào)用.二、實(shí)驗(yàn)任務(wù)及內(nèi)容1.從鍵盤上輸入某班學(xué)生的某科目成績.輸入按學(xué)生的學(xué)號(hào)由小到大的順序輸入.2.統(tǒng)計(jì)檢查每個(gè)學(xué)生的名次.3.將統(tǒng)計(jì)結(jié)果在屏幕上顯示.4.為便于觀察,輸入學(xué)生數(shù)目不宜太多,以不超過一屏為宜.輸出應(yīng)便于閱讀.盡可能考慮美觀.5.輸入要有檢錯(cuò)手段.NYNY輸入是否合理開始提示輸入輸入子函數(shù)單字符輸入調(diào)用調(diào)用檢驗(yàn)子函數(shù)YY輸入輸入回車結(jié)束調(diào)用排序子調(diào)用排序子函數(shù)調(diào)用調(diào)用顯示子函數(shù)結(jié)束結(jié)束四、給出源程序〔要求加注釋datasegment;數(shù)據(jù)段初始化buffdw20dup<0000h>;存放成績buff1dw20dup<31h,32h,33h,34h,35h,36h,37h,38h,39h>;存放學(xué)號(hào)count1db0;存放輸入了幾個(gè)數(shù)count2db0string0db0dh,0ah,'PLEASEINPUTSCORES',0dh,0ah,'$'string1db0dh,0ah,'ERROR!PLEASEINPUTAGAIN!',0dh,0ah,'$'string2db0dh,0ah,'THERANK:','$'string3db0dh,0ah,'NUMBER:','$'dataendsSTACKSEGMENTSTACK'STACK'DB100DUP<?>STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKINPUTPROCNEAR;輸入子函數(shù)MOVAH,01H INT21H retinputendp test1 procnear;測試輸入是否為數(shù)字子函數(shù) cmpal,'0' jberror cmpal,'9' jaerror jmpexiterror: moval,0exit: rettest1 endpsave1 procnear;存儲(chǔ)輸入的第一個(gè)數(shù)子函數(shù),存在高位 leasi,buff movcx,0 movcl,count1 addsi,cx addsi,1 mov[si],al inccl ;40 movcount1,cl retsave1 endpsave2 procnear;存儲(chǔ)輸入的第二個(gè)數(shù)子函數(shù),存在低位 leasi,buff movcx,0 movcl,count1 addsi,cx decsi mov[si],al inccl ;40 movcount1,cl retsave2 endpcompareprocnear;比較兩個(gè)數(shù)大小并完成交換子函數(shù) cmpax,bx jbchange jmpexit0change:movch,0 leasi,buff addsi,dx mov[si],bx addsi,2 mov[si],ax leasi,buff1 addsi,dx movax,[si];交換成績同時(shí)交換學(xué)號(hào) addsi,2 movbx,[si] mov[si],ax subsi,2 mov[si],bxexit0: retcompareendp start: movax,data;主程序入口 movds,ax movdx,offsetstring0 movax,0900h int21h movax,0round: callinput;輸入第一個(gè)數(shù) calltest1;測試 cmpal,00h jzwrong1;錯(cuò)誤提示 callsave1 callinput;輸入第二個(gè)數(shù) calltest1 cmpal,00h jzwrong1 callsave2 callinput cmpal,0dh jelist;輸入結(jié)束進(jìn)入排序 cmpal,'' jeround jmpwrong1wrong1: movdx,offsetstring1 movah,09h int21h movcl,0 movcount1,cl jmproundlist: movcl,count1 shrcl,1 movcount2,cl deccl movcount1,cl jzshoworder: movcl,0;冒泡排序法外層循環(huán)order1: leasi,buff;冒泡排序法內(nèi)層循環(huán) movdh,0 movdl,cl shldl,1 addsi,dx ;100 movax,[si] addsi,2 movbx,[si] callcompare inccl cmpcl,count1 jeorder2 jmporder1order2: movcl,count1 deccl movcount1,cl jnzorder jmpshowshow: movdx,offsetstring4 ;顯示名次 movah,09h int21hshow0: movah,02h leasi,buff2 movcl,count2show00: incsi movdl,[si] int21h decsi movdl,[si] int21h incsi incsi movdl,'' int21h deccl jnzshow00show1: movdl,0dh ;顯示學(xué)號(hào) int21h movdx,offsetstring3 movah,09h int21h movah,02h leasi,buff1 movcl,count2show2: incsi movdl,[si] int21h decsi movdl,[si] int21h incsi incsi

溫馨提示

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

評(píng)論

0/150

提交評(píng)論