基于匯編語言學(xué)生成績管理系統(tǒng)_第1頁
基于匯編語言學(xué)生成績管理系統(tǒng)_第2頁
基于匯編語言學(xué)生成績管理系統(tǒng)_第3頁
基于匯編語言學(xué)生成績管理系統(tǒng)_第4頁
基于匯編語言學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

學(xué)生成績管理系統(tǒng)目錄設(shè)計(jì)內(nèi)容2設(shè)計(jì)目的2設(shè)計(jì)要求2設(shè)計(jì)分析2子程序分析7操作說明10程序代碼11總結(jié)30參考文獻(xiàn)30設(shè)計(jì)內(nèi)容設(shè)計(jì)一個(gè)學(xué)生成績管理程序,要求能實(shí)現(xiàn)以下功能:各科成績的錄入,修改和刪除。按姓名查詢每個(gè)學(xué)生各門課的成績。顯示查詢結(jié)果。統(tǒng)計(jì)個(gè)分?jǐn)?shù)段的人數(shù)。5〕打印學(xué)生成績。設(shè)計(jì)目的用匯編數(shù)據(jù)的錄入、修改和刪除操作。設(shè)計(jì)要求學(xué)習(xí)如何用匯編語言進(jìn)行數(shù)據(jù)處理。設(shè)計(jì)分析1.總體結(jié)構(gòu)整個(gè)程序采用主程序調(diào)用子程序的方法。主程序完成菜單的顯示,子程序完成一個(gè)獨(dú)立功能方法的實(shí)現(xiàn)。各子程序的實(shí)現(xiàn)方法簡要描述如下:1〕設(shè)計(jì)INSERT〔錄入〕子程序,先翻開文件SCORE.TXT,并置文件指針到文件尾,然后調(diào)用GET_REC子程序接受用戶的輸入,再把用戶的輸入寫入文件,最后關(guān)閉文件返回主程序。2〕設(shè)計(jì)Delete〔刪除〕子程序,先翻開文件,再調(diào)用宏GETIN得到要刪除的學(xué)生的姓名,然后讀文件中的記錄,直到其記錄的名字與所輸入的名字相同為止,把文件指針后退8個(gè)字符〔即4門課成績所占的空間〕,寫入8個(gè)“0”3〕設(shè)計(jì)List〔瀏覽〕子程序時(shí),先翻開文件,然后讀一個(gè)記錄,并通過調(diào)用宏SHOW_ITEM將其顯示到屏幕上,入文件指針沒有到達(dá)文件尾,那么繼續(xù)讀記錄并顯示,當(dāng)指針到達(dá)文件尾時(shí),那么關(guān)閉文件返回主程序。4〕設(shè)計(jì)Modify〔修改〕子程序時(shí),先翻開文件SCORE.TXT,通用GER_REC得到要修改的記錄,然后讀文件中的記錄,并與用戶輸入的記錄做比擬〔只比擬記錄中的名字局部〕,假設(shè)不同那么噸下一條記錄,假設(shè)相同那么將文件指針后退23個(gè)字符〔一個(gè)記錄為23個(gè)字符的長度〕,然后把用戶輸入的記錄寫入文件,最后關(guān)閉文件返回主程序。5〕設(shè)計(jì)Count〔統(tǒng)計(jì)〕子程序時(shí),先翻開文件,然后讀記錄,比擬記錄的第16個(gè)字符,數(shù)學(xué)成績的高位〕,并統(tǒng)計(jì),直到文件指針到達(dá)文件尾,最后關(guān)閉文件調(diào)用宏SHOW_ITEM顯示統(tǒng)計(jì)結(jié)果,返會主程序。6〕設(shè)計(jì)Query〔查詢〕子程序時(shí),先翻開文件,通過調(diào)用宏GETIN得到要查找學(xué)生的姓名,然后讀文件記錄,并同要查找的學(xué)生姓名比擬,假設(shè)相同那么輸出,假設(shè)不同繼續(xù)讀文件記錄,最后顯示查詢結(jié)果,關(guān)閉文件返回程序。另外還有打印的分?jǐn)?shù)段人數(shù)統(tǒng)計(jì),這些結(jié)合后面的子程序功能分析做詳細(xì)介紹。圖1是本設(shè)計(jì)顯示記錄的界面圖1學(xué)生成績管理系統(tǒng)界面程序流程圖如圖2所示入口入口入口入口翻開文件翻開文件翻開文件翻開文件置指針到文件尾讀一個(gè)記錄置指針到文件尾讀一個(gè)記錄從終端接收用戶輸入的記錄讀錯(cuò)?Y從終端接收用戶輸入的記錄讀錯(cuò)?記錄寫入文件顯示錯(cuò)誤信息N記錄寫入文件顯示錯(cuò)誤信息文件尾?Y文件尾?關(guān)閉文件關(guān)閉文件關(guān)閉文件N關(guān)閉文件顯示記錄顯示記錄返回返回返回返回A〕List流程圖B〕Insert流程圖翻開文件返回返回文件刪除記錄姓名相同?讀一條記錄接收被刪除記錄的學(xué)生姓名入口返回關(guān)閉文件顯示統(tǒng)計(jì)結(jié)果指針到達(dá)文件尾對數(shù)學(xué)成績分段并統(tǒng)計(jì)翻開文件讀一個(gè)記錄入口入口翻開文件讀一個(gè)記錄是否為要修改的記錄返回關(guān)閉文件顯示記錄返回寫入修改記錄并關(guān)閉文件文件指針后退一個(gè)記錄是否為所尋找的記錄讀一個(gè)記錄翻開文件入口翻開文件返回返回文件刪除記錄姓名相同?讀一條記錄接收被刪除記錄的學(xué)生姓名入口返回關(guān)閉文件顯示統(tǒng)計(jì)結(jié)果指針到達(dá)文件尾對數(shù)學(xué)成績分段并統(tǒng)計(jì)翻開文件讀一個(gè)記錄入口入口翻開文件讀一個(gè)記錄是否為要修改的記錄返回關(guān)閉文件顯示記錄返回寫入修改記錄并關(guān)閉文件文件指針后退一個(gè)記錄是否為所尋找的記錄讀一個(gè)記錄翻開文件入口YYNNNYNY開始開始調(diào)用Query子程序調(diào)用Delete子程序調(diào)用Insert子程序調(diào)用Count子程序調(diào)用Modify子程序調(diào)用Iist子程序顯示菜單輸入一個(gè)字符結(jié)束是E是I是C是M是D是Q是L調(diào)用Query子程序調(diào)用Delete子程序調(diào)用Insert子程序調(diào)用Count子程序調(diào)用Modify子程序調(diào)用Iist子程序顯示菜單輸入一個(gè)字符結(jié)束是E是I是C是M是D是Q是LYNYNYNYNYNYNNY在大型的程序中,為了使程序清晰、可讀性好,一般會大量使用宏和子程序,因此,充分了解這些宏和子程序,才能掌握程序的編制方法。2.宏的分析此題中使用了以下宏,其作用如下:SHOW:用來指定地址的顯示字符串,有一個(gè)地址參數(shù)SET_P1:設(shè)定光標(biāo)位置,有一個(gè)可變參數(shù)a,作用是講光標(biāo)置于坐標(biāo)〔a,36〕處,使用了BIOS中斷10H的2號功能。SET_P2:將光標(biāo)置于〔12,2〕處。SET_P3:將光標(biāo)置于〔1,30〕處。CLEAR:去除整個(gè)屏幕,用BIOS中斷10H的7號功能實(shí)現(xiàn),范圍是從坐標(biāo)〔0,0〕到〔24,79〕,將整個(gè)區(qū)域變?yōu)榭瞻?。CLEAR1:去除有半局部屏幕,去除范圍從坐標(biāo)〔4,36〕到〔10,79〕,結(jié)果是擦出此區(qū)域的顯示內(nèi)容。CLEAR2:去除下半局部屏幕,去除范圍是從坐標(biāo)〔12,0〕到〔24,79〕,結(jié)果是擦除此區(qū)域的顯示內(nèi)容。NNWLINE:回車換行。SHOE_ITEM:顯示記錄內(nèi)容,執(zhí)行后顯示名稱,然后依次顯示4項(xiàng)功課成績,各項(xiàng)成績間空3個(gè)空格,最后換行。這個(gè)宏包含的語句較多,如果每次都直接用語句實(shí)現(xiàn)非常冗長,使用宏后那么主程序就很簡潔,充分表達(dá)了使用宏的優(yōu)點(diǎn)。GETIN:獲取學(xué)生的信息,這也是一個(gè)使用頻繁的宏,其中含有很多的指令,它帶有ADDRS和COUNT2兩個(gè)參數(shù),ADDRS是存放信息的數(shù)據(jù)段位置,CIUNT2是接受的字符數(shù)。子程序分析下面詳細(xì)分析程序中用的的主要的子程序?!?〕INSERT子程序INSERT子程序的功能是錄入一條記錄。首先保存現(xiàn)場入棧,然后DOS中斷3D號功能翻開FNAME指定的文件,然后宏GETIN去除屏幕右半局部的記錄輸入?yún)^(qū)域。在記錄的第一項(xiàng)處置光標(biāo),用GET_REC獲取記錄內(nèi)容,用DOS中斷42H號功能將指針移到文件末尾。再用DOS中斷40H號功能將放在BUFFER緩沖區(qū)的23個(gè)字節(jié)的內(nèi)容寫到文件中,接著關(guān)閉文件,重新設(shè)置光標(biāo)位置在顯示記錄位置。最后彈?;謴?fù)現(xiàn)場?!?〕GET_REC子程序GER_REC子程序的功能是獲取新的記錄內(nèi)容。首先用宏GETIN獲取學(xué)生的姓名,放入BUFF2中,最多15個(gè)字符,如果遇到回車鍵那么提前結(jié)束。再用循環(huán)方式將BUFFER2中的15個(gè)字符送到BUFFER1中。然后用宏SET_P1將光標(biāo)置于數(shù)學(xué)成績輸入項(xiàng)后,等待鍵盤輸入。輸入的成績,先放在BUER2中,然后加到BUFFER1中的姓名后面。輸入為2個(gè)字符后遇到回車鍵提前結(jié)束。接著用同樣的方法輸入英語成績,計(jì)算機(jī)成績和中文成績。完成后,這個(gè)程序就得到了一個(gè)記錄的所有信息?!?〕OPENF子程序OPENF是個(gè)一個(gè)非常簡單的子程序。它的作用是翻開一個(gè)文件并把一個(gè)文件句柄保存在數(shù)據(jù)段的handle緩沖區(qū)中?!?〕QUERY子程序QUERY是查詢一條記錄。首先保存現(xiàn)場。然后分別去除界面右上方和下邊的區(qū)域。翻開FAME指定的文件并保存文件句柄。將光標(biāo)至于界面的下半空白局部開始處,用宏GETIN獲取最多15個(gè)字符的輸入,然后將BUFFER1中的內(nèi)容與BUFFER2中進(jìn)行比擬,看是否相同。如果不同,再繼續(xù)向下從文件中讀出23個(gè)字節(jié)比擬,循環(huán)向下,直到相同或文件結(jié)束為止。如果不同,那么顯示該條記錄,然后關(guān)閉文件,恢復(fù)現(xiàn)場。B:MOVAH,3FH;讀文件MOVCX,23;讀23個(gè)字節(jié)〔記錄長度〕MOVDX,OFFSETBUFFER2;放在BUFFER2中INT21HLEASI,BUFFER2LEADI.BUFFER1MOVCX,15;循環(huán)次數(shù)C:MOVAL,BYTEPTR[SI]CMPAL,BYTEPTR[DI];比擬BUFFER1和BUFFER2JNZB;不同那么轉(zhuǎn)BINCSIINCDLOOPC〔5〕MODIFY子程序MODIFY子程序的功能是修改記錄。先保護(hù)現(xiàn)場,然后去除右上局部的記錄輸入?yún)^(qū)域,接著翻開文件。用GET_REC子程序獲取輸入的記錄信息,并存入BUFFER1中。從翻開的文件中讀取一個(gè)記錄的內(nèi)容〔23個(gè)字節(jié)〕放在BUFFER2中。比擬記錄前面的15個(gè)字節(jié)〔姓名〕,如果不同,那么讀取下一個(gè)記錄;如果相同,那么回移一個(gè)記錄的指針,回到剛剛這條記錄的位置〔因?yàn)樽x取一個(gè)記錄后,指針已移到下一條記錄上〕。將放在BUFFER1中的輸入的記錄寫到剛剛這條記錄在文件中的位置上,從而實(shí)現(xiàn)此記錄的修改。最后關(guān)閉程序,恢復(fù)現(xiàn)場。〔6〕DELETE子程序DELETE子程序的功能是刪除一條記錄。首先保存現(xiàn)場,去除屏幕。然后翻開文件,保存文件句柄。用宏GETIN獲取15個(gè)字節(jié)的姓名字符,放在BUFFER1中。讀取一條記錄〔23個(gè)字節(jié)〕,放在BUFFER2中,然后和BUFFER1中內(nèi)容比擬,如果不同,讀取下一條記錄。如果姓名相同,那么把指針后移8個(gè)字符〔4門功課所占空間〕,寫入8個(gè)“0〞字符。關(guān)閉文件,恢復(fù)現(xiàn)場并退出?!?〕LIST子程序LIST子程序的作用是顯示文件中的記錄。首先去除記錄輸入?yún)^(qū)和顯示區(qū)域。然后顯示記錄字段的標(biāo)題。翻開文件,保存文件句柄。讀取一條記錄的內(nèi)容放在BUFFER1中,并判斷是否到了文件末尾,如果不是,那么顯示這條記錄。循環(huán)讀取直到文件結(jié)束。最后關(guān)閉程序,恢復(fù)現(xiàn)場。〔8〕PRINT子程序DELETE子程序的功能是打印文件中的記錄。用OPENF子程序翻開文件。讀取一條記錄,匯編語言提供了自定義數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)定義語句,可將不同的數(shù)據(jù)類型放在一個(gè)數(shù)據(jù)結(jié)構(gòu)中,便于處理,在本程序中的記錄就采用了結(jié)構(gòu)定義語句。這里讀取記錄也用了結(jié)構(gòu)的方法。接著用DOS中斷21H的5號功能,逐字打印存放在BUFFER1中的所以字符。一條記錄打完后,打印回車符換行。然后用同樣方法繼續(xù)讀取下一條記錄并打印,直到文件結(jié)束為止。最后關(guān)閉文件退出?!?〕COT子程序COT子程序的作用是統(tǒng)計(jì)各分?jǐn)?shù)段小說人數(shù),并簡化程序,作為例如,本程序只統(tǒng)計(jì)記錄數(shù)學(xué)各分?jǐn)?shù)段的人數(shù)。首先顯示統(tǒng)計(jì)結(jié)果的標(biāo)題:maths<60<70<80<90<100。然后翻開文件。讀取記錄,將記錄的第16個(gè)字符〔數(shù)學(xué)分?jǐn)?shù)的高位〕取出比擬。統(tǒng)計(jì)結(jié)果依次放在以BUFFER3開頭的內(nèi)存單元中,如果小于60,那么將小于60的記錄單元BUFFER3加一;假設(shè)小于70,那么將小于70的記錄單元BUFFER3加一,即BUFFER3下一個(gè)地址單元內(nèi)容加一,依次類推。處理完后再讀取下個(gè)記錄,作同樣處理,直到文件結(jié)束為止。接著顯示放在BUFFER3中的各分?jǐn)?shù)段的人數(shù)的統(tǒng)計(jì)結(jié)果,最后關(guān)閉文件結(jié)束。從程序中可以看出,統(tǒng)計(jì)時(shí)程序有個(gè)限制,本例每個(gè)分?jǐn)?shù)段最多不能超過9個(gè)人。操作說明改程序除源程序外,還需要另一個(gè)存放記錄的文件〔此程序中使用的文件名為SCORE.TXT),但本程序并沒有創(chuàng)立這個(gè)文件的功能。要產(chǎn)生這個(gè)文件,可用記事本先做以一個(gè)空的文件名為SCORE.TXT的文件。程序的運(yùn)行與該文件的存放位置有關(guān),位置是程序數(shù)據(jù)段的FNAME的值。二者要保持一致,否那么會因?yàn)檎也坏綌?shù)據(jù)存放文件而出錯(cuò)。程序運(yùn)行時(shí),在出現(xiàn)主菜單后,按1鍵,將顯示學(xué)生的各科成績;按i鍵,將執(zhí)行錄入功能,可以錄入新的學(xué)生成績;按M鍵,了修改學(xué)生成績。由于本程序時(shí)隔簡單程序,所以在修改時(shí),要輸入學(xué)生的所有成績,包括不要修改的成績;按D鍵后,輸入要刪除的學(xué)生名,將使其成績?nèi)珵?;按Q鍵后,輸入要查詢的學(xué)生的姓名,鍵顯示其各科成績;按C鍵將顯示數(shù)學(xué)成績的分段統(tǒng)計(jì)結(jié)果。以上功能在運(yùn)行時(shí)可以單獨(dú)實(shí)現(xiàn)〔即在進(jìn)入主菜單后,單擊功能鍵選中該功能進(jìn)行操作后程序會關(guān)閉。但要運(yùn)行其他功能,那么要重新進(jìn)入主菜單單擊別的功能鍵,即每次只能運(yùn)行一項(xiàng)功能〕。要特別說明的是,本程序住一套目的是驗(yàn)證匯編程序?qū)崿F(xiàn)的數(shù)據(jù)記錄操作功能,為使程序不至于郭長,減少篇幅,因此程序處理會很簡單。程序中沒有錯(cuò)誤處理程序,如果輸入錯(cuò)誤,如按退格鍵將會出錯(cuò),因此輸入時(shí)要注意補(bǔ)要輸錯(cuò)。程序代碼datasegmentmess1db'studentgrademanagementsystem',0ah,0dh,'$'mess2db'thisismainmenu',0ah,0dh,'$'mess3db'insert(i)pleaseinput:',0ah,0dh,'$'mess4db'modify(m)name:',0ah,0dh,'$'mess5db'delete(d)maths:',0ah,0dh,'$'mess6db'query(q)english:',0ah,0dh,'$'mess7db'count(c)computer:',0ah,0dh,'$'mess8db'print(p)chinese:',0ah,0dh,'$'mess9db'exit(e)',0ah,0dh,'$'mess10db'**********************************************************$'mess11db'nameMaEnCoCh',0ah,0dh,'$'mess13db'list(l)',0ah,0dh,'$'mess12db'maths<60<70<80<90<100',0ah,0dh,'$'err1db'thereisnotthisstudent$'err2db'fileclosewrong$'fnamedb"d:\masm\score.txt";記錄分?jǐn)?shù)文件的路徑和文件名。buffer1db23dup(?)buffeerdb0ah,0dh,'$'buffer2db30dup(?)buffer3db8dup('0')countdb5handledw?deldb8dup('0')xdb?dataendsscorestruc;定義記錄結(jié)構(gòu)namesdb15dup('')mathsdb0,0englishdb0,0computerdb0,0chinesedb0,0scoreendsshowmacroaddrs;顯示字符串leadx,addrsmovah,9int21hendmset_p1macroa;設(shè)光標(biāo)于〔a,36〕movah,2movdh,amovdl,36movbh,0int10hendmset_p2macro;設(shè)光標(biāo)于〔12,2〕movah,2movdh,12movdl,2movbh,0int10hendmset_p3macro;設(shè)光標(biāo)于〔1,30〕movah,2movdh,1movdl,30movbh,0int10hendmclearmacro;清整個(gè)屏幕moval,0movcl,0movch,0movdh,24movdl,79movbh,7movah,6int21hendmclear1macro;清右上記錄輸入?yún)^(qū)moval,0movbh,7movch,4movcl,36movdh,10movdl,79movah,6int10hendmclear2macro;清下半局部記錄顯示區(qū)moval,0movbh,7movch,12movcl,0movdh,24movdl,79int10hendmnewlinemacro;回車換行pushaxpushdxmovdl,0dhmovah,2int21hmovdl,0ahmovah,2int21hpopdxpopaxendmshow_itemmacroaddrs;在指定位置顯示記錄localiloop,w10pushbxpushcxmovbx,0iloop:movdl,addrs[bx];顯字符串movah,2int21hincbxcmpbx,15jliloopmovcx,4w10:movdl,''movah,2int21hmovdl,''movah,2int21hmovdl,''movah,2int21hmovdl,addrs[bx]movah,2int21hincbxmovdl,addrs[bx]movah,2int21hincbxloopw10newlinepopcxpopbxendmgetinmacroaddrs,count2;從鍵盤獲取信息localzeroit,lp,input_end,exitpushbxpushaxmovbx,0zeroit:movaddrs[bx],''incbxcmpbx,15jlzeroitmovbx,0lp:movah,1int21hcmpal,0ahjzinput_endcmpal,0dhjzinput_endmovaddrs[bx],alincbxcmpbx,count2jllpinput_end:cmpal,0dhjzexitcmpal,0ahjzexitmovah,7int21hjmpinput_endexit:popaxpopbxendmcodesegmentmainprocfarassumecs:code,ds:data,es:datastart:movax,datamovds,axmovah,0;設(shè)顯示模式80*25moval,3int10hclearshowmess1showmess2showmess13showmess3showmess4showmess5showmess6showmess7showmess8showmess9newlineshowmess10set_p3w:movah,7int21hcmpal,'i'jnzn1callinsertjmpwn1:cmpal,'m'jnzn2callmodifyjmpwn2:cmpal,'d'jnzn3calldeletejmpwn3:cmpal,'q'jnzn4callqueryjmpwn4:cmpal,'c'jnzn5callcotjmpwn5:cmpal,'p'jnzn6callprintjmpwn6:cmpal,'l'jnzn7calllistjmpwn7:cmpal,'e'jzexitfjmpwexitf:movah,4chint21hretmainendpinsertprocnearpushaxpushbxpushcxpushdxmovdx,offsetfnamemoval,2movah,3dh;翻開文件int21hmovbx,axclear1set_p14callget_recmovcx,0;指針移到文件尾movdx,0moval,2movah,42hint21hmovcx,23;寫文件movdx,offsetbuffer1movah,40hint21hmovah,3eh;關(guān)閉文件int21hset_p3popdxpopcxpopbxpopaxretinsertendpget_recprocnearpushaxpushbxgetinbuffer2,15;輸入姓名movbx,0movcx,15continue:moval,buffer2[bx]movbuffer1[bx],alincbxloopcontinueset_p15getinbuffer2,2;輸入數(shù)學(xué)成績moval,buffer2movbuffer1[bx],alincbxmoval,buffer2+1movbuffer1[bx],alincbxset_p16getinbuffer2,2;輸入英語成績moval,buffer2movbuffer1[bx],alincbxmoval,buffer2+1movbuffer1[bx],alincbxset_p17getinbuffer2,2;輸入計(jì)算機(jī)成績moval,buffer2movbuffer1[bx],alincbxmoval,buffer2+1movbuffer1[bx],alincbxset_p18getinbuffer2,2;輸入語文成績moval,buffer2movbuffer1[bx],alincbxmoval,buffer2+1movbuffer1[bx],alincbxpopbxpopaxretget_recendpopenfprocnear;翻開文件movdx,offsetfnamemoval,02movah,3dhint21hmovhandle,axretopenfendpqueryprocnear;查詢記錄pushaxpushbxpushcxpushdxclear1clear2movdx,offsetfnamemoval,2movah,3dh;翻開文件int21hmovbx,axset_p2getinbuffer1,15;取姓名到buffr1中l(wèi)eadx,mess11movah,9int21hb:movah,3fh;讀文件movcx,23;讀23個(gè)字節(jié)〔記錄長度movdx,offsetbuffer2;放在buffer2中int21hleasi,buffer2leadi,buffer1movcx,15;循環(huán)次數(shù)c:moval,byteptr[si]cmpal,byteptr[di];比擬buffer1和buffer2jnzb;不同那么轉(zhuǎn)bincsiincdiloopcmov[buffer2+23],'$'show_itembuffer2movah,3ehint21hpopdxpopcxpopbxpopaxretqueryendpmodifyprocnear;修改記錄pushaxpushbxpushcxpushdxclear1set_p14movdx,offsetfnamemoval,2movah,3dhint21hmovbx,axmovhandle,axcallget_rec;讀取輸入內(nèi)容放在buffer1read:movdx,offsetbuffer2movcx,23movah,3fh;讀文件,記錄內(nèi)容放在buffer2int21hleasi,buffer2;比擬姓名是否相同leadi,buffer1movcx,15c5:movdl,byteptr[si]cmpdl,byteptr[di]jnzreadincsiincdiloopc5movbx,handlemovah,42h;回移文件指針moval,1movcx,0ffffhmovdx,-23int21hmovcx,23movdx,offsetbuffer1movah,40h;寫入修改記錄int21hmovah,3ehint21hjmpexit2exit1:set_p2showerr1exit2:set_p3popdxpopcxpopbxpopaxretmodifyendpdeleteprocnearpushaxpushbxpushcxpushdxclear1set_p14movdx,offsetfnamemoval,2movah,3dh;翻開文件int21hmovbx,axmovhandle,axgetinbuffer1,15;讀取鍵盤輸入放在buffer1read5:movdx,offsetbuffer2movcx,23movah,3fh;從文件讀記錄放在buffer2中int21hleasi,buffer2leadi,buffer1movcx,15c6:movdl,byteptr[si]cmpdl,byteptr[di]jnzread5incsiincdiloopc6movbx,handlemovah,42h;移文件指針moval,1movcx,0ffffhmovdx,-8int21hmovcx,8movdx,offsetdelmovah,40h;寫文件int21hmovah,3eh;關(guān)閉文件int21hjmpexit6exit5:set_p2showerr1exit6:set_p3popdxpopcxpopbxpopaxretdeleteendplistprocnear;列文件中記錄pushaxpushbxpushcxpushdxclear1clear2set_p2showmess11movdx,offsetfnamemoval,2movah,3dh;翻開文件int21hmovbx,axagain:movdx,offsetbuffer1;讀取記錄movcx,23movah,3fhint21hcmpax,0jzpshow_itembuffer1jmpagainp:movah,3eh;關(guān)閉文件int21hset_p3popdxpopcxpopbxpopaxretlistendpprintprocnearpushaxcallopenf;翻開文件movcl,countmovch,0read2:movdx,offsetbuffer1movcx,typescoremovah,3fh;讀文件int21hmovcx,23hmovbx,0next:movah,5movdl,byteptrbuffer1[bx]int21hincbxloopnextmovah,5movdl,0dhint21hdecxcmpx,0jnzread2movbx

溫馨提示

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

評論

0/150

提交評論