![北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/f934a968-64c7-41d6-876e-2f830860fad8/f934a968-64c7-41d6-876e-2f830860fad81.gif)
![北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/f934a968-64c7-41d6-876e-2f830860fad8/f934a968-64c7-41d6-876e-2f830860fad82.gif)
![北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/f934a968-64c7-41d6-876e-2f830860fad8/f934a968-64c7-41d6-876e-2f830860fad83.gif)
![北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/f934a968-64c7-41d6-876e-2f830860fad8/f934a968-64c7-41d6-876e-2f830860fad84.gif)
![北郵微機(jī)原理實(shí)驗(yàn)報(bào)告_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/f934a968-64c7-41d6-876e-2f830860fad8/f934a968-64c7-41d6-876e-2f830860fad85.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(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)行匯編語(yǔ)言程序設(shè)計(jì);2.掌握基本分支,循環(huán)程序設(shè)計(jì);3.掌握最簡(jiǎn)單的 DOS 功能調(diào)用.二、實(shí)驗(yàn)任務(wù)及內(nèi)容1.安排一個(gè)數(shù)據(jù)區(qū),內(nèi)存有若干個(gè)正數(shù),負(fù)數(shù)和零。每類數(shù)的個(gè)數(shù)都不超過(guò) 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ù)。NYN開始初始化判斷是否大于等于零讀入一個(gè)數(shù)ZERO+1是否等于零返回DOS系統(tǒng)結(jié)束MINUS +1PLUS +1三、畫出程
2、序流程圖NNCX=0YY四、給出源程序(要求加注釋)data segmentbuff dw 1, 2, 0, 0 ,-1;數(shù)據(jù)段,初始化數(shù)據(jù)count equ $-buffplus db ?;定義三種數(shù)的存儲(chǔ)位置zero db ?minus db ?string1 db 'plus number:','$'string2 db 'zero number:','$'string3 db 'minus number:','$'data endsstack segment stack 'stack
3、'db 100 dup(?)stack endscode segmentassume cs:code,ds:data,es:data,ss:stackbegin:mov ax,datamov ds,axmov cx,countshr cx,1mov dx,0mov ah,0lea bx,buffagain:cmp word ptrbx,0;首先和0比較jge pluinc ah;小于零MINUS+1jmp nextplu:jz zer;判斷是否等于零,等于零ZERO+1inc dl;不等于零PLUS+1jmp nextzer:inc dhnext:inc bx;下一個(gè)數(shù)inc bxlo
4、op againadd dl,48mov plus,dladd dh,48mov zero,dhadd ah,48mov minus,ahshow:sub dx,dx;顯示模塊mov dx,offset string1mov ax,0900h;送顯示指令int 21hmov dl,plusmov ax,0200hint 21h mov dl,0dh int 21h mov dl,0ah int 21hmov dx,offset string2mov ax,0900hint 21hmov dl,zeromov ax,0200hint 21h mov dl,0dh int 21h mov dl,0
5、ah int 21h mov dx,offset string3mov ax,0900hint 21hmov ax,0200hmov dl,minusint 21hmov ax,4c00h;結(jié)束程序int 21hcode endsend begin五、給出程序運(yùn)行結(jié)果(運(yùn)行結(jié)果抓屏保存)data segment 中存入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 在屏幕上顯示出來(lái)? 答:對(duì)應(yīng)的ASCII碼是30H39H,把0-9加上30H即可得到對(duì)應(yīng)的ASCII,送給
6、DL,再執(zhí)行INT 21H即可顯示。 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ǔ)言編寫過(guò)比較大型的程序,但是是在編譯器中運(yùn)行,比較容易查錯(cuò),而且顯示、輸入等功能都是調(diào)用硬件實(shí)現(xiàn),因此很多經(jīng)驗(yàn)不能照搬,遇到了很多問(wèn)題,我發(fā)現(xiàn)匯編語(yǔ)言對(duì)程序內(nèi)部存儲(chǔ)器等的利用雖然比C語(yǔ)言麻煩,但是都是真正可以控制、可以調(diào)用顯示的,可以直接DEBUG看到內(nèi)存空間,非常直觀。由于在程序中存在很多條件跳轉(zhuǎn)語(yǔ)句,所
7、以需要在最初設(shè)計(jì)時(shí)就考慮好各種分支情況,在畫好程序流程圖之后,程序的編寫工作變得簡(jiǎn)單了很多,簡(jiǎn)化了編寫代碼過(guò)程中的思考過(guò)程。實(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ù),尋找其中的最小值,然后在屏幕上顯示出來(lái).2.兩個(gè)十進(jìn)制數(shù)之間的分隔符,輸入結(jié)束標(biāo)志自定,但要在報(bào)告中說(shuō)明.3.對(duì)輸入要有檢錯(cuò)措施,以防止非法字符輸入,并有適當(dāng)?shù)奶崾?4.將整個(gè)程序分解為若干模塊,分別用子程序?qū)崿F(xiàn).在報(bào)告中要給出模塊層次圖.與MIN比較,刷新最小值YY顯示YNY輸入結(jié)束符.N輸入空格開始初始化鍵盤輸入兩個(gè)字符
8、,存儲(chǔ)在連續(xù)空間檢測(cè)輸入是否正確三、畫出程序流程圖ERROR!四、給出源程序(要求加注釋)注:本程序段中 中斷字符為空格 結(jié)束字符為回車data segment;數(shù)據(jù)段初始化min db '9','9'string0 db 0dh,0ah, 'PLEASE INPUT SOME INTEGERS.DEVIDED with SPACE. STOP with ENTER',0dh,0ah,'$'string1 db 0dh,0ah, 'ERROR! PLEASE INPUT AGAIN!',0dh,0ah,'$
9、'string2 db 0dh,0ah, 'THE MINEST NUMBER IS:',0dh,0ah,'$'data endsSTACK SEGMENT STACK 'STACK' DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKINPUT PROC NEAR ;輸入子函數(shù) MOV AH,01H INT 21H ret input endptest1proc near;測(cè)試輸入是否為數(shù)字子函數(shù)cmp al,'0'jb errorcmp
10、 al,'9'ja errorjmp exiterror:mov al,0;輸入不為數(shù)字返回0exit:rettest1endpstart:mov ax,datamov ds,axmov dx,offset string0mov ax,0900hint 21hround:;循環(huán)主體call input;輸入第一個(gè)數(shù)call test1cmp al,00hjz wrong1;錯(cuò)誤提示mov bh,al;存儲(chǔ)call input;輸入第二個(gè)數(shù)call test1cmp al,00hjz wrong1mov bl,alcall inputcmp al,0dh;輸入是否結(jié)束jz sho
11、w;輸入結(jié)束轉(zhuǎn)移到顯示cmp al,' ';輸入分隔符,開始比較jz comparejmp wrong1wrong1:mov dx,offset string1mov ax,0900hint 21hjmp roundcompare:cmp bx,WORD PTR min;比較并刷新MINjb changejmp roundchange: mov word ptr min,bxjmp roundshow:;顯示子函數(shù)cmp bx,WORD PTR minjb swapswap:mov word ptr min,bxoutt:mov dx,offset string2mov ax,
12、0900hint 21hmov dl,min+1mov ax,0200hint 21hmov dl,minint 21hmov ax,4c00hint 21hcode endsend start五、給出程序運(yùn)行結(jié)果(運(yùn)行結(jié)果抓屏保存)結(jié)果講解:第一次由于輸入了三位數(shù),所以報(bào)錯(cuò);第二次由于輸入字母,所以報(bào)錯(cuò);第三次輸出正常結(jié)果,運(yùn)行成功。六、回答預(yù)習(xí)題1. 如何將輸入的兩個(gè)字符(09)變?yōu)槭M(jìn)制或二進(jìn)制數(shù)?答:減30H。2. 如何將選出的最小值(二進(jìn)制或十進(jìn)制)變?yōu)?ASCII 碼再進(jìn)行顯示?答:直接存儲(chǔ)輸入的ASCII,不需要轉(zhuǎn)換。如要轉(zhuǎn)換則加30H。你覺得采用二進(jìn)制運(yùn)算還是十進(jìn)制運(yùn)算更適合于
13、這個(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)用的PROC NEAR必須和子函數(shù)名同一行顯示,不然程序會(huì)報(bào)錯(cuò),還有不能把存儲(chǔ)器操作數(shù)作為目的操作數(shù),一定要通過(guò)寄存器轉(zhuǎn)換。匯編語(yǔ)言有很多需要注意的語(yǔ)法細(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é)生的某科目成績(jī).輸入按學(xué)生的學(xué)號(hào)由小到大的順序輸入.2.統(tǒng)計(jì)檢查每個(gè)學(xué)生的名次.3.將統(tǒng)計(jì)結(jié)果在屏幕上顯示.4.為便于觀察,輸入學(xué)生數(shù)目不
14、宜太多,以不超過(guò)一屏為宜.輸出應(yīng)便于閱讀.盡可能考慮美觀.5.輸入要有檢錯(cuò)手段.NY輸入是否合理開始提示輸入輸入子函數(shù)單字符輸入三、畫出程序流程圖調(diào)用檢驗(yàn)子函數(shù)Y輸入回車結(jié)束調(diào)用排序子函數(shù)調(diào)用顯示子函數(shù)結(jié)束四、給出源程序(要求加注釋)data segment;數(shù)據(jù)段初始化buff dw 20 dup(0000h);存放成績(jī)buff1 dw 20 dup(31h,32h,33h,34h,35h,36h,37h,38h,39h) ;存放學(xué)號(hào)count1 db 0;存放輸入了幾個(gè)數(shù)count2 db 0string0 db 0dh,0ah, 'PLEASE INPUT SCORES'
15、,0dh,0ah,'$'string1 db 0dh,0ah, 'ERROR! PLEASE INPUT AGAIN!',0dh,0ah,'$'string2 db 0dh,0ah, 'THE RANK :','$'string3 db 0dh,0ah, 'NUMBER :','$'data endsSTACK SEGMENT STACK 'STACK' DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DAT
16、A,SS:STACKINPUT PROC NEAR ;輸入子函數(shù) MOV AH,01H INT 21H ret input endptest1proc near;測(cè)試輸入是否為數(shù)字子函數(shù)cmp al,'0'jb errorcmp al,'9'ja errorjmp exiterror:mov al,0exit:rettest1endpsave1 proc near;存儲(chǔ)輸入的第一個(gè)數(shù)子函數(shù),存在高位lea si,buffmov cx,0mov cl,count1add si,cxadd si,1mov si,alinc cl;40mov count1,clret
17、save1 endpsave2 proc near;存儲(chǔ)輸入的第二個(gè)數(shù)子函數(shù),存在低位lea si,buffmov cx,0mov cl,count1add si,cxdec simov si,alinc cl;40mov count1,clretsave2 endpcompare proc near;比較兩個(gè)數(shù)大小并完成交換子函數(shù)cmp ax,bxjb changejmp exit0change: mov ch,0lea si,buffadd si,dxmov si,bxadd si,2mov si,axlea si,buff1add si,dxmov ax,si;交換成績(jī)同時(shí)交換學(xué)號(hào)add
18、 si,2mov bx,simov si,axsub si,2mov si,bxexit0:retcompare endpstart:mov ax,data;主程序入口mov ds,axmov dx,offset string0mov ax,0900hint 21hmov ax,0round:call input;輸入第一個(gè)數(shù)call test1;測(cè)試cmp al,00hjz wrong1;錯(cuò)誤提示call save1call input;輸入第二個(gè)數(shù)call test1cmp al,00hjz wrong1call save2call inputcmp al,0dhje list;輸入結(jié)束進(jìn)
19、入排序cmp al,' 'je roundjmp wrong1wrong1:mov dx,offset string1mov ah,09hint 21hmov cl,0mov count1,cljmp roundlist:mov cl,count1shr cl,1mov count2,cldec clmov count1,cljz showorder:mov cl,0;冒泡排序法外層循環(huán)order1:lea si,buff;冒泡排序法內(nèi)層循環(huán)mov dh,0mov dl,clshl dl,1 add si,dx;100mov ax,siadd si,2mov bx,sicall
20、 compareinc clcmp cl,count1je order2jmp order1order2:mov cl,count1dec clmov count1,cljnz orderjmp showshow:mov dx,offset string4;顯示名次mov ah,09hint 21hshow0:mov ah,02hlea si,buff2mov cl,count2show00:inc simov dl,siint 21hdec simov dl,siint 21hinc siinc simov dl,' 'int 21hdec cljnz show00show1:mov dl,0dh;顯示學(xué)號(hào)int 21hmov dx,offset string3mov ah,09hint 21hmov ah,02hlea si,buff1mov cl,count2show2:inc simov dl,siint 21hdec simov dl,sii
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國(guó)鉬絲探傷儀行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)蝎子行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年男子氧化標(biāo)槍項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)環(huán)類鍛件行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年改性丙烯酸水性卓面漆項(xiàng)目可行性研究報(bào)告
- 2025年工程機(jī)械萬(wàn)向節(jié)項(xiàng)目可行性研究報(bào)告
- 2025年內(nèi)旋轉(zhuǎn)式濃度變送器項(xiàng)目可行性研究報(bào)告
- 2025至2030年中國(guó)DL-肉毒堿鹽酸鹽數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年高強(qiáng)玻璃纖維紗項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年中國(guó)鋁材專用鋸數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 建筑工地工人職業(yè)健康體檢計(jì)劃
- 河南省鄭州市十校聯(lián)考2024-2025學(xué)年高二上學(xué)期11月期中考試語(yǔ)文試題
- 妊娠期肝內(nèi)膽汁淤積癥臨床診治和管理指南(2024版)解讀課件
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期期末 地理試題(含答案)
- 招聘專職人員報(bào)名表
- 《感冒中醫(yī)治療》課件
- 牛津上海版小學(xué)英語(yǔ)四年級(jí)下冊(cè)(英語(yǔ)單詞表)
- 2024年體育賽事運(yùn)動(dòng)員贊助合同3篇
- 2023年中考英語(yǔ)話題復(fù)習(xí)課件 健康與飲食
- 2023年機(jī)動(dòng)車檢測(cè)站質(zhì)量手冊(cè)和程序文件(根據(jù)補(bǔ)充要求編制)
- 路遙介紹課件
評(píng)論
0/150
提交評(píng)論