版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、武漢理工大學微機原理及接口技術課程設計說明書目錄1.題目功能分析12. 算法說明13.程序流程圖設計23.1主程序功能說明及其流程圖23.2子程序結構流程圖34. 軟件設計關鍵問題54.1主程序部分54.2 子程序部分64.2.1標題信息子程序64.2.2 加密/解密子程序84.2.3轉存子程序84.2.4清屏子程序94.3 BIOS中的功能說明94.4子程序說明105.程序調試過程及分析11心得體會13參考文獻14附錄(程序清單)15字符加密匯編語言程序設計1.題目功能分析密碼是一門科學,有著悠久的歷史。密碼在古代就被用于傳遞秘密消息。在近代和現(xiàn)代戰(zhàn)爭中,傳遞情報和指揮戰(zhàn)爭均離不開密碼,外交
2、斗爭中也離不開密碼。密碼一般用于信息通信傳輸過程中的保密和存儲中的保密。隨著計算機和信息技術的發(fā)展,密碼技術的發(fā)展也非常迅速,應用領域不斷擴展。密碼除了用于信息加密外,也用于數(shù)據(jù)信息簽名和安全認證。這樣,密碼的應用也不再只局限于為軍事、外交斗爭服務,它也廣泛應用在社會和經(jīng)濟活動中。當今世界已經(jīng)出現(xiàn)了密碼應用的社會化和個人化趨勢。例如:可以將密碼技術應用在電子商務中,對網(wǎng)上交易雙方的身份和商業(yè)信用進行識別,防止網(wǎng)上電子商務中的“黑客”和欺詐行為;應用于增值稅發(fā)票中,可以防偽、防篡改,杜絕了各種利用增值稅發(fā)票偷、漏、逃、騙國家稅收的行為,并大大方便了稅務稽查;應用于銀行支票鑒別中,可以大大降低利用
3、假支票進行金融詐騙的金融犯罪行為;應用于個人移動通信中,大大增強了通信信息的保密性等等。本次課程設計中采用匯編語言對字符串進行簡單的加密和解密,以期獲得匯編語言程序設計的基本知識概念。我們設計的程序需要滿足以下一些功能:(1)運行程序后屏幕提示1加密,2解密; (2)功能選擇后,屏幕提示輸入一字符串; (3)根據(jù)功能選擇對輸入的字符串進行加密/解密處理,加密方法自選; (4)輸出處理后的字符串,并再次屏幕提示功能選擇; (5)可連續(xù)輸入字符串進行加密/解密處理,直至單擊“Q”或“q”鍵退出程序。 2. 算法說明對于題目主功能要求有以下兩種實現(xiàn)方法:方法一:調用DOS的1號功能逐個輸入明碼字符,
4、此時由于1號的功能對輸入的字符顯示,故輸入的明碼會顯示。再即時對輸入的字符明碼保存并調用加密子程序對明碼字符進行加密并輸出顯示在屏幕上,直到把明碼輸入完,此時加密結果也輸出結束,最后把保存的明碼輸出,即輸出一個完整的明碼字符串。方法二:調用DOS的OAH號功能輸入一串完整的字符串,即要求加密的字符串,輸入后進行保存,然后保存在另一個內存區(qū)中,再調用加密子程序對字符串中各個元素加密,調用DOS的9號功能把之前加密好的并保存的密碼字符串完整輸出,顯示在屏幕上,最后用解密函數(shù)對密碼解密并輸出明碼。在本設計中,我選擇了方法二,這樣需要加密的字符串可以一次性全部輸入,而且操作起來更簡單。另外為了防止使用
5、者的一些誤操作,自己還設計了一些起警示作用的子程序,使程序更加實用。3.程序流程圖設計3.1主程序功能說明及其流程圖圖3-1 主程序流程圖功能說明:主程序開始執(zhí)行后,先顯示程序標題,此處程序標題由天藍色字體顯示,然后顯示功能選擇提示符。當鍵盤輸入選擇后,程序開始進行判斷屬于哪一類,判定完畢后則執(zhí)行相應跳轉加密或者解密。當輸入不是所要求的按鍵時,程序輸出紅色錯誤警告,提醒用戶重新進行選擇。主程序流程圖如圖3-1所示。3.2子程序結構流程圖(1)程序標題設置功能說明及其流程圖:功能說明:程序標題子程序中設置光標位置采用2號功能調用定位到0行0列,寫字符部分包括字符的文本顯示方式,此處為彩色文本,方
6、式3。流程圖如圖3-2所示。 圖3-2 程序標題設計流程圖 圖3-3 警示信息設計流程圖(2)警示信息功能說明及其流程圖:功能說明:當輸入選擇功能信息有誤時,調用警示子程序。首先設置光標位置采用2號功能調用定位到0行0列,寫字符部分包括字符的文本顯示方式,此處為彩色文本,方式4。流程圖如圖3-3所示。(3)加密/解密程序功能說明及其流程圖:功能說明:用戶輸入的字符串存在WORD中,我們再調用SHURU子程序存入CHEN中,對CHEN中每個元素進行加密或者解密后存入CHEN中。當加密時,對CHEN中明碼相應加10得密碼;當解密時,將CHEN中的密碼相應的減10即可的解密,得原碼。加密/解密程序流
7、程圖如圖3-4所示。 圖3-4 加密/解密程序流程圖 圖3-5 轉存程序流程圖(4)轉存程序功能說明及其流程圖:功能說明:將用戶輸入的字符串從WORD緩沖區(qū)逐個循環(huán)賦值轉到CHEN緩存區(qū),從而使得原碼和密碼能同時對應顯示出來。流程圖如圖3-5所示。(5)清屏程序功能說明及其流程圖: 功能說明:清屏程序調用6號功能AL=0表示整個屏幕為空白,即清屏幕。流程圖如圖3-6所示。圖3-6 清屏程序流程圖4. 軟件設計關鍵問題4.1主程序部分主程序部分開始運行后采用9號功能輸出程序標題和提示字符串。當用戶選擇后,執(zhí)行判斷跳轉部分。因為用戶輸入的信息存在WORD緩存區(qū)中,當轉存到CHEN中后就需要調用加密
8、/解密子程序,當翻譯完成后就將原碼和密碼一起輸出。程序分支有比較跳轉實現(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 ;比較跳轉 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標題信息子程序本子程序采用BIOS9號功能調用,顯示天藍色的標題信息。AH=9為入口類型號,BH為頁號,AL為要寫的字符,BL為字符屬性值,CX為重復次數(shù),代碼如下:Tittle PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0BIAOTI:MOV AH,2 ;設置光標位置MOV BH,0 ;頁號MOV D
10、H,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 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 ;轉存MOV CL,WORD1 ; 鍵盤輸入個數(shù)MOV SI,0AA3:ADD CHENSI,4 ;加密方法INC SILOOP AA3MOV CHENSI+1,0AHMOV CHENSI+2,0DHMOV CHENSI+3,'$' ;結束符JMP SCREENRETJIAMI(JIEMI
12、) ENDP4.2.3轉存子程序 轉存子程序是通過指針的移動將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 ;轉存POP BX RETZHUANCUN ENDP4.2.4清屏子程序調用BIOS6號功能,AL為上滾行數(shù),BH為顯示屬性,CX為上滾部分左上角行列號,DX為上滾部分右下角行列號,代碼如下: MOV AH,6 ;6號功能調用-屏幕上滾 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中的功能說明在本次課程設計中,為了獲得良好的顯示效果,用到了基本輸入輸出系統(tǒng)BIOS)中的幾個功能,再次說明一下。(1)設置光標位置 入口參數(shù):AH=2,BH=頁號,DH=行號,DL=列號。 出口參數(shù):無 說明:對于頁號,通常情況下設置為0。該操作是控制光標的重要操作。(2)屏幕上滾 入口參數(shù):AH=6,AL=上滾行數(shù),CX=上滾部分左上角的行、列號,DX=上滾部分右下角的行、列號,BH=顯示
14、屬性。 出口參數(shù):無 說明:當AL=0時,表示整個屏幕為空白,及清屏幕。當AL0,窗口(即滾動部分)底部為空白輸入行。(3)在當前光標位置寫字符及其屬性 入口參數(shù):AH=9,BH=頁號,AL=要寫字符的ASCII碼,BL=屬性值,CX=重復次數(shù)。 出口參數(shù):無 說明:在當前光標位置寫字符的操作不改變光標的位置,所以每次寫字符前,都必須使用2號功能重新設置光標的位置。4.4子程序說明(1)子程序名;JIAMI(JIEMI)功能:ASCII值加(減)4進行加密并輸出。先進行清屏,然后提示輸入要加密的字符串,由于鍵入的明碼在AL中,存入了WORD緩存區(qū)中,使用ZHUANCUN子程序轉存到CHEN后,
15、對每個元素值加30即可,然后調用DOS的9號功能使密碼輸出并顯示在屏幕上。(2)子程序名:TITTLE功能:首先設置光標位置,然后在光標位置寫字符,要寫的字符屬性值由10H調用實現(xiàn)。采用循環(huán)算法輸出一個字符串。(3)子程序名; WARNING功能:首先設置光標位置,然后在光標位置寫字符,要寫的字符屬性值由10H調用實現(xiàn)。采用循環(huán)算法輸出一個字符串,和TITTLE子程序一樣。(4)子程序名:ZHUANCUN功能:首先賦值循環(huán)次數(shù),采用循環(huán)算法一個個賦值轉存。(5)子程序名:CLEAR功能:首先堆棧壓入,保護現(xiàn)場。然后調用6號功能鍵滾屏,最后再用2號功能鍵進行光標定位,彈出堆棧。5.程序調試過程及
16、分析(1)將編寫好的程序輸入到MF平臺上,進行以下操作:匯編源程序連接目標碼運行程序。彈出對話框,如圖5-1所示。圖5-1 程序開始運行后界面其中字符串“Character encryption/translation program”顯示為天藍色,這樣顯示醒目標題信息,這是因為在程序的開始處有這樣的輸出提示符的程序,并調用了BIOS的2號功能(顯示光標位置)、9號功能(在當前光標位置寫字符及其屬性)使其顯示為黃色,在以后的循環(huán)執(zhí)行中也會有這樣的提示。(2)當操作者按下Q/q時,對話框自動關閉:當按下1或2時,則會顯示以下內容,如圖5-2所示。圖5-2 選擇加密或解密后界面 若選擇其他按鍵,則
17、會出錯報警,并要求重新選擇,對話框顯示如圖5-3所示。圖5-3 錯誤警告信息(3)當操作者選擇按鍵1,即加密時,接著先輸入要加密的字符,輸完后按回車鍵,即會出現(xiàn)圖5-4所示信息,上一行為原碼,下一行為密碼。加密后回到功能選擇提示符,用戶可重新選擇加密,解密或退出。圖5-4加密顯示界面(4)當操作者選擇按鍵2,即解密時,接著先輸入密碼字符,輸完后按回車鍵,即會出現(xiàn)圖5-5所示信息,上一行為需要解密的密碼碼,下一行為原碼。解密后回到功能選擇提示符,用戶可重新選擇加密,解密或退出。圖5-5 解密顯示界面心得體會最近,我們花了近兩個星期的時間進行了微機原理及接口技術的課程設計,個人覺得還是相當有收獲的
18、。平時上課只是接觸課本上已經(jīng)寫好的程序,只是知道它大概有什么功能,卻始終沒有去真正驗證這些功能,去感受匯編語言真正的用途。這次的課程設計不僅要我們能讀懂一些程序,還要求我們能自己根據(jù)要求設計程序。我們小組的題目是“字符加密匯編語言程序設計”,剛開始拿到題目是覺得并不是特別難,但當真正入手編程時,卻發(fā)現(xiàn)有許多問題要考慮,比如:操作者輸入的字符是未知的,字符的數(shù)量也是未知的;當操作人輸入原碼或密碼時,兩者要對應同時顯示出來;當程序運行后,屏上顯示的信息要有條理,要讓操作人能看懂,知道下一步該干什么等等問題。不過辦法總比問題多,有些問題我們通過小組討論就解決了,但一些技術性的問題,我們又通過看書,上
19、網(wǎng)查資料的方式慢慢琢磨,不斷地修改程序,不斷地運行,在不斷地改錯中進步,最終得到還算比較完整的程序,可以滿足要求。加密是以某種特殊的算法改變原有的信息數(shù)據(jù),使得未授權的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內容。加密技術是最常用的安全保密手段。對于像字符加密/解密這樣的程序,在生活中還是具有很大的實用價值的。我們可以通過這樣的程序對現(xiàn)實生活中的一些私人信息進行加密,同時,加密/解密在軍事方面也有很大的作用。通過這次微機課設,自己還是有很大收獲的。不僅加深了對之前微機課堂學習到的匯編知識,同時也讓自己接觸到了一些新鮮的匯編功能,比如對DOS調用和BIOS調用的一些編程
20、,這些功能可以讓我們在滿足主程序邏輯功能的同時,讓程序更加的豐滿、生動。在這次編程中我就利用DOS調用和BIOS調用功能讓程序標題信息以及警示信息以不同的顏色顯示在程序運行的對話框中。還利用網(wǎng)上資料實現(xiàn)了清屏和換行的功能,使得程序運行重復運行或輸入有誤時,窗口中不至于太凌亂。匯編語言雖然不像C語言那樣高級,那樣方便使用,但它在微機中還是有很大的作用的,因此,我們應該重視它,在學好匯編語言的基礎上進行更高層次的語言學習。這次課設對自己編程能力的提升還是有很大幫助的。參考文獻(1) 彭虎等編著微機原理與接口技術(第二版)北京:電子工業(yè)出版社,2008 (2)沈美明,溫東禪IBM-PC匯編語句程序設
21、計(第2版)北京:清華大學出版社,2001 (3)任向明,盧惠林匯編語言程序設計實用教程北京:清華大學出版社,2009 (4)馬力妮80x86匯編語言程序設計北京:機械工業(yè)出版社,2004 (5)曹加恒,蘇光奎,許先斌新一代匯編語言程序設計北京:高等教育出版社,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 ;比較跳轉 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 ;設置光標位置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
25、;回車換行POP DXPOP CXPOP BXPOP AXPOP SIRETTITTLE ENDP;*;*WARNING PROC NEARPUSH SIPUSH AXPUSH BXPUSH CXPUSH DX MOV SI,0PP:MOV AH,2 ;設置光標位置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 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 ;轉存MOV CL,WORD1 ;鍵盤輸入個數(shù)MOV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年房地產(chǎn)金融產(chǎn)品的營銷與推廣
- 2025年大學第四學年(農業(yè)智能裝備)研發(fā)創(chuàng)新綜合測試題及答案
- 2025年大學大三(航海技術)國際航運業(yè)務綜合測試題及答案
- 2025年大學護理教育學(護理教育學基礎)試題及答案
- 2025年中職(汽車運用與維修)發(fā)動機故障診斷試題及答案
- 2025年中職核與輻射安全(核與輻射安全技術)試題及答案
- 2026年康復治療(康復評估)試題及答案
- 2025年中職第二學年(眼視光基礎)驗光流程操作綜合測試試題及答案
- 2025年大學歷史(世界古代史專題)試題及答案
- 2025年大學物理實驗A(相對論基礎實驗)試題及答案
- 固態(tài)電池技術在新能源汽車領域的產(chǎn)業(yè)化挑戰(zhàn)與對策研究
- 手術部(室)醫(yī)院感染控制標準WST855-2025解讀課件
- 二氧化硅氣凝膠的制備技術
- 湖南省岳陽市平江縣2024-2025學年高二上學期期末考試語文試題(解析版)
- 2024-2025學年湖北省武漢市江漢區(qū)七年級(下)期末數(shù)學試卷
- 常規(guī)體檢指標講解
- 建筑工程生產(chǎn)管理培訓
- 新人教版高中數(shù)學必修第二冊-第八章 立體幾何初步 章末復習【課件】
- 倉庫物料效期管理制度
- GB/T 157-2025產(chǎn)品幾何技術規(guī)范(GPS)圓錐的錐度與錐角系列
- T/CCT 017-2024中低溫煤焦油
評論
0/150
提交評論