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

下載本文檔

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

文檔簡介

1、課程設(shè)計說明書目錄1.課題背景11.1課程設(shè)計題目11.2課程設(shè)計要求11.3課程設(shè)計內(nèi)容12運行環(huán)境23總體設(shè)計23.1各個模塊功能設(shè)計33.2 各個模塊之間的聯(lián)系64.詳細設(shè)計64.1系統(tǒng)流程圖84.2子功能程序代碼84.3調(diào)試4.4運行結(jié)果115.總結(jié)146.參考文獻157.附錄(程序清單)161 課題背景1.1課程設(shè)計題目:字符加密程序設(shè)計1.2課程設(shè)計要求:本課程設(shè)計要求如下:采用匯編語言對字符串進行簡單的加密和解密,以獲得匯編語言程序設(shè)計的基本知識概念。我們設(shè)計的程序需要滿足以下一些功能:(1)運行程序后屏幕提示1加密,2解密; (2)功能選擇后,屏幕提示輸入一字符串; (3)根據(jù)

2、功能選擇對輸入的字符串進行加密/解密處理,加密方法自選; (4)輸出處理后的字符串,并再次屏幕提示功能選擇; (5)可連續(xù)輸入字符串進行加密/解密處理,直至單擊“Q”或“q”鍵退出程序。1.3課程設(shè)計內(nèi)容 對字符串進行簡單的加密和解密處理。主要通過兩種方法來實現(xiàn)題目主功能:方法一:調(diào)用DOS的1號功能逐個輸入明碼字符,此時由于1號的功能對輸入的字符顯示,故輸入的明碼會顯示。再即時對輸入的字符明碼保存并調(diào)用加密子程序?qū)γ鞔a字符進行加密并輸出顯示在屏幕上,直到把明碼輸入完,此時加密結(jié)果也輸出結(jié)束,最后把保存的明碼輸出,即輸出一個完整的明碼字符串。方法二:調(diào)用DOS的OAH號功能輸入一串完整的字符串

3、,即要求加密的字符串,輸入后進行保存,然后保存在另一個內(nèi)存區(qū)中,再調(diào)用加密子程序?qū)ψ址懈鱾€元素加密,調(diào)用DOS的9號功能把之前加密好的并保存的密碼字符串完整輸出,顯示在屏幕上,最后用解密函數(shù)對密碼解密并輸出明碼。在本設(shè)計中,我選擇了方法二,這樣需要加密的字符串可以一次性全部輸入,而且操作起來更簡單。另外為了防止使用者的一些誤操作,自己還設(shè)計了一些起警示作用的子程序,使程序更加實用。2.運行環(huán)境1.硬件環(huán)境: CPU:2.0GH以上 內(nèi)存:2GB以上2.軟件環(huán)境: 操作系統(tǒng):Microsoft Windows 7 ,MASM,LINK匯編編譯鏈接軟件。3.總體設(shè)計3.1各個模塊功能

4、設(shè)計3.1.1主模塊功能說明:主程序開始執(zhí)行后,先顯示程序標題,此處程序標題由天藍色字體顯示,然后顯示功能選擇提示符。當鍵盤輸入選擇后,程序開始進行判斷屬于哪一類,判定完畢后則執(zhí)行相應跳轉(zhuǎn)加密或者解密。當輸入不是所要求的按鍵時,程序輸出紅色錯誤警告,提醒用戶重新進行選擇。3.1.2程序標題模塊功能說明:程序標題子程序中設(shè)置光標位置采用2號功能調(diào)用定位到0行0列,寫字符部分包括字符的文本顯示方式,此處為彩色文本,方式3。3.1.3警示信息功能模塊功能說明:當輸入選擇功能信息有誤時,調(diào)用警示子程序。首先設(shè)置光標位置采用2號功能調(diào)用定位到0行0列,寫字符部分包括字符的文本顯示方式,此處為彩色文本,方

5、式4。流程圖如圖3-3所示。3.1.4加密/解密程序功能模塊功能說明:用戶輸入的字符串存在WORD中,我們再調(diào)用SHURU子程序存入CHEN中,對CHEN中每個元素進行加密或者解密后存入CHEN中。當加密時,對CHEN中明碼相應加10得密碼;當解密時,將CHEN中的密碼相應的減10即可的解密,得原碼。3.1.5轉(zhuǎn)存程序模塊功能說明:將用戶輸入的字符串從WORD緩沖區(qū)逐個循環(huán)賦值轉(zhuǎn)到CHEN緩存區(qū),從而使得原碼和密碼能同時對應顯示出來。3.1.6清屏程序模塊 功能說明:清屏程序調(diào)用6號功能AL=0表示整個屏幕為空白,即清屏幕。3.2各個模塊之間的聯(lián)系根據(jù)課程設(shè)計題目的要求畫出系統(tǒng)流程圖,然后根據(jù)

6、流程圖可知需要哪些子功能,再分別編寫數(shù)據(jù)代碼段以及各個模塊然后通過程序的組合和調(diào)用來完成設(shè)計要求。4.詳細設(shè)計4.1 系統(tǒng)流程圖4.1.1主程序圖 圖2程序標題設(shè)計流程圖 圖3 警示信息設(shè)計流程圖 圖4 加密/解密程序流程圖 圖5 轉(zhuǎn)存程序流程圖圖6 清屏程序流程圖4.2子功能程序的代碼4.2.1主菜單的功能選擇菜單的代碼如下: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 AA2C

7、MP 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: MOV AX,4C00HINT 21H4.2.2標題信息子程序本子程序采用BIOS9號功能調(diào)用,顯示天藍色的標題信息。AH=9為入口類型號,BH為頁號,AL為要寫的字符,BL為字符屬性值

8、,CX為重復次數(shù),代碼如下:Tittle PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0BIAOTI:MOV AH,2 ;設(shè)置光標位置MOV BH,0 ;頁號MOV DH,0 ;行號MOV CX,SI MOV DL,CL ;DL,列號INT 10H MOV AH,9 ;寫當前光標MOV BH,0 ;頁號MOV AL,ZHIWEISI ;要寫的字符MOV BL,3 ;屬性值(顏色)MOV CX,1 ;重復次數(shù)INT 10HINC SICMP SI,60JB BIAOTILEA DX,BLANKMOV AH, 9INT 21H ;回車換行

9、POP DXPOP CXPOP BXPOP AXPOP SIRETTittle ENDP4.2.3 加密/解密子程序加密子程序采用ASCII碼值加4的方法,而解密則是采用ASCII碼值減4的方法,循環(huán)賦值,代碼如下:JIAMI(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

10、 CHENSI,4 ;加密方法INC SILOOP AA3MOV CHENSI+1,0AHMOV CHENSI+2,0DHMOV CHENSI+3,'$' ;結(jié)束符JMP SCREENRETJIAMI(JIEMI) ENDP4.2.4轉(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 RETZH

11、UANCUN ENDP4.2.5清屏子程序調(diào)用BIOS6號功能,AL為上滾行數(shù),BH為顯示屬性,CX為上滾部分左上角行列號,DX為上滾部分右下角行列號,代碼如下: MOV AH,6 ;6號功能調(diào)用-屏幕上滾 MOV AL,0 ;上滾的行數(shù) MOV BH,7 ;黑底 MOV CH,0 ;上滾部分左上角在0行0列 MOV CL,0 MOV DH,24 ;上滾部分右下角在24行79列 MOV DL,79 INT 10h4.3 調(diào)試將編寫好的程序輸入到MF平臺上,進行以下操作:匯編源程序連接目標碼運行程序。4.4運行結(jié)果(1)將編寫好的程序輸入到MF平臺上,進行以下操作:匯編源程序連接目標碼運行程序。

12、彈出對話框,如圖7所示。圖7程序開始運行后界面其中字符串“Character encryption/translation program”顯示為天藍色,這樣顯示醒目標題信息,這是因為在程序的開始處有這樣的輸出提示符的程序,并調(diào)用了BIOS的2號功能(顯示光標位置)、9號功能(在當前光標位置寫字符及其屬性)使其顯示為黃色,在以后的循環(huán)執(zhí)行中也會有這樣的提示。(2)當操作者按下Q/q時,對話框自動關(guān)閉:當按下1或2時,則會顯示以下內(nèi)容,如圖8所示。圖8 選擇加密或解密后界面 若選擇其他按鍵,則會出錯報警,并要求重新選擇,對話框顯示如圖9所示。圖9 錯誤警告信息(3)當操作者選擇按鍵1,即加密時,

13、接著先輸入要加密的字符,輸完后按回車鍵,即會出現(xiàn)圖10所示信息,上一行為原碼,下一行為密碼。加密后回到功能選擇提示符,用戶可重新選擇加密,解密或退出。圖10加密顯示界面(4)當操作者選擇按鍵2,即解密時,接著先輸入密碼字符,輸完后按回車鍵,即會出現(xiàn)圖11所示信息,上一行為需要解密的密碼,下一行為原碼。解密后回到功能選擇提示符,用戶可重新選擇加密,解密或退出。圖11 解密顯示界面5總結(jié)經(jīng)過一個星期的時間,我們完成了匯編語言課程設(shè)計,個人覺得還是相當有收獲的。平時上課只是接觸課本上已經(jīng)寫好的程序,只是知道它大概有什么功能,卻始終沒有去真正驗證這些功能,去感受匯編語言真正的用途。這次的課程設(shè)計不僅要

14、我們能讀懂一些程序,還要求我們能自己根據(jù)要求設(shè)計程序。我們小組的題目是“字符加密匯編語言程序設(shè)計”,剛開始拿到題目是覺得并不是特別難,但當真正入手編程時,卻發(fā)現(xiàn)有許多問題要考慮,比如:操作者輸入的字符是未知的,字符的數(shù)量也是未知的;當操作人輸入原碼或密碼時,兩者要對應同時顯示出來;當程序運行后,屏上顯示的信息要有條理,要讓操作人能看懂,知道下一步該干什么等等問題。不過辦法總比問題多,有些問題我們通過小組討論就解決了,但一些技術(shù)性的問題,我們又通過看書,上網(wǎng)查資料的方式慢慢琢磨,不斷地修改程序,不斷地運行,在不斷地改錯中進步,最終得到還算比較完整的程序,可以滿足要求。通過這次課設(shè),自己還是有很大

15、收獲的。不僅加深了對之前微機課堂學習到的匯編知識,同時也讓自己接觸到了一些新鮮的匯編功能,比如對DOS調(diào)用和BIOS調(diào)用的一些編程,這些功能可以讓我們在滿足主程序邏輯功能的同時,讓程序更加的豐滿、生動。在這次編程中我就利用DOS調(diào)用和BIOS調(diào)用功能讓程序標題信息以及警示信息以不同的顏色顯示在程序運行的對話框中。還利用網(wǎng)上資料實現(xiàn)了清屏和換行的功能,使得程序運行重復運行或輸入有誤時,窗口中不至于太凌亂。這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正的掌握所學的知識,從而提高自己的實際動手能力和獨立思考

16、的能力 6.參考文獻1劉其明. 匯編語言程序設(shè)計教程M. 江蘇:中國礦業(yè)大學出版社, 2010.102沈美明. IBM-PC匯編語言程序設(shè)計實驗教程M. 北京:清華大學出版社,2010.63 方立友.微機原理與匯編語言實用教程,北京:清華大學出版社,2007 4 溫冬蟬、沈美明IBM PC匯編語言程序設(shè)計北京:清華大學出版社,2007.5 5 錢曉捷.新版匯編語言程序設(shè)計.北京:電子工業(yè)出版社,20075 彭虎等編著微機原理與接口技術(shù)(第二版)北京:電子工業(yè)出版社,2008 6沈美明,溫東禪IBM-PC匯編語句程序設(shè)計(第2版)北京:清華大學出版社,2001 7任向明,盧惠林匯編語言程序設(shè)計實

17、用教程北京:清華大學出版社,2009 8馬力妮80x86匯編語言程序設(shè)計北京:機械工業(yè)出版社,2004 9曹加恒,蘇光奎,許先斌新一代匯編語言程序設(shè)計北京:高等教育出版社,2003 10 姜蓉 微機原理匯編語言及接口技術(shù)西安:西安交通大學出版社,2006附錄(程序清單)DATA SEGMENTZHIWEI DB ' Character encryption/translation program',0DH,0AH,'$'BUFF DB '1:encrypt 2:translate Q/q:exit ?',0DH,0AH,'$'BY

18、TE 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: LEA DX,BUF

19、F 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: MOV AX,4C00

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

21、DXPOP CXPOP BXPOP AXPOP SIRETTITTLE ENDP;*;*WARNING PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0PP:MOV AH,2 ;設(shè)置光標位置MOV BH,0 ;頁號MOV DH,0 ;行號MOV CX,SI MOV DL,CL ;DL,列號INT 10H MOV AH,9 ;寫當前光標MOV BH,0 ;頁號MOV AL,AGAINSI ;要寫的字符MOV BL,4 ;屬性值MOV CX,1 ;重復次數(shù)INT 10HINC SICMP SI,26JB PPLEA DX,BLANKMOV

22、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 SI,0AA3:ADD CHENSI,4 ;加密方法INC SILOOP AA3MOV CHENSI+1,0AHMOV CHENSI+2,0DHMOV CHENSI+3,'$' ;結(jié)束符JMP SCREENRETJIAMI

溫馨提示

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

評論

0/150

提交評論