

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目錄</b></p><p><b> 課程設計任務書2</b></p><p> 學生成績管理系統(tǒng)的設計與實現(xiàn)3</p><p> 1.設計內容及要求3</p><p><b> 1.1設計題目3</b></p>&
2、lt;p><b> 1.2設計要求3</b></p><p> 2.設計中使用的關鍵技術和方法3</p><p><b> 2.1宏匯編3</b></p><p> 2.2子程序結構3</p><p> 2.3 BIOS顯示中斷(INT 10H)3</p>&
3、lt;p> 2.4 DOS系統(tǒng)功能調用(INT 21H)4</p><p> 2.5 本次程序用到的控制轉移指令4</p><p> 3.設計方案說明5</p><p> 3.1程序結構的描述5</p><p> 3.2 程序流程圖5</p><p> 3.3主要數據結構和函數的定義和說明
4、6</p><p> 4. 測試及調試過程8</p><p> 4.1 調試過程8</p><p> 4.2 測試結果8</p><p> 5. 設計心得11</p><p><b> 6.參考文獻12</b></p><p> 7. 附錄:源程序清單
5、12</p><p> 本科生課程設計成績評定表25</p><p><b> 課程設計任務書</b></p><p> 學生姓名: 專業(yè)班級: </p><p> 指導教師: 工作單位: </p><p> 題目: 學生成績管理</p>&l
6、t;p><b> 初始條件:</b></p><p> 理論:完成了《匯編語言程序設計》課程,對微機系統(tǒng)結構和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語言程序設計的基本方法和技巧。</p><p> 實踐:完成了《匯編語言程序設計》的4個實驗,熟悉了匯編語言程序的設計環(huán)境并掌握了匯編語言程序的調試方法。</p><p> 要
7、求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)</p><p> 進一步理解和掌握較復雜程序的設計方法,掌握子程序結構的設計和友好用戶界面的設計。具體的設計任務及要求:</p><p> 編寫學生成績信息管理程序,學生信息采用文件存儲;</p><p> 要求能實現(xiàn)學生成績信息的增、刪、改、查;</p><
8、p> 程序采用子程序結構,結構清晰;</p><p> 友好清晰的用戶界面,能識別輸入錯誤并控制錯誤的修改。</p><p> 在完成設計任務后,按要求撰寫課程設計說明書;對課程設計說明書的具體要求請見課程設計指導書。</p><p><b> 閱讀資料:</b></p><p> 1)《IBM—PC匯編
9、語言程序設計實驗教程》實驗2.4</p><p> 2)《IBM—PC匯編語言程序設計(第2版)》例6.11</p><p><b> 時間安排:</b></p><p> 設計安排一周:周1、周2:完成系統(tǒng)分析及設計。</p><p> 周3、周4:完成程序調試,和驗收。</p><p>
10、; 周5:撰寫課程設計報告。</p><p> 指導教師簽名: 年 月 日</p><p> 系主任(或責任教師)簽名: 年 月 日</p><p> 學生成績管理系統(tǒng)的設計與實現(xiàn)</p><p><b> 1.設計內容及要求</
11、b></p><p><b> 1.1設計題目</b></p><p> 學生成績管理系統(tǒng)的設計與實現(xiàn)</p><p><b> 1.2設計要求</b></p><p> 進一步理解和掌握較復雜程序的設計方法,掌握子程序結構的設計和友好用戶界面的設計。具體的設計任務及要求:</p
12、><p> 編寫學生成績信息管理程序,學生信息采用文件存儲;</p><p> 要求能實現(xiàn)學生成績信息的增、刪、改、查;</p><p> 程序采用子程序結構,結構清晰;</p><p> 友好清晰的用戶界面,能識別輸入錯誤并控制錯誤的修改。</p><p> 2.設計中使用的關鍵技術和方法</p>
13、<p><b> 2.1宏匯編</b></p><p> 宏是源程序中一段有獨立功能的代碼。</p><p> 宏定義是用一組偽操作來實現(xiàn)的,其格式如下:</p><p> macro name MARCO [dummy parameter list]</p><p> …… (宏定義體)<
14、;/p><p><b> ENDM</b></p><p> 宏指令的調用稱為宏調用,宏調用的格式:</p><p> macro name [actual parameter list]</p><p> 實元表(actual parameter list)中的每一項為實元,相互之間用逗號隔開</p>
15、<p><b> 2.2子程序結構</b></p><p> 子程序又稱為過程,它相當于高級語言中的過程和函數。</p><p> 過程定義偽操作用在過程的前后,是整個過程形成清晰的,具有特定功能的代碼塊。其格式如下:</p><p> procedure name PROC Attribute</p>&l
16、t;p><b> ……</b></p><p> procedure name ENDP</p><p><b> 過程的調用格式:</b></p><p> call procedure name</p><p> 2.3 BIOS顯示中斷(INT 10H)</p>
17、<p> 本次程序中使用了BIOS顯示中斷的3個功能,如下表:</p><p> 2.4 DOS系統(tǒng)功能調用(INT 21H)</p><p> 本次程序中使用了DOS系統(tǒng)功能調用的個功能,如下表:</p><p> 2.5 本次程序用到的控制轉移指令</p><p> (1)JZ 結果為零(或相等)則轉移</p&g
18、t;<p> 格式:JZ OPR 測試條件:ZF=1</p><p> (2)JL 小于,或者不大于或等于則轉移</p><p> 格式:JL OPR 測試條件:SF∨OF=1</p><p> ?。?)JNZ 結果不為零(或不相等)則轉移</p><p> 格式:JNZ OPR 測試條件:ZF=0</
19、p><p> (4)JMP 跳轉指令 </p><p> 無條件地轉移到指令的地址去執(zhí)行從該地址開始的指令</p><p> ?。?)LOOP 循環(huán)指令</p><p> 格式: LOOP OPR 測試條件:(Count Reg≠0)</p><p><b> 3.設計方案說明</b><
20、/p><p> 3.1程序結構的描述</p><p> 本程序實現(xiàn)學生成績的管理,主要功能有插入,查詢,修改,刪除等。本程序首先定義數據塊data,其中包括運行界面的定義;score struc是用來定義一條學生記錄中所包含的姓名,學號,成績等信息;另外用宏定義用來實現(xiàn)函數,show函數用來輸出定義好的mess語句,來實現(xiàn)界面;set_p函數用來定義光標位置,以實現(xiàn)不同位置的輸入;clea
21、r函數用來清屏;newline函數實現(xiàn)換行,這樣在主函數中實現(xiàn)換行時直接調用newline即可;show_item用來輸出記錄;getin函數用來接收從鍵盤輸入的記錄。</p><p> main函數中定義了幾個子函數分別用來實現(xiàn)不同的功能,這幾個子函數均是調用data中的函數來實現(xiàn)自身功能的,其中insert函數用來插入記錄;query用來按姓名查找記錄;query1用來按學號查找記錄;modify用來實現(xiàn)修
22、改記錄;delete用來實現(xiàn)刪除記錄;list函數可以實現(xiàn)所有記錄的顯示。</p><p><b> 3.2 程序流程圖</b></p><p> i q Q m d e </p><p> e
23、 e e e e </p><p> 3.3主要數據結構和函數的定義和說明</p><p> ?。?)學生成績數據結構,包括姓名。學號,和四科成績,其中姓名定義為13個字節(jié),學號和成績各占2個字節(jié),所以每條記錄占23個字節(jié)。</p><p> score struc&
24、lt;/p><p> names db 13 dup(' ')</p><p> number db 0,0</p><p> maths db 0,0</p><p> english db 0,0</p><p> chinese db 0,0</p><
25、;p> others db 0,0</p><p> score ends</p><p> ?。?)置光標函數,set_p1用于輸入記錄時的光標位置,它帶有一個參數a,用來動態(tài)的調整光標所在行,從而輸入一條完整的記錄;set_p2用于查詢記錄輸入關鍵字或輸出錯誤信息時的光標位置,set_p3用于程序剛開始時輸入控制字符時的光標位置。用到了BIOS功能的調用(INT=10H,
26、AH=2)。</p><p> set_p1 macro a </p><p><b> mov ah,2</b></p><p><b> mov dh,a</b></p><p><b> mov dl,36</b></p>&l
27、t;p><b> mov bh,0</b></p><p> int 10h ;bh=page dh/dl=h/l</p><p><b> endm</b></p><p> ?。?)清屏函數clear,clear1,clear2均是用來在不同時期清屏,用到了BIOS功能的調用(INT=10H
28、,AH=6)。</p><p> clear macro ;all screen</p><p><b> mov al,0</b></p><p><b> mov cl,0</b></p><p><b> mov ch,0<
29、;/b></p><p><b> mov dh,24</b></p><p><b> mov dl,79</b></p><p><b> mov bh,7</b></p><p> mov ah,6 ;screen &
30、lt;/p><p><b> int 10h</b></p><p><b> endm</b></p><p> (4)輸出記錄函數show_item,其中定義了兩個變量iloop,w10。iloop用于輸出姓名,用到了jl跳轉指令從而挨個字節(jié)的輸出13個自己的姓名;w10利用循環(huán)指令loop循環(huán)5次來分別輸入學號和四
31、門成績,用到了DOS系統(tǒng)功能調用(INT=21H,AH=2)。</p><p> ?。?)接受字符函數 getin,其中定義了四個變量zeroit,lp,input_end,exit。將用于在后面插入子函數insert中調用的get_rec子函數來調用,方可實現(xiàn)記錄的輸入。</p><p> (6)插入記錄函數insert,先打開文件然后進行寫入,寫入時先寫入姓名,學號和四門成績將調用子
32、函數get_rec來寫入,而get_rec函數又調用接受字符函數 getin來寫入記錄,用到了DOS系統(tǒng)功能調用(INT=21H,AH=1和AH=3e,3d)等對文件的打開和關閉操作等。</p><p> ?。?)查詢函數包括按姓名查找和按學號查找,以前者為例,</p><p><b> b: </b></p><p> mov ah,3
33、fh</p><p><b> mov cx,23</b></p><p> mov dx,offset buffer2</p><p> int 21h ;read file</p><p> lea si,buffer2</p><p> lea di,buf
34、fer1</p><p> mov cx,13 ;cx count</p><p><b> c: </b></p><p> mov al,byte ptr[si] </p><p> cmp al,byte ptr[di]</p><p> jnz b
35、 ;not equal </p><p><b> inc si</b></p><p><b> inc di</b></p><p><b> loop c</b></p><p> 這兩個模塊實現(xiàn)對姓名的匹配用到了跳轉指令jnz和循環(huán)指
36、令loop實現(xiàn)對姓名的矮個字符的匹配對照。若匹配成功則輸出相應的記錄,次記錄是保存在buffer2中的。</p><p> mov [buffer2+23],'$ </p><p> show_item buffer2 即可實現(xiàn)記錄的正確輸出。</p><p> ?。?)修改記錄函數modify。</p><p><b&
37、gt; read: </b></p><p> mov dx,offset buffer2</p><p><b> mov cx,23</b></p><p> mov ah,3fh ;read file</p><p><b> int 21h</b><
38、;/p><p> lea si,buffer2</p><p> lea di,buffer1</p><p><b> mov cx,13</b></p><p><b> c5: </b></p><p> mov dl,byte ptr[si] </p&g
39、t;<p> cmp dl,byte ptr[di]</p><p><b> jnz read</b></p><p><b> inc si</b></p><p><b> inc di</b></p><p><b> loop c5&
40、lt;/b></p><p> 這兩個模塊實現(xiàn)姓名的匹配從而找到正確的記錄位置,然后調用DOS系統(tǒng)功能INT=21H,AH=42實現(xiàn)文件指針的正確定位,具體為從記錄末尾向前移23字節(jié)即可,即cx=0ffffh,dx=-23。AH=40用于寫入修改后的記錄。最后關閉文件即可,如果找不到匹配的記錄,則輸出錯誤提示信息“ there is not this student”。</p><p&
41、gt; (9)刪除記錄函數delete,和修改記錄函數一樣先是實現(xiàn)姓名的匹配,然后文件指針正確定位。在此要說明的是,本程序刪除記錄并不是真正意義上的刪除,而是將待刪除的記錄的學號和成績全部附為0,從而變相的刪除記錄,所以在找到正確記錄的位置時,只需寫入10個0 將原有記錄替代即可:</p><p><b> mov cx,10</b></p><p> mov
42、dx,offset del</p><p> mov ah,40h</p><p> int 21h </p><p> 其中del為:“del db 10 dup('0')”</p><p> ?。?0)輸出全部記錄函數list:調用show_item函數輸出一條記錄,并利用jmp跳轉指令循環(huán)輸出其他記錄,
43、知道記錄全部輸出完畢。</p><p> 4. 測試及調試過程</p><p><b> 4.1 調試過程</b></p><p> 將程序在記事本中編輯完成后,保存在masm文件夾下,格式為.asm。另外在本文件夾下創(chuàng)建一個文本文檔score.txt用于保存學生成績記錄。</p><p> 然后打開命令提示符窗
44、口,跳轉到masm文件夾下進行操作,首先進行匯編:masm hb;產生二進制的目標文件,如果有錯則進行修改只到沒有錯誤為止,然后利用link程序產生exe文件:link hb;最后在建立了exe文件后,就直接從dos執(zhí)行程序:hb。</p><p><b> 4.2 測試結果</b></p><p> (1)本程序運行界面如下:</p><p&
45、gt; ?。?)插入一條記錄時(鍵盤輸入i)的界面如下:</p><p> ?。?)按姓名查找(鍵盤輸入q)一條記錄時的界面如下:</p><p> 先輸入要查找的姓名:如Tom</p><p> 然后按回車鍵即會顯示相應的要查找的記錄,如下圖:</p><p> 按學號查找與其類似,不再展示。</p><p>
46、 ?。?)修改一條記錄,在輸入控制字符“m”后,光標便跳到“name”后便可進行重新錄入,</p><p> 若輸入的姓名在記錄里面沒有,則會在屏幕下方顯示出錯信息“ there is not this student”。修改姓名為:Tom的記錄如下圖:</p><p> 修改后再進行一次對caijun的查詢如下圖,即可發(fā)現(xiàn)記錄以改變:(見下頁)</p><p>
47、; ?。?)刪除一條記錄的界面如下:</p><p> 在name后輸入要刪除的記錄Tom后,按回車記錄即已被刪除,學號和成績即全部為零。</p><p> ?。?)顯示全部記錄的界面如下:</p><p> 可以看到Tom的記錄后面全是零,這是因為上一步中對其記錄進行了刪除。</p><p> 這些記錄全部記錄在同目錄下的文本文檔sc
48、ore.txt里面。</p><p><b> 5. 設計心得</b></p><p> 本次課程設計完成的是學生成績管理系統(tǒng)的匯編實現(xiàn),采用宏匯編、子程序結構等方式實現(xiàn)。由于這次一次綜合性的設計實驗,光靠課本上的知識是遠遠不夠的,并且有一定的難度。在老師的指導,同學的幫助,以及上網查詢資料后,我順利的完成了本次課程設計。</p><p>
49、 通過這次課程設計,我對匯編語言程序設計有了更進一層的理解,同時對以前學的組成原理中的一些內容也有了更深的理解。在本次實驗中我遇到了很多困難,實驗剛開始時,不知從何下手,后來我把老師提供的參考部分通讀了一遍,許多題目要求就基本搞懂了。我就按要求來寫算法,畫出流程圖,然后就逐個去實現(xiàn)其中的功能。</p><p> 類似題目的課程設計在C++中里面已經做過,但是在開始做匯編的課程設計時發(fā)現(xiàn)非常難,因為匯編是第一次
50、進行學習,然后又要做這么復雜的程序,當時真的 感覺很難,在圖書館查書,上網尋找相關資源后,最后勉強完成任務,程序比較長,通讀的時候有點煩,但只要思路清晰了,讀起來還是可以的。</p><p> 本次實驗的改進階段花的時間最多,不過在這個階段收獲也很多,在改進階段我發(fā)現(xiàn)了很多程序設計時需要養(yǎng)成的好習慣。對以后編出更好的程序有很好的啟發(fā)。</p><p> 這整個過程讓我學到了不少,知識上
51、有了收獲,毅力也得到了鍛煉,對以后的學習工作都起到了很大的幫助。這一個星期里面將書翻了好多遍,對匯編的知識比以前更熟悉了,相信這肯定是有好處的。</p><p> 我覺得在以后的學習過程中還應該多做這樣的設計,它可以讓我們把所學的理論用于實踐,一方面可以檢驗并鞏固我們所學的內容,另一方面可以讓我們在實踐中感到所學知識的實用性,從而提高我們的學習興趣。通過這次課程設計,我的編程能力又得到進一步的提高,同時也培養(yǎng)了
52、我思維能力。總之,這次課程設計不僅豐富了我的理論知識,也加強了我的動手能力,還鍛煉了我的思維能力。</p><p> 對于《匯編語言程序設計》這門課程的學習不能就此結束,它也是我今后學習的基礎,并且我目前所學的僅僅是這門課程的入門知識,學無止境。</p><p><b> 6.參考文獻</b></p><p> [1] 沈美明、溫冬蟬,《
53、IBM-PC匯編語言程序設計(第2版)》,清華大學出版社,2004年1月出版。</p><p> [2] 沈美明、溫冬蟬、張赤紅,《IBM-PC匯編語言程序設計實驗教程》,清華大學出版社,2003年3月出版。</p><p> 7. 附錄:源程序清單</p><p> data segment</p><p> mess1
54、db ' student grade management system',0ah,0dh,'$'</p><p> mess2 db ' this is main menu',0ah,0dh,'$'</p><p> mess3 db ' insert (i)
55、 please input:',0ah,0dh,'$'</p><p> mess4 db ' modify (m) name :',0ah,0dh,'$'</p><p> mess5 db ' delete (d) number :',0ah,0d
56、h,'$'</p><p> mess6 db ' queryna (q) maths :',0ah,0dh,'$'</p><p> mess7 db ' querynu (Q) english :',0ah,0dh,'$'</p>&
57、lt;p> mess8 db ' chinese :',0ah,0dh,'$'</p><p> mess9 db ' exit (e) others :',0ah,0dh,'$'</p><p> mess10 db '
58、**********************************************************$'</p><p> mess11 db 'name Nu Ma En Ch Ot',0ah,0dh,'$'</p><p> mess12 db ' name
59、 Nu Ma En Co Ch',0ah,0dh,'$'</p><p> mess14 db 'name Nu Ma En Co Ch',0ah,0dh,'$'</p><p> mess13 db ' list (l)',0ah,0dh,'
60、;$'</p><p> err1 db ' there is not this student$'</p><p> fname db "g:score.txt";具體看hb.asm存在何目錄下</p><p> buffer1 db 23 dup(?)</p><p> buf
61、feer db 0ah,0dh,'$'</p><p> buffer2 db 30 dup(?)</p><p> buffer3 db 8 dup('0')</p><p> handle dw ?</p><p> del db 10 dup('0')</p>
62、<p> x db ?</p><p> data ends</p><p> show macro addrs</p><p> lea dx,addrs</p><p> mov ah,9 ;display char dx</p><p><b>
63、; int 21h</b></p><p><b> endm</b></p><p> set_p1 macro a ;輸入記錄是光標位置arrow target //insert</p><p><b> mov ah,2</b></p><p>&
64、lt;b> mov dh,a</b></p><p><b> mov dl,36</b></p><p><b> mov bh,0</b></p><p> int 10h ;bh=page dh/dl=h/l</p><p><b> en
65、dm</b></p><p> set_p2 macro ;查詢記錄輸入關鍵字或輸出錯誤信息時的光標位置query</p><p><b> mov ah,2</b></p><p><b> mov dh,12</b></p><p><b>
66、mov dl,0</b></p><p><b> mov bh,0</b></p><p><b> int 10h</b></p><p><b> endm</b></p><p> set_p3 macro ;程序剛開始時輸入
67、控制字符時的光標位置start local</p><p><b> mov ah,2</b></p><p><b> mov dh,1</b></p><p><b> mov dl,30</b></p><p><b> mov bh,0</b&g
68、t;</p><p><b> int 10h</b></p><p><b> endm</b></p><p> clear macro ;清屏函數clear,clear1,clear2均是用來在不同時期清屏all screen</p><p&g
69、t;<b> mov al,0</b></p><p><b> mov cl,0</b></p><p><b> mov ch,0</b></p><p><b> mov dh,24</b></p><p><b> mov dl
70、,79</b></p><p><b> mov bh,7</b></p><p> mov ah,6 ;screen</p><p><b> int 10h</b></p><p><b> endm</b><
71、;/p><p> clear1 macro ;left screen</p><p><b> mov al,0</b></p><p><b> mov bh,7</b></p><p><b> mov ch,4</b></p&
72、gt;<p><b> mov cl,36</b></p><p><b> mov dh,10</b></p><p><b> mov dl,79</b></p><p><b> mov ah,6</b></p><p><
73、;b> int 10h</b></p><p><b> endm</b></p><p> clear2 macro ;down screen</p><p><b> mov al,0</b></p><p><b>
74、 mov bh,7</b></p><p><b> mov ch,12</b></p><p><b> mov cl,0</b></p><p><b> mov dh,24</b></p><p><b> mov dl,79</b&
75、gt;</p><p><b> mov ah,6</b></p><p><b> int 10h</b></p><p><b> endm</b></p><p> newline macro ;=enter</p&
76、gt;<p><b> push ax</b></p><p><b> push dx</b></p><p> mov dl,0dh</p><p><b> mov ah,2</b></p><p><b> int 21h</b&
77、gt;</p><p> mov dl,0ah</p><p><b> mov ah,2</b></p><p><b> int 21h</b></p><p><b> pop dx</b></p><p><b> pop a
78、x</b></p><p><b> endm</b></p><p> show_item macro addrs ;輸出記錄函數</p><p> local iloop,w10</p><p><b> push bx</b></p><p>&
79、lt;b> push cx</b></p><p><b> mov bx,0</b></p><p> iloop: mov dl,addrs[bx] ;display char</p><p><b> mov ah,2</b></p><p><
80、;b> int 21h</b></p><p><b> inc bx</b></p><p><b> cmp bx,13</b></p><p><b> jl iloop</b></p><p><b> mov cx,5</
81、b></p><p> w10: mov dl,' '</p><p><b> mov ah,2</b></p><p><b> int 21h</b></p><p> mov dl,' '</p><p><b
82、> mov ah,2</b></p><p><b> int 21h</b></p><p> mov dl,' '</p><p><b> mov ah,2</b></p><p><b> int 21h</b></p&
83、gt;<p> mov dl,addrs[bx]</p><p><b> mov ah,2</b></p><p><b> int 21h</b></p><p><b> inc bx</b></p><p> mov dl,addrs[bx]&l
84、t;/p><p><b> mov ah,2</b></p><p><b> int 21h</b></p><p><b> inc bx</b></p><p><b> loop w10</b></p><p><
85、;b> newline</b></p><p><b> pop cx</b></p><p><b> pop bx</b></p><p><b> endm</b></p><p> getin macro addrs,count2
86、 ;接受字符函數write char</p><p> local zeroit,lp,input_end,exit</p><p><b> push bx</b></p><p><b> push ax</b></p><p><b> mov bx,0&
87、lt;/b></p><p> zeroit: mov addrs[bx],' '</p><p><b> inc bx</b></p><p><b> cmp bx,13</b></p><p> jl zeroit</p><p>&l
88、t;b> mov bx,0</b></p><p> lp: mov ah,1 ;keyboard input and display al</p><p><b> int 21h</b></p><p> cmp al,0ah</p><p&g
89、t; jz input_end</p><p> cmp al,0dh</p><p> jz input_end</p><p> mov addrs[bx],al</p><p><b> inc bx</b></p><p> cmp bx,count2</p>
90、<p><b> jl lp</b></p><p> input_end: cmp al,0dh</p><p><b> jz exit</b></p><p> cmp al,0ah</p><p><b> jz exit</b></p&
91、gt;<p><b> mov ah,7</b></p><p><b> int 21h</b></p><p> jmp input_end</p><p><b> exit:</b></p><p><b> pop ax</b&
92、gt;</p><p><b> pop bx</b></p><p><b> endm</b></p><p> code segment</p><p> main proc far</p><p> assume cs:code,ds:data,es
93、:data</p><p><b> start:</b></p><p> mov ax,data</p><p><b> mov ds,ax</b></p><p> mov ah,0 ;set display way</p><p>&l
94、t;b> mov al,3</b></p><p><b> int 10h</b></p><p><b> clear</b></p><p> show mess1</p><p> show mess2</p><p> show mes
95、s13</p><p> show mess3</p><p> show mess4</p><p> show mess5</p><p> show mess6</p><p> show mess7</p><p> show mess8</p><p&g
96、t; show mess9</p><p><b> newline</b></p><p> show mess10</p><p><b> set_p3</b></p><p> w: mov ah,7</p><p><b> int 21
97、h</b></p><p> cmp al,'i'</p><p><b> jnz n1</b></p><p> call insert</p><p><b> jmp w</b></p><p> n1: cmp al,
98、39;m'</p><p><b> jnz n2</b></p><p> call modify</p><p><b> jmp w</b></p><p> n2: cmp al,'d'</p><p><b> j
99、nz n3</b></p><p> call delete</p><p><b> jmp w</b></p><p> n3: cmp al,'q'</p><p><b> jnz n4</b></p><p> cal
100、l query</p><p><b> jmp w</b></p><p> n4: cmp al,'l'</p><p><b> jnz n5</b></p><p><b> call list</b></p><p
101、><b> jmp w</b></p><p> n5: cmp al,'Q'</p><p><b> jnz n6</b></p><p> call query1</p><p><b> jmp w</b></p>
102、<p> n6: cmp al,'e'</p><p><b> jz exitf</b></p><p><b> jmp w</b></p><p><b> exitf:</b></p><p> mov ah,4ch<
103、;/p><p><b> int 21h</b></p><p><b> ret</b></p><p> main endp</p><p> insert proc near</p><p><b> push ax</b></p&
104、gt;<p><b> push bx</b></p><p><b> push cx</b></p><p><b> push dx</b></p><p> mov dx,offset fname</p><p><b> mov al
105、,2</b></p><p> mov ah,3dh</p><p><b> int 21h</b></p><p><b> mov bx,ax</b></p><p><b> clear1</b></p><p><b&
106、gt; set_p1 4</b></p><p> call get_rec</p><p> mov cx,0 ;move file pointer to end</p><p><b> mov dx,0</b></p><p><b> mov al,2&
107、lt;/b></p><p> mov ah,42h</p><p><b> int 21h</b></p><p> mov cx,23 ;write file</p><p> mov dx,offset buffer1</p><p>
108、 mov ah,40h</p><p><b> int 21h</b></p><p> mov ah,3eh</p><p><b> int 21h</b></p><p><b> set_p3</b></p><p><b>
109、 pop dx</b></p><p><b> pop cx</b></p><p><b> pop bx</b></p><p><b> pop ax</b></p><p><b> ret</b></p>&
110、lt;p> insert endp</p><p> get_rec proc near;寫入的子函數</p><p><b> push ax</b></p><p><b> push bx</b></p><p> getin buffer2,13</p>&l
111、t;p><b> mov bx,0</b></p><p> mov cx,13</p><p> continue: mov al,buffer2[bx]</p><p> mov buffer1[bx],al</p><p><b> inc bx</b></p>
112、;<p> loop continue</p><p><b> set_p1 5</b></p><p> getin buffer2,2</p><p> mov al,buffer2</p><p> mov buffer1[bx],al</p><p><b
113、> inc bx</b></p><p> mov al,buffer2+1</p><p> mov buffer1[bx],al</p><p><b> inc bx</b></p><p><b> set_p1 6</b></p><p>
114、; getin buffer2,2</p><p> mov al,buffer2</p><p> mov buffer1[bx],al</p><p><b> inc bx</b></p><p> mov al,buffer2+1</p><p> mov buffer1[bx
115、],al</p><p><b> inc bx</b></p><p><b> set_p1 7</b></p><p> getin buffer2,2</p><p> mov al,buffer2</p><p> mov buffer1[bx],al&l
116、t;/p><p><b> inc bx</b></p><p> mov al,buffer2+1</p><p> mov buffer1[bx],al</p><p><b> inc bx</b></p><p><b> set_p1 8</b
117、></p><p> getin buffer2,2</p><p> mov al,buffer2</p><p> mov buffer1[bx],al</p><p><b> inc bx</b></p><p> mov al,buffer2+1</p>&
118、lt;p> mov buffer1[bx],al</p><p><b> inc bx</b></p><p><b> set_p1 9</b></p><p> getin buffer2,2</p><p> mov al,buffer2</p><p&g
119、t; mov buffer1[bx],al</p><p><b> inc bx</b></p><p> mov al,buffer2+1</p><p> mov buffer1[bx],al</p><p><b> inc bx</b></p><p>&
120、lt;b> pop bx</b></p><p><b> pop ax</b></p><p><b> ret</b></p><p> get_rec endp</p><p> query proc near ;query by name<
121、/p><p><b> push ax</b></p><p><b> push bx</b></p><p><b> push cx</b></p><p><b> push dx</b></p><p><b&g
122、t; clear1</b></p><p><b> clear2</b></p><p> mov dx,offset fname</p><p><b> mov al,2</b></p><p> mov ah,3dh ;open file</p>
123、<p><b> int 21h</b></p><p><b> mov bx,ax</b></p><p><b> set_p2</b></p><p> getin buffer1,13</p><p> lea dx, mess12</p&
124、gt;<p> mov ah,9 ;display char dx</p><p><b> int 21h</b></p><p><b> b:</b></p><p> mov ah,3fh</p><p><b> mov cx,23<
125、/b></p><p> mov dx,offset buffer2</p><p> int 21h ;read file</p><p> lea si,buffer2</p><p> lea di,buffer1</p><p> mov cx,13
126、 ;cx count</p><p><b> c:</b></p><p> mov al,byte ptr[si]</p><p> cmp al,byte ptr[di]</p><p> jnz b ;not equal</p><p><
127、;b> inc si</b></p><p><b> inc di</b></p><p><b> loop c</b></p><p> mov [buffer2+23],'$'</p><p> show_item buffer2</p>
128、;<p> mov ah,3eh ;close file</p><p><b> int 21h</b></p><p><b> pop dx</b></p><p><b> pop cx</b></p><p>&l
129、t;b> pop bx</b></p><p><b> pop ax</b></p><p><b> ret</b></p><p> query endp</p><p> query1 proc near ;query by number<
130、;/p><p><b> push ax</b></p><p><b> push bx</b></p><p><b> push cx</b></p><p><b> push dx</b></p><p><b&
131、gt; clear1</b></p><p><b> clear2</b></p><p> mov dx,offset fname</p><p><b> mov al,2</b></p><p> mov ah,3dh ;open file</p>
132、<p><b> int 21h</b></p><p><b> mov bx,ax</b></p><p><b> set_p2</b></p><p> getin buffer1,2</p><p> lea dx, mess14</p&
133、gt;<p> mov ah,9 ;display char dx</p><p><b> int 21h</b></p><p><b> d:</b></p><p> mov ah,3fh</p><p><b> mov cx,23<
134、/b></p><p> mov dx,offset buffer2</p><p> int 21h ;read file</p><p> lea si,buffer2+13</p><p> lea di,buffer1</p><p><b> mov cx,2
135、</b></p><p><b> e:</b></p><p> mov al,byte ptr[si]</p><p> cmp al,byte ptr[di]</p><p><b> jnz d</b></p><p><b> inc
136、 si</b></p><p><b> inc di</b></p><p><b> loop e</b></p><p> mov [buffer2+23],'$'</p><p> show_item buffer2</p><p>
137、; mov ah,3eh</p><p><b> int 21h</b></p><p><b> pop dx</b></p><p><b> pop cx</b></p><p><b> pop bx</b></p>&l
138、t;p><b> pop ax</b></p><p><b> ret</b></p><p> query1 endp</p><p> modify proc near</p><p><b> push ax</b></p><p&
139、gt;<b> push bx</b></p><p><b> push cx</b></p><p><b> push dx</b></p><p><b> clear1</b></p><p><b> set_p1 4<
140、;/b></p><p> mov dx,offset fname</p><p><b> mov al,2</b></p><p> mov ah,3dh ;open file al=2/r/w</p><p><b> int 21h</b></p&
141、gt;<p><b> mov bx,ax</b></p><p> mov handle,ax</p><p> call get_rec ; contact is in buffer1</p><p><b> read:</b></p><p> m
142、ov dx,offset buffer2</p><p><b> mov cx,23</b></p><p> mov ah,3fh ;read file</p><p><b> int 21h</b></p><p> lea si,buffer2</p>
143、<p> lea di,buffer1</p><p><b> mov cx,13</b></p><p><b> c5:</b></p><p> mov dl,byte ptr[si]</p><p> cmp dl,byte ptr[di]</p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學生成績管理課程設計
- 學生成績管理課程設計
- 數據結構學生成績管理課程設計報告
- 學生成績管理---課程設計
- 學生成績管理系統(tǒng)課程設計
- 課程設計——學生成績管理系統(tǒng)
- 課程設計---學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)課程設計
- 學生成績管理匯編課程設計
- 學生成績管理系統(tǒng)課程設計
- 學生成績管理系統(tǒng)課程設計
- 學生成績管理系統(tǒng)課程設計
- 匯編課程設計---學生成績管理
- 學生成績管理系統(tǒng) 課程設計
- 課程設計--學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)課程設計
- 課程設計-- 學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)課程設計
- 成績管理課程設計報告
- mis成績管理課程設計
評論
0/150
提交評論