![個(gè)人檔案文件管理--匯編課程設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/2f6648ab-e08f-45a4-9c27-0276f7f1d215/2f6648ab-e08f-45a4-9c27-0276f7f1d2151.gif)
![個(gè)人檔案文件管理--匯編課程設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/2f6648ab-e08f-45a4-9c27-0276f7f1d215/2f6648ab-e08f-45a4-9c27-0276f7f1d2152.gif)
![個(gè)人檔案文件管理--匯編課程設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/2f6648ab-e08f-45a4-9c27-0276f7f1d215/2f6648ab-e08f-45a4-9c27-0276f7f1d2153.gif)
![個(gè)人檔案文件管理--匯編課程設(shè)計(jì)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/2f6648ab-e08f-45a4-9c27-0276f7f1d215/2f6648ab-e08f-45a4-9c27-0276f7f1d2154.gif)
![個(gè)人檔案文件管理--匯編課程設(shè)計(jì)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/2f6648ab-e08f-45a4-9c27-0276f7f1d215/2f6648ab-e08f-45a4-9c27-0276f7f1d2155.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、匯編語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)題目:個(gè)人檔案文件管理專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)號(hào): 2010810072 姓名: 羅忠霖 2011-2012學(xué)年第二學(xué)期一 設(shè)計(jì)目的匯編語(yǔ)言課程設(shè)計(jì)是對(duì)所學(xué)課程內(nèi)容全面、系統(tǒng)的總結(jié)、鞏固和提高的一項(xiàng)課程實(shí)踐活動(dòng)。根據(jù)匯編語(yǔ)言的特點(diǎn),選擇相應(yīng)的題目,在老師的指導(dǎo)下,由學(xué)生獨(dú)立完成。課程設(shè)計(jì)要求同學(xué)們熟悉匯編語(yǔ)言的編程,BIOS中斷調(diào)用、系統(tǒng)功能調(diào)用、磁盤數(shù)據(jù)的查詢、存取等相關(guān)知識(shí)。通過課程設(shè)計(jì),一方面提高運(yùn)用匯編語(yǔ)言編程解決實(shí)際問題的能力,另一方面使同學(xué)們更深入的了解計(jì)算機(jī)系統(tǒng)內(nèi)部的有關(guān)知識(shí),為以后的學(xué)習(xí)和系統(tǒng)開發(fā)奠定良好的基礎(chǔ)。 二 設(shè)計(jì)內(nèi)容創(chuàng)建一個(gè)人檔案
2、文件(若已存在則直接使用該文件),它包含學(xué)號(hào),姓名、年齡、性別、電話,通信地址六項(xiàng)內(nèi)容。試編寫一管理程序,要求系統(tǒng)顯示如下菜單,按鍵后執(zhí)行相應(yīng)的操作。(1)L命令:列出文件中的所有人的記錄,每人一行(2)I命令:在文件末尾插入一個(gè)人的記錄(3)D命令:根據(jù)姓名刪除指定的紀(jì)錄,若出現(xiàn)多條記錄,應(yīng)再提供刪除哪條記錄的選擇。(4)F命令:按姓名字段的值進(jìn)行查詢,并將查詢結(jié)果(多條記錄)顯示在屏幕上(5)0命令:根據(jù)姓名對(duì)記錄進(jìn)行排序(6)Q命令:退出管理系統(tǒng)三程序設(shè)計(jì)原理1:本課程設(shè)計(jì)是按模塊化程序設(shè)計(jì),源代碼中有一個(gè)主程序,主程序首先調(diào)用打開子程序打開文件,若能打開文件,則讀取文件里面的內(nèi)容到內(nèi)存
3、中,若打不開或者文件不存在,則創(chuàng)建文件。接著用戶輸入想要的功能,程序根據(jù)用戶輸入的內(nèi)容調(diào)用相應(yīng)的程序?qū)崿F(xiàn)。以下各種操作都是在緩存中執(zhí)行2:本程序在開始的時(shí)候定義了一個(gè)顯示宏DISPL(因?yàn)樵诒境绦蛑幸?jīng)常用到09號(hào)dos功能),進(jìn)入主程序之后顯示菜單,提示輸入功能選項(xiàng)(不區(qū)分大小寫),若是輸入的不與各種功能相匹配則提示輸入錯(cuò)誤,跳回到打印功能列表,重新輸入;3:插入程序:輸入子程序首先調(diào)用輸入學(xué)號(hào)的子程序,若是ID輸入為空,則跳回功能選項(xiàng),然后再調(diào)用check函數(shù)進(jìn)行學(xué)號(hào)檢查,當(dāng)檢查到與之前輸入的相同的時(shí)候則提示用戶重新輸入學(xué)號(hào),否則繼續(xù)輸入,并且保存剛才輸入的ID,輸入的時(shí)候計(jì)算輸入的字節(jié),
4、不足的用空格補(bǔ)充,然后將輸入的內(nèi)容存儲(chǔ)到內(nèi)存里(這些數(shù)據(jù)是連續(xù)存放的),同時(shí)設(shè)置指針指向數(shù)據(jù)段尾的下一個(gè)單元,保證下一次是從末尾加入;4:顯示程序:顯示的時(shí)候先判斷記錄的個(gè)數(shù),若個(gè)數(shù)為0,則退出返回到菜單界面,否則每次從數(shù)據(jù)段內(nèi)存中取60個(gè)字節(jié)(即一條記錄)到另一個(gè)緩存區(qū)域中顯示,用count計(jì)數(shù),顯示一次count-1,直到count為零;5:查找程序:首先用戶輸入查找的姓名,調(diào)整相應(yīng)的指針,然后用字符串cmpsw比較名字,直到最后一個(gè)名字為止;若找到則顯示出來(lái),不存在則提示;6:刪除程序:,查找名字相同的記錄,不存在則提示,存在則顯示出來(lái),弱存在多條記錄提示出入第幾條記錄,調(diào)用刪除子程序,
5、把該條記錄以后的記錄全部往前移,count-1;7:排序程序:,若是只有一條記錄或者沒有就直接跳出,否則按照ASC碼排序,排序用冒泡法排序8:退出程序:打開文件,把數(shù)據(jù)段中的內(nèi)容讀入文件,否則創(chuàng)建文件,同時(shí)根據(jù)count,寫入最后一條記錄后,在末尾加上$關(guān)閉文件,四:程序流程圖 Main 主函數(shù) 調(diào)用open打開文件顯示menu判斷輸入I?插入退出查找刪除排序結(jié)束輸入名字/性別/ID年齡/地址/電話子程序Y/N輸入學(xué)號(hào)輸入 輸入名字在緩存 Check輸入不足10個(gè)剩下的填充空格YBP=0?NY保存到數(shù)據(jù)段把輸入相應(yīng)的內(nèi)容存到數(shù)據(jù)段STUY輸入名字輸入性別Ret結(jié)束輸入年齡輸入地址輸入電話Ret
6、結(jié)束RET結(jié)束COUNT=0?Count-1名字比較輸出學(xué)生信息找到名字si->數(shù)據(jù)段第一個(gè)名字 di=輸入的名字bp=0輸入要查找的名字名字查找名字排序 endaddr->倒數(shù)第二個(gè)名字si->第一個(gè)名字swapped=0di->si的下一個(gè)名字Si移到下一個(gè)名字Ax=di bx=sirepe cmpsb N si=指向?qū)W生信息頭 YSi<=di?dißàsi NSwapped=1 NSi=ax YSi<=endaddrSwapped=0? N N結(jié)束 Y名字刪除rep movswRET結(jié)束sub stu1,60 sub count1,
7、1si>=endaddrSi=di下一個(gè)di=delbpdi=delbx刪除第bx個(gè)記錄Bx=bx*2BP>3?Bp>1?查找名字相同的記錄 N Y N Y N Y五源程序 DATA SEGMENT MESS1 DB 'ID:','$' MESS2 DB 'NAME:','$' MESS3 DB 'OLD:','$' MESS4 DB 'SEX:','$' MESS5 DB 'ADDRESS:','$' MESS6 D
8、B 'PHONE NUMBER:','$' MESS7 DB 'ENTTER ERROR!',0DH,0AH,'$' MESS8 DB 'ID',8 DUP(' '),'NAME',5 DUP(' '),'OLD ','SEX ',' ADDRESS ',5 DUP(' '),'telphone',13,10,'$' MESS9 DB 'Student inform
9、ation in the table is:',13,10,'$' MESS10 DB 'Please enter the name:','$' MESS11 DB 13,10,'YOU ARE QUIT!','$' MESS12 DB 'sorry!The file open failure!',13,10,'$' MESS13 DB 'sorry!File operation failed!',13,10,'$' MESS14 DB
10、9;No records!',13,10,'$' MESS15 DB 'no found!',13,10,'$' MESS16 DB 'Do you want to delete this message(y/n)? ',13,10,'$' MESS17 DB 'Please choose Which one you want to delete(1,2,.):','$ ' MESS18 DB 'DELETE SUCCEED!','$' MES
11、S19 DB 'the id is the same,enter again!',13,10,'$' MESS20 DB 'press any key to paste next page',13,10,'$' IDPAR LABEL BYTE MAXILEN DB 10 ACTILEN DB ? ID DB 10 DUP(?) ;學(xué)號(hào) NAMEPAR LABEL BYTE MAXNLEN DB 10 ACTNLEN DB ? _NAME DB 10 DUP(?) ;姓名 在MASM5.0下不能用name OLDPAR LABEL
12、 BYTE MAXOLEN DB 3 ACTOLEN DB ? OLD DB 3 DUP(?) ;年齡 SEXPAR LABEL BYTE MAXSLEN DB 5 ACTSLEN DB ? SEX DB 5 DUP(?) ;性別 ADDRESSPAR LABEL BYTE MAXALEN DB 15 ACTALEN DB ? AD DB 15 DUP(?) ;地址 PHONEPAR LABEL BYTE MAXPLEN DB 15 ACTPLEN DB ? PHONE DB 15 DUP(?) ;電話號(hào)碼 DISPL MACRO X ;定義顯示的宏 LEA DX,X MOV AH,9 INT
13、 21H ENDM STU DB 50 DUP(58 DUP(' '),13,10);內(nèi)存空間 TEMP DB 60 DUP(' '),'$'臨時(shí)存儲(chǔ)空間 CRLF DB 13,10,'$'換行回車 ENDADDR DW ?;排序的時(shí)候用到,即存儲(chǔ)末尾指針 MENU DB '=',13,10 DB 'I:INPUT F:FIND D:DELETE O:SORT L:LIST Q:QUIT ',13,10 DB '=',13,10 DB 'Please select the f
14、unction: ','$' COUNT DB 0 ;用來(lái)統(tǒng)計(jì)輸入的個(gè)數(shù) COUNT1 DB 0 ;臨時(shí)統(tǒng)計(jì)輸入的個(gè)數(shù),輔助作用 count2 db 0;檢查學(xué)號(hào)的時(shí)候用的 count3 db 0;顯示的時(shí)候用的,分頁(yè) DEL DW 20 DUP(?) END1 DB '$' ;作為文件結(jié)束標(biāo)志 SWAPPED DB 0 ;交換標(biāo)志位 STU1 DW ? ;作為存放末尾指針 ADDRESS DB 'd:ff2STU.TXT',0 ;路徑 NAMEFILE DB 'stu.txt' FCODE DW ? ;文件代號(hào) DATA
15、 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX LEA DI,STU CALL OPEN ;打開文件 CLD MOV STU1,DI START: DISPL MENU ;顯示菜單列表 MOV AH,1 ;輸入 INT 21H MOV BL,AL ;windows平臺(tái)下調(diào)用dos命令會(huì)改變AL的值 DISPL CRLF ;回車換行 MOV AL,BL AND AL,5FH ;把輸入的選擇更能都轉(zhuǎn)化為大寫,以便后面的操作 LIST: CMP AL,
16、9;L' JNZ INSERT CALL DISPALL ;顯示功能 JMP START INSERT: CMP AL,'I' JNZ DELE CALL INPUT ;插入功能 JMP START DELE: CMP AL,'D' JNZ FIND CALL DELET ;刪除功能 JMP START FIND: CMP AL,'F' JNZ SORT CALL SEARCH ;查找功能 JMP START SORT: CMP AL,'O' JNZ QUIT CALL NAMESORT ;排序功能 JMP START Q
17、UIT: CMP AL,'Q' ;結(jié)束功能 JZ OVER error:DISPL MESS7 ;輸入錯(cuò)誤 JMP START OVER: CALL CLOSE DISPL MESS11 MOV AH,4CH INT 21H RET MAIN ENDP;*插入模塊* INPUT PROC NEAR ;輸入信息 MOV DI,STU1 INPUTLOOP: CLD again: MOV BP,0 DISPL MESS1 ;提示輸入學(xué)號(hào) CALL INPUTID CMP ACTILEN,0 ;沒有輸入號(hào)碼時(shí) JZ A10 ;直接跳到提示是否查找的地方 CMP COUNT1,50 ;
18、輸入上限 JE A10 CALL check ;學(xué)號(hào)檢查函數(shù) cmp bp,0 jnz again ;有相同的學(xué)號(hào)則返回繼續(xù)輸入 CALL STORID ;保存到stu DISPL MESS2 CALL INPUTNAME ; 輸入名字 DISPL MESS3 CALL INPUTOLD ;輸入年齡 DISPL MESS4 CALL INPUTSEX ;輸入性別 DISPL MESS5 CALL INPUTADDRESS ;輸入地址 DISPL MESS6 CALL INPUTPHONE ;輸入電話 ADD DI,2 ;調(diào)整指針使他指向下一個(gè)輸入的開始位置 JMP INPUTLOOP ;- A
19、10: MOV AH,COUNT1 ;記錄數(shù)目 MOV COUNT,AH MOV STU1,DI RET INPUT ENDP;+ INPUTID PROC NEAR ;學(xué)號(hào)輸入函數(shù)- MOV AH,0AH LEA DX,IDPAR INT 21H DISPL CRLF MOV BH,0 MOV BL,ACTILEN MOV CX,10 SUB CX,BX I20: MOV IDBX,20H ;名字剩下的填充空格 INC BX LOOP I20 RET INPUTID ENDP ;- check PROC NEAR;學(xué)號(hào)檢查,即檢查有沒有相同的學(xué)號(hào) mov bp,0 MOV AH,COUNT1
20、 MOV count2,AH MOV SI,STU1 SUB SI,60 MOV ENDADDR,SI;指向最后一條記錄的學(xué)號(hào) LEA SI,STU MOV BX,SI NASE1: LEA DI,ID ;存放學(xué)號(hào)的偏移地址 MOV CX,5 REPE CMPSW JCXZ NASEEX ;相等 JMP NASE2 NASEEX: DISPL MESS19 ;提示有重復(fù)的學(xué)號(hào) MOV BP,1 JMP MM NASE2: ADD BX,60 ;表中下一個(gè)比較的學(xué)號(hào) MOV SI,BX DEC count2 JNZ NASE1 MM: RET check ENDP;- ;+ STORID PRO
21、C NEAR ;存儲(chǔ)學(xué)號(hào)函數(shù) MOV DI,STU1 INC COUNT1 CLD LEA SI,ID MOV CX,5 REP MOVSW RET STORID ENDP;+ INPUTNAME PROC NEAR;輸入姓名函數(shù) MOV AH,0AH LEA DX,NAMEPAR INT 21H DISPL CRLF MOV BH,0 MOV BL,ACTNLEN MOV CX,10 SUB CX,BX ;計(jì)算剩下的長(zhǎng)度 IN20: MOV _NAMEBX,20H ;剩下的地方填充空格 INC BX LOOP IN20 CLD LEA SI,_NAME MOV CX,5 REP MOVSW
22、RET INPUTNAME ENDP;+ INPUTOLD PROC NEAR;輸入年齡的函數(shù) MOV AH,0AH LEA DX,OLDPAR INT 21H DISPL CRLF MOV BH,0 MOV BL,ACTOLEN MOV CX,3 SUB CX,BX ;計(jì)算剩下的長(zhǎng)度 IO20: MOV OLDBX,20H ;剩下的地方填充空格 INC BX LOOP IO20 CLD LEA SI,OLD MOV CX,3 REP MOVSB RET INPUTOLD ENDP;+ INPUTSEX PROC NEAR ;輸入性別函數(shù) MOV AH,0AH LEA DX,SEXPAR IN
23、T 21H DISPL CRLF MOV BH,0 MOV BL,ACTSLEN MOV CX,5 SUB CX,BX ;計(jì)算剩下的長(zhǎng)度 IS20: MOV SEXBX,20H ;剩下的地方填充空格 INC BX LOOP IS20 CLD LEA SI,SEX MOV CX,5 REP MOVSB RET INPUTSEX ENDP;+ INPUTADDRESS PROC NEAR;輸入地址函數(shù) MOV AH,0AH LEA DX,ADDRESSPAR INT 21H DISPL CRLF MOV BH,0 MOV BL,ACTALEN MOV CX,15 SUB CX,BX ;計(jì)算剩下的長(zhǎng)
24、度 IA20: MOV ADBX,20H ;剩下的地方填充空格 INC BX LOOP IA20 CLD LEA SI,AD MOV CX,15 REP MOVSB RET INPUTADDRESS ENDP;+ INPUTPHONE PROC NEAR ;輸入電話函數(shù) MOV AH,0AH LEA DX,PHONEPAR INT 21H DISPL CRLF MOV BH,0 MOV BL,ACTPLEN MOV CX,15 SUB CX,BX ;計(jì)算剩下的長(zhǎng)度 IP20: MOV PHONEBX,20H ;剩下的地方填充空格 INC BX LOOP IP20 CLD LEA SI,PHON
25、E MOV CX,15 REP MOVSB RET INPUTPHONE ENDP;*排序模塊* NAMESORT PROC NEAR ;排序 CMP COUNT1,1 JBE EXIT5 MOV DI,STU1 SUB DI,110 ;調(diào)整指針 MOV ENDADDR,DI ;調(diào)整指針指向倒數(shù)第二個(gè)名字 NS10: MOV SWAPPED,0 LEA SI,STU ADD SI,10 ;第一個(gè),調(diào)整指針到第一條記錄的名字 NS20: MOV CX,10 MOV DI,SI ADD DI,60 ;下一個(gè)被比較的名字 MOV AX,DI MOV BX,SI REPE CMPSB JBE NS30
26、 ;小于或等于不用交換 CALL NPXCHG NS30: MOV SI,AX CMP SI,ENDADDR JBE NS20 CMP SWAPPED,0 ;標(biāo)志位 JNZ NS10 EXIT5: RET NAMESORT ENDP;-;交換兩個(gè)信息 NPXCHG PROC NEAR MOV SI,BX SUB SI,10 MOV CX,30 ;58個(gè)字節(jié) LEA DI,TEMP ;借助緩存TEMP REP MOVSW MOV CX,30 MOV DI,BX SUB DI,10 REP MOVSW MOV CX,30 LEA SI,TEMP REP MOVSW MOV SWAPPED,1 ;標(biāo)
27、志位 RET NPXCHG ENDP;*查找模塊* SEARCH PROC NEAR MOV AH,COUNT1 MOV COUNT,AH MOV BP,0 CLD DISPL MESS10 ;顯示要查找了人名' CALL INPUTNAME1 ;輸入要查找的人名 CALL NAMESEARCH ;查找 CMP BP,0 JBE S2 JMP EXIT6 S2: DISPL MESS15;沒找到 EXIT6: RET SEARCH ENDP;- INPUTNAME1 PROC NEAR ;查找模塊中的輸入姓名函數(shù),此函數(shù)不存儲(chǔ)到內(nèi)存 MOV AH,0AH LEA DX,NAMEPAR
28、INT 21H DISPL CRLF MOV BH,0 MOV BL,ACTNLEN MOV CX,10 SUB CX,BX ;計(jì)算剩下的長(zhǎng)度 IN21: MOV _NAMEBX,20H ;剩下的地方填充空格 INC BX LOOP IN21 RET INPUTNAME1 ENDP;- NAMESEARCH PROC NEAR LEA SI,STU ADD SI,10 ;SI指向第一條記錄的人名 MOV BX,SI NASE10: LEA DI,_NAME ;存放待查找的人名地址 MOV CX,5 REPE CMPSW JCXZ NASEEXIT ;相等 JMP NASE20 NASEEXIT: ;顯示出來(lái) MOV SI,BX SUB SI,10 ADD BP,2 MOV DELBP,SI ;指向要顯示記錄的首
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- idc租賃服務(wù)合同范例
- 存貨質(zhì)押合同范本
- 企業(yè)員工招聘合同范本
- 農(nóng)村安裝路燈合同范例
- 兼職配音協(xié)議合同范本
- 照明燈具采購(gòu)合同范本
- 工業(yè)固體廢物處置合同范本
- 冰箱保養(yǎng)合同范本
- 天籟侗歌苗寨傳
- 2025年度國(guó)際知識(shí)產(chǎn)權(quán)轉(zhuǎn)讓合同范本(含專利保護(hù))
- 施工周報(bào)表(標(biāo)準(zhǔn)模版)
- 4.5MWp分布式光伏項(xiàng)目主要設(shè)備材料清單(建筑工程安裝工程)
- von frey絲K值表完整版
- 云南省普通初中學(xué)生成長(zhǎng)記錄模板-好ok
- SB/T 10415-2007雞粉調(diào)味料
- 考古繪圖基礎(chǔ)
- GB/T 32574-2016抽水蓄能電站檢修導(dǎo)則
- 《社會(huì)主義市場(chǎng)經(jīng)濟(jì)理論(第三版)》第十三章社會(huì)主義市場(chǎng)經(jīng)濟(jì)標(biāo)準(zhǔn)論
- 變更索賠案例分析
- 過敏性休克的急救及處理流程教材課件(28張)
- 《花婆婆》兒童繪本故事
評(píng)論
0/150
提交評(píng)論