北郵微機原理實驗報告_第1頁
北郵微機原理實驗報告_第2頁
北郵微機原理實驗報告_第3頁
北郵微機原理實驗報告_第4頁
北郵微機原理實驗報告_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

..微機原理軟件實驗報告學院:信息與通信工程學院班級:2012211123班內序號:學生__學號:實驗二分支,循環(huán)程序設計一、實驗目的1.開始獨立進行匯編語言程序設計;2.掌握基本分支,循環(huán)程序設計;3.掌握最簡單的DOS功能調用.二、實驗任務及內容1.安排一個數據區(qū),內存有若干個正數,負數和零。每類數的個數都不超過9。2.編寫一個程序統(tǒng)計數據區(qū)中正數,負數和零的個數。3.將統(tǒng)計結果在屏幕上顯示。4.〔擴展題統(tǒng)計出正奇數、正偶數,負奇數、負偶數以及零的個數。NYNYN開始初始化判斷是否大于等于零讀入一個數ZERO+1是否等于零返回DOS系統(tǒng)結束MINUS+1PLUS+1NNNNCX=0YCX=0YYY四、給出源程序〔要求加注釋datasegmentbuffdw1,2,0,0,-1;數據段,初始化數據countequ$-buffplusdb?;定義三種數的存儲位置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;下一個數 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;結束程序 int21hcodeends endbegin五、給出程序運行結果〔運行結果抓屏保存datasegment中存入1,2,0,0,-1顯示有2個0、2個大于0的數、1個小于0的數,結果正確六、預習題1.十進制數0--9所對應的ASCII碼是什么?如何將十進制數0-9在屏幕上顯示出來?答:對應的ASCII碼是30H~39H,把0-9加上30H即可得到對應的ASCII,送給DL,再執(zhí)行INT21H即可顯示。2.如何檢驗一個數為正,為負或為零?你能舉出多少種不同的方法?答:1先判斷是否大于等于零,否則為負數,是則判斷是否等于零,否則為整數。2.判斷ZF標志位,為零則循環(huán)左移一直判斷,為1為負,為0為正七、實驗總結、建議要求、心得體會之前小學期中已經用匯編語言編寫過比較大型的程序,但是是在編譯器中運行,比較容易查錯,而且顯示、輸入等功能都是調用硬件實現(xiàn),因此很多經驗不能照搬,遇到了很多問題,我發(fā)現(xiàn)匯編語言對程序內部存儲器等的利用雖然比C語言麻煩,但是都是真正可以控制、可以調用顯示的,可以直接DEBUG看到內存空間,非常直觀。由于在程序中存在很多條件跳轉語句,所以需要在最初設計時就考慮好各種分支情況,在畫好程序流程圖之后,程序的編寫工作變得簡單了很多,簡化了編寫代碼過程中的思考過程。實驗三代碼轉換程序設計一、實驗目的1.掌握幾種最基本的代碼轉換方法;2.運用子程序進行程序設計.二、實驗任務及內容1.從鍵盤上輸入若干兩位十進制數,尋找其中的最小值,然后在屏幕上顯示出來.2.兩個十進制數之間的分隔符,輸入結束標志自定,但要在報告中說明.3.對輸入要有檢錯措施,以防止非法字符輸入,并有適當的提示.4.將整個程序分解為若干模塊,分別用子程序實現(xiàn).在報告中要給出模塊層次圖.與MIN比較,與MIN比較,刷新最小值YY顯示YNY輸入結束符.N輸入空格開始初始化鍵盤輸入兩個字符,存儲在連續(xù)空間檢測輸入是否正確ERROR!ERROR!四、給出源程序〔要求加注釋注:本程序段中中斷字符為空格結束字符為回車datasegment ;數據段初始化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;輸入子函數MOVAH,01H INT21H retinputendptest1 procnear;測試輸入是否為數字子函數 cmpal,'0' jberror cmpal,'9' jaerror jmpexiterror: moval,0;輸入不為數字返回0exit: rettest1 endpstart: movax,data movds,ax movdx,offsetstring0 movax,0900h int21hround:;循環(huán)主體 callinput;輸入第一個數 calltest1 cmpal,00h jzwrong1;錯誤提示 movbh,al;存儲callinput;輸入第二個數 calltest1 cmpal,00h jzwrong1 movbl,al callinput cmpal,0dh;輸入是否結束 jzshow;輸入結束轉移到顯示 cmpal,'';輸入分隔符,開始比較 jzcompare jmpwrong1wrong1: movdx,offsetstring1 movax,0900h int21h jmproundcompare:cmpbx,WORDPTRmin;比較并刷新MIN jbchange jmproundchange:movwordptrmin,bx jmproundshow: ;顯示子函數 cmpbx,WORDPTRmin jbswapswap: movwordptrmin,bxoutt: movdx,offsetstring2 movax,0900h int21h movdl,min+1 movax,0200h int21h movdl,min int21h movax,4c00h int21hcodeends endstart五、給出程序運行結果〔運行結果抓屏保存結果講解:第一次由于輸入了三位數,所以報錯;第二次由于輸入字母,所以報錯;第三次輸出正常結果,運行成功。六、回答預習題如何將輸入的兩個字符<0~9>變?yōu)槭M制或二進制數?答:減30H。如何將選出的最小值<二進制或十進制>變?yōu)锳SCII碼再進行顯示?答:直接存儲輸入的ASCII,不需要轉換。如要轉換則加30H。你覺得采用二進制運算還是十進制運算更適合于這個實驗?答:二進制運算,直接保存輸入的數的二進制編碼,直接比較,不需要區(qū)分十位個位。七、實驗總結、建議要求、心得體會練習了調用子函數,發(fā)現(xiàn)子函數調用的PROCNEAR必須和子函數名同一行顯示,不然程序會報錯,還有不能把存儲器操作數作為目的操作數,一定要通過寄存器轉換。匯編語言有很多需要注意的語法細節(jié),應該多多練習。實驗四子程序設計實驗目的1.進一步掌握子程序設計方法;2.進一步掌握基本的DOS功能調用.二、實驗任務及內容1.從鍵盤上輸入某班學生的某科目成績.輸入按學生的學號由小到大的順序輸入.2.統(tǒng)計檢查每個學生的名次.3.將統(tǒng)計結果在屏幕上顯示.4.為便于觀察,輸入學生數目不宜太多,以不超過一屏為宜.輸出應便于閱讀.盡可能考慮美觀.5.輸入要有檢錯手段.NYNY輸入是否合理開始提示輸入輸入子函數單字符輸入調用調用檢驗子函數YY輸入輸入回車結束調用排序子調用排序子函數調用調用顯示子函數結束結束四、給出源程序〔要求加注釋datasegment;數據段初始化buffdw20dup<0000h>;存放成績buff1dw20dup<31h,32h,33h,34h,35h,36h,37h,38h,39h>;存放學號count1db0;存放輸入了幾個數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;輸入子函數MOVAH,01H INT21H retinputendp test1 procnear;測試輸入是否為數字子函數 cmpal,'0' jberror cmpal,'9' jaerror jmpexiterror: moval,0exit: rettest1 endpsave1 procnear;存儲輸入的第一個數子函數,存在高位 leasi,buff movcx,0 movcl,count1 addsi,cx addsi,1 mov[si],al inccl ;40 movcount1,cl retsave1 endpsave2 procnear;存儲輸入的第二個數子函數,存在低位 leasi,buff movcx,0 movcl,count1 addsi,cx decsi mov[si],al inccl ;40 movcount1,cl retsave2 endpcompareprocnear;比較兩個數大小并完成交換子函數 cmpax,bx jbchange jmpexit0change:movch,0 leasi,buff addsi,dx mov[si],bx addsi,2 mov[si],ax leasi,buff1 addsi,dx movax,[si];交換成績同時交換學號 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;輸入第一個數 calltest1;測試 cmpal,00h jzwrong1;錯誤提示 callsave1 callinput;輸入第二個數 calltest1 cmpal,00h jzwrong1 callsave2 callinput cmpal,0dh jelist;輸入結束進入排序 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;冒泡排序法內層循環(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 ;顯示學號 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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論