字符加密匯編語言程序設(shè)計_第1頁
字符加密匯編語言程序設(shè)計_第2頁
字符加密匯編語言程序設(shè)計_第3頁
字符加密匯編語言程序設(shè)計_第4頁
字符加密匯編語言程序設(shè)計_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)微機原理及接口技術(shù)課程設(shè)計說明書目錄1.題目功能分析12. 算法說明13.程序流程圖設(shè)計23.1主程序功能說明及其流程圖23.2子程序結(jié)構(gòu)流程圖34. 軟件設(shè)計關(guān)鍵問題54.1主程序部分54.2 子程序部分64.2.1標(biāo)題信息子程序64.2.2 加密/解密子程序84.2.3轉(zhuǎn)存子程序84.2.4清屏子程序94.3 BIOS中的功能說明94.4子程序說明105.程序調(diào)試過程及分析11心得體會13參考文獻(xiàn)14附錄(程序清單)15字符加密匯編語言程序設(shè)計1.題目功能分析密碼是一門科學(xué),有著悠久的歷史。密碼在古代就被用于傳遞秘密消息。在近代和現(xiàn)代戰(zhàn)爭中,傳遞情報和指揮戰(zhàn)爭均離不開密碼,外交

2、斗爭中也離不開密碼。密碼一般用于信息通信傳輸過程中的保密和存儲中的保密。隨著計算機和信息技術(shù)的發(fā)展,密碼技術(shù)的發(fā)展也非常迅速,應(yīng)用領(lǐng)域不斷擴展。密碼除了用于信息加密外,也用于數(shù)據(jù)信息簽名和安全認(rèn)證。這樣,密碼的應(yīng)用也不再只局限于為軍事、外交斗爭服務(wù),它也廣泛應(yīng)用在社會和經(jīng)濟活動中。當(dāng)今世界已經(jīng)出現(xiàn)了密碼應(yīng)用的社會化和個人化趨勢。例如:可以將密碼技術(shù)應(yīng)用在電子商務(wù)中,對網(wǎng)上交易雙方的身份和商業(yè)信用進(jìn)行識別,防止網(wǎng)上電子商務(wù)中的“黑客”和欺詐行為;應(yīng)用于增值稅發(fā)票中,可以防偽、防篡改,杜絕了各種利用增值稅發(fā)票偷、漏、逃、騙國家稅收的行為,并大大方便了稅務(wù)稽查;應(yīng)用于銀行支票鑒別中,可以大大降低利用

3、假支票進(jìn)行金融詐騙的金融犯罪行為;應(yīng)用于個人移動通信中,大大增強了通信信息的保密性等等。本次課程設(shè)計中采用匯編語言對字符串進(jìn)行簡單的加密和解密,以期獲得匯編語言程序設(shè)計的基本知識概念。我們設(shè)計的程序需要滿足以下一些功能:(1)運行程序后屏幕提示1加密,2解密; (2)功能選擇后,屏幕提示輸入一字符串; (3)根據(jù)功能選擇對輸入的字符串進(jìn)行加密/解密處理,加密方法自選; (4)輸出處理后的字符串,并再次屏幕提示功能選擇; (5)可連續(xù)輸入字符串進(jìn)行加密/解密處理,直至單擊“Q”或“q”鍵退出程序。 2. 算法說明對于題目主功能要求有以下兩種實現(xiàn)方法:方法一:調(diào)用DOS的1號功能逐個輸入明碼字符,

4、此時由于1號的功能對輸入的字符顯示,故輸入的明碼會顯示。再即時對輸入的字符明碼保存并調(diào)用加密子程序?qū)γ鞔a字符進(jìn)行加密并輸出顯示在屏幕上,直到把明碼輸入完,此時加密結(jié)果也輸出結(jié)束,最后把保存的明碼輸出,即輸出一個完整的明碼字符串。方法二:調(diào)用DOS的OAH號功能輸入一串完整的字符串,即要求加密的字符串,輸入后進(jìn)行保存,然后保存在另一個內(nèi)存區(qū)中,再調(diào)用加密子程序?qū)ψ址懈鱾€元素加密,調(diào)用DOS的9號功能把之前加密好的并保存的密碼字符串完整輸出,顯示在屏幕上,最后用解密函數(shù)對密碼解密并輸出明碼。在本設(shè)計中,我選擇了方法二,這樣需要加密的字符串可以一次性全部輸入,而且操作起來更簡單。另外為了防止使用

5、者的一些誤操作,自己還設(shè)計了一些起警示作用的子程序,使程序更加實用。3.程序流程圖設(shè)計3.1主程序功能說明及其流程圖圖3-1 主程序流程圖功能說明:主程序開始執(zhí)行后,先顯示程序標(biāo)題,此處程序標(biāo)題由天藍(lán)色字體顯示,然后顯示功能選擇提示符。當(dāng)鍵盤輸入選擇后,程序開始進(jìn)行判斷屬于哪一類,判定完畢后則執(zhí)行相應(yīng)跳轉(zhuǎn)加密或者解密。當(dāng)輸入不是所要求的按鍵時,程序輸出紅色錯誤警告,提醒用戶重新進(jìn)行選擇。主程序流程圖如圖3-1所示。3.2子程序結(jié)構(gòu)流程圖(1)程序標(biāo)題設(shè)置功能說明及其流程圖:功能說明:程序標(biāo)題子程序中設(shè)置光標(biāo)位置采用2號功能調(diào)用定位到0行0列,寫字符部分包括字符的文本顯示方式,此處為彩色文本,方

6、式3。流程圖如圖3-2所示。 圖3-2 程序標(biāo)題設(shè)計流程圖 圖3-3 警示信息設(shè)計流程圖(2)警示信息功能說明及其流程圖:功能說明:當(dāng)輸入選擇功能信息有誤時,調(diào)用警示子程序。首先設(shè)置光標(biāo)位置采用2號功能調(diào)用定位到0行0列,寫字符部分包括字符的文本顯示方式,此處為彩色文本,方式4。流程圖如圖3-3所示。(3)加密/解密程序功能說明及其流程圖:功能說明:用戶輸入的字符串存在WORD中,我們再調(diào)用SHURU子程序存入CHEN中,對CHEN中每個元素進(jìn)行加密或者解密后存入CHEN中。當(dāng)加密時,對CHEN中明碼相應(yīng)加10得密碼;當(dāng)解密時,將CHEN中的密碼相應(yīng)的減10即可的解密,得原碼。加密/解密程序流

7、程圖如圖3-4所示。 圖3-4 加密/解密程序流程圖 圖3-5 轉(zhuǎn)存程序流程圖(4)轉(zhuǎn)存程序功能說明及其流程圖:功能說明:將用戶輸入的字符串從WORD緩沖區(qū)逐個循環(huán)賦值轉(zhuǎn)到CHEN緩存區(qū),從而使得原碼和密碼能同時對應(yīng)顯示出來。流程圖如圖3-5所示。(5)清屏程序功能說明及其流程圖: 功能說明:清屏程序調(diào)用6號功能AL=0表示整個屏幕為空白,即清屏幕。流程圖如圖3-6所示。圖3-6 清屏程序流程圖4. 軟件設(shè)計關(guān)鍵問題4.1主程序部分主程序部分開始運行后采用9號功能輸出程序標(biāo)題和提示字符串。當(dāng)用戶選擇后,執(zhí)行判斷跳轉(zhuǎn)部分。因為用戶輸入的信息存在WORD緩存區(qū)中,當(dāng)轉(zhuǎn)存到CHEN中后就需要調(diào)用加密

8、/解密子程序,當(dāng)翻譯完成后就將原碼和密碼一起輸出。程序分支有比較跳轉(zhuǎn)實現(xiàn),代碼如下:START: MOV AX,DATAMOV DS,AXCALL TittleONE: LEA DX,BUFF MOV AH, 09INT 21H ;功能選擇MOV AH,1INT 21H ;單字符輸入 CMP AL,31HJE AA1 CMP AL,32HJE AA2CMP AL,51H JE DONE CMP AL,71HJE DONE ;比較跳轉(zhuǎn) CALL CLEARCALL WARNING ;警報LOOP ONEAA1: CALL JIAMI ;選擇加密AA2: CALL JIEMI ;選擇解密SCREE

9、N: LEA DX,CHENMOV AH, 9INT 21H ;輸出顯示LEA DX,BLANKMOV AH, 9INT 21H ;回車換行LOOP ONEDONE: MOV AX,4C00HINT 21H4.2 子程序部分4.2.1標(biāo)題信息子程序本子程序采用BIOS9號功能調(diào)用,顯示天藍(lán)色的標(biāo)題信息。AH=9為入口類型號,BH為頁號,AL為要寫的字符,BL為字符屬性值,CX為重復(fù)次數(shù),代碼如下:Tittle PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0BIAOTI:MOV AH,2 ;設(shè)置光標(biāo)位置MOV BH,0 ;頁號MOV D

10、H,0 ;行號MOV CX,SI MOV DL,CL ;DL,列號INT 10H MOV AH,9 ;寫當(dāng)前光標(biāo)MOV BH,0 ;頁號MOV AL,ZHIWEISI ;要寫的字符MOV BL,3 ;屬性值(顏色)MOV CX,1 ;重復(fù)次數(shù)INT 10HINC SICMP SI,60JB BIAOTILEA DX,BLANKMOV AH, 9INT 21H ;回車換行POP DXPOP CXPOP BXPOP AXPOP SIRETTittle ENDP4.2.2 加密/解密子程序加密子程序采用ASCII碼值加4的方法,而解密則是采用ASCII碼值減4的方法,循環(huán)賦值,代碼如下:JIAMI(

11、JIEMI) PROC NEAR CALL CLEAR ;清屏LEA DX,BYTE MOV AH, 9INT 21H ;提示輸出LEA DX,WORD MOV AH,0AHINT 21H ;鍵盤輸入LEA DX,BLANKMOV AH,9INT 21H ;回車換行CALL ZHUANCUN ;轉(zhuǎn)存MOV CL,WORD1 ; 鍵盤輸入個數(shù)MOV SI,0AA3:ADD CHENSI,4 ;加密方法INC SILOOP AA3MOV CHENSI+1,0AHMOV CHENSI+2,0DHMOV CHENSI+3,'$' ;結(jié)束符JMP SCREENRETJIAMI(JIEMI

12、) ENDP4.2.3轉(zhuǎn)存子程序 轉(zhuǎn)存子程序是通過指針的移動將WORD中的字符串逐字讀取并存入CHEN中,其代碼如下:ZHUANCUN PROC NEAR PUSH BXMOV SI,0 MOV CL,WORDSI+1 ;輸入個數(shù)MOV CH,0AA5: MOV BL,WORDSI+2MOV CHENSI,BLINC SILOOP AA5 ;轉(zhuǎn)存POP BX RETZHUANCUN ENDP4.2.4清屏子程序調(diào)用BIOS6號功能,AL為上滾行數(shù),BH為顯示屬性,CX為上滾部分左上角行列號,DX為上滾部分右下角行列號,代碼如下: MOV AH,6 ;6號功能調(diào)用-屏幕上滾 MOV AL,0 ;

13、上滾的行數(shù) MOV BH,7 ;黑底 MOV CH,0 ;上滾部分左上角在0行0列 MOV CL,0 MOV DH,24 ;上滾部分右下角在24行79列 MOV DL,79 INT 10h4.3 BIOS中的功能說明在本次課程設(shè)計中,為了獲得良好的顯示效果,用到了基本輸入輸出系統(tǒng)BIOS)中的幾個功能,再次說明一下。(1)設(shè)置光標(biāo)位置 入口參數(shù):AH=2,BH=頁號,DH=行號,DL=列號。 出口參數(shù):無 說明:對于頁號,通常情況下設(shè)置為0。該操作是控制光標(biāo)的重要操作。(2)屏幕上滾 入口參數(shù):AH=6,AL=上滾行數(shù),CX=上滾部分左上角的行、列號,DX=上滾部分右下角的行、列號,BH=顯示

14、屬性。 出口參數(shù):無 說明:當(dāng)AL=0時,表示整個屏幕為空白,及清屏幕。當(dāng)AL0,窗口(即滾動部分)底部為空白輸入行。(3)在當(dāng)前光標(biāo)位置寫字符及其屬性 入口參數(shù):AH=9,BH=頁號,AL=要寫字符的ASCII碼,BL=屬性值,CX=重復(fù)次數(shù)。 出口參數(shù):無 說明:在當(dāng)前光標(biāo)位置寫字符的操作不改變光標(biāo)的位置,所以每次寫字符前,都必須使用2號功能重新設(shè)置光標(biāo)的位置。4.4子程序說明(1)子程序名;JIAMI(JIEMI)功能:ASCII值加(減)4進(jìn)行加密并輸出。先進(jìn)行清屏,然后提示輸入要加密的字符串,由于鍵入的明碼在AL中,存入了WORD緩存區(qū)中,使用ZHUANCUN子程序轉(zhuǎn)存到CHEN后,

15、對每個元素值加30即可,然后調(diào)用DOS的9號功能使密碼輸出并顯示在屏幕上。(2)子程序名:TITTLE功能:首先設(shè)置光標(biāo)位置,然后在光標(biāo)位置寫字符,要寫的字符屬性值由10H調(diào)用實現(xiàn)。采用循環(huán)算法輸出一個字符串。(3)子程序名; WARNING功能:首先設(shè)置光標(biāo)位置,然后在光標(biāo)位置寫字符,要寫的字符屬性值由10H調(diào)用實現(xiàn)。采用循環(huán)算法輸出一個字符串,和TITTLE子程序一樣。(4)子程序名:ZHUANCUN功能:首先賦值循環(huán)次數(shù),采用循環(huán)算法一個個賦值轉(zhuǎn)存。(5)子程序名:CLEAR功能:首先堆棧壓入,保護現(xiàn)場。然后調(diào)用6號功能鍵滾屏,最后再用2號功能鍵進(jìn)行光標(biāo)定位,彈出堆棧。5.程序調(diào)試過程及

16、分析(1)將編寫好的程序輸入到MF平臺上,進(jìn)行以下操作:匯編源程序連接目標(biāo)碼運行程序。彈出對話框,如圖5-1所示。圖5-1 程序開始運行后界面其中字符串“Character encryption/translation program”顯示為天藍(lán)色,這樣顯示醒目標(biāo)題信息,這是因為在程序的開始處有這樣的輸出提示符的程序,并調(diào)用了BIOS的2號功能(顯示光標(biāo)位置)、9號功能(在當(dāng)前光標(biāo)位置寫字符及其屬性)使其顯示為黃色,在以后的循環(huán)執(zhí)行中也會有這樣的提示。(2)當(dāng)操作者按下Q/q時,對話框自動關(guān)閉:當(dāng)按下1或2時,則會顯示以下內(nèi)容,如圖5-2所示。圖5-2 選擇加密或解密后界面 若選擇其他按鍵,則

17、會出錯報警,并要求重新選擇,對話框顯示如圖5-3所示。圖5-3 錯誤警告信息(3)當(dāng)操作者選擇按鍵1,即加密時,接著先輸入要加密的字符,輸完后按回車鍵,即會出現(xiàn)圖5-4所示信息,上一行為原碼,下一行為密碼。加密后回到功能選擇提示符,用戶可重新選擇加密,解密或退出。圖5-4加密顯示界面(4)當(dāng)操作者選擇按鍵2,即解密時,接著先輸入密碼字符,輸完后按回車鍵,即會出現(xiàn)圖5-5所示信息,上一行為需要解密的密碼碼,下一行為原碼。解密后回到功能選擇提示符,用戶可重新選擇加密,解密或退出。圖5-5 解密顯示界面心得體會最近,我們花了近兩個星期的時間進(jìn)行了微機原理及接口技術(shù)的課程設(shè)計,個人覺得還是相當(dāng)有收獲的

18、。平時上課只是接觸課本上已經(jīng)寫好的程序,只是知道它大概有什么功能,卻始終沒有去真正驗證這些功能,去感受匯編語言真正的用途。這次的課程設(shè)計不僅要我們能讀懂一些程序,還要求我們能自己根據(jù)要求設(shè)計程序。我們小組的題目是“字符加密匯編語言程序設(shè)計”,剛開始拿到題目是覺得并不是特別難,但當(dāng)真正入手編程時,卻發(fā)現(xiàn)有許多問題要考慮,比如:操作者輸入的字符是未知的,字符的數(shù)量也是未知的;當(dāng)操作人輸入原碼或密碼時,兩者要對應(yīng)同時顯示出來;當(dāng)程序運行后,屏上顯示的信息要有條理,要讓操作人能看懂,知道下一步該干什么等等問題。不過辦法總比問題多,有些問題我們通過小組討論就解決了,但一些技術(shù)性的問題,我們又通過看書,上

19、網(wǎng)查資料的方式慢慢琢磨,不斷地修改程序,不斷地運行,在不斷地改錯中進(jìn)步,最終得到還算比較完整的程序,可以滿足要求。加密是以某種特殊的算法改變原有的信息數(shù)據(jù),使得未授權(quán)的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內(nèi)容。加密技術(shù)是最常用的安全保密手段。對于像字符加密/解密這樣的程序,在生活中還是具有很大的實用價值的。我們可以通過這樣的程序?qū)ΜF(xiàn)實生活中的一些私人信息進(jìn)行加密,同時,加密/解密在軍事方面也有很大的作用。通過這次微機課設(shè),自己還是有很大收獲的。不僅加深了對之前微機課堂學(xué)習(xí)到的匯編知識,同時也讓自己接觸到了一些新鮮的匯編功能,比如對DOS調(diào)用和BIOS調(diào)用的一些編程

20、,這些功能可以讓我們在滿足主程序邏輯功能的同時,讓程序更加的豐滿、生動。在這次編程中我就利用DOS調(diào)用和BIOS調(diào)用功能讓程序標(biāo)題信息以及警示信息以不同的顏色顯示在程序運行的對話框中。還利用網(wǎng)上資料實現(xiàn)了清屏和換行的功能,使得程序運行重復(fù)運行或輸入有誤時,窗口中不至于太凌亂。匯編語言雖然不像C語言那樣高級,那樣方便使用,但它在微機中還是有很大的作用的,因此,我們應(yīng)該重視它,在學(xué)好匯編語言的基礎(chǔ)上進(jìn)行更高層次的語言學(xué)習(xí)。這次課設(shè)對自己編程能力的提升還是有很大幫助的。參考文獻(xiàn)(1) 彭虎等編著微機原理與接口技術(shù)(第二版)北京:電子工業(yè)出版社,2008 (2)沈美明,溫東禪IBM-PC匯編語句程序設(shè)

21、計(第2版)北京:清華大學(xué)出版社,2001 (3)任向明,盧惠林匯編語言程序設(shè)計實用教程北京:清華大學(xué)出版社,2009 (4)馬力妮80x86匯編語言程序設(shè)計北京:機械工業(yè)出版社,2004 (5)曹加恒,蘇光奎,許先斌新一代匯編語言程序設(shè)計北京:高等教育出版社,2003 附錄(程序清單)DATA SEGMENTZHIWEI DB ' Character encryption/translation program',0DH,0AH,'$'BUFF DB '1:encrypt 2:translate Q/q:exit ?',0DH,0AH,'

22、;$'BYTE DB 0DH,0AH,'please press the sentence ',0DH,0AH,'$'BLANK DB 0DH,0AH,'$'WORD DB 100,?,40 DUP(?)CHEN DB 50 DUP(0)AGAIN DB 'sorry,please choose again!',0DH,0AH,'$'DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCALL TITTLEONE: L

23、EA DX,BUFF MOV AH, 09INT 21H ;功能選擇MOV AH,1INT 21H ;單字符輸入 CMP AL,31HJE AA1 CMP AL,32HJE AA2CMP AL,51H JE DONE CMP AL,71HJE DONE ;比較跳轉(zhuǎn) CALL CLEARCALL WARNING ;警報LOOP ONEAA1: CALL JIAMI ;選擇加密AA2: CALL JIEMI ;選擇解密SCREEN: LEA DX,CHENMOV AH, 9INT 21H ;輸出顯示LEA DX,BLANKMOV AH, 9INT 21H ;回車換行LOOP ONEDONE: MO

24、V AX,4C00HINT 21H;*TITTLE PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0BIAOTI:MOV AH,2 ;設(shè)置光標(biāo)位置MOV BH,0 ;頁號MOV DH,0 ;行號MOV CX,SI MOV DL,CL ;DL,列號INT 10H MOV AH,9 ;寫當(dāng)前光標(biāo)MOV BH,0 ;頁號MOV AL,ZHIWEISI ;要寫的字符MOV BL,3 ;屬性值(顏色)MOV CX,1 ;重復(fù)次數(shù)INT 10HINC SICMP SI,60JB BIAOTILEA DX,BLANKMOV AH, 9INT 21H

25、;回車換行POP DXPOP CXPOP BXPOP AXPOP SIRETTITTLE ENDP;*;*WARNING PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0PP:MOV AH,2 ;設(shè)置光標(biāo)位置MOV BH,0 ;頁號MOV DH,0 ;行號MOV CX,SI MOV DL,CL ;DL,列號INT 10H MOV AH,9 ;寫當(dāng)前光標(biāo)MOV BH,0 ;頁號MOV AL,AGAINSI ;要寫的字符MOV BL,4 ;屬性值MOV CX,1 ;重復(fù)次數(shù)INT 10HINC SICMP SI,26JB PPLEA DX,BLANKMOV AH, 9INT 21H ;回車換行POP DXPOP CXPOP BXPOP AXPOP SIRETWARNING ENDP;*;加密算法JIAMI PROC NEAR CALL CLEAR ;清屏LEA DX,BYTE MOV AH, 9INT 21H ;提示輸出LEA DX,WORD MOV AH,0AHINT 21H ;鍵盤輸入 LEA DX,BLANKMOV AH,9INT 21H ;回車換行CALL ZHUANCUN ;轉(zhuǎn)存MOV CL,WORD1 ;鍵盤輸入個數(shù)MOV

溫馨提示

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

評論

0/150

提交評論