北郵微機原理軟件實驗報告_第1頁
北郵微機原理軟件實驗報告_第2頁
北郵微機原理軟件實驗報告_第3頁
北郵微機原理軟件實驗報告_第4頁
北郵微機原理軟件實驗報告_第5頁
免費預(yù)覽已結(jié)束,剩余35頁可下載查看

下載本文檔

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

文檔簡介

1、微機原理軟件實驗報告Word資料實驗二分支、循環(huán)程序設(shè)計.實驗?zāi)康? .開始獨立進行匯編語言程序設(shè)計。2 .掌握基本分支,循環(huán)程序設(shè)計。3 .掌握最簡單的DOS功能調(diào)用。二.實驗內(nèi)容1 .安排一個數(shù)據(jù)區(qū),內(nèi)存有若干個正數(shù),負(fù)數(shù)和零。每類數(shù)的個數(shù)都不超過 92 .編寫一個程序統(tǒng)計數(shù)據(jù)區(qū)中正數(shù),負(fù)數(shù)和零的個數(shù)。3 .將統(tǒng)計結(jié)果在屏幕上顯示。三.流程圖四.源代碼DATA SEGMENTZ DW 0;數(shù)據(jù)中0的個數(shù)A DW 0;數(shù)據(jù)中大于0的個數(shù)B DW 0;數(shù)據(jù)中小于0的個數(shù)NUMDW 9,8,0,-7,6,-5,-4,32-1,0,-8,-1,9,0,0,1;設(shè)定的一組數(shù)據(jù),其中 4 個 0,7個

2、正數(shù),6個負(fù)數(shù),符合題目要求N DW ($-NUM)/2;該組數(shù)據(jù)的個數(shù)TYPE0 DB 0DH, 0AH, 'Number of zeros : $'TYPE1 DB 0DH, 0AH, 'Number of greater than 0 : $'TYPE2 DB 0DH, 0AH, 'Number of less than 0 : $'LOCATE DW TYPE0, TYPE1, TYPE2DATA ENDSSTACK SEGMENT STACKDW 128 DUPSTACK ENDSCODE SEGMENTASSUME DS:DATA,

3、SS:STACK, CS:CODESTART: MOV AX, DATAMOV DS, AX;初始化DS、SS指向STA;將NUM中第一個數(shù)字的地址送入 BX;將N中數(shù)字個數(shù)送入CXMOV AX, STACKMOV SS, AXMOV BX, OFFSET NUMMOV CX, NLOOP1: MOV AX, BX ;取出NUM中的第一個數(shù)字CMP AX, 0;與零相比SAL AX, 1JC IFLINC WORD PTR AJMP CONTINUEIFL: INC WORD PTR BJMP CONTINUEIFZ: INC ZCONTINUE:ADD BX, 2LOOP LOOP1MOV

4、CX, 3XOR BX, BXJZ IFZ;判斷結(jié)果為是0,跳轉(zhuǎn)到IFZ處繼續(xù)執(zhí)行;判斷結(jié)果是小于0,跳轉(zhuǎn)到IFL;否則,A自加,然后繼續(xù)執(zhí)行程序;B計數(shù)加1;Z計數(shù)加1;指針+2 ,繼續(xù)送入下一數(shù)字;循環(huán)CX次判斷;共顯示3個字符串DISP:;DOS 09號功能調(diào)用,顯示字符串MOV DX, LOCATEBXMOV AH, 09HINT 21HWord資料MOVDX, ZBXADDDX, '0'轉(zhuǎn)換為ASCII碼MOVAH, 02H;DOS 02號功能調(diào)用,顯示字符INT 21HADDBX, 2指針+2 (DW)LOOPDISPMOVAX, 4C00HINT 21H;返回DO

5、S系統(tǒng)CODE ENDSEND START五.運行結(jié)果S CA'W ndc,箏,- debug b.rxe!3ross-rGfcrt)ncc INLI CRF1Source listing NUL AST;49774 * 4H882 RyWs wmhol spacr free9 Warninfl Errors H Severs hrrnrsC;mas»5>1ink b.objNicrosoft (FH Overlay Linker Version 3.GCpnpright (C) Microsoft Corp 1S83-1987 All rights resertfed

6、.Rtn File (BTKC1.isi File NUL.HnPl:Libraries .LIBI,C: mash5>ckbug b exePNumber of zaros : 4Nijrah(ir oF grcri I isr thrin B ; 7Miiwber of Jthon 0 : 6Pro<jras terminated nornallv六.預(yù)習(xí)題1 .十進制數(shù)0 - 9所對應(yīng)的ASCII碼是什么?如何將十進制數(shù)0 - 9在屏幕上顯示出來?答:09 的 ASCII 碼值依次為:30H,31H,32H,33H,34H,35H,36H,37H,38H,39H 。用待顯示數(shù)

7、加30H即可得到對應(yīng)ASCII碼,將待顯示數(shù)的ASCII碼值賦給DX, 使用“INT 21H" 02號DOS功能調(diào)用顯示字符。2 .如何檢驗一個數(shù)為正,為負(fù)或為零?你能舉出多少種不同的方法?答:方法1:用test指令檢查該數(shù)最高位。若為0,則為正數(shù)。否則,檢測其余位判斷為負(fù)數(shù)或00方法2:用cmp指令將該數(shù)與0相比,判斷標(biāo)志寄存器。SFOF=0,為正數(shù)或00否則為負(fù)數(shù)。實驗三代碼轉(zhuǎn)換程序設(shè)計一.實驗?zāi)康? .掌握幾種最基本的代碼轉(zhuǎn)換方法。2 .運用子程序進行程序設(shè)計。二.實驗內(nèi)容1 .從鍵盤上輸入若干兩位十進制數(shù),尋找其中的最小值,然后在屏幕上顯示出來。2 .兩個十進制數(shù)之間的分隔符

8、,輸入結(jié)束標(biāo)志自定,但要在報告中說明。3 .對輸入要有檢錯措施,以防止非法字符輸入,并有適當(dāng)?shù)奶崾尽? .將整個程序分解為若干模塊,分別用子程序?qū)崿F(xiàn).在報告中要給出模塊層次圖。三.模塊層次圖及流程圖Word資料開始輸入數(shù)據(jù)回車B,BX,AL初始化AL 中 ASCII碼值轉(zhuǎn)換為對此數(shù)賦值給BBX=BX+1比較結(jié)束輸出最小數(shù)四.源代碼DATA SEGMENTA DB 100 DUP (0)B DB 100,0,'$'STRING DB 0DH,0AH,'ERROR INPUT ',0DH,0AH, '$'STRING1 DB 0DH,0AH,'

9、;the min number is ',0DH,0AH, '$'DATA ENDSSTACK SEGMENT STACKDW 50 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKINPUT PROC;子程序PUSH AXPUSH BXPUSH CXPUSH DXSTAR: MOV CX,0十進制數(shù)MOV BX,OFFSET AAGAIN: MOV AH,01HINT 21H;保護寄存器內(nèi)容;保護寄存器內(nèi)容;保護寄存器內(nèi)容;保護寄存器內(nèi)容;開始,表示輸入的數(shù)是否可以構(gòu)成兩位;輸入Word資料CMP

10、AL,30H;比較是否合法JB SHOWCMP AL,39HJA SHOWMOV BX,AL;存儲,判斷是否一個字,不是繼續(xù)輸入,否則向下運行INC BXINC CXAND CX,1JNZ AGAIN ;CX若為0,輸入了兩個數(shù),可以構(gòu)成一個兩位十進制數(shù)MOV CX,0;判斷下一輸入字符MOV AH,01H;輸入INT 21HMOV BX,ALINC BXCMP AL,20H ;判斷是否空格:是,繼續(xù)輸入;否,判斷是否為回 車JZ AGAINCMP AL,0DH;判斷是否為回車JNZ SHOW;都不是,就輸入錯誤,重新輸入JMP OKEY是回車,就輸入結(jié)束。否則結(jié)束子程序調(diào)重新輸入SHOW:

11、MOV AH,09H;不合法顯示錯誤MOV DX,OFFSET STRINGINT 21HJMP STAROKEY: MOV BX,AL;輸入結(jié)束POP DXPOP CXPOP BXPOP AXRETINPUT ENDPCHANGE PROCPUSH AXPUSH BXPUSH DXMOV BX,OFFSET AONCE: MOV AL,BX;讀數(shù)SUB AL,30H;轉(zhuǎn)化為16進制數(shù)INC BXMOV DL,10;轉(zhuǎn)化為16進制數(shù)MUL DLMOV DH,BXSUB DH,30HINC BXADD AL,DH;結(jié)果CMP AL,B;比較哪個最小JB YESCMP BYTE PTR BX,0D

12、H;判斷是否是回車JZ LASTJMP ONCEYES: MOV B,AL;最小數(shù)存于BCMP BYTE PTR BX,0DHJZ LASTINC BXJMP ONCELAST: NOPMOV AL,B;將數(shù)的個位和十位分別存儲 AH存?zhèn)€位 AL存十MOV AH,0MOV DL,10DIV DLADD AH,30H;轉(zhuǎn)換為 ASCII 碼ADD AL,30HMOV B,AL;存到內(nèi)存中MOV B+1,AHPOP DX;pop出原保存的寄存器數(shù)據(jù)POP BXPOP AXRETCHANGE ENDPSTART PROC FAR;主程序MOV AX,DATAMOV DS,AXCALL INPUT;調(diào)

13、用輸入子程序MOV AH,09HMOV DX,OFFSET STRING1;顯示提示性語句INT 21HCALL CHANGE;調(diào)用比較子程序MOV AH,09HMOV DX,OFFSET B;顯示最小數(shù)INT 21HMOV AX,4C00HINT 21HSTART ENDPCODE ENDSEND START五.運行結(jié)果六.預(yù)習(xí)題1 .如何將輸入的兩個字符(0 - 9)變?yōu)槭M制或二進制數(shù)?答:將數(shù)的ASCII碼值減去30H,即可得到對應(yīng)的十進制數(shù)。2 .如何將選出的最小值(二進制或十進制)變?yōu)锳SCII碼再進行顯示?答:用DB定義一個字節(jié)型數(shù)據(jù)存放十進制數(shù) (高四位表示十位,低四位表示個

14、位)。使用cmp指令,先比較高四位,若小于,則和已存的數(shù)交換;若等于, 則繼續(xù)比較低四位,小于則交換。若等于,數(shù)不變。3 .你覺得采用二進制運算還是十進制運算更適合于這個實驗 ?答:十進制更合適。實驗四子程序設(shè)計-.實驗?zāi)康? .進一步掌握子程序設(shè)計方法。2 .進一步掌握基本的 DOS功能調(diào)用。二.實驗內(nèi)容1 .從鍵盤上輸入某班學(xué)生的某科目成績.輸入按學(xué)生的學(xué)號由小到大的順序輸入2 .統(tǒng)計檢查每個學(xué)生的名次。3 .將統(tǒng)計結(jié)果在屏幕上顯示。4 .為便于觀察,輸入學(xué)生數(shù)目不宜太多,以不超過一屏為宜.輸出應(yīng)便于閱讀.盡可 能考慮美觀。5 .輸入要有檢錯手段。流程圖檢錯false四.源代碼DATA S

15、EGMENTBUFFER DB100DB?DB10 DUP (?)STR1 DB 'please input the score of the students:',0DH,0AH,'$'STR2 DB 'error,please input the score again:',0DH,0AH,$STR3 DB 'num rank scor ',0DH,0AH,'$'提示語句的字符串VAR1DW?VAR2DW?CKDB?TABDB100 DUPDATAENDSSTACKSEGMENTSTACK 'stack

16、'DB100 DUP ('s')STACK ENDSCODE SEGMENT PARA 'code'ASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FARPUSH DSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AX;初始化 DSLEADX,STR1MOV AH,09H;調(diào)用 DOS 09號功能顯示字符串Word資料STR1字符INT21HLEADX,BUFFERMOVAH,0AH;調(diào)用DOS 0A號功能,從鍵盤輸INT21HLEADI,TABXORCX,CXMOVAH,30HMOVDH,31HLEAB

17、X,BUFFER+2CALLCHECK;調(diào)用檢錯子程序CMPCK,1JZINPUTCALLCOM;調(diào)用排序子程序MOVDL,0DHMOVAH,02H;調(diào)用DOS 02號功能,顯示 DLINT21HMOVDL,0AHMOVAH,02HINT21HINPUT:入字符串并存儲;調(diào)用DOS 09號功能,顯示字符LEADX,STR3STR3MOVAH,09HINT21HCALLDISPYRETSTART ENDPCHECK:PROCNEXT1:MOVCK,0MOVDI,AHINCDIMOVDI,DHINCDICMPDH,39HJZL1INCDHJMPL2L1:MOVDH,30HINCAHL2:MOVAL

18、,BXCMPAL,30HJBERROR;調(diào)用送顯程序;檢驗子程序Word資料CMPAL,39HJAERRORMOVDI,ALINCDIINCBXMOVAL,BXCMPAL,30HJBERRORCMPAL,39HJAERRORMOVDI,ALINCDIINCBXINCCXMOVAL,BXCMPAL,0DHJZFINISH1INCBXJMPNEXT1ERROR: LEADX,STR2;調(diào)用DOS 09號功能,顯示字符串STR2MOVAH,9Word資料INT21HMOVCK,1FINISH1:RETCHECKENDPCOMPROCCOMP1:PUSHCXMOVVAR1,CXSHLCX,1SHLCX

19、,1SUBCX,4MOVVAR2,CXPOPCXDECDIDECDIJMPCOTICOMP2:ADDDI,VAR2COTI:MOVBL,0MOVCX,VAR1DECCXAGAN:MOVAL,DICMPAL,DI-4;調(diào)用排序子程序JAGOON1JBGOON3INCDIMOVAL,DICMPAL,DI-4PUSHFDECDIPOPFJAGOON1JBEGOON3MOVBL,-1PUSHCXMOVCX,4DECDIDECDIMOVAL,DIXCHGAL,DI-4MOVDI,ALINCDILOOPGOON2POPCXDECDIGOON1:GOON2:DECDIGOON3: DECDIDECDIDEC

20、DIDECDILOOPAGANCMPBL,0JNZCOMP2DECDIDECDIMOVCX,VAR1MOVBH,30HMOVBL,31HRETCOM ENDP;送顯子程序DISPY PROCDISPY1: MOVDL,BH;調(diào)用DOS 02號功能,顯示DL字符(學(xué)MOVAH,02H號)INT 21HMOVDL,BLMOVAH,02HINT21HMOVDL,''MOVAH,02HINT21HINT21HINT21HMOVDL,DIMOVAH,02HINT21HINCDIMOVDL,DIMOVAH,02HINT21HINCDIMOVDL,''MOVAH,02H;調(diào)用

21、DOS 02號功能,顯示DL字符(空;調(diào)用DOS 02號功能,顯示DL字符(排;調(diào)用DOS 02號功能,顯示DL字符(空INT21HINT21HINT 21HMOVDL,DIMOVAH,02HINT21HINCDIMOVDL,DIMOVAH,02HINT21HINCDIMOVDL,0DHMOVAH,02HINT21HMOVDL,0AHMOVAH,02HINT21HCMPBL,39HJZL3INCBLJMPNEXT2MOVBL,30HINCBHLOOPDISPY1L3:NEXT2:;調(diào)用DOS 02號功能,顯示DL字符(成;循環(huán)顯示RETDISPY ENDPCODE ENDSEND START五

22、.運行結(jié)果六.預(yù)習(xí)題1 .如何確定一個學(xué)生在這門科目中的名次 ?答:將學(xué)生成績按照學(xué)號依次存放在一個數(shù)據(jù)區(qū)內(nèi),設(shè) BX為指針指向首地址,使用數(shù)據(jù)結(jié)構(gòu)中的排序算法進行比較(比如冒泡排序法)。2 .你覺得輸入結(jié)束后,采用什么方法進行比較以得到學(xué)生的名次最為簡單 ?答:使用排序算法,通過指針排序好成績后,其對應(yīng)的學(xué)號也相應(yīng)排好。3 .準(zhǔn)備好模塊層次圖.StartINPUT輸入CHECKSCOM排序DISPY顯示4 .給出輸出顯示的形式.Num , rank , scor分別表示學(xué)生的學(xué)號,排名和分?jǐn)?shù)。實驗五子程序設(shè)計一.實驗?zāi)康? .初步掌握中斷程序的設(shè)計方法。2 .初步掌握修改DOS系統(tǒng)中斷,以適

23、應(yīng)實際使用的方法。二.實驗內(nèi)容1 .編寫一個32位二進制數(shù)除以16位二進制數(shù)的除法程序.觀察當(dāng)除數(shù)為 0, 或超過相應(yīng)寄存器范圍時,程序執(zhí)行的結(jié)果。2 .修改零號中斷服務(wù)程序,使它具有以下功能:(1)判斷除數(shù)是否為0,當(dāng)除數(shù)為0時,顯示相應(yīng)的結(jié)果。(2)當(dāng)除數(shù)不為0時,采用適當(dāng)?shù)姆椒ㄍ瓿缮坛^16位的二進制數(shù)的除法運算。3 .注意必須保護原有中斷服務(wù)程序的入口地址,并在程序完畢前加以恢復(fù)。.流程圖四.源代碼DATA SEGMENT message db 0AH,0DH,'divisor equals 0.',0dh,0ah,'$' messagel DB 0AH

24、,0DH,' input error',0DH,0AH,'$' message2 DB 'PLEASE INPUT THE DIVIDEND (32)',0AH,0DH,'$' message3 DB 0AH,0DH,'PLEASE INPUT THE DIVISOR (16)',0AH,0DH,'$' message4 DB 0AH,0DH,'THE QUOTIENT IS:','$' message5 DB 0AH,0DH,'THE REMAINDER I

25、S:','$' DATA ENDS STACK SEGMENT STACK 'STACK' STACK ENDS CODE SEGMENT代碼段ASSUME CS:CODE, SS:STACK ,DS:DATA start proc far push dsmov ax,0push axmov ax,datamov ds,ax stimov al,0mov ah,35hint 21hpush espush bxpush dxmov ax,seg int00mov ds,axmov dx,offset int00mov al,0mov ah,25hint 2

26、1hpop dsmov ah,09hmov dx,seg message2 mov ds,dxmov dx,offset message2 int 21hmov cx,10hmov ax,0000hpush axa1: mov ah,01h;TF中斷標(biāo)志置1;保存原中斷向量;寫中斷向量;提示輸入32位二進制0或1;提示輸入16位0或1除數(shù)int 21hcmp al,'0'jz a2cmp al,'1' jnz errorl stcrcl dx,1loop aljmp a3 a2: clcrcl dx,1loop ala3:mov cx,10h a4: mov a

27、h,01hint 21hcmp al,'0'jz a5cmp al,'1'jnz error2 stcpop ax rcl ax,1 push ax loop a4 jmp a6 a5: pop axclcrcl ax,1push axloop a4 a6: mov ah,09hmov dx,seg message3 mov ds,dxmov dx,offset message3 int 21hmov cx,10h a7: mov ah,01hint 21hcmp al,'0'jz a8cmp al,'1'jnz error2;輸

28、入數(shù)字與0比較;輸入數(shù)字與1比較;輸入有誤則跳錯誤顯示程序;為1則將CF置1;dx左移,移進一個 1;為0則將CF置0;dx左移,移進一個 0stcrcl bx,1loop a7jmp a9a8: clcrcl bx,1loop a7jmp a9errorl: mov ah,09h;輸入錯誤提示mov dx,seg messagelmov ds,dxmov dx,offset messagelint 21hjmp alerror2: mov ah,09hmov dx,seg messagelmov ds,dxmov dx,offset messagelint 21hjmp a6a9: mov

29、cx,0000hpop axdiv bxcmp bx,20hjz a14push dxpush axmov ah,09hmov dx,seg message4mov ds,dxmov dx,offset message4int 21hmov bx,08hcall xianshimov bx,08hpop cx call xianshimov ah,09hmov dx,seg message5mov ds,dxmov dx,offset message5int 21hmov bx,08hpop cxcall xianshia14:pop dxpop cx push ds mov ds,cx mov al,0 mov ah,25h int 21h pop ds ret start endp xianshi proc near all:test cx,10000000bjz a10 mov ah,02h mov dl,'1' int 21h sal cx,1 dec bx jnz a11jmp a12a10:mov ah,02hmov dl,'0'

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論