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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、6 加密方法及方案比較3 HYPERLINK l bookmark18 加密方法3 HYPERLINK l bookmark20 加密方案及比較3 HYPERLINK l bookmark22 加密解密設(shè)計(jì)流程及描述5 HYPERLINK l bookmark24 程序所需模塊5 HYPERLINK l bookmark26 程序運(yùn)行界面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)試說明和結(jié)果分析12 HYPERLINK l bookmark62 程序調(diào)試12 HYPERLINK l bookmark64 程序運(yùn)行結(jié)果12 HYPERLINK l bookmark68 心得體會(huì)15 HYPERLINK l bookmark70 參考文獻(xiàn)16 HYPERLINK l bookmark72 附錄:設(shè)計(jì)原程序17本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定武漢理

5、工大學(xué)微機(jī)原理與接口技術(shù)課程設(shè)計(jì)任務(wù)書 摘要本次課程設(shè)計(jì)是需要通過掌握的8086匯編語言程序設(shè)計(jì)方法,設(shè)計(jì)出一個(gè)用于加密和解密的軟件程序。程序運(yùn)行后,首先顯示PleaseInputDat并響鈴一聲,然后從鍵盤接受以字母開始的201個(gè)字節(jié)型數(shù)據(jù),若首字母為E,則將后續(xù)的200個(gè)數(shù)據(jù)進(jìn)行加密后,顯示在屏幕上;若首字母為R,則將后續(xù)的200個(gè)數(shù)據(jù)解密,并顯示在屏幕上。數(shù)據(jù)加密和解密功能的實(shí)現(xiàn)是利用對(duì)數(shù)據(jù)的ASCII碼進(jìn)行加減運(yùn)算,使它改寫為另一組數(shù)據(jù),隱藏了原數(shù)據(jù),使他人不能看到,從而保證了原數(shù)據(jù)的安全。關(guān)鍵字:加密;解密;保證安全設(shè)計(jì)任務(wù)及要求1.1加密解密設(shè)計(jì)的意義當(dāng)今的社會(huì)已經(jīng)進(jìn)入一個(gè)充滿競(jìng)爭(zhēng)

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

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

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

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

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

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

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

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

14、不會(huì)由于一個(gè)字符加密后產(chǎn)生的進(jìn)位影響到其他字符,造成加密解密結(jié)果失真。采用的是FOR循環(huán)語句,并在輸入最后一個(gè)字符后,加$字符結(jié)束輸入,直至鍵入回車符終止子程序返回主程序,因此還要用到比較指令CMP或TEST指令。循環(huán)輸入程序流程圖如圖3-4所示。圖3.4循環(huán)輸入程序流程圖加密過程程序主要針對(duì)輸入的數(shù)字和字母進(jìn)行加密,采用的方法為,輸入數(shù)據(jù)后,若第一個(gè)數(shù)據(jù)為E,則把E后面的數(shù)字減1字母加3作為加密后的數(shù)據(jù)。對(duì)于數(shù)字0減1后小于0,需直接加上9,變成9,對(duì)于Xx,Yy,Zz加3后會(huì)超出字母范圍因此需減去26,變?yōu)锳a,Bb,Cc。程序中判斷語句應(yīng)用CMP或者TEST指令以免產(chǎn)生運(yùn)算結(jié)果,破壞數(shù)據(jù)

15、。由于是一位一位的進(jìn)行數(shù)據(jù)加密,因此需要時(shí)刻判斷當(dāng)前字符是否為$,因?yàn)樽址且?結(jié)尾的。加密過程的關(guān)鍵在于,判斷字符類型及加密后如何對(duì)數(shù)據(jù)進(jìn)行保存并保護(hù),該過程中對(duì)子程序的調(diào)用應(yīng)用非常多,可見子程序的重要作用。加密過程程序流程圖如圖3-5所示。解密過程程序解密為加密的逆過程,即輸入數(shù)據(jù)后,若第一個(gè)數(shù)據(jù)為R,則把R后面的數(shù)字加1字母減3作為解密后的數(shù)據(jù)。由于數(shù)字9加1后大于9,需直接減9變?yōu)?,對(duì)于A/a,B/b,C/c減3后會(huì)超出字母范圍因此需減去3再加26變成X/x,Y/y,Z/z,。因此當(dāng)輸入數(shù)據(jù)9以后,應(yīng)直接將其減9變?yōu)?當(dāng)輸入A/a,B/b,C/c時(shí),應(yīng)先減去3再加上26,變成X/x

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

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

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

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

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

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

22、。武漢理工大學(xué)微機(jī)原理與接口技術(shù)課程設(shè)計(jì)任務(wù)書 LEASEINPUTDATA:RKSZHCS5768rfrhrfrhrfrhirhrfrhrfrhdrhanXI|aprfrhrfrhrfThiThrfrhXXXrfThrfrhrfrhirhanXI|apaprfrhrfrhrfThiThrfrhrfThdrhrfrhIrfThrfThrfrhrfrhrfThrfrhrfrhrfThiThrfrhrfThdrhrfrhrfThrfThrfrhrfrhrfThiThrfrhrfrhrfThrfrhrfThrfThrfrhrfrhrfrhirhrfrbrfrhdrhrfrbrfrhrfThrfrhr

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

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

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

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

27、接口技術(shù).北京:電子工業(yè)出版社,2006朱定華.微機(jī)原理、匯編與接口技術(shù)學(xué)習(xí)指導(dǎo).北京:清華大學(xué)出版社,2004賀亞茹.匯編語言程序設(shè)計(jì).北京:科學(xué)出版社,2005鄭學(xué)堅(jiān),周斌.微型機(jī)算計(jì)原理及應(yīng)用(第三版).北京:清華大學(xué)出版社,2003李珍香.匯編語言課程設(shè)計(jì)案例精編.北京:中國水利水電出版社,2004附錄:設(shè)計(jì)原程序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:;設(shè)置響鈴聲;輸出響鈴聲MOVAX,DATAMOVDS,AXMOVAH,9;請(qǐng)求輸出字符串MOVAL,*MOVCX,63;連續(xù)63個(gè)*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)用時(shí),能夠使si加一F

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

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

35、AL,JNCNEXT;大于Z不用處理,轉(zhuǎn)移到下一個(gè)ADDAL,3;加密CMPAL,JNCJ26;大于Z,超過了最后的字母,應(yīng)減去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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論