版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 設(shè) 計(jì)題 目加密解密程序設(shè)計(jì)學(xué) 院自動(dòng)化學(xué)院專 業(yè)電氣工程及其自動(dòng)化班 級(jí)姓 名指導(dǎo)教師年月9日課程設(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ù)要求,以及說明書撰寫等具體要求)1. 定義顯示界面。2. 調(diào)用系統(tǒng)時(shí)間,并將調(diào)用的用二進(jìn)制表示的時(shí)間數(shù)轉(zhuǎn)換成ASCII碼,并將時(shí)間數(shù)存入內(nèi)存區(qū)。3. 將存在系統(tǒng)內(nèi)存區(qū)的時(shí)間數(shù)用數(shù)字式或指針式鐘表的形式顯示出來。4. 獲取鍵盤的按鍵值,判斷鍵值并退出系統(tǒng)
2、。5. 撰寫課程設(shè)計(jì)說明書。內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄(程序清單)。正文部分包括:設(shè)計(jì)任務(wù)及要求、方案比較及論證、軟件設(shè)計(jì)說明(軟件思想,流程,源程序設(shè)計(jì)及說明等)、程序調(diào)試說明和結(jié)果分析、課程設(shè)計(jì)收獲及心得體會(huì)。時(shí)間安排:12月 26日-12月 28日 查閱資料及方案設(shè)計(jì)12月 29日- 1月 2 日 編程1月 3日- 1月 7日 調(diào)試程序1月 8日- 1月 9日 撰寫課程設(shè)計(jì)報(bào)告指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日武漢理工大學(xué)微機(jī)原理與接口技術(shù)課程設(shè)計(jì)任務(wù)書目錄摘要11設(shè)計(jì)任務(wù)及要求21.1加密解密設(shè)計(jì)的意義21.2程序設(shè)計(jì)任務(wù)22 加密方法及方
3、案比較32.1 加密方法32.2 加密方案及比較33 加密解密設(shè)計(jì)流程及描述43.1程序所需模塊43.2程序運(yùn)行界面53.3響鈴程序63.4功能選擇程序63.5數(shù)據(jù)循環(huán)輸入子程序73.6加密過程程序83.7解密過程程序93.8退出程序103.9總體程序流程圖114 程序調(diào)試說明和結(jié)果分析124.1 程序調(diào)試124.2 程序運(yùn)行結(jié)果125 心得體會(huì)15參考文獻(xiàn)15附錄:設(shè)計(jì)原程序16本科生課程設(shè)計(jì)成績(jī)?cè)u(píng)定 摘要本次課程設(shè)計(jì)是需要通過掌握的8086匯編語言程序設(shè)計(jì)方法,設(shè)計(jì)出一個(gè)用于加密和解密的軟件程序。程序運(yùn)行后,首先顯示Please Input Data:,并響鈴一聲,然后從鍵盤接受以字母開始
4、的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)鍵字:加密;解密;保證安全1設(shè)計(jì)任務(wù)及要求1.1 加密解密設(shè)計(jì)的意義當(dāng)今的社會(huì)已經(jīng)進(jìn)入一個(gè)充滿競(jìng)爭(zhēng)的時(shí)代,同時(shí)也是一個(gè)信息知識(shí)化和知識(shí)產(chǎn)權(quán)化的時(shí)代,信息的取得方式來源和取得信息的多少都很大程度上成為了我們能否更順利更優(yōu)秀得完成工作而在激烈的競(jìng)爭(zhēng)中取得勝利的關(guān)鍵所在,所以勢(shì)必有很多私人的信息需要實(shí)行安全措施,并進(jìn)行
5、必要的保密工作,這就要用到加密程序,而當(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é);在軍事上,為了更好的保護(hù)自己,保留更多的軍事科學(xué)技術(shù)為我方所用,并且不讓對(duì)手過于了解我方攻防戰(zhàn)略戰(zhàn)術(shù)和武器裝備,需要對(duì)相關(guān)資料進(jìn)行設(shè)置安全保護(hù)??梢钥吹?,當(dāng)今社會(huì)的方方面面已經(jīng)越來越需要使用到加密和解密的裝置來幫助我們更好的
6、管理自己的生活,處理自己的工作,國(guó)家更是需要有安全保障才能越發(fā)強(qiáng)大,因此,加密解密系統(tǒng)的優(yōu)良是完成生產(chǎn)生活的重要任務(wù)之一。1.2 程序設(shè)計(jì)任務(wù)程序運(yùn)行后,首先顯示Please Input Data:,并響鈴一聲,然后從鍵盤接受以字母開始的101個(gè)字節(jié)型數(shù)據(jù),如果首字母為E,則將后續(xù)的200個(gè)數(shù)據(jù)進(jìn)行加密后,顯示在屏幕上;如果首字母為R,則將后續(xù)的200個(gè)數(shù)據(jù)解密,并顯示在屏幕上。撰寫課程設(shè)計(jì)說明書。內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄。正文部分包括:設(shè)計(jì)任務(wù)及要求、方案比較及論證、軟件設(shè)計(jì)說明(軟件思想,流程,源程序設(shè)計(jì)及說明等)、程序調(diào)試說明和結(jié)果分析、課程設(shè)計(jì)心得體會(huì)。2 加密方法及
7、方案比較2.1 加密方法 加密系統(tǒng)需要涉及到明碼(clear code)和暗碼(dim code)之間的轉(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ì)稱算法”(symmetrical algorithm),加密解密環(huán)節(jié)的安全系數(shù)也主要取決于設(shè)計(jì)的算法,主要是防范用窮舉法,debug法等破譯方法。所以選擇合適的算法是建立成熟可靠,安全性好的加密解密環(huán)節(jié)的關(guān)鍵所在。
8、常用數(shù)據(jù)加密算法有: 數(shù)據(jù)加密算法有很多種,按照發(fā)展進(jìn)程來分,經(jīng)歷了古典密碼、對(duì)稱密鑰密碼和公開密鑰密碼階段,古典密碼算法有替代加密、置換加密;對(duì)稱加密算法包括DES和人AES;非對(duì)稱加密算法包括RSA、背包密碼、McEliece密碼、Rabin、橢圓曲線、EIigamal D-H等。 目前在數(shù)據(jù)通信中使用最普遍的算法有DESDESDESDES算法、及RSARSARSARSA算法和PGP算法等。2.2 加密方案及比較方案一:對(duì)需要加密的數(shù)據(jù)進(jìn)行分類,數(shù)字則減1加密,字母則加3加密,得到加密后的數(shù)據(jù),解密只需對(duì)數(shù)字加1,字母減3,并通過DOS調(diào)用將所得結(jié)果顯示在屏幕上。方案二:加密時(shí)將輸入的字符
9、乘以二再和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并在其后輸入想要解密的數(shù)據(jù),程序運(yùn)行后便會(huì)還原數(shù)據(jù),得到解密后的數(shù)據(jù)。加密過程中會(huì)由于加密后數(shù)據(jù)超出數(shù)字或字符可以表示的范圍,數(shù)子9加1后超出范圍,因此可以用9減去9,得0來表示數(shù)字9加密后
10、的數(shù)據(jù);字母Xx,Yy,Zz加3后也會(huì)超出字母表示范圍,因此可以減去26,得Aa,Bb,Cc,分別作為其加密后的數(shù)據(jù)。3 加密解密設(shè)計(jì)流程及描述3.1程序所需模塊根據(jù)程序設(shè)計(jì)要求,可寫出該程序所需各主要的功能模塊:字符循環(huán)輸入模塊、字符串輸出模塊、響鈴模塊、功能選擇模塊、加密模塊、解密模塊、程序退出模塊。程序功能模塊流程圖如圖3-1所示。響鈴輸入加密過程解密過程屏幕顯示功能選擇部分 圖3-1程序功能模塊流程圖3.2程序運(yùn)行界面字符串顯示子程序流程圖如圖3-2所示。 調(diào)用子程序DISP開始DOS系統(tǒng)9號(hào)功能調(diào)用返回主程序DISP調(diào)用結(jié)束圖3-2字符串顯示子程序流程圖好看的運(yùn)行界面可以給用戶一種賞
11、心悅目的感覺,本次設(shè)計(jì)主要利用匯編語言編寫程序并在DOS環(huán)境下運(yùn)行,因此可以使用DATA SEGMENT指令定義數(shù)據(jù)段顯示自己設(shè)計(jì)的界面。可以加入自己設(shè)計(jì)的圖案或字符串,采用9號(hào)功能調(diào)用,輸出多字符串,因此其結(jié)尾必須以$結(jié)尾,自定義界面程序代碼格式如下:DATA SEGMENTHEADMSGDB0DH,0AH,'$'字符串顯示過程子程序程序代碼如下:DISPPROCNEAR ;顯示字符串子程序 MOVAH,9INT21H RET DISPENDP3.3響鈴程序根據(jù)設(shè)計(jì)要求,程序運(yùn)行后,首先顯示Please Input Data:,并響鈴一聲,響鈴程序可以利用2號(hào)功能調(diào)用,07H
12、為響鈴的ASCII碼,響鈴程序代碼如下:MOV DL,07H ;設(shè)置響鈴聲MOV AH,2INT 21H ;輸出響鈴聲3.4功能選擇程序用比較指令CMP選擇所需程序?qū)崿F(xiàn)的功能,如果輸入的字符串首字符為E則進(jìn)入加密子程序;如果輸入的字符串中首字符為R則進(jìn)入解密子程序;如果輸入的字符串中首字符為Q或q則進(jìn)入退出子程序。如果輸入的字符中首字符非前三種情況則會(huì)提醒你再次輸入,直到輸入的首字符為前面三種情況中的一種為止。功能選擇程序流程圖如圖3-3所示。取HEAD1首地址送入DX調(diào)用DISP顯示調(diào)用子程CYCLE開SHI始第一個(gè)數(shù)據(jù)為E?輸入數(shù)據(jù)第一個(gè)數(shù)據(jù)為R?第一個(gè)數(shù)據(jù)為Q/q?跳至JIAMI跳至EX
13、IT跳至JIEMICYCLE調(diào)用結(jié)束NYYNNY圖3-3功能選擇程序流程圖3.5數(shù)據(jù)循環(huán)輸入子程序采用1號(hào)DOS功能調(diào)用命令,循環(huán)輸入單個(gè)字符并保存數(shù)據(jù),加密解密均是以單個(gè)字符為單位進(jìn)行,這樣就不會(huì)由于一個(gè)字符加密后產(chǎn)生的進(jìn)位影響到其他字符,造成加密解密結(jié)果失真。采用的是FOR循環(huán)語句,并在輸入最后一個(gè)字符后,加$字符結(jié)束輸入,直至鍵入回車符終止子程序返回主程序,因此還要用到比較指令CMP或TEST指令。循環(huán)輸入程序流程圖如圖3-4所示。 子程序INPUTLOOP開始循環(huán)輸入數(shù)據(jù)輸入數(shù)據(jù)為ODH?保存數(shù)據(jù)到BUFF跳至FINISH輸入$結(jié)尾INPUTLOOP調(diào)用結(jié)束NY圖3.4循環(huán)輸入程序流程
14、圖3.6加密過程程序主要針對(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ù)。由于是一位一位的進(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所示。 調(diào)用子程序JIAM
15、I開始調(diào)用INPUTLOOP子程序AL=0?從BUFF中取數(shù)據(jù)給AL返回CYCLEJIAMI子程序調(diào)用結(jié)束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ù)后,若第一個(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變
16、成X/x,Y/y,Z/z,。因此當(dāng)輸入數(shù)據(jù)9以后,應(yīng)直接將其減9變?yōu)?,當(dāng)輸入Aa,Bb,Cc時(shí),應(yīng)先減去3再加上26,變成Xx,Yy,Zz。和加密過程類似,也許判斷輸入字符是否為$,以決定是否完成輸入進(jìn)行解密過程。不同類型所以加密算法不同,因此解密的關(guān)鍵就是運(yùn)用對(duì)應(yīng)加密算法的逆運(yùn)算進(jìn)行解密,可見對(duì)字符類型的判斷很重要。解密過程程序流程圖如圖3-6所示。調(diào)用子程序JIEMI開始調(diào)用INPUTLOOP子程序AL=9?從BUFF中取數(shù)據(jù)給AL返回CYCLEJIEMI子程序調(diào)用結(jié)束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退出程序當(dāng)?shù)谝粋€(gè)輸入數(shù)據(jù)為字母Qq時(shí),開始運(yùn)行退出程序,提示“DO YOU WANT TO EXIT THIS PROGRAM?(YN):”輸入Y則退出程序,輸入N則提示:“PLEASE INPUT DATA:”。退出程序所用指令較為簡(jiǎn)單,就是簡(jiǎn)單地9號(hào)DOS功能調(diào)用字符輸入、CMP比較判斷指令、以及基本的跳轉(zhuǎn)指令即可實(shí)現(xiàn)。退出程序雖然簡(jiǎn)單,但在程序中的重要性不言而喻,退出程序不當(dāng)會(huì)給用戶以不好的客戶體驗(yàn),甚至造成數(shù)據(jù)丟失,程序運(yùn)行失敗等問題
18、。退出程序流程圖如圖3-7所示。調(diào)用程序EXIT開始提示并請(qǐng)求輸入數(shù)據(jù)為Y/y?輸入數(shù)據(jù)數(shù)據(jù)為N/n?跳至OUTCX退出程序跳至OUTCX回到程序程序EXIT調(diào)用結(jié)束NNYY圖3-7退出程序流程圖3.9總體程序流程圖將前面介紹的各個(gè)模塊連接起來即為完整的加密解密程序,程序完整代碼見附錄部分。整體程序流程圖如圖3-8所示。 調(diào)用CYCLE子程序選擇程序功能調(diào)用EXIT子程序選擇運(yùn)行狀態(tài)結(jié)束開始調(diào)用DISP輸出程序操作界面響鈴并輸入數(shù)據(jù)調(diào)用INPUTLOOP循環(huán)輸入數(shù)據(jù)圖3-8整體程序流程圖4 程序調(diào)試說明和結(jié)果分析4.1 程序調(diào)試(1)在編寫程序的過程中用到了很多子程序的調(diào)用,而在之前我沒怎么用
19、過子程序調(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í)候發(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等,清零之后
20、亂碼消失。(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后得到程序顯示的菜單界面。自定義的菜界面里有顯示此程序的使用方法并提示輸入數(shù)據(jù)(PLEASE INPUT DATA:),對(duì)程序的使用非常方便,這種人機(jī)交互式的軟件程序最易被用戶承認(rèn)并喜愛。程序運(yùn)行菜單界面如圖4-1所示。輸入數(shù)據(jù)ECZJKHCF0ISVJHLK34按回車鍵運(yùn)行程序,界面上顯示的三角形表示數(shù)據(jù)已加密,為FCMNKFIRLVYMKON23。程序加密界面如圖4-2所示。輸入數(shù)據(jù)R5779GJSB按回車鍵后
21、程序運(yùn)行,圖中顯示的鑰匙形表示數(shù)據(jù)已解密,為6880DGPY。程序解密界面如圖4-3所示。 圖4-1程序運(yùn)行菜單界面圖4-2程序加密界面如果想退出程序則輸入字母Q或q,按回車鍵運(yùn)行后結(jié)果如圖4-4所示,提示“DO YOU WANT TO EXIT THIS PROGRAM?(YN):”。程序退出選擇界面如圖4-4所示。圖4-4程序退出選擇界面輸入Y或y程序結(jié)束,回到集成環(huán)境窗口。輸入N或n回到程序開始菜單,提示“PLEASE INPUT DATA:”,運(yùn)行后如圖4-5。返回程序開始菜單界面如圖4-5所示。圖4-5返回程序開始菜單界面如果輸入數(shù)據(jù)不是E,R,Qq,運(yùn)行程序,同樣提示“PLEASE
22、 INPUT DATA:”,運(yùn)行后如圖4-6。輸入錯(cuò)誤界面如圖4-6所示。圖4-6輸入錯(cuò)誤界面5 心得體會(huì)本次課程設(shè)計(jì),目的在于通過設(shè)計(jì)一個(gè)與日常生活聯(lián)系較緊密的程序或系統(tǒng),讓我們對(duì)微機(jī)及其原理有更深刻更直觀的認(rèn)識(shí),引發(fā)對(duì)微機(jī)原理學(xué)習(xí)的濃厚興趣,為了今后能更熟練的運(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í)。其次,由
23、于本次課程設(shè)計(jì)的程序較長(zhǎng),所以一定要理清思路,以前上課的時(shí)候,老師經(jīng)常強(qiáng)調(diào)在寫一個(gè)程序的時(shí)候,一定要事先把程序流程圖出來,但是我總覺得這樣做沒必要,很浪費(fèi)時(shí)間。但是,這次課程設(shè)計(jì)改變了我以前的那種錯(cuò)誤的認(rèn)識(shí),以前我接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計(jì)中碰到的那些需要很多代碼才能完成的任務(wù),畫程序流程圖是很有必要的。雖然畫了流程圖,但出現(xiàn)問題查找程序時(shí),由于程序太長(zhǎng)還是容易厭煩,所以不僅要?jiǎng)澇绦蛄鞒虉D,還要搞清楚每個(gè)模塊功能,把每個(gè)模塊都分開,每個(gè)模塊的流程圖也畫清楚,這樣整個(gè)思路就清晰明了了。過這次課程設(shè)計(jì),我還是發(fā)現(xiàn)了自己的不少問題,首先是理論知識(shí)掌握得不夠牢固,常常忘記一些小知
24、識(shí)點(diǎn),對(duì)設(shè)計(jì)的過程和效率的把握有很大影響;其次是動(dòng)手能力還有待提高,雖然這次沒有操縱實(shí)物,但在計(jì)算機(jī)上編程和發(fā)現(xiàn)問題解決問題的能力上依然有所欠缺,需要不斷提高,在一些小問題上卡住,直接導(dǎo)致效率降低。以后還要在動(dòng)手實(shí)踐上多加練習(xí)。參考文獻(xiàn)1周佩玲.微機(jī)原理與接口技術(shù).北京:電子工業(yè)出版社,20062朱定華.微機(jī)原理、匯編與接口技術(shù)學(xué)習(xí)指導(dǎo).北京:清華大學(xué)出版社,20043賀亞茹.匯編語言程序設(shè)計(jì).北京:科學(xué)出版社, 20054鄭學(xué)堅(jiān),周斌.微型機(jī)算計(jì)原理及應(yīng)用(第三版).北京:清華大學(xué)出版社,20035李珍香.匯編語言課程設(shè)計(jì)案例精編.北京:中國(guó)水利水電出版社,2004附錄:設(shè)計(jì)原程序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 ;請(qǐng)求輸出字符串 MOV AL,'*' MOV CX,63
30、;連續(xù)63個(gè)* INT 10H LEA DX,HEAD0 ;輸出HEAD0數(shù)據(jù)段;響鈴程序 CALL DISP MOV DL, 07H ;設(shè)置響鈴聲 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加一操作,則第一次調(diào)用函數(shù)后SI=0
32、 ,最后一次調(diào)用時(shí),能夠使si加一FOR: ;循環(huán)輸入單個(gè)字符 INC SI ;將SI清零 MOV AH,01H INT21HCMPAL,0DH ;判斷是否回車?JEFINISHE MOV BUFFSI,AL ;保存輸入數(shù)據(jù) ;INC SI JMP FOR FINISHE: MOVBUFFSI,24H ;輸入'$',輸入結(jié)束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ù)為'$'則跳轉(zhuǎn)到ORDEER CMP AL,30H JZ T11 ;輸入數(shù)據(jù)為0則跳轉(zhuǎn)到T11 CMP AL,: JB T12 ;有輸入數(shù)據(jù)不大于9則接到T12 CMP AL,'A' JC NEX
34、T ;小于'A'不用處理,轉(zhuǎn)移到下一個(gè) CMP AL,'' JNC NEXT ;大于'z'不用處理,轉(zhuǎn)移到下一個(gè) CMP AL,'a' JC BIG ;小于'a'可能是大寫,轉(zhuǎn)移 ADD AL,3 ;加密 CMP AL,'' JNC J26 ;大于'z',超過了最后的字母,應(yīng)減去26 JMP NEXT BIG: XOR AX,AX MOV AX,DI CMP AL,'' JNC NEXT ;大于'Z'不用處理,轉(zhuǎn)移到下一個(gè) ADD AL,3 ;加密 C
35、MP AL,'' JNC J26 ;大于'Z',超過了最后的字母,應(yīng)減去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ù)為'$'則跳轉(zhuǎn)至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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度建筑工程代辦資質(zhì)合同樣本4篇
- 2023六年級(jí)數(shù)學(xué)上冊(cè) 七 百分?jǐn)?shù)的應(yīng)用第2課時(shí) 百分?jǐn)?shù)的應(yīng)用(一)(2)配套說課稿 北師大版
- 二零二五年度洗浴中心特色主題活動(dòng)策劃承包合同4篇
- 10《愛心的傳遞者》第一課時(shí)(說課稿)-統(tǒng)編版道德與法治三年級(jí)下冊(cè)
- 2025年中國(guó)管式換熱管行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 2025年高壓清洗管行業(yè)深度研究分析報(bào)告
- 2024-2030年中國(guó)聚合物基復(fù)合材料行業(yè)市場(chǎng)全景分析及投資前景展望報(bào)告
- 2024年石英行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 2025年度現(xiàn)代化公寓承包裝修設(shè)計(jì)施工協(xié)議8篇
- 2025版路演展示廳品牌合作推廣租賃協(xié)議4篇
- GB/T 11072-1989銻化銦多晶、單晶及切割片
- GB 15831-2006鋼管腳手架扣件
- 有機(jī)化學(xué)機(jī)理題(福山)
- 醫(yī)學(xué)會(huì)自律規(guī)范
- 商務(wù)溝通第二版第4章書面溝通
- 950項(xiàng)機(jī)電安裝施工工藝標(biāo)準(zhǔn)合集(含管線套管、支吊架、風(fēng)口安裝)
- 微生物學(xué)與免疫學(xué)-11免疫分子課件
- 《動(dòng)物遺傳育種學(xué)》動(dòng)物醫(yī)學(xué)全套教學(xué)課件
- 弱電工程自檢報(bào)告
- 民法案例分析教程(第五版)完整版課件全套ppt教學(xué)教程最全電子教案
- 7.6用銳角三角函數(shù)解決問題 (2)
評(píng)論
0/150
提交評(píng)論