匯編有序表的插入刪除排序_第1頁(yè)
匯編有序表的插入刪除排序_第2頁(yè)
匯編有序表的插入刪除排序_第3頁(yè)
匯編有序表的插入刪除排序_第4頁(yè)
匯編有序表的插入刪除排序_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、華 北 科 技 學(xué) 院課程設(shè)計(jì)說(shuō)明書(shū)課程名稱(chēng): 匯編語(yǔ)言 班級(jí): 計(jì)算機(jī)B08-2 姓名:_王胤_ _學(xué)號(hào):_ 200807024214 _設(shè)計(jì)題目:_ 有序表的插入、刪除、查詢(xún) _設(shè)計(jì)時(shí)間: 2010-12-13 至 2010-12-24 指導(dǎo)教師:_ 陳振國(guó) _ _評(píng) 語(yǔ):_評(píng)閱成績(jī): 評(píng)閱教師:一、課程設(shè)計(jì)目的進(jìn)行程序設(shè)計(jì)方法和技能的基本訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)程序設(shè)計(jì)的基本知識(shí)和基本方法,通過(guò)實(shí)際動(dòng)手能力的培養(yǎng),進(jìn)一步熟悉匯編語(yǔ)言的結(jié)構(gòu)和使用方法,達(dá)到能獨(dú)立閱讀、編制和調(diào)試一定規(guī)模的匯編語(yǔ)言程序的水平。二、課程設(shè)計(jì)要求1要求編寫(xiě)并調(diào)試通過(guò)一個(gè)小型軟件,實(shí)現(xiàn)對(duì)軟件或硬件的操作。2遵循

2、模塊化、結(jié)構(gòu)化的程序設(shè)計(jì)方法。3. 要求程序必須正確。4. 程序簡(jiǎn)明易懂,多運(yùn)用輸入輸出提示,出錯(cuò)信息及必要的注釋。5. 要求程序結(jié)構(gòu)合理,語(yǔ)句使用得當(dāng)。6. 適當(dāng)追求編程技巧和程序運(yùn)行效率。三、課程設(shè)計(jì)題目: 有序表的插入、刪除、查詢(xún)四、課題分析有序表的插入、刪除、查詢(xún)可使之提供以下功能:1、數(shù)據(jù)輸入實(shí)現(xiàn)對(duì)數(shù)組長(zhǎng)度和數(shù)組元素的初始化。2、排序 實(shí)現(xiàn)對(duì)數(shù)組元素從小到大排序。3、查詢(xún) 實(shí)現(xiàn)對(duì)指定數(shù)的查詢(xún),若查找到則輸出該數(shù)位置;若沒(méi)查找到則給出該數(shù)不存在的提示。4、插入 實(shí)現(xiàn)對(duì)指定數(shù)的插入,插入同時(shí)序列長(zhǎng)度加1。5、刪除 實(shí)現(xiàn)對(duì)指定數(shù)的刪除,若查找到則刪除,且序列長(zhǎng)度減1;若沒(méi)找到則給出該數(shù)不存

3、在的提示。6、退出系統(tǒng) 輸入指定字符退出系統(tǒng)或者撤銷(xiāo)。 五、流程圖:系統(tǒng)功能結(jié)構(gòu)圖 菜單 輸入子程序查詢(xún)子程序排序子程序 插入子程序刪除和退出流程圖略六、程序源代碼:DATAS SEGMENTBUF DW 50 DUP(?) DATA DB 8,7 dup(?) N DW ? SRC DW 10MESG0 DB * menu *$ MESG1 DB 1.input$ MESG2 DB 2.arrange$ MESG3 DB 3.find$ MESG4 DB 4.insert$ MESG5 DB 5.delete$ MESG6 DB 6.exit$ MESG7 DB *$ MESG8 DB Pl

4、ease input menu number:$;MAIN MESG9 DB Inputing error!Input again:$;CHECK MESG10 DB How many number will you input?(250)$;INPUT MESG11 DB Input the numbers(032767):$;INPUT MESG12 DB The new sequence is: $;ARRANGE MESG13 DB Iuput the number you want to find:$;FIND MESG14 DB The number has been found!

5、$;FIND MESG15 DB The number has not been found!$;FIND MESG16 DB The position of the number is: $;FIND MESG17 DB Iuput the number you want to insert:$;INSERT MESG18 DB The number has been inserted!$;INSERT MESG19 DB The new length of the sequence is: $;INSERTDELETE MESG20 DB Input the number you want

6、 to delete:$;DELETE MESG21 DB The number has been delete!$;DELETE MESG22 DB The number is not exit!$;DELETE MESG23 DB Do you really want to exit?$;EIXT MESG24 DB Press Y/N:$;EXIT MESG25 DB Press ANY BUTTON to return menu:$ ;EACH MESG26 DB 0AH,0DH, $;EACH DATAS ENDS ;*XS MACRO X;顯示宏 MOV AH,09H LEA DX

7、,X INT 21H ENDM;*SR MACRO Z;輸入宏 MOV AH,10 LEA DX,Z INT 21H ENDM;*BIJ MACRO M,N;比較宏 CMP AL,M JE N ENDM ;*CODES SEGMENT ASSUME CS:CODES,DS:DATAS,ES:DATAS START: MOV AX,DATAS MOV DS,AX MOV ES,AXMAIN: CALL CLEAR_SCREEN;調(diào)用清屏子程序 CALL MENU;調(diào)用顯示菜單子程序 MOV AH,1 INT 21H SUB AL,30H CALL CHECK;調(diào)用差錯(cuò)檢驗(yàn)子程序 BIJ 1,SH

8、URU;調(diào)用宏 BIJ 2,PAIXU BIJ 3,CHAZHAO BIJ 4,CHARU BIJ 5,SHANCHU JMP TUICHUSHURU: CALL CLEAR_SCREEN CALL INPUT;調(diào)用輸入子程序 JMP MAIN PAIXU: CALL CLEAR_SCREEN CALL ARRANGE;調(diào)用排序子程序 JMP MAIN CHAZHAO: CALL CLEAR_SCREEN CALL FIND;調(diào)用查找子程序 JMP MAIN CHARU: CALL CLEAR_SCREEN CALL INSERT;調(diào)用插入子程序 JMP MAINSHANCHU: CALL C

9、LEAR_SCREEN CALL DELETE;調(diào)用刪除子程序 JMP MAINTUICHU: CALL CLEAR_SCREEN AG: XS MESG26 XS MESG23 XS MESG26 XS MESG24 MOV AH,1 INT 21H CMP AL,N JZ MAIN CMP AL,Y JZ DONE XS MESG26 XS MESG9 JMP AG DONE: MOV AH,4CH INT 21H;* CLEAR_SCREEN PROC ;清屏子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6 MOV AL,0 MOV BH,7 MO

10、V CX,0 MOV DH,24 MOV DL,79 INT 10H MOV DX,0 MOV BH,0 MOV AH,2 INT 10H POP DX POP CX POP BX POP AX RET CLEAR_SCREEN ENDP ;* MENU PROC ;顯示菜單子程序 XS MESG26 XS MESG0;調(diào)用宏 XS MESG26 XS MESG1 XS MESG26 XS MESG2 XS MESG26 XS MESG3 XS MESG26 XS MESG4 XS MESG26 XS MESG5 XS MESG26 XS MESG6 XS MESG26 XS MESG7 XS

11、 MESG26 XS MESG8 RETMENU ENDP;*CHECK PROC ;差錯(cuò)檢驗(yàn)子程序CM: CMP AL,1 JL ERRO ;6退出 JMP RERRO:XS MESG26 XS MESG9 MOV AH,1 ;重新輸入 INT 21H SUB AL,30H JMP CMR: RETCHECK ENDP ;*INPUT PROC ;輸入子程序 MOV CX,50;清空BUF存儲(chǔ)單元,以便重復(fù)利用 MOV DI,0LL: MOV BUFDI,0 ADD DI,2 LOOP LL XS MESG26 XS MESG10 CALL CHANGE;調(diào)用字符向數(shù)字轉(zhuǎn)化子程序,得到序列長(zhǎng)

12、度放在DI中 MOV CX,DI MOV N,DI;保存序列長(zhǎng)度 XS MESG26 XS MESG11 XS MESG26 MOV SI,0L1: PUSH CX;保護(hù)外循環(huán)的CX CALL CHANGE ;調(diào)用字符向數(shù)字轉(zhuǎn)化程序,得到輸入數(shù)的值存入DI XS MESG26 MOV BUFSI,DI;將轉(zhuǎn)化后的值存進(jìn)BUF ADD SI,2 POP CX ;彈出外循環(huán)CX LOOP L1 CALL ASK RETINPUT ENDP;*CHANGE PROC ;字符向數(shù)字轉(zhuǎn)化子程序(結(jié)果放在DI)AGAIN: SR DATA MOV BX,1 MOV DI,0 ;DI保留高位結(jié)果 MOV C

13、L,DATABX;得到要轉(zhuǎn)化數(shù)的位數(shù) MOV CH,0 MOV BX,2L2: MOV AL,DATABX SUB AL,30H JL ERROR ;9 錯(cuò)誤 CBW PUSH AX MOV AX,DI ;高位乘10加低位 MUL SRC MOV DI,AX POP AX ADD DI,AX INC BX LOOP L2 JMP NEXTERROR: XS MESG26 XS MESG9 XS MESG26 JMP AGAINNEXT: RET CHANGE ENDP;*ASK PROC ;詢(xún)問(wèn)回菜單子程序 XS MESG26 XS MESG25 MOV AH,1 INT 21H RETASK

14、 ENDP;*ARRANGE PROC ;排序子程序(使用冒泡排序) MOV CX,N;序列長(zhǎng)度 DEC CXLP5:MOV DX,CX MOV BX,0LP6:MOV AX,BUFBX CMP AX,BUFBX+2 JLE L XCHG AX,BUFBX+2 MOV BUFBX,AX L:ADD BX,2 Loop LP6 MOV CX,DX LOOP LP5 XS MESG26 XS MESG12 XS MESG26 CALL OUTSTRING;調(diào)用輸出新序列子程序 CALL ASK;調(diào)用詢(xún)問(wèn)回菜單子程序 RET ARRANGE ENDP ;*OUTSTRING PROC ;輸出新序列子

15、程序 MOV CX,N MOV SI,0LP2:PUSH CX MOV AX,BUFSI CALL CHANG;調(diào)用數(shù)字向字符轉(zhuǎn)化并輸出子程序 MOV AH,2 MOV DL, ;輸出空格 INT 21H ADD SI,2 POP CX LOOP LP2 RETOUTSTRING ENDP;*CHANG PROC ;數(shù)字向字符轉(zhuǎn)化并輸出子程序(將AX中的數(shù)轉(zhuǎn)換成字符) MOV CX,0 ;記錄輸出數(shù)的位數(shù)LP3:CWD DIV SRC PUSH DX ;將余數(shù)壓入棧,以便倒向輸出 INC CX CMP AX,0 ;商不為零則繼續(xù)除 JNZ LP3LP4:POP DX ;將棧內(nèi)數(shù)依次輸出 MOV

16、 AH,2 ADD DL,30H INT 21H LOOP LP4 RETCHANG ENDP;*FIND PROC ;查找子程序 XS MESG26 XS MESG13 CALL CHANGE;調(diào)用字符向數(shù)字轉(zhuǎn)化子程序,得到要查找的數(shù)的值存入DI MOV CX,N MOV SI,0 MOV AL,1;AL記錄找到的數(shù)的位置LP7:CMP DI,BUFSI JZ FIN ADD SI,2 INC AL LOOP LP7 JMP NFINFIN:PUSH AX ;保護(hù)AL XS MESG26 XS MESG14 XS MESG26 XS MESG16 POP AX MOV AH,0 CALL C

17、HANG;調(diào)用數(shù)字向字符轉(zhuǎn)換并輸出子程序(轉(zhuǎn)換AX中的數(shù)),輸出序列新長(zhǎng)度 JMP OUTFNFIN: XS MESG26 XS MESG15 XS MESG26OUTF: CALL ASK RET FIND ENDP;*INSERT PROC ;插入子程序 XS MESG26 XS MESG17 CALL CHANGE;調(diào)用字符向數(shù)字轉(zhuǎn)換子程序,得到希望插入的數(shù)存放在DI MOV BL,2 MOV AX,N MOV AH,0 MUL BL MOV BX,AX MOV BUFBX,DI;把要插入的數(shù)先放在序列最后 MOV SI,0LP8:CMP DI,BUFSI;DI與BUF每個(gè)單元比較 JB

18、 LP9 ;找到要插入的位置SI ADD SI,2 LOOP LP8 LP9:SHR SI,1 MOV CX,N SUB CX,SI;得到循環(huán)交換次數(shù)LP10: XCHG AX,BUFBX;從序列最后往前交換 XCHG AX,BUFBX-2 XCHG AX,BUFBX SUB BX,2 LOOP LP10 INC N ;序列長(zhǎng)度減1 XS MESG26 XS MESG18 XS MESG26 XS MESG12 XS MESG26 CALL OUTSTRING XS MESG26 XS MESG19 MOV AX,N CALL CHANG;調(diào)用數(shù)字向字符轉(zhuǎn)化并輸出子程序,轉(zhuǎn)化AX中的數(shù),輸出序

19、列新長(zhǎng)度 XS MESG26 CALL ASK RET INSERT ENDP;*DELETE PROC ;刪除子程序 XS MESG26 XS MESG20 CALL CHANGE;調(diào)用字符向數(shù)字轉(zhuǎn)化子程序,得到要?jiǎng)h除的數(shù)的值放在DI中 MOV SI,0 MOV CX,NLP11: CMP DI,BUFSI;DI與BUF中每個(gè)數(shù)比較 JZ LP12;找到要?jiǎng)h除的數(shù)和此數(shù)位置SI ADD SI,2 LOOP LP11 XS MESG26 XS MESG22 JMP OUTD ;沒(méi)找到要?jiǎng)h除的數(shù),返回LP12: MOV BUFSI,0 MOV BX,SI SHR SI,1 MOV CX,N SU

20、B CX,SI DEC CX ;得到循環(huán)交換次數(shù)LP13: XCHG AX,BUFBX;從刪除數(shù)開(kāi)始往后交換 XCHG AX,BUFBX+2 XCHG AX,BUFBX ADD BX,2 LOOP LP13 DEC N ;序列長(zhǎng)度加1 XS MESG26 XS MESG21 XS MESG26 XS MESG12 XS MESG26 CALL OUTSTRING XS MESG26 XS MESG19 MOV AX,N CALL CHANG;調(diào)用數(shù)字向字符轉(zhuǎn)化并輸出子程序,轉(zhuǎn)化AX中的數(shù),輸出序列新長(zhǎng)度 OUTD: CALL ASK RETDELETE ENDP;* CODES ENDSEND

21、 start七、結(jié)果顯示顯示菜單菜單功能號(hào)輸入錯(cuò)誤1號(hào)功能,輸入數(shù)據(jù)輸入數(shù)字錯(cuò)誤2號(hào)功能,排序3號(hào)功能,查找要查找數(shù)不存在4號(hào)功能,插入5號(hào)功能,刪除要?jiǎng)h除的數(shù)不存在6號(hào)功能,退出八、感想、收獲及體會(huì)這次課程設(shè)計(jì),通過(guò)一步步從對(duì)要求的理解、程序的設(shè)計(jì)、編程、調(diào)試、修改,促使我對(duì)課程的內(nèi)容進(jìn)行了全面系統(tǒng)的復(fù)習(xí)和總結(jié),達(dá)到融會(huì)貫通。讓我更加熟練地運(yùn)用DOS功能調(diào)用,特別是對(duì)結(jié)構(gòu)化程序設(shè)計(jì)的基本方法、子程序及宏匯編等內(nèi)容要很好地掌握。經(jīng)過(guò)分析,INT 21H的9號(hào)和10號(hào)功能以及菜單部分字符串比較部分,由于使用頻繁都做成了宏。數(shù)據(jù)的輸入和輸出要頻繁轉(zhuǎn)化字符和數(shù)字,所以字符向數(shù)字轉(zhuǎn)化和數(shù)字向字符轉(zhuǎn)化做成了子程序。除此之外,每個(gè)功能模塊都或多或少使用清屏、顯示菜單、詢(xún)問(wèn)返回菜單、差錯(cuò)檢驗(yàn)這些功能,所以都相應(yīng)的做成了子程序。每個(gè)功能模塊也做成了子程序。宏和子程序的使用大量減少了程序代碼,也減少了程序員的負(fù)擔(dān),一旦某個(gè)部分出錯(cuò),只需要到相應(yīng)的模塊中改錯(cuò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論