匯編課程設(shè)計 磁盤文件加密解密_第1頁
匯編課程設(shè)計 磁盤文件加密解密_第2頁
匯編課程設(shè)計 磁盤文件加密解密_第3頁
匯編課程設(shè)計 磁盤文件加密解密_第4頁
匯編課程設(shè)計 磁盤文件加密解密_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——匯編課程設(shè)計磁盤文件加密解密

《匯編語言程序設(shè)計》課程設(shè)計

題目:磁盤文件加密、解密

專業(yè):

學(xué)號:

姓名:

2023-2023學(xué)年其次學(xué)期

一.設(shè)計目的

匯編語言課程設(shè)計是對所學(xué)課程內(nèi)容全面、系統(tǒng)的總結(jié)、穩(wěn)定和提高的一項課程實踐活動。根據(jù)匯編語言的特點,選擇相應(yīng)的題目,在老師的指導(dǎo)下,由學(xué)生獨立完成。課程設(shè)計要求同學(xué)們熟悉匯編語言的編程,BIOS中斷調(diào)用、系統(tǒng)功能調(diào)用、磁盤數(shù)據(jù)的查詢、存取等相關(guān)知識。通過課程設(shè)計,一方面提高運用匯編語言編程解決實際問題的能力,另一方面使同學(xué)們更深入的了解計算機(jī)系統(tǒng)內(nèi)部的有關(guān)知識,為以后的學(xué)習(xí)和系統(tǒng)開發(fā)奠定良好的基礎(chǔ)。

二.設(shè)計內(nèi)容

從鍵盤輸入不少于三個字符作為密鑰,自己再設(shè)計一個加密算法。把磁盤文本文件(該磁盤文件名稱要求鍵盤輸入)加密后存盤,然后輸入同樣的密鑰,把加密后的文件(該磁盤文件名稱要求鍵盤輸入)進(jìn)行解密,把解密后的文件內(nèi)容顯示于屏幕上。

三.程序設(shè)計原理

1.設(shè)計一個主菜單,判別1、2、3及其他字符串所對應(yīng)的操作,其中1對應(yīng)建立新文件,2對應(yīng)開啟磁盤文件并對其進(jìn)行加密進(jìn)而將加密后的文件存入磁盤,3對應(yīng)開啟磁盤文件并對其進(jìn)行解密進(jìn)而將解密密后的文件存入磁盤,其他字符則退出循環(huán)。

2.INPUTFILE,創(chuàng)立文件的子程序。文件名由鍵盤輸入,內(nèi)容可以在程序中直接輸入,也可在對應(yīng)路徑的文件里面直接輸入。

3.JIAMI1,加密文件的子程序。文件名由鍵盤輸入,可以開啟創(chuàng)立的文件,也可以開啟磁盤里原有的文件。開啟文件并將其放入緩沖區(qū)之后,調(diào)用PASSWORD子程序,對文件進(jìn)行加密。最終將加密后的文件存入磁盤。

4.JIEMI1,解密文件的子程序。文件名由鍵盤輸入,可以開啟創(chuàng)立的文件,也可以開啟磁盤里原有的文件。開啟文件并將其放入緩沖區(qū)之后,調(diào)用PASSWORD子程序,對文件進(jìn)行解密。最終將解密后的文件存入磁盤。并調(diào)用XIANSHi,將解密后的文件顯示在屏幕上。

5.PASSWORD,加密算法的子程序。根據(jù)輸入的字符串,已大寫字母Z對應(yīng)的ASCII碼作為分界限,大于Z的減去60H,小于Z的減去40H。將處理過后的每個字符對應(yīng)的數(shù)據(jù)相加,存入內(nèi)存單元,以備加密解密算法的調(diào)用。

6.XIANSHI,顯示文件內(nèi)容的子程序。先讀取文件內(nèi)容至緩沖區(qū),再在緩沖區(qū)的結(jié)尾添上美元符,輸出文件內(nèi)容至屏幕上。

四.程序流程圖

1、主要算法

開始主菜單:1:新建2:加密3:解密其他:退出輸入字符N是“1“Y是“2“YN是“3“YN創(chuàng)立文件加密解密退出讀取文件名,并輸入文件內(nèi)容,將輸入的寫入文件。讀取文件名讀取文件名開啟文件,開啟錯誤則重新開啟,正確即開啟成功開啟文件,開啟錯誤則重新開啟,正確即開啟成功讀取文件內(nèi)容讀取文件內(nèi)容將開啟文件時存入緩沖區(qū)的數(shù)據(jù)一一加上PASSWORD子程序產(chǎn)生的參數(shù)。將開啟文件時存入緩沖區(qū)的數(shù)據(jù)一一減去PASSWORD子程序產(chǎn)生的參數(shù)。寫入文件寫入文件調(diào)用XIANSHI子程序關(guān)閉文件終止2、加密算法:

五.源程序開始輸入密碼將密碼存放在KEYSIKEY的偏移地址CX實際讀取字節(jié)長度AL[SI]BL=0與Z比較小于等于大于AL=AL-40HAL=AL-60HBL=BL+ALSI=SI+1CX=CX-1終止

DATASSEGMENT

KEYDB11,?,11DUP(?)

INPUTKDB'INPUTTHEPASSWORD:',10,13,'$'NUMDB?

FNAMEDB50,?,51DUP(?)

INPUTFDB'INPUTTHEFILENAME:',10,13,'$'FCODEDW?

ERRORDB10,13,'ERROR!$'TABLEDB255,?,255DUP(?)

INPUTFIDB'WRITETHEFILE:',10,13,'$'COUNTDB?

CHOICEDB'********************************************',13,10DB'1:INPUTFILE2:JIAMI3:JIEMIOTHER:EXIT'DB

13,10,'********************************************',13,10,'$'PASSDB11,?,11DUP(?)TABLE1DB5000DUP(?)DATASENDS

STACKSSEGMENT

;此處輸入堆棧段代碼STACKSENDS

CODESSEGMENT

ASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:

MOVAX,DATASMOVDS,AX;主程序G0:

MOVDX,OFFSETCHOICEMOVAH,9INT21H

MOVAH,1INT21H

CMPAL,31HJNZG1

CALLINPUTFILEJMPG0

G1:CMPAL,32HJNZG2

CALLJIAMI1JMPG0

G2:CMPAL,33HJNZG3

CALLJIEMI1JMPG0G3:JMPL1

;初始化,建立文件

INPUTFILEPROC

MOVDL,10MOVAH,2INT21HMOVDL,13MOVAH,2INT21H

MOVDX,OFFSETINPUTFMOVAH,9INT21H

MOVDX,OFFSETFNAMEMOVAH,0AHINT21H

LEASI,FNAMEMOVBL,[SI+1]XORBH,BH

MOVBYTEPTR[SI+BX+2],0;形成AXCIZ串LEADX,FNAME+2;建立文件MOVAH,3CHXORCX,CXINT21H

JCERROR1MOVFCODE,AX

MOVDL,10MOVAH,2INT21HMOVDL,13

MOVAH,2INT21H;寫入文件

MOVDX,OFFSETINPUTFIMOVAH,9INT21H

MOVDX,OFFSETTABLEMOVAH,0AHINT21H

MOVAH,40HLEADX,TABLE+2MOVBX,FCODEMOVCL,TABLE+1XORCH,CHINT21HJCERROR1

MOVDL,10MOVAH,2INT21HMOVDL,13MOVAH,2INT21HCALLCLSRET

INPUTFILEENDP

;JIAMI

JIAMI1PROCCALLCLS

CALLPASSWORDMOVDL,10MOVAH,2INT21HMOVDL,13MOVAH,2INT21H

I1:MOVDX,OFFSETINPUTFMOVAH,9INT21H

MOVDX,OFFSETFNAME

MOVAH,0AHINT21HMOVDL,10MOVAH,2INT21HMOVDL,13MOVAH,2INT21H

LEASI,FNAMEMOVBL,[SI+1]XORBH,BH

MOVBYTEPTR[SI+BX+2],0;形成AXCIZ串LEADX,FNAME+2;建立文件MOVAH,3DH;開啟MOVAL,0INT21H

JCI1

MOVFCODE,AX

MOVAH,3FH;讀文件LEADX,TABLE1MOVBX,FCODEMOVCX,5000

INT21HJCERROR1MOVCX,5000

MOVBX,CX

LEASI,TABLE1PUSHAXXORAX,AXMOVAL,NUM

JIAMI:ADDBYTEPTR[SI],ALINCSI

LOOPJIAMIPOPAX

LEADX,FNAME+2MOVAH,3CHXORCX,CXINT21HJCERROR1MOVFCODE,AX

XORAH,AHMOVCX,5000MOVBP,5000MOVAH,40HLEADX,TABLE1

MOVBX,FCODE

INT21HJCERROR1RET

JIAMI1ENDP

;JIEMI

JIEMI1PROCCALLCLS

CALLPASSWORDMOVDL,10MOVAH,2INT21HMOVDL,13MOVAH,2INT21H

I2:MOVDX,OFFSETINPUTFMOVAH,9INT21H

MOVDX,OFFSETFNAMEMOVAH,0AHINT21HMOVDL,10MOVAH,2INT21HMOVDL,13MOVAH,2INT21H

LEASI,FNAMEMOVBL,[SI+1]XORBH,BH

MOVBYTEPTR[SI+BX+2],0;形成AXCIZ串LEADX,FNAME+2MOVAH,3DH;開啟

MOVAL,0INT21HJCI2

MOVFCODE,AX

MOVAH,3FH;讀文件LEADX,TABLE1MOVBX,FCODEMOVCX,10000

INT21HJCERROR1MOVCX,5000

MOVBX,CXMOVBP,BXLEASI,TABLE1PUSHAXXORAX,AXMOVAL,NUM

JIEMI:SUBBYTEPTR[SI],ALINCSI

LOOPJIEMI

LEADX,FNAME+2MOVAH,3CHXORCX,CXINT21HJCERROR1MOVFCODE,AXXORAH,AHMOVCX,5000MOVBP,5000MOVAH,40HLEADX,TABLE1

MOVBX,FCODE

INT21HJCERROR1POPAX

CALLXIANSHI

JCERROR1RET

JIEMI1ENDP

PASSWORDPROCPUSHSIPUSHDI

MOVDL,10MOVAH,2INT21HMOVDL,13MOVAH,2INT21H

MOVDX,OFFSETINPUTKMOVAH,9INT21H

MOVDX,OFFSETKEYMOVAH,0AHINT21H

MOVCL,KEY+1XORCH,CHXORBX,BXLEASI,KEY

NUM1:MOVAL,[SI+2]CMPAL,'Z'JAC1

SUBAL,40HJMPC0

C1:SUBAL,60H

C0:INCSIADDBL,ALLOOPNUM1MOVNUM,BL

POPDIPOPSIRET

PASSWORDENDP

;顯示文件內(nèi)容XIANSHIPROCPUSHDX

PUSHBX

MOVBX,5000

MOVBYTEPTR[BX+TABLE1],'$'LEADX,TABLE1MOVAH,09HINT21H

MOVDL,10MOVAH,2INT21HMOVDL,13MOVAH,2INT21H

POPBXPOPDXRET

XIANSHIENDP

CLSPROC;清屏MOVAH,6MOVAL,0MOVBH,7MOVCH,0MOVCL,0MOVDH,24MOVDL,79INT10HMOVDX,0MOVAH,2MOVBH,0INT10HRET

CLSENDP

JMPL1

ERROR1:MOVDX,OFFSETERRORMOVAH,9INT21H

L1:MOVAH,4CHINT21HCODESENDSENDSTART

六.調(diào)試過程

1.創(chuàng)立文件并對其進(jìn)行加密解密1)創(chuàng)立文件

2)加密

3)解密

2.對磁盤內(nèi)部已有的文件進(jìn)行加密解密1)加密

2)解密

(由于太長,只顯示一部分)

七.遇到的問題及解決方法

1.遇到的問題:對文件的各種操作很陌生。解決方法:熟讀課本,課本內(nèi)容很詳細(xì),只要對其進(jìn)行稍微的拓展,與前面所學(xué)的東西加以結(jié)合,即可動手操作,在編程中逐漸熟悉文件的各種操作。

2.遇到的問題:在寫入文件的時候?qū)τ?/p>

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論