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

下載本文檔

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

文檔簡介

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

2、明(軟件思想,流程,源程序設計及說明等)、程序調(diào)試說明和結果分析、課程設計收獲及心得體會。時間安排:指導教師簽名:系主任(或責任教師)簽名年月日年月日12月26日-12月28日查閱資料及方案設計12月29日-1月2日編程1月3日-1月7日調(diào)試程序1月8日-1月9日撰寫課程設計報告目錄TOC o 1-5 h z HYPERLINK l bookmark8 摘要1 HYPERLINK l bookmark10 設計任務及要求2 HYPERLINK l bookmark12 加密解密設計的意義2 HYPERLINK l bookmark14 程序設計任務2 HYPERLINK l bookmark1

3、6 加密方法及方案比較3 HYPERLINK l bookmark18 加密方法3 HYPERLINK l bookmark20 加密方案及比較3 HYPERLINK l bookmark22 加密解密設計流程及描述5 HYPERLINK l bookmark24 程序所需模塊5 HYPERLINK l bookmark26 程序運行界面5 HYPERLINK l bookmark40 3.3響鈴程序6 HYPERLINK l bookmark48 功能選擇程序6 HYPERLINK l bookmark50 數(shù)據(jù)循環(huán)輸入子程序7 HYPERLINK l bookmark52 加密過程程序8

4、HYPERLINK l bookmark54 解密過程程序9 HYPERLINK l bookmark56 退出程序10 HYPERLINK l bookmark58 總體程序流程圖11 HYPERLINK l bookmark60 程序調(diào)試說明和結果分析12 HYPERLINK l bookmark62 程序調(diào)試12 HYPERLINK l bookmark64 程序運行結果12 HYPERLINK l bookmark68 心得體會15 HYPERLINK l bookmark70 參考文獻16 HYPERLINK l bookmark72 附錄:設計原程序17本科生課程設計成績評定武漢理

5、工大學微機原理與接口技術課程設計任務書 摘要本次課程設計是需要通過掌握的8086匯編語言程序設計方法,設計出一個用于加密和解密的軟件程序。程序運行后,首先顯示PleaseInputDat并響鈴一聲,然后從鍵盤接受以字母開始的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加密解密設計的意義當今的社會已經(jīng)進入一個充滿競爭

6、的時代,同時也是一個信息知識化和知識產(chǎn)權化的時代,信息的取得方式來源和取得信息的多少都很大程度上成為了我們能否更順利更優(yōu)秀得完成工作而在激烈的競爭中取得勝利的關鍵所在,所以勢必有很多私人的信息需要實行安全措施,并進行必要的保密工作,這就要用到加密程序,而當我們需要用到這些信息,并從加密系統(tǒng)中提取出來時,就要用到解密程序,也就是我們將要設計的加密和解密環(huán)節(jié)。加密解密系統(tǒng)是目前運用最廣泛和最重要的應用系統(tǒng)之一。在工作中,我們需要通過加密解密技術對工作中出現(xiàn)的對所在單位非常重要且需要十分保密的資料或文件進行加密,以確保自身的利益不被侵害;在生活中,密碼箱也很有用處,而其原理正式加密解密環(huán)節(jié);在軍事上

7、,為了更好的保護自己,保留更多的軍事科學技術為我方所用,并且不讓對手過于了解我方攻防戰(zhàn)略戰(zhàn)術和武器裝備,需要對相關資料進行設置安全保護??梢钥吹?,當今社會的方方面面已經(jīng)越來越需要使用到加密和解密的裝置來幫助我們更好的管理自己的生活,處理自己的工作,國家更是需要有安全保障才能越發(fā)強大,因此,加密解密系統(tǒng)的優(yōu)良是完成生產(chǎn)生活的重要任務之一。1.2程序設計任務程序運行后,首先顯示PleaseInputData:,,并響鈴一聲,然后從鍵盤接受以字母開始的101個字節(jié)型數(shù)據(jù),如果首字母為E,則將后續(xù)的200個數(shù)據(jù)進行加密后,顯示在屏幕上;如果首字母為R,則將后續(xù)的200個數(shù)據(jù)解密,并顯示在屏幕上。撰寫課

8、程設計說明書。內(nèi)容包括:摘要、目錄、正文、參考文獻、附錄。正文部分包括:設計任務及要求、方案比較及論證、軟件設計說明(軟件思想,流程,源程序設計及說明等)、程序調(diào)試說明和結果分析、課程設計心得體會。加密方法及方案比較2.1加密方法加密系統(tǒng)需要涉及到明碼(clearcode)和暗碼(dimcode)之間的轉換,明碼就是當我們準備進行加密操作時被加密的字符數(shù)據(jù),一般由鍵盤等輸入設備輸入給計算機;暗碼則是明碼被加密后變成的數(shù)據(jù),明碼和暗碼是通過算法(algorithm)來進行轉換的,而轉化過程就是加密和解密的過程,很明顯,加密和解密的算法是一一對應的,是一對反運算,在加密解密中叫做“對稱算法”(sy

9、mmetricalalgorithm),加密解密環(huán)節(jié)的安全系數(shù)也主要取決于設計的算法,主要是防范用窮舉法,debug法等破譯方法。所以選擇合適的算法是建立成熟可靠,安全性好的加密解密環(huán)節(jié)的關鍵所在。常用數(shù)據(jù)加密算法有:數(shù)據(jù)加密算法有很多種,按照發(fā)展進程來分,經(jīng)歷了古典密碼、對稱密鑰密碼和公開密鑰密碼階段,古典密碼算法有替代加密、置換加密;對稱加密算法包括DES和人AES;非對稱加密算法包括RSA、背包密碼、McEliece密碼、Rabin、橢圓曲線、EIigamalD-H等。目前在數(shù)據(jù)通信中使用最普遍的算法有DESDESDESDES算法、及RSARSARSARSA算法和PGP算法等。2.2加密

10、方案及比較方案一:對需要加密的數(shù)據(jù)進行分類,數(shù)字則減1加密,字母則加3加密,得到加密后的數(shù)據(jù),解密只需對數(shù)字加1,字母減3,并通過DOS調(diào)用將所得結果顯示在屏幕上。方案二:加密時將輸入的字符乘以二再和0FFH取異或;解密是將輸入的字符除以二再和0FFH取異或。并通過DOS調(diào)用將所得結果顯示在屏幕上。比較:對數(shù)據(jù)進行異或加密容易超出字母和數(shù)字表示范圍,產(chǎn)生特殊符號和圖案,不易控制,這次設計主要針對普通數(shù)字和字母的加密,因此方案一比較適合。本次設計主要針對輸入的數(shù)字和字母進行加減加密,采用的方法為輸入數(shù)據(jù)后,若第一個數(shù)據(jù)為E則把E后面的數(shù)字減1字母加3做為加密后的數(shù)據(jù),若要對一組數(shù)據(jù)解密,則輸入R

11、并在其后輸入想要解密的數(shù)據(jù),程序運行后便會還原數(shù)據(jù),得到解密后的數(shù)據(jù)。加密過程中會由于加密后數(shù)據(jù)超出數(shù)字或字符可以表示的范圍,數(shù)子9加1后超出范圍,因此可以用9減去9,得0來表示數(shù)字9加密后的數(shù)據(jù);字母X/x,Y/y,Z/z加3后也會超出字母表示范圍,因此可以減去26,得A/a,B/b,C/c,分別作為其加密后的數(shù)據(jù)。加密解密設計流程及描述3.1程序所需模塊根據(jù)程序設計要求,可寫出該程序所需各主要的功能模塊:字符循環(huán)輸入模塊、字符串輸出模塊、響鈴模塊、功能選擇模塊、加密模塊、解密模塊、程序退出模塊。程序功能模塊流程圖如圖3-1所示。圖3-1程序功能模塊流程圖3.2程序運行界面字符串顯示子程序流

12、程圖如圖3-2所示。圖3-2字符串顯示子程序流程圖好看的運行界面可以給用戶一種賞心悅目的感覺,本次設計主要利用匯編語言編寫程序并在DOS環(huán)境下運行,因此可以使用DATASEGMENT指令定義數(shù)據(jù)段顯示自己設計的界面??梢约尤胱约涸O計的圖案或字符串,采用9號功能調(diào)用,輸出多字符串,因此其結尾必須以$結尾,自定義界面程序代碼格式如下:DATASEGMENTHEADMSGDBODH,OAH,,$字符串顯示過程子程序程序代碼如下:DISPPROCNEAR;顯示字符串子程序MOVAH,9INT21HRETDISPENDP3.3響鈴程序根據(jù)設計要求,程序運行后,首先顯示PleaseInputData:,,

13、并響鈴一聲,響鈴程序可以利用2號功能調(diào)用,07H為響鈴的ASCII碼,響鈴程序代碼如下:MOVDL,07H;設置響鈴聲MOVAH,2INT21H;輸出響鈴聲3.4功能選擇程序用比較指令CMP選擇所需程序實現(xiàn)的功能,如果輸入的字符串首字符為E則進入加密子程序;如果輸入的字符串中首字符為R則進入解密子程序;如果輸入的字符串中首字符為Q或q則進入退出子程序。如果輸入的字符中首字符非前三種情況則會提醒你再次輸入,直到輸入的首字符為前面三種情況中的一種為止。功能選擇程序流程圖如圖3-3所示。數(shù)據(jù)循環(huán)輸入子程序采用1號DOS功能調(diào)用命令,循環(huán)輸入單個字符并保存數(shù)據(jù),加密解密均是以單個字符為單位進行,這樣就

14、不會由于一個字符加密后產(chǎn)生的進位影響到其他字符,造成加密解密結果失真。采用的是FOR循環(huán)語句,并在輸入最后一個字符后,加$字符結束輸入,直至鍵入回車符終止子程序返回主程序,因此還要用到比較指令CMP或TEST指令。循環(huán)輸入程序流程圖如圖3-4所示。圖3.4循環(huán)輸入程序流程圖加密過程程序主要針對輸入的數(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指令以免產(chǎn)生運算結果,破壞數(shù)據(jù)

15、。由于是一位一位的進行數(shù)據(jù)加密,因此需要時刻判斷當前字符是否為$,因為字符串是以$結尾的。加密過程的關鍵在于,判斷字符類型及加密后如何對數(shù)據(jù)進行保存并保護,該過程中對子程序的調(diào)用應用非常多,可見子程序的重要作用。加密過程程序流程圖如圖3-5所示。解密過程程序解密為加密的逆過程,即輸入數(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變成X/x,Y/y,Z/z,。因此當輸入數(shù)據(jù)9以后,應直接將其減9變?yōu)?當輸入A/a,B/b,C/c時,應先減去3再加上26,變成X/x

16、,Y/y,Z/z。和加密過程類似,也許判斷輸入字符是否為$,以決定是否完成輸入進行解密過程。不同類型所以加密算法不同,因此解密的關鍵就是運用對應加密算法的逆運算進行解密,可見對字符類型的判斷很重要。解密過程程序流程圖如圖3-6所示。退出程序當?shù)谝粋€輸入數(shù)據(jù)為字母Q/q時,開始運行退出程序,提示“DOYOUWANTTOEXITTHISPROGRAM?(Y/N):”輸入Y則退出程序,輸入N則提示:“PLEASEINPUTDATA:”。退出程序所用指令較為簡單,就是簡單地9號DOS功能調(diào)用字符輸入、CMP比較判斷指令、以及基本的跳轉指令即可實現(xiàn)。退出程序雖然簡單,但在程序中的重要性不言而喻,退出程序

17、不當會給用戶以不好的客戶體驗,甚至造成數(shù)據(jù)丟失,程序運行失敗等問題。退出程序流程圖如圖3-7所示。3.9總體程序流程圖圖3-7退出程序流程圖將前面介紹的各個模塊連接起來即為完整的加密解密程序,程序完整代碼見附錄部分。整體程序流程圖如圖3-8所示。圖3-8整體程序流程圖程序調(diào)試說明和結果分析4.1程序調(diào)試(1)在編寫程序的過程中用到了很多子程序的調(diào)用,而在之前我沒怎么用過子程序調(diào)用編寫程序,所以在編程之前才查了有關書籍,閱讀大量的與之有關的程序才編號程序,在這個過程中難免會出現(xiàn)很多錯誤,所以要不斷修改。因為程序很長,所以把每一個模塊分開來看,一個模塊一個模塊的修改。(2)編好程之后進行調(diào)試的時候

18、發(fā)現(xiàn)有很多錯誤,這些錯誤主要是由于編程的時候輸入法不對造成的符號錯誤,把輸入法改成拼音形式的,錯誤消失。(3)在用9號功能調(diào)用時用DOS系統(tǒng),輸出時每次設置密碼時,前面設置的圖案會重復出現(xiàn)一次,改成DIOS系統(tǒng)調(diào)用后,不出現(xiàn)重復,程序正常運行。(4)程序運行后出現(xiàn)亂碼現(xiàn)象,解決之一問題需要在調(diào)用輸出子程序前,將以前存入的舊數(shù)據(jù)清零,可使用指令XOR,AND等,清零之后亂碼消失。(5)在加密和解密給200個數(shù)據(jù)重復操作的應是結束符$,而開始編程的時候編成了0,造成錯誤。4.2程序運行結果在emu8086環(huán)境下運行該程序,點擊emulate,run后得到程序顯示的菜單界面。自定義的菜界面里有顯示此

19、程序的使用方法并提示輸入數(shù)據(jù)(PLEASEINPUTDATA:),對程序的使用非常方便,這種人機交互式的軟件程序最易被用戶承認并喜愛。程序運行菜單界面如圖4-1所示。輸入數(shù)據(jù)ECZJKHCF0ISVJHLK34按回車鍵運行程序,界面上顯示的三角形表示數(shù)據(jù)已加密,為FCMNKFIRLVYMKON23。程序加密界面如圖4-2所示。輸入數(shù)據(jù)R5779GJSB按回車鍵后程序運行,圖中顯示的鑰匙形表示數(shù)據(jù)已解密,為6880DGPY。程序解密界面如圖4-3所示。武漢理工大學微機原理與接口技術課程設計任務書emulatorscreen(80 x25chars) 一崟一饕一峯一饕一塞一崟一叢一崟一饕一崟一饕一

20、峯一饕一塞一崟WELCOME*IFYOUNANNAENCRYPTPLEASEINPUTBYMSTARTNITHAIFYOUNANNADECRYPTPLEASEINPUTBYMSTARTNITHAIFYOUNANNAEXITTHISPROGRAMPLEASEPRESSQORq*XXXXKXXXXXXXXKXrnanrnmrnmrnmananrnmrnmiikLETTERELETTERR|rflhXrflhINPUTDATA:.圖4-1程序運行菜單界面圖4-2程序加密界面如果想退出程序則輸入字母Q或q,按回車鍵運行后結果如圖4-4所示,提示“DOYOUWANTTOEXITTHISPROGRAM?(

21、Y/N):”。程序退出選擇界面如圖4-4所示。LEASEINPUTDATA:RHJSAHC6879x!II|irkirkdThrfrhrfihrfrhrfihrfrhrfihIIIIirkirkirhrfrhrfrhdrhrfrhdrhrfihXdThdThdThdThdThdThdThdThX幕XdThdThdThdThdThdThdThdThoEyounantTtoAexitthisPROGRAM(Y/N):圖4-4程序退出選擇界面輸入Y或y程序結束,回到集成環(huán)境窗口。輸入N或n回到程序開始菜單,提示“PLEASEINPUTDATA:”,運行后如圖4-5。返回程序開始菜單界面如圖4-5所示

22、。武漢理工大學微機原理與接口技術課程設計任務書 LEASEINPUTDATA:RKSZHCS5768rfrhrfrhrfrhirhrfrhrfrhdrhanXI|aprfrhrfrhrfThiThrfrhXXXrfThrfrhrfrhirhanXI|apaprfrhrfrhrfThiThrfrhrfThdrhrfrhIrfThrfThrfrhrfrhrfThrfrhrfrhrfThiThrfrhrfThdrhrfrhrfThrfThrfrhrfrhrfThiThrfrhrfrhrfThrfrhrfThrfThrfrhrfrhrfrhirhrfrbrfrhdrhrfrbrfrhrfThrfrhr

23、fThrfThirhrfrhAFTERDECRYPTING:HPNEZP6879oEyounantTtoAexitTHISPROGRAM(Y/N):Y圖4-5返回程序開始菜單界面如果輸入數(shù)據(jù)不是E,R,Q/q,運行程序,同樣提示“PLEASEINPUTDATA:”,運行后如圖4-6。輸入錯誤界面如圖4-6所示。LEASEINPUTDATA:R2393F|aprfrhrfrhirhdrhrfThrfrhrfrhrfThXXXXXxxxxXap|apap|aprfrhrfrhrfrhrfrhrfrhrfrhiThdrhrfThrfThrfThrfrhrfrhrfrhrfrhrfrhrfrhrfrh

24、rfrhiThap|apap|aprfrhrfrbrfrhrfrhrfrhrfrhirhdrhrfThrfrhrfrhrfThrfrhrfrbrfrhrfrhrfrhrfrhrfrhirhX|apdrhdrhirhrirhdThdThdThdrhAFTERDECRYPTING:3404CPLEASEINPUTDATA:QDOYOUWANTTOEXITTHISPROGRAM(Y/N):NPLEASEINPUTDATA:N圖4-6輸入錯誤界面5心得體會本次課程設計,目的在于通過設計一個與日常生活聯(lián)系較緊密的程序或系統(tǒng),讓我們對微機及其原理有更深刻更直觀的認識,引發(fā)對微機原理學習的濃厚興趣,為了今后

25、能更熟練的運用所學知識于實際生活創(chuàng)造了一個良好的機會。首先,危機原理這門學科重在學會實踐,而平時上課,我們更注重的是學習理論知識,編程編的比較少,所以編起來比較困難。在編程過程中會遇到很多問題,不僅要查資料,還要請教同學,有些問題書上也沒寫,比如說出現(xiàn)了亂碼,這就要我們不斷更改,不斷嘗試,也是在這個過程中,我學到了許多上課沒學到的知識。其次,由于本次課程設計的程序較長,所以一定要理清思路,以前上課的時候,老師經(jīng)常強調(diào)在寫一個程序的時候,一定要事先把程序流程圖出來,但是我總覺得這樣做沒必要,很浪費時間。但是,這次課程設計改變了我以前的那種錯誤的認識,以前我接觸的那些程序都是很短、很基礎的,但是在

26、課程設計中碰到的那些需要很多代碼才能完成的任務,畫程序流程圖是很有必要的。雖然畫了流程圖,但出現(xiàn)問題查找程序時,由于程序太長還是容易厭煩,所以不僅要劃程序流程圖,還要搞清楚每個模塊功能,把每個模塊都分開,每個模塊的流程圖也畫清楚,這樣整個思路就清晰明了了。過這次課程設計,我還是發(fā)現(xiàn)了自己的不少問題,首先是理論知識掌握得不夠牢固,常常忘記一些小知識點,對設計的過程和效率的把握有很大影響;其次是動手能力還有待提高,雖然這次沒有操縱實物,但在計算機上編程和發(fā)現(xiàn)問題解決問題的能力上依然有所欠缺,需要不斷提高,在一些小問題上卡住,直接導致效率降低。以后還要在動手實踐上多加練習。參考文獻周佩玲.微機原理與

27、接口技術.北京:電子工業(yè)出版社,2006朱定華.微機原理、匯編與接口技術學習指導.北京:清華大學出版社,2004賀亞茹.匯編語言程序設計.北京:科學出版社,2005鄭學堅,周斌.微型機算計原理及應用(第三版).北京:清華大學出版社,2003李珍香.匯編語言課程設計案例精編.北京:中國水利水電出版社,2004附錄:設計原程序DATASEGMENTDB0DH,0AH、.、t1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*t1_1TxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTx

28、Tx1|*HEAD0DBDBDBDB|*DBDBWELCOME!AIFYOUWANNAENCRYPTPLEASEINPUTBYMSTARTWITHALETTERE!BIFYOUWANNADECRYPTPLEASEINPUTBYMSTARTWITHALETTERR!,0DH,0AH*,0DH,0AH|,0DH,0AH*,0DH,0AH|,0DH,0AH*,0DH,0AH|,0DH,0AH*,0DH,0AH|*CIFYOUWANNAEXITTHISPROGRAM|PLEASEPRESSQORq!DB+-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

29、*-*-*-*,0DH,0AH,$DBHEAD1DBHEAD2DBDB0DH,0AH,PLEASEINPUTDATA:,$,0DH,0AH*DBDBDBDBDBDBDBDBHEAD3DBDB,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH0DH,0AH,AFTERENCRYPTING:,$,0DH,0AHTxTxTxTxTxTxTxTxDBDBDBDB*TxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTx*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*T

30、xTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxTxDBDB,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AHDB0DH,0AH,AFTERDECRYPTING:,$HEAD4DB0DH,0AH,DOYOUWANTTOEXITTHISPROGRAM?HEAD5DB0dh,0ah,0dh,0ah,$BUFFDB200DUP(0)ENCRYPTIONDB200DUP($)DECRYPTIONDB200DUP($)DATAENDS*1*1*1*1*1*1*1*1*TxTxTxTxTxTxTxTxSEGMENT(Y

31、/N):,$CODEASSUMECS:CODE,DS:DATA;字符串顯示子程序START:;設置響鈴聲;輸出響鈴聲MOVAX,DATAMOVDS,AXMOVAH,9;請求輸出字符串MOVAL,*MOVCX,63;連續(xù)63個*INT10HLEADX,HEAD0;輸出HEAD0數(shù)據(jù)段CALLDISPMOVDL,07HMOVAH,2INT21HCALLCYCLE;功能選擇程序CYCLEPROCNEAR;選擇程序LEADX,HEAD1;提示PLEASEINPUTDATA:CALLDISPXORSI,SIMOVAH,1;輸入并比較INT21HCMPAL,EJZJ1;若輸入為E則接到J1CMPAL,R;

32、若輸入為R則接到J2JZJ2CMPAL,Q;若輸入為Q則接到EC1JEESC1CMPAL,q;若輸入為q則接到EC1JEESC1JMPCYCLEJ1:CALLJIAMI;把J1定義為子程序JIAMIJ2:CALLJIEMI;把J2定義為子程序JIEMIESC1:CALLEXIT;把ESC1定義為子程序EXITRETCYCLEENDPDISPPROCNEAR;顯示字符串子程序MOVAH,9INT21HRETDISPENDP;字符串輸入程序;數(shù)據(jù)循環(huán)輸入子程序INPUTLOOPPROCNEARMOVSI,0FFFFH;先執(zhí)行SI加一操作,則第一次調(diào)用函數(shù)后SI=0,最后一次調(diào)用時,能夠使si加一F

33、OR:;循環(huán)輸入單個字符INCSI;將SI清零MOVAH,01HJIAMIPROCNEARMOVCX,200INT21HCMPAL,0DH;判斷是否回車?JEFINISHEMOVBUFFSI,AL;保存輸入數(shù)據(jù);INCSIJMPFORFINISHE:MOVBUFFSI,24H;輸入$,輸入結束RETINPUTLOOPENDP;加密選擇;將BUFF清零MOVDI,0BUFFQINGLIN:MOVBUFFDI,0INCDICALLINPUTLOOPXORDI,DIXORSI,SILEASI,ENCRYPTIONLEADI,BUFFCALLENCRYPTIONPROCRETJIAMIENDPLOOP

34、BUFFQINGLIN;取首地址ENCRYPTIONPROCPROCNEARPROC1:XORAX,AXMOVAL,DICMPAL,24HJZORDER;輸入數(shù)據(jù)為$則跳轉到ORDEERCMPAL,30HJZT11;輸入數(shù)據(jù)為0則跳轉到T11CMPAL,:JBT12;有輸入數(shù)據(jù)不大于9則接到T12CMPAL,AJCNEXT;小于A不用處理,轉移到下一個CMPAL,JNCNEXT;大于z不用處理,轉移到下一個CMPAL,aJCBIG;小于a可能是大寫,轉移ADDAL,3;加密CMPAL,JNCJ26;大于z,超過了最后的字母,應減去26JMPNEXTBIG:XORAX,AXMOVAX,DICMP

35、AL,JNCNEXT;大于Z不用處理,轉移到下一個ADDAL,3;加密CMPAL,JNCJ26;大于Z,超過了最后的字母,應減去26JMPNEXTJ26:SUBAL,26NEXT:MOVSI,AX;保存密碼INCDIINCSIJMPPROC1T12:SUBAL,01H;把輸入的數(shù)據(jù)減01MOVSI,ALINCDIINCSIJMPPROC1T11:ADDAL,09H;把輸入的數(shù)為0則其ASCII碼加09HMOVSI,ALINCDIINCSIJMPPROC1ORDER:XORDX,DXLEADX,HEAD2CALLDISP;輸出數(shù)據(jù)段HEAD2XORDX,DXLEADX,ENCRYPTION;輸出

36、加密后字符串CALLDISPMOVCX,200MOVSI,0QINGLIN:MOVENCRYPTIONsi,$INCSILOOPQINGLINXORDX,DXLEADX,HEAD5CALLDISPCALLCYCLERETENCRYPTIONPROCENDP;解密主程序;將ENCRYPTION變量清零;輸出兩行空格行JIEMIPROCNEARMOVCX,200MOVDI,0BUFFQINGLIN2:MOVBUFFDI,0INCDILOOPBUFFQINGLIN2CALLINPUTLOOPMOVCX,200MOVSI,0QINGLIN3:MOVDECRYPTIONSI,$INCSI;先將buff變量清零;將DECRYPTION變量清零LOOPQINGLIN3XORSI,SILEASI,DECRYPTIO

溫馨提示

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

評論

0/150

提交評論