加密解密程序設計_第1頁
加密解密程序設計_第2頁
加密解密程序設計_第3頁
加密解密程序設計_第4頁
加密解密程序設計_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課 程 設 計題 目加密解密程序設計學 院自動化學院專 業(yè)電氣工程及其自動化班 級姓 名指導教師年月9日課程設計任務書學生姓名: 專業(yè)班級: 指導教師: 工作單位: 自動化學院 題 目:加密解密程序設計 初始條件:掌握8086匯編語言程序設計方法,設計一個電子時鐘,實現(xiàn)分、秒、時的顯示與刷新功能。要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)1. 定義顯示界面。2. 調用系統(tǒng)時間,并將調用的用二進制表示的時間數(shù)轉換成ASCII碼,并將時間數(shù)存入內存區(qū)。3. 將存在系統(tǒng)內存區(qū)的時間數(shù)用數(shù)字式或指針式鐘表的形式顯示出來。4. 獲取鍵盤的按鍵值,判斷鍵值并退出系統(tǒng)

2、。5. 撰寫課程設計說明書。內容包括:摘要、目錄、正文、參考文獻、附錄(程序清單)。正文部分包括:設計任務及要求、方案比較及論證、軟件設計說明(軟件思想,流程,源程序設計及說明等)、程序調試說明和結果分析、課程設計收獲及心得體會。時間安排:12月 26日-12月 28日 查閱資料及方案設計12月 29日- 1月 2 日 編程1月 3日- 1月 7日 調試程序1月 8日- 1月 9日 撰寫課程設計報告指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日武漢理工大學微機原理與接口技術課程設計任務書目錄摘要11設計任務及要求21.1加密解密設計的意義21.2程序設計任務22 加密方法及方

3、案比較32.1 加密方法32.2 加密方案及比較33 加密解密設計流程及描述43.1程序所需模塊43.2程序運行界面53.3響鈴程序63.4功能選擇程序63.5數(shù)據(jù)循環(huán)輸入子程序73.6加密過程程序83.7解密過程程序93.8退出程序103.9總體程序流程圖114 程序調試說明和結果分析124.1 程序調試124.2 程序運行結果125 心得體會15參考文獻15附錄:設計原程序16本科生課程設計成績評定 摘要本次課程設計是需要通過掌握的8086匯編語言程序設計方法,設計出一個用于加密和解密的軟件程序。程序運行后,首先顯示Please Input Data:,并響鈴一聲,然后從鍵盤接受以字母開始

4、的201個字節(jié)型數(shù)據(jù),若首字母為E,則將后續(xù)的200個數(shù)據(jù)進行加密后,顯示在屏幕上;若首字母為R,則將后續(xù)的200個數(shù)據(jù)解密,并顯示在屏幕上。數(shù)據(jù)加密和解密功能的實現(xiàn)是利用對數(shù)據(jù)的ASCII碼進行加減運算,使它改寫為另一組數(shù)據(jù),隱藏了原數(shù)據(jù),使他人不能看到,從而保證了原數(shù)據(jù)的安全。 關鍵字:加密;解密;保證安全1設計任務及要求1.1 加密解密設計的意義當今的社會已經進入一個充滿競爭的時代,同時也是一個信息知識化和知識產權化的時代,信息的取得方式來源和取得信息的多少都很大程度上成為了我們能否更順利更優(yōu)秀得完成工作而在激烈的競爭中取得勝利的關鍵所在,所以勢必有很多私人的信息需要實行安全措施,并進行

5、必要的保密工作,這就要用到加密程序,而當我們需要用到這些信息,并從加密系統(tǒng)中提取出來時,就要用到解密程序,也就是我們將要設計的加密和解密環(huán)節(jié)。加密解密系統(tǒng)是目前運用最廣泛和最重要的應用系統(tǒng)之一。在工作中,我們需要通過加密解密技術對工作中出現(xiàn)的對所在單位非常重要且需要十分保密的資料或文件進行加密,以確保自身的利益不被侵害;在生活中,密碼箱也很有用處,而其原理正式加密解密環(huán)節(jié);在軍事上,為了更好的保護自己,保留更多的軍事科學技術為我方所用,并且不讓對手過于了解我方攻防戰(zhàn)略戰(zhàn)術和武器裝備,需要對相關資料進行設置安全保護??梢钥吹剑斀裆鐣姆椒矫婷嬉呀浽絹碓叫枰褂玫郊用芎徒饷艿难b置來幫助我們更好的

6、管理自己的生活,處理自己的工作,國家更是需要有安全保障才能越發(fā)強大,因此,加密解密系統(tǒng)的優(yōu)良是完成生產生活的重要任務之一。1.2 程序設計任務程序運行后,首先顯示Please Input Data:,并響鈴一聲,然后從鍵盤接受以字母開始的101個字節(jié)型數(shù)據(jù),如果首字母為E,則將后續(xù)的200個數(shù)據(jù)進行加密后,顯示在屏幕上;如果首字母為R,則將后續(xù)的200個數(shù)據(jù)解密,并顯示在屏幕上。撰寫課程設計說明書。內容包括:摘要、目錄、正文、參考文獻、附錄。正文部分包括:設計任務及要求、方案比較及論證、軟件設計說明(軟件思想,流程,源程序設計及說明等)、程序調試說明和結果分析、課程設計心得體會。2 加密方法及

7、方案比較2.1 加密方法 加密系統(tǒng)需要涉及到明碼(clear code)和暗碼(dim code)之間的轉換,明碼就是當我們準備進行加密操作時被加密的字符數(shù)據(jù),一般由鍵盤等輸入設備輸入給計算機;暗碼則是明碼被加密后變成的數(shù)據(jù),明碼和暗碼是通過算法(algorithm)來進行轉換的,而轉化過程就是加密和解密的過程,很明顯,加密和解密的算法是一一對應的,是一對反運算,在加密解密中叫做“對稱算法”(symmetrical algorithm),加密解密環(huán)節(jié)的安全系數(shù)也主要取決于設計的算法,主要是防范用窮舉法,debug法等破譯方法。所以選擇合適的算法是建立成熟可靠,安全性好的加密解密環(huán)節(jié)的關鍵所在。

8、常用數(shù)據(jù)加密算法有: 數(shù)據(jù)加密算法有很多種,按照發(fā)展進程來分,經歷了古典密碼、對稱密鑰密碼和公開密鑰密碼階段,古典密碼算法有替代加密、置換加密;對稱加密算法包括DES和人AES;非對稱加密算法包括RSA、背包密碼、McEliece密碼、Rabin、橢圓曲線、EIigamal D-H等。 目前在數(shù)據(jù)通信中使用最普遍的算法有DESDESDESDES算法、及RSARSARSARSA算法和PGP算法等。2.2 加密方案及比較方案一:對需要加密的數(shù)據(jù)進行分類,數(shù)字則減1加密,字母則加3加密,得到加密后的數(shù)據(jù),解密只需對數(shù)字加1,字母減3,并通過DOS調用將所得結果顯示在屏幕上。方案二:加密時將輸入的字符

9、乘以二再和0FFH取異或;解密是將輸入的字符除以二再和0FFH取異或。并通過DOS調用將所得結果顯示在屏幕上。比較:對數(shù)據(jù)進行異或加密容易超出字母和數(shù)字表示范圍,產生特殊符號和圖案,不易控制,這次設計主要針對普通數(shù)字和字母的加密,因此方案一比較適合。本次設計主要針對輸入的數(shù)字和字母進行加減加密,采用的方法為輸入數(shù)據(jù)后,若第一個數(shù)據(jù)為E則把E后面的數(shù)字減1字母加3做為加密后的數(shù)據(jù),若要對一組數(shù)據(jù)解密,則輸入R并在其后輸入想要解密的數(shù)據(jù),程序運行后便會還原數(shù)據(jù),得到解密后的數(shù)據(jù)。加密過程中會由于加密后數(shù)據(jù)超出數(shù)字或字符可以表示的范圍,數(shù)子9加1后超出范圍,因此可以用9減去9,得0來表示數(shù)字9加密后

10、的數(shù)據(jù);字母Xx,Yy,Zz加3后也會超出字母表示范圍,因此可以減去26,得Aa,Bb,Cc,分別作為其加密后的數(shù)據(jù)。3 加密解密設計流程及描述3.1程序所需模塊根據(jù)程序設計要求,可寫出該程序所需各主要的功能模塊:字符循環(huán)輸入模塊、字符串輸出模塊、響鈴模塊、功能選擇模塊、加密模塊、解密模塊、程序退出模塊。程序功能模塊流程圖如圖3-1所示。響鈴輸入加密過程解密過程屏幕顯示功能選擇部分 圖3-1程序功能模塊流程圖3.2程序運行界面字符串顯示子程序流程圖如圖3-2所示。 調用子程序DISP開始DOS系統(tǒng)9號功能調用返回主程序DISP調用結束圖3-2字符串顯示子程序流程圖好看的運行界面可以給用戶一種賞

11、心悅目的感覺,本次設計主要利用匯編語言編寫程序并在DOS環(huán)境下運行,因此可以使用DATA SEGMENT指令定義數(shù)據(jù)段顯示自己設計的界面。可以加入自己設計的圖案或字符串,采用9號功能調用,輸出多字符串,因此其結尾必須以$結尾,自定義界面程序代碼格式如下:DATA SEGMENTHEADMSGDB0DH,0AH,'$'字符串顯示過程子程序程序代碼如下:DISPPROCNEAR ;顯示字符串子程序 MOVAH,9INT21H RET DISPENDP3.3響鈴程序根據(jù)設計要求,程序運行后,首先顯示Please Input Data:,并響鈴一聲,響鈴程序可以利用2號功能調用,07H

12、為響鈴的ASCII碼,響鈴程序代碼如下:MOV DL,07H ;設置響鈴聲MOV AH,2INT 21H ;輸出響鈴聲3.4功能選擇程序用比較指令CMP選擇所需程序實現(xiàn)的功能,如果輸入的字符串首字符為E則進入加密子程序;如果輸入的字符串中首字符為R則進入解密子程序;如果輸入的字符串中首字符為Q或q則進入退出子程序。如果輸入的字符中首字符非前三種情況則會提醒你再次輸入,直到輸入的首字符為前面三種情況中的一種為止。功能選擇程序流程圖如圖3-3所示。取HEAD1首地址送入DX調用DISP顯示調用子程CYCLE開SHI始第一個數(shù)據(jù)為E?輸入數(shù)據(jù)第一個數(shù)據(jù)為R?第一個數(shù)據(jù)為Q/q?跳至JIAMI跳至EX

13、IT跳至JIEMICYCLE調用結束NYYNNY圖3-3功能選擇程序流程圖3.5數(shù)據(jù)循環(huán)輸入子程序采用1號DOS功能調用命令,循環(huán)輸入單個字符并保存數(shù)據(jù),加密解密均是以單個字符為單位進行,這樣就不會由于一個字符加密后產生的進位影響到其他字符,造成加密解密結果失真。采用的是FOR循環(huán)語句,并在輸入最后一個字符后,加$字符結束輸入,直至鍵入回車符終止子程序返回主程序,因此還要用到比較指令CMP或TEST指令。循環(huán)輸入程序流程圖如圖3-4所示。 子程序INPUTLOOP開始循環(huán)輸入數(shù)據(jù)輸入數(shù)據(jù)為ODH?保存數(shù)據(jù)到BUFF跳至FINISH輸入$結尾INPUTLOOP調用結束NY圖3.4循環(huán)輸入程序流程

14、圖3.6加密過程程序主要針對輸入的數(shù)字和字母進行加密,采用的方法為,輸入數(shù)據(jù)后,若第一個數(shù)據(jù)為E,則把E后面的數(shù)字減1字母加3作為加密后的數(shù)據(jù)。對于數(shù)字0減1后小于0,需直接加上9,變成9,對于Xx,Yy,Zz加3后會超出字母范圍因此需減去26,變?yōu)锳a,Bb,Cc。程序中判斷語句應用CMP或者TEST指令以免產生運算結果,破壞數(shù)據(jù)。由于是一位一位的進行數(shù)據(jù)加密,因此需要時刻判斷當前字符是否為$,因為字符串是以$結尾的。加密過程的關鍵在于,判斷字符類型及加密后如何對數(shù)據(jù)進行保存并保護,該過程中對子程序的調用應用非常多,可見子程序的重要作用。加密過程程序流程圖如圖3-5所示。 調用子程序JIAM

15、I開始調用INPUTLOOP子程序AL=0?從BUFF中取數(shù)據(jù)給AL返回CYCLEJIAMI子程序調用結束AL>9?AL<A orAL>z?AL<a?AL=$?AL>Z?AL-26AL+3AL>z?AL+3AL>Z?AL-26AL+9AL-1保存數(shù)據(jù)INC SIINC DINNNNNNNYYYYYYYYN圖3.5加密過程程序流程圖3.7解密過程程序解密為加密的逆過程,即輸入數(shù)據(jù)后,若第一個數(shù)據(jù)為R,則把R后面的數(shù)字加1字母減3作為解密后的數(shù)據(jù)。由于數(shù)字9加1后大于9,需直接減9變?yōu)?,對于A/a,B/b,C/c減3后會超出字母范圍因此需減去3再加26變

16、成X/x,Y/y,Z/z,。因此當輸入數(shù)據(jù)9以后,應直接將其減9變?yōu)?,當輸入Aa,Bb,Cc時,應先減去3再加上26,變成Xx,Yy,Zz。和加密過程類似,也許判斷輸入字符是否為$,以決定是否完成輸入進行解密過程。不同類型所以加密算法不同,因此解密的關鍵就是運用對應加密算法的逆運算進行解密,可見對字符類型的判斷很重要。解密過程程序流程圖如圖3-6所示。調用子程序JIEMI開始調用INPUTLOOP子程序AL=9?從BUFF中取數(shù)據(jù)給AL返回CYCLEJIEMI子程序調用結束AL<9?AL<A orAL>z?AL<a?AL=$?AL>Z?AL+26AL-4AL&l

17、t;a?AL-4AL<A?AL+26AL-9AL+1保存數(shù)據(jù)INC SIINC DINNNNNNNYYYYYYYYN圖3-6解密過程程序流程圖3.8退出程序當?shù)谝粋€輸入數(shù)據(jù)為字母Qq時,開始運行退出程序,提示“DO YOU WANT TO EXIT THIS PROGRAM?(YN):”輸入Y則退出程序,輸入N則提示:“PLEASE INPUT DATA:”。退出程序所用指令較為簡單,就是簡單地9號DOS功能調用字符輸入、CMP比較判斷指令、以及基本的跳轉指令即可實現(xiàn)。退出程序雖然簡單,但在程序中的重要性不言而喻,退出程序不當會給用戶以不好的客戶體驗,甚至造成數(shù)據(jù)丟失,程序運行失敗等問題

18、。退出程序流程圖如圖3-7所示。調用程序EXIT開始提示并請求輸入數(shù)據(jù)為Y/y?輸入數(shù)據(jù)數(shù)據(jù)為N/n?跳至OUTCX退出程序跳至OUTCX回到程序程序EXIT調用結束NNYY圖3-7退出程序流程圖3.9總體程序流程圖將前面介紹的各個模塊連接起來即為完整的加密解密程序,程序完整代碼見附錄部分。整體程序流程圖如圖3-8所示。 調用CYCLE子程序選擇程序功能調用EXIT子程序選擇運行狀態(tài)結束開始調用DISP輸出程序操作界面響鈴并輸入數(shù)據(jù)調用INPUTLOOP循環(huán)輸入數(shù)據(jù)圖3-8整體程序流程圖4 程序調試說明和結果分析4.1 程序調試(1)在編寫程序的過程中用到了很多子程序的調用,而在之前我沒怎么用

19、過子程序調用編寫程序,所以在編程之前才查了有關書籍,閱讀大量的與之有關的程序才編號程序,在這個過程中難免會出現(xiàn)很多錯誤,所以要不斷修改。因為程序很長,所以把每一個模塊分開來看,一個模塊一個模塊的修改。(2)編好程之后進行調試的時候發(fā)現(xiàn)有很多錯誤,這些錯誤主要是由于編程的時候輸入法不對造成的符號錯誤,把輸入法改成拼音形式的,錯誤消失。(3)在用9號功能調用時用DOS系統(tǒng),輸出時每次設置密碼時,前面設置的圖案會重復出現(xiàn)一次,改成DIOS系統(tǒng)調用后,不出現(xiàn)重復,程序正常運行。(4)程序運行后出現(xiàn)亂碼現(xiàn)象,解決之一問題需要在調用輸出子程序前,將以前存入的舊數(shù)據(jù)清零,可使用指令XOR,AND等,清零之后

20、亂碼消失。(5)在加密和解密給200個數(shù)據(jù)重復操作的應是結束符$,而開始編程的時候編成了0,造成錯誤。4.2 程序運行結果在emu8086環(huán)境下運行該程序,點擊emulate,run后得到程序顯示的菜單界面。自定義的菜界面里有顯示此程序的使用方法并提示輸入數(shù)據(jù)(PLEASE INPUT DATA:),對程序的使用非常方便,這種人機交互式的軟件程序最易被用戶承認并喜愛。程序運行菜單界面如圖4-1所示。輸入數(shù)據(jù)ECZJKHCF0ISVJHLK34按回車鍵運行程序,界面上顯示的三角形表示數(shù)據(jù)已加密,為FCMNKFIRLVYMKON23。程序加密界面如圖4-2所示。輸入數(shù)據(jù)R5779GJSB按回車鍵后

21、程序運行,圖中顯示的鑰匙形表示數(shù)據(jù)已解密,為6880DGPY。程序解密界面如圖4-3所示。 圖4-1程序運行菜單界面圖4-2程序加密界面如果想退出程序則輸入字母Q或q,按回車鍵運行后結果如圖4-4所示,提示“DO YOU WANT TO EXIT THIS PROGRAM?(YN):”。程序退出選擇界面如圖4-4所示。圖4-4程序退出選擇界面輸入Y或y程序結束,回到集成環(huán)境窗口。輸入N或n回到程序開始菜單,提示“PLEASE INPUT DATA:”,運行后如圖4-5。返回程序開始菜單界面如圖4-5所示。圖4-5返回程序開始菜單界面如果輸入數(shù)據(jù)不是E,R,Qq,運行程序,同樣提示“PLEASE

22、 INPUT DATA:”,運行后如圖4-6。輸入錯誤界面如圖4-6所示。圖4-6輸入錯誤界面5 心得體會本次課程設計,目的在于通過設計一個與日常生活聯(lián)系較緊密的程序或系統(tǒng),讓我們對微機及其原理有更深刻更直觀的認識,引發(fā)對微機原理學習的濃厚興趣,為了今后能更熟練的運用所學知識于實際生活創(chuàng)造了一個良好的機會。首先,危機原理這門學科重在學會實踐,而平時上課,我們更注重的是學習理論知識,編程編的比較少,所以編起來比較困難。在編程過程中會遇到很多問題,不僅要查資料,還要請教同學,有些問題書上也沒寫,比如說出現(xiàn)了亂碼,這就要我們不斷更改,不斷嘗試,也是在這個過程中,我學到了許多上課沒學到的知識。其次,由

23、于本次課程設計的程序較長,所以一定要理清思路,以前上課的時候,老師經常強調在寫一個程序的時候,一定要事先把程序流程圖出來,但是我總覺得這樣做沒必要,很浪費時間。但是,這次課程設計改變了我以前的那種錯誤的認識,以前我接觸的那些程序都是很短、很基礎的,但是在課程設計中碰到的那些需要很多代碼才能完成的任務,畫程序流程圖是很有必要的。雖然畫了流程圖,但出現(xiàn)問題查找程序時,由于程序太長還是容易厭煩,所以不僅要劃程序流程圖,還要搞清楚每個模塊功能,把每個模塊都分開,每個模塊的流程圖也畫清楚,這樣整個思路就清晰明了了。過這次課程設計,我還是發(fā)現(xiàn)了自己的不少問題,首先是理論知識掌握得不夠牢固,常常忘記一些小知

24、識點,對設計的過程和效率的把握有很大影響;其次是動手能力還有待提高,雖然這次沒有操縱實物,但在計算機上編程和發(fā)現(xiàn)問題解決問題的能力上依然有所欠缺,需要不斷提高,在一些小問題上卡住,直接導致效率降低。以后還要在動手實踐上多加練習。參考文獻1周佩玲.微機原理與接口技術.北京:電子工業(yè)出版社,20062朱定華.微機原理、匯編與接口技術學習指導.北京:清華大學出版社,20043賀亞茹.匯編語言程序設計.北京:科學出版社, 20054鄭學堅,周斌.微型機算計原理及應用(第三版).北京:清華大學出版社,20035李珍香.匯編語言課程設計案例精編.北京:中國水利水電出版社,2004附錄:設計原程序DATA

25、SEGMENT HEAD0DB 0DH,0AH DB '+-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- *' ,0DH,0AHDB'| WELCOME! *',0DH,0AHDB'* A IF YOU WANNA ENCRYPT |',0DH,0AHDB'| PLEASE INPUT BYM START WITH A LETTER E ! *',0DH,0AHDB'* B IF YOU WANNA DECRYPT |',0DH,0AHDB'|

26、 PLEASE INPUT BYM START WITH A LETTER R ! *',0DH,0AHDB'* C IF YOU WANNA EXIT THIS PROGRAM |',0DH,0AHDB'| PLEASE PRESS Q OR q! *',0DH,0AHDB '+-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*', 0DH,0AH,'$'HEAD1DB 0DH,0AH,'PLEASE INPUT DATA:','$&#

27、39;HEAD2 DB' ',0DH,0AH DB' * ',0DH,0AH DB ' * * ',0DH,0AH DB' * * ',0DH,0AH DB' * * ',0DH,0AH DB ' * * ',0DH,0AH DB' * * ',0DH,0AH DB' * * ',0DH,0AH DB' * * * * * * * ',0DH,0AH DB 0DH,0AH,'AFTER ENCRYPTING:','$'

28、HEAD3 DB' ',0DH,0AH DB' * ',0DH,0AH DB * * ',0DH,0AH DB' * * * ',0DH,0AH DB' * * * * * * * ',0DH,0AH DB' * * * ',0DH,0AH DB '* * ',0DH,0AH DB ' * ',0DH,0AH DB 0DH,0AH,'AFTER DECRYPTING:','$' HEAD4 DB 0DH,0AH,'DO YOU WANT

29、 TO EXIT THIS PROGRAM?(Y/N):','$' HEAD5 DB 0dh,0ah,0dh,0ah,'$'BUFF DB 200 DUP(0)ENCRYPTION DB 200 DUP ('$') DECRYPTION DB 200 DUP ('$') DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA;字符串顯示子程序START: MOV AX,DATA MOV DS,AX MOV AH,9 ;請求輸出字符串 MOV AL,'*' MOV CX,63

30、;連續(xù)63個* INT 10H LEA DX,HEAD0 ;輸出HEAD0數(shù)據(jù)段;響鈴程序 CALL DISP MOV DL, 07H ;設置響鈴聲 MOV AH,2 INT 21H ;輸出響鈴聲 CALLCYCLE ;功能選擇程序 CYCLE PROCNEAR ;選擇程序 LEADX,HEAD1 ;提示PLEASE INPUT DATA: CALLDISP XORSI,SI MOVAH,1 ;輸入并比較 INT21H CMPAL,'E' JZJ1 ;若輸入為E則接到J1 CMPAL,'R' ;若輸入為R則接到J2 JZJ2 CMPAL,'Q'

31、;若輸入為Q則接到EC1 JEESC1 CMPAL,'q' ;若輸入為q則接到EC1 JEESC1 JMP CYCLEJ1: CALLJIAMI ;把J1定義為子程序JIAMI J2: CALLJIEMI ;把J2定義為子程序JIEMIESC1: CALLEXIT ;把ESC1定義為子程序EXIT RET CYCLE ENDPDISPPROCNEAR ;顯示字符串子程序 MOVAH,9 INT21H RET DISPENDP ;數(shù)據(jù)循環(huán)輸入子程序INPUTLOOP PROC NEAR ;字符串輸入程序 MOV SI,0FFFFH ;先執(zhí)行SI加一操作,則第一次調用函數(shù)后SI=0

32、 ,最后一次調用時,能夠使si加一FOR: ;循環(huán)輸入單個字符 INC SI ;將SI清零 MOV AH,01H INT21HCMPAL,0DH ;判斷是否回車?JEFINISHE MOV BUFFSI,AL ;保存輸入數(shù)據(jù) ;INC SI JMP FOR FINISHE: MOVBUFFSI,24H ;輸入'$',輸入結束RET INPUTLOOP ENDP;加密主程序JIAMIPROCNEAR ;加密選擇 MOV CX ,200 ;將BUFF清零 MOV DI ,0 BUFFQINGLIN: MOV BUFFDI ,0 INC DI LOOP BUFFQINGLIN CAL

33、L INPUTLOOP XOR DI,DI XOR SI,SI LEA SI,ENCRYPTION ;取首地址 LEA DI,BUFF CALLENCRYPTIONPROC RET JIAMIENDP ; 加密過程ENCRYPTIONPROC PROC NEAR PROC1: XOR AX,AX MOV AL, DI CMP AL, 24H JZ ORDER ;輸入數(shù)據(jù)為'$'則跳轉到ORDEER CMP AL,30H JZ T11 ;輸入數(shù)據(jù)為0則跳轉到T11 CMP AL,: JB T12 ;有輸入數(shù)據(jù)不大于9則接到T12 CMP AL,'A' JC NEX

34、T ;小于'A'不用處理,轉移到下一個 CMP AL,'' JNC NEXT ;大于'z'不用處理,轉移到下一個 CMP AL,'a' JC BIG ;小于'a'可能是大寫,轉移 ADD AL,3 ;加密 CMP AL,'' JNC J26 ;大于'z',超過了最后的字母,應減去26 JMP NEXT BIG: XOR AX,AX MOV AX,DI CMP AL,'' JNC NEXT ;大于'Z'不用處理,轉移到下一個 ADD AL,3 ;加密 C

35、MP AL,'' JNC J26 ;大于'Z',超過了最后的字母,應減去26 JMP NEXTJ26: SUB AL,26NEXT: MOV SI,AX ;保存密碼 INC DI INC SI JMP PROC1T12: SUBAL,01H ;把輸入的數(shù)據(jù)減01 MOV SI,AL INC DI INC SI JMP PROC1T11: ADD AL,09H ;把輸入的數(shù)為0則其ASCII碼加09H MOV SI,AL INC DI INC SI JMP PROC1ORDER: XORDX,DXLEADX,HEAD2CALL DISP ;輸出數(shù)據(jù)段HEAD2 X

36、OR DX,DX LEADX,ENCRYPTION ;輸出加密后字符串 CALLDISP MOV CX, 200 ;將ENCRYPTION 變量清零 MOV SI,0QINGLIN: MOV ENCRYPTIONsi,'$' INC SI LOOP QINGLIN XORDX,DX LEADX,HEAD5;輸出兩行空格行 CALL DISP CALL CYCLE RET ENCRYPTIONPROCENDP;解密主程序JIEMIPROCNEAR MOV CX ,200 ;先將buff變量清零 MOV DI ,0 BUFFQINGLIN2: MOV BUFFDI ,0 INC D

37、I LOOP BUFFQINGLIN2 CALLINPUTLOOP MOV CX,200 ;將DECRYPTION 變量清零 MOV SI,0QINGLIN3: MOV DECRYPTIONSI,'$' INC SI LOOP QINGLIN3XORSI,SI LEASI,DECRYPTION LEADI,BUFF CALLDECRYPTIONPROC RET JIEMIENDP DECRYPTIONPROC PROCNEAR ;解密過程程序PROC2: MOV AL, DI CMPAL,'$' JZORDER2 ;輸入數(shù)據(jù)為'$'則跳轉至ORDER2 CMPAL, 39H ;若有輸入的數(shù)據(jù)為9則接到T21JET21 CMP AL,39H JC T22 ;有輸入數(shù)據(jù)小于于9則接到T22 CMP AL,''

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論