字符串加密和解密算法-武漢理工大學(xué)自動(dòng)化07級(jí)_第1頁(yè)
字符串加密和解密算法-武漢理工大學(xué)自動(dòng)化07級(jí)_第2頁(yè)
字符串加密和解密算法-武漢理工大學(xué)自動(dòng)化07級(jí)_第3頁(yè)
字符串加密和解密算法-武漢理工大學(xué)自動(dòng)化07級(jí)_第4頁(yè)
字符串加密和解密算法-武漢理工大學(xué)自動(dòng)化07級(jí)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

【此課設(shè)格式有出入】摘要隨著計(jì)算機(jī)硬件的開(kāi)展,微機(jī)系統(tǒng)的功能越來(lái)越強(qiáng),而且計(jì)算機(jī)的程序設(shè)計(jì)語(yǔ)言也經(jīng)過(guò)了一個(gè)開(kāi)展的過(guò)程。從最根本的機(jī)器語(yǔ)言到匯編語(yǔ)言,并到高級(jí)的智能化語(yǔ)言,如visualC++、visualBasic等,不斷前進(jìn)。對(duì)給定的明碼進(jìn)行加密是當(dāng)今計(jì)算機(jī)科學(xué)中的一個(gè)非常熱門(mén)話題。在本課程設(shè)計(jì)中,目的是給輸入的明碼進(jìn)行加密并輸出相應(yīng)的密碼,加密方法有:明碼的ASCII值上下位互換,ASCII值減50,ASCII值加40,ASCII值取補(bǔ)碼,ASCII值二進(jìn)制末位取反。可見(jiàn)這些加密方法都很簡(jiǎn)單,因此設(shè)計(jì)過(guò)程也相對(duì)簡(jiǎn)單,且這樣的加密算法也可輕而易舉地被攻破,不利于密碼的保護(hù)。一種更強(qiáng)的加密方式是公鑰密鑰,公約加密更方便而且很難被攻破,因?yàn)樗褂昧藘蓚€(gè)密鑰,一個(gè)是公鑰,一個(gè)是私鑰但作為知識(shí)應(yīng)用。課設(shè)只是把所學(xué)的知識(shí)加以應(yīng)用,作為設(shè)計(jì)者,不能輕視題目的簡(jiǎn)單,我們要借此時(shí)機(jī),加強(qiáng)匯編語(yǔ)言的學(xué)習(xí),并加深自己的知識(shí)。在設(shè)計(jì)中,程序應(yīng)用了BIOS中一些系統(tǒng)中斷,參加了一些彩色醒目提示符,設(shè)計(jì)了人性化的界面,這些是自學(xué)的匯編知識(shí)并加以應(yīng)用,當(dāng)然也有DOS系統(tǒng)的功能調(diào)用。另外,程序中還設(shè)計(jì)了四種加密方式,可以任意選擇相應(yīng)的加密方式,再對(duì)輸入的明碼進(jìn)行加密,然后可以鍵入回車鍵使明碼在屏幕上顯示,從而進(jìn)行自我校驗(yàn),驗(yàn)證加密方式的正誤??傊约航Y(jié)合平時(shí)所學(xué)和最近的自學(xué),認(rèn)真的完成了課設(shè),并很好的實(shí)現(xiàn)了相應(yīng)的功能。關(guān)鍵字:加密,明碼和密碼,DOS,BIOS課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名:專業(yè)班級(jí):指導(dǎo)教師:工作單位:自動(dòng)化學(xué)院題目:加密解密程序設(shè)計(jì)要求完成的主要任務(wù):1.運(yùn)用匯編語(yǔ)言設(shè)計(jì)不同的字符串加密和解密算法。首先從鍵盤(pán)輸入一個(gè)字符串,顯示加密結(jié)果,按回車鍵,輸出解密結(jié)果。2.首先統(tǒng)一將字母轉(zhuǎn)換成ASCII碼〔區(qū)分大小寫(xiě)〕,然后進(jìn)行加密操作,結(jié)果轉(zhuǎn)換成新的字符輸出。備選加密算法如下:〔1〕ASCII值上下位互換;〔2〕ASCII值減50;〔3〕ASCII值加40;〔4〕ASCII值取補(bǔ)碼;〔5〕ASCII值二進(jìn)制末位取反。3.撰寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū)。內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄〔程序清單〕。正文局部包括:設(shè)計(jì)任務(wù)及要求、方案比擬及論證、軟件設(shè)計(jì)說(shuō)明〔軟件思想,流程,源程序設(shè)計(jì)及說(shuō)明等〕、程序調(diào)試說(shuō)明和結(jié)果分析、課程設(shè)計(jì)收獲及心得體會(huì)。時(shí)間安排:1月18日1月20日 查閱資料及方案設(shè)計(jì)1月21日1月24日 編程1月25日1月27日 調(diào)試程序1月28日1月29日 撰寫(xiě)課程設(shè)計(jì)報(bào)告指導(dǎo)教師簽名:年月日系主任〔或責(zé)任教師〕簽名:年月日目錄1概述12方案選擇13軟件設(shè)計(jì)說(shuō)明23.1總體流程23.2模塊程序流程圖53.2.1加密方式153.2.2加密方式253.2.3加密方式363.2.4加密方式463.2.5解密方法設(shè)計(jì)73.3源程序83.4源程序說(shuō)明18BIOS中的功能說(shuō)明18子程序說(shuō)明184程序調(diào)試說(shuō)明195心得22參考文獻(xiàn)24加密解密程序設(shè)計(jì)1概述加密是當(dāng)今計(jì)算機(jī)科學(xué)中的一個(gè)熱門(mén)話題,加密技術(shù)是最常用的平安保密手段,利用技術(shù)手段把重要的數(shù)據(jù)變?yōu)閬y碼〔加密〕傳送,到達(dá)目的地后再用相同或不同的手段復(fù)原〔解密〕。在本設(shè)計(jì)中要求運(yùn)用匯編語(yǔ)言設(shè)計(jì)不同的字符串加密和解密算法。首先從鍵盤(pán)輸入一個(gè)字符串〔對(duì)于字母要區(qū)分大小寫(xiě)〕,再進(jìn)行加密操作,結(jié)果轉(zhuǎn)換成新的字符輸出,即顯示加密結(jié)果,按回車鍵,輸出解密結(jié)果。其中備選加密算法如下:ASCII值上下位互換;ASCII值減50;ASCII值加40;ASCII值取補(bǔ)碼;ASCII值二進(jìn)制末位取反。2方案選擇對(duì)于題目要求有以下幾種實(shí)現(xiàn)方法:〔1〕調(diào)用DOS的OAH號(hào)功能輸入一串完整的字符串,即要求加密的字符串,輸入后進(jìn)行保存,然后調(diào)用加密子程序?qū)ψ址懈鱾€(gè)元素加密,保存在另一個(gè)內(nèi)存區(qū)中,再調(diào)用DOS的9號(hào)功能把之前加密好的并保存的密碼字符串完整輸出,顯示在屏幕上,最后輸出之前已經(jīng)輸入并保存的明碼即可,也可以用解密函數(shù)對(duì)密碼解密并輸出明碼。〔2〕調(diào)用DOS的8號(hào)功能逐個(gè)輸入明碼字符,此時(shí)由于8號(hào)的功能對(duì)輸入的字符不顯示,故輸入的明碼不顯示。再即時(shí)對(duì)輸入的字符明碼保存并調(diào)用加密子程序?qū)γ鞔a字符進(jìn)行加密并輸出顯示在屏幕上,直到把明碼輸入完,此時(shí)加密結(jié)果也輸出結(jié)束,最后把保存的明碼輸出,即輸出一個(gè)完整的明碼字符串。在本設(shè)計(jì)中,我選擇了第二種方法,這樣可以和平時(shí)上網(wǎng)時(shí)要求輸入密碼情況相似,即只顯示星號(hào)〔本設(shè)計(jì)中顯示了密碼〕,可見(jiàn)這樣的密碼顯示也很實(shí)用。為了得到一個(gè)很實(shí)用的操作界面,便于操作者使用,在程序中調(diào)用了BIOS中的一些功能,使一些提示語(yǔ)更加醒目,這樣更實(shí)用點(diǎn)。且采用了四種加密方式,操作者可以自由選擇3軟件設(shè)計(jì)說(shuō)明3.1總體流程輸出pressanykeytoStart提示符,等待任意鍵輸入輸出pressanykeytoStart提示符,等待任意鍵輸入“清屏〞,設(shè)置光標(biāo)位置輸出“請(qǐng)選擇加密方式〔1—4〕〞的提示符輸出“輸出加密方式1的結(jié)果:〞提示符輸出“加密方式不存在,請(qǐng)重新輸入選擇1判斷鍵入值,是否為1—4?N輸出“輸出加密方式2結(jié)果:〞提示符輸出“輸出加密方式3結(jié)果:〞提示符輸出“輸出加密方式4結(jié)果:〞提示符234N是回車嗎?當(dāng)按鍵輸入時(shí),保存在CHOICE等待按鍵輸入開(kāi)始Y圖3-1主流程圖第1局部是數(shù)字或大小寫(xiě)字母嗎?是數(shù)字或大小寫(xiě)字母嗎?N換行并輸出“明碼不是字母或數(shù)字,因此是錯(cuò)誤的!〞的提示符保存在IMORT內(nèi)存區(qū)中Y把已經(jīng)保存在CHOICE中的“加密方式〞〔為ASC2碼〕和1—4的ASC2碼比擬并判斷用加密方式1對(duì)鍵入的字符加密并輸出用加密方式2對(duì)鍵入的字符加密并輸出用加密方式3對(duì)鍵入的字符加密并輸出用加密方式4對(duì)鍵入的字符加密并輸出方式1方式2方式3方式4轉(zhuǎn)到:等待按鍵輸入〔在判斷輸入的鍵是否是回車的上面一步〕開(kāi)始圖3-2主流程圖第2局部說(shuō)明:圖3-2接圖3-3,此流程圖最后轉(zhuǎn)到“等待按鍵輸入〞局部,此局部程序在上一頁(yè),即在輸出“輸出加密方式的結(jié)果:〞提示符的下面。轉(zhuǎn)后,繼續(xù)等待操作者鍵入要加密的明碼或回車鍵。下面的流程圖任屬于主流程圖局部,并為主流程圖的一個(gè)分支。其功能是輸出“明碼是:〞的提示符,再輸出之前已經(jīng)保存的明碼字符串,最后輸出按Q或q的提示符,提示操作者是否繼續(xù):假設(shè)鍵入Q或q,那么退出程序,假設(shè)鍵入其它的字符,那么跳到開(kāi)始處,重新執(zhí)行程序。換行,輸出換行,輸出“'MingMaIS:〞提示符輸出明碼輸出明碼〔明碼保存在IMPORT內(nèi)存區(qū)中〕輸出“按Q或q鍵退出,否那么按其他鍵繼續(xù)!〞的提示符是Q或q嗎?等待按鍵的輸入結(jié)束YN開(kāi)始圖3-3主流程圖第3局部3.2模塊程序流程圖加密方式1DX中數(shù)據(jù)入棧DX中數(shù)據(jù)入棧鍵入的明碼送到DL中DL中數(shù)據(jù)加30輸出DL中數(shù)據(jù),顯示在屏幕上DX中數(shù)據(jù)出棧圖3-4加密方式1DX,CX入棧CL=4,設(shè)定移動(dòng)次數(shù)DL中數(shù)據(jù)循環(huán)右移四位鍵入的明碼送到DL中輸出DL中數(shù)據(jù),顯示在屏幕上DX,CX入棧CL=4,設(shè)定移動(dòng)次數(shù)DL中數(shù)據(jù)循環(huán)右移四位鍵入的明碼送到DL中輸出DL中數(shù)據(jù),顯示在屏幕上CX,DX出棧圖3-5加密方式2加密方式3DX中數(shù)據(jù)入棧鍵入的明碼送到DL中DL中數(shù)據(jù)減50輸出DL中數(shù)據(jù),顯示在屏幕上DX中數(shù)據(jù)入棧鍵入的明碼送到DL中DL中數(shù)據(jù)減50輸出DL中數(shù)據(jù),顯示在屏幕上DX中數(shù)據(jù)出棧圖3-6加密方式3加密方式4DX中數(shù)據(jù)入棧DX中數(shù)據(jù)入棧輸入的明碼送到DL中DL數(shù)據(jù)的ASCII碼值末位和1異或取反輸出DL中數(shù)據(jù),顯示在屏幕上DX中數(shù)據(jù)出棧圖3-7加密方式4解密方法設(shè)計(jì)在本課程設(shè)計(jì)中,對(duì)于解密局部,可以以下兩種方案〔1〕對(duì)于輸入的明碼加密后,再調(diào)用解密程序,對(duì)明碼進(jìn)行解密,把解密后的明碼保存在一個(gè)內(nèi)存區(qū)中,輸出明碼后,再把明碼輸出,這樣就實(shí)現(xiàn)了解密過(guò)程?!?〕當(dāng)對(duì)于輸入明碼后,立即將明碼保存,之后對(duì)輸入的明碼進(jìn)行解密,輸出密碼,在整個(gè)明碼字符串加密完后,可以調(diào)用DOS的9號(hào)功能,把之前保存的明碼直接輸出,這樣即可實(shí)現(xiàn)明碼的“解密〞,快速方便?;诘诙N方法,得出了下面的流程圖,其在總流程圖中也有表達(dá)。等待明碼的輸入等待明碼的輸入是回車?〔輸入的明碼字符串以回車結(jié)束〕保存在一個(gè)內(nèi)存區(qū)NY加密并輸出明碼輸出明碼明碼解密圖3-8解密局部流程圖3.3源程序LENEQU80;明碼長(zhǎng)度設(shè)置〔注意:要求小于LEN〕DATASEGMENTEXPORT0DB'MingMaIS:$';****************************************;加密方式選擇的提示符SLE1DB0DH,0AH,20h,20h,'exporttheresultofjiamifangshi1:$'SLE2DB0DH,0AH,20H,20H,'exporttheresultofjiamifangshi2:$'SLE3DB0DH,0AH,20H,20H,'exporttheresultofjiamifangshi3:$'SLE4DB0DH,0AH,20H,20H,'exporttheresultofjiamifangshi4:$';***************************************KAISHI0DB0DH,0AH,0DH,0AH,'$'KAISHI1DB'pressanykeytostart!$'CHOICEDB?;存放決定加密方式的數(shù)字FANGSHIDB0DH,0AH,'Pleasechoosethejiamifangshi(1-3):$'EXIST0DB0DH,0AH,20H,20H,20H,'$'EXISTDB'thejiamifangshiyouchoosedonotexist!'DB'pleasechooseagain!$'IMPORTDBLENDUP(?);其中存放明碼的ASCII碼值〔注意〕ERROR0DB0DH,0AH,20H,20H,20H,20H,'$'ERROR1DB'MingMaisnotNumbersorLetters,soiswrong!$'QUITDB0DH,0AH,20H,20H,20H,'Press"q"or"Q"toquit,orotherstogoon!$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,IMPORT;*******************************************************;下面用于彩色輸出pressanykeytostart提示符LEADX,KAISHI0;輸出換行,空格便于下面的輸出MOVAH,9INT21HMOVDI,OFFSETKAISHI1MOVAH,3;讀取當(dāng)前光標(biāo)的位置〔子功能號(hào)3〕INT10HXHUAN:MOVAH,2;設(shè)置光標(biāo)位置(子功能號(hào)2)INT10HINCDL;因?yàn)樾刑?hào)不變,只讓列號(hào)加一指向下一個(gè)CMPBYTEPTR[DI],'$'JEA1;結(jié)束,跳到A1,再跳出,這樣設(shè)置能夠防止錯(cuò)誤MOVAL,BYTEPTR[DI]MOVBL,8AH;“閃爍,亮綠〞的顯示方式MOVCX,1MOVAH,9INT10HINCDIJMPXHUAN;*******************************************************A1:MOVAH,8;等待任意鍵輸入,并且由此開(kāi)始INT21HCALLCLEAR;調(diào)用“清屏〞程序MOVAH,2;設(shè)置光標(biāo)位置在左上方開(kāi)始出不變MOVDX,0MOVBH,0INT10HMOVDX,OFFSETFANGSHIMOVAH,9INT21H;**************************************************;輸入加密方式〔1-3〕,保存到CHOICE內(nèi)存區(qū)域中,并決定相應(yīng)的提示語(yǔ)MOVAH,1;輸入數(shù)字〔1-3〕,選擇加密方式INT21HMOVCHOICE,AL;把輸入的字符〔明碼〕保存的IMPORT內(nèi)存區(qū)CMPAL,31H;和1的ASCII碼31h比擬JEL1;對(duì)應(yīng)加密方式1CMPAL,32H;和2的ASCII碼32h比擬JEL2;對(duì)應(yīng)加密方式2CMPAL,33H;和3的ASCII碼31h比擬JEL3;對(duì)應(yīng)加密方式3CMPAL,34H;和4的ASCII碼34h比擬JEL4;對(duì)應(yīng)加密方式4;****************************************************;下面用于彩色輸出“加密方式不存在,請(qǐng)重新選擇〞提示符LEADX,EXIST0;輸出換行,空格便于下面的輸出MOVAH,9INT21HMOVDI,OFFSETEXISTMOVAH,3;讀取當(dāng)前光標(biāo)的位置〔子功能號(hào)3〕INT10HXUHU:MOVAH,2;設(shè)置光標(biāo)位置(子功能號(hào)2)INT10HINCDL;因?yàn)樾刑?hào)不變,只讓列號(hào)加一指向下一個(gè)CMPBYTEPTR[DI],'$'JESTART;結(jié)束,跳到A1,再跳出,這樣設(shè)置能夠防止錯(cuò)誤MOVAL,BYTEPTR[DI]MOVBL,8EH;“閃爍,黃〞的顯示方式MOVCX,1MOVAH,9INT10HINCDIJMPXUHU;************************************;輸出“輸出不同加密方式的結(jié)果〞提示符L1:MOVDX,OFFSETSLE1MOVAH,9INT21HJMPAGAINL2:MOVDX,OFFSETSLE2MOVAH,9INT21HJMPAGAINL3:MOVDX,OFFSETSLE3MOVAH,9INT21HJMPAGAINL4:MOVDX,OFFSETSLE4MOVAH,9INT21HAGAIN:MOVAH,8;不帶回顯的鍵盤(pán)輸入〔8號(hào)功能〕INT21HCMPAL,0DH;是回車嗎?JEMINGMA1;是,那么輸出明碼;**********************************************;判斷密碼是否是數(shù)字或大小寫(xiě)字母的程序局部CMPAL,30HJAELOOP1JMPERRORSTART1:JMPSTART;為下面error局部跳到Start作準(zhǔn)備,否那么出錯(cuò)MINGMA1:JMPMINGMALOOP1:CMPAL,39HJALOOP2JMPHUICHELOOP2:CMPAL,41HJAELOOP3JMPERRORLOOP3:CMPAL,5AHJALOOP4JMPHUICHELOOP4:CMPAL,61HJAELOOP5JMPERRORLOOP5:CMPAL,7AHJBEHUICHEERROR:LEADX,ERROR0;輸出換行,空格便于下面的輸出MOVAH,9INT21HMOVDI,OFFSETERROR1MOVAH,3;讀取當(dāng)前光標(biāo)的位置〔子功能號(hào)3〕INT10HXUNH:MOVAH,2;設(shè)置光標(biāo)位置(子功能號(hào)2)INT10HINCDL;因?yàn)樾刑?hào)不變,只讓列號(hào)加一指向下一個(gè)CMPBYTEPTR[DI],'$'JESTART1;結(jié)束,跳到A2,再跳出,這樣設(shè)置能夠防止錯(cuò)誤MOVAL,BYTEPTR[DI]MOVBL,8CH;“閃爍,亮紅〞的顯示方式MOVCX,1MOVAH,9INT10HINCDIJMPXUNHHUICHE:MOVBYTEPTR[SI],AL;把輸入的字符〔明碼〕保存的IMPORT內(nèi)存區(qū)INCSI;**********************************************;下面程序功能:由上面加密方式〔存在CHOICE中〕決定,并對(duì)輸入的明碼進(jìn)行加密CMPBYTEPTR[CHOICE],31H;和1的ASCII碼31h比擬JEJM1;對(duì)應(yīng)加密方式1CMPBYTEPTR[CHOICE],32H;和2的ASCII碼32h比擬JEJM2;對(duì)應(yīng)加密方式2CMPBYTEPTR[CHOICE],33H;和1的ASCII碼31h比擬JEJM3;對(duì)應(yīng)加密方式3CMPBYTEPTR[CHOICE],34H;和4的ASCII碼34h比擬JEJM4;對(duì)應(yīng)加密方式3JM1:CALLJIAMI1JMPAGAINJM2:CALLJIAMI2JMPAGAINJM3:CALLJIAMI3;調(diào)用加密函數(shù),對(duì)輸入的明碼進(jìn)行加密并輸出JMPAGAINJM4:CALLJIAMI4JMPAGAIN;*******************************************************;以下是用于輸出“明碼是:〞的提示符〔彩色顯示,便于顯目〕MINGMA:LEADX,ERROR0;輸出換行,空格便于下面的輸出MOVAH,9INT21HMOVDI,OFFSETEXPORT0MOVAH,3;讀取當(dāng)前光標(biāo)的位置〔子功能號(hào)3〕INT10HXH:MOVAH,2;設(shè)置光標(biāo)位置(子功能號(hào)2)INT10HINCDL;因?yàn)樾刑?hào)不變,只讓列號(hào)加一指向下一個(gè)CMPBYTEPTR[DI],'$'JEA2;結(jié)束,跳到A1,再跳出,這樣設(shè)置能夠防止錯(cuò)誤MOVAL,BYTEPTR[DI]MOVBL,8FH;“閃爍,亮白〞的顯示方式MOVCX,1MOVAH,9INT10HINCDIJMPXH;*********************************************************A2:MOVBYTEPTR[SI],'$';使明碼內(nèi)存區(qū)最后一字符為$MOVDX,OFFSETIMPORT;輸出明碼MOVAH,9INT21HMOVDX,OFFSETQUITMOVAH,9INT21HMOVAH,8INT21HCMPAL,'Q'JEEXITCMPAL,'q'JEEXITJMPSTARTEXIT:MOVAH,4CHINT21H;*******************************;子程序名;JIAMI1;功能:ASCII值加30進(jìn)行加密并輸出JIAMI1PROCNEARPUSHDXMOVDL,ALADDDL,30MOVAH,2INT21HPOPDXRETJIAMI1ENDP;********************************;子程序名;JIAMI2;功能:ASCII上下位互換進(jìn)行加密并輸出JIAMI2PROCNEARPUSHDXPUSHCXMOVCL,4MOVDL,ALRORDL,CLMOVAH,2INT21HPOPCXPOPDXRETJIAMI2ENDP;******************************;子程序名;JIAMI3;功能:ASCII值減50進(jìn)行加密并輸出JIAMI3PROCNEARPUSHDXMOVDL,ALSUBDL,50MOVAH,2INT21HPOPDXRETJIAMI3ENDP;*******************************;子程序名;JIAMI4;功能:ASCII值末位取反加密并輸出JIAMI4PROCNEARPUSHDXMOVDL,ALXORDL,01HMOVAH,2INT21HPOPDXRETJIAMI4ENDP;********************************;子程序名;CLEAR;功能:對(duì)屏幕進(jìn)行去除CLEARPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXMOVAH,6;6號(hào)功能調(diào)用-屏幕上滾MOVAL,0;上滾的行數(shù)MOVBH,7;黑底MOVCH,0;上滾局部左上角在0行0列MOVCL,0MOVDH,24;上滾局部右下角在24行79列MOVDL,79INT10hPOPDXPOPCXPOPBXPOPAXRETCLEARENDPCODEENDSENDSTART3.4源程序說(shuō)明BIOS中的功能說(shuō)明在本次課程設(shè)計(jì)中,為了獲得良好的顯示效果,用到了根本輸入輸出系統(tǒng)〔BIOS〕中的幾個(gè)功能,再次說(shuō)明一下。設(shè)置光標(biāo)位置入口參數(shù):AH=2,BH=頁(yè)號(hào),DH=行號(hào),DL=列號(hào)。出口參數(shù):無(wú)說(shuō)明:對(duì)于頁(yè)號(hào),通常情況下設(shè)置為0。該操作是控制光標(biāo)的重要操作?!?〕讀光標(biāo)位置入口參數(shù):AH=3,BH=頁(yè)號(hào)。。出口參數(shù):DH/DL=該顯示頁(yè)的光標(biāo)所在行/列坐標(biāo),CH/CL=該顯示頁(yè)的光標(biāo)起始線/結(jié)束線。〔3〕屏幕上滾入口參數(shù):AH=6,AL=上滾行數(shù),CX=上滾局部左上角的行、列號(hào),DX=上滾局部右下角的行、列號(hào),BH=顯示屬性。出口參數(shù):無(wú)說(shuō)明:當(dāng)AL=0時(shí),表示整個(gè)屏幕為空白,及清屏幕。當(dāng)AL0,窗口〔即滾動(dòng)局部〕底部為空白輸入行。〔4〕在當(dāng)前光標(biāo)位置寫(xiě)字符及其屬性入口參數(shù):AH=9,BH=頁(yè)號(hào),AL=要寫(xiě)字符的ASCII碼,BL=屬性值,CX=重復(fù)次數(shù)。出口參數(shù):無(wú)說(shuō)明:在當(dāng)前光標(biāo)位置寫(xiě)字符的操作不改變光標(biāo)的位置,所以每次寫(xiě)字符前,都必須使用2號(hào)功能重新設(shè)置光標(biāo)的位置。子程序說(shuō)明〔1〕子程序名;JIAMI1功能:ASCII值加30進(jìn)行加密并輸出。開(kāi)始先把存放器中值入棧,保護(hù)現(xiàn)場(chǎng)。由于在主程序中鍵入的明碼在AL中,此時(shí)把AL中數(shù)據(jù)〔ASCII碼〕送入DL中,讓DL中的值加30即可,然后調(diào)用DOS的2號(hào)功能使密碼輸出并顯示在屏幕上?!?〕子程序名:JIAMI2功能:ASCII上下位互換進(jìn)行加密并輸出。首先保護(hù)現(xiàn)場(chǎng),讓DX,CX中數(shù)據(jù)入棧。由于使用不帶進(jìn)位的循環(huán)右移指令ROR,且循環(huán)次數(shù)不為一,故要先給CL賦值〔此程序中設(shè)為4〕,再把AL〔明碼輸入后放在AL里〕中的數(shù)據(jù)移到DL中,最后調(diào)用DOS的2號(hào)功能輸出密碼顯示在屏幕上?!?〕子程序名;JIAMI3功能:ASCII值減50進(jìn)行加密并輸出。此程序和JIAMI1設(shè)計(jì)方法類似,也要先把DX中的數(shù)據(jù)入棧,再把AL中明碼移到DL中,此時(shí)DL中存放的是明碼的ASCII碼,再用SUB將其減50后,調(diào)用DOS的2號(hào)功能將明碼輸出顯示在屏幕上?!?〕子程序名:JIAMA4功能:ASCII值末位取反加密并輸出。如上面的子程序一樣,先進(jìn)行現(xiàn)場(chǎng)保護(hù),再把AL中的明碼ASCII移到DL中,將DL中數(shù)據(jù)和01H異或即可,最后調(diào)用2號(hào)功能,將密碼輸出顯示在屏幕上。4程序調(diào)試說(shuō)明程序運(yùn)行后顯示如下:圖4-1開(kāi)始執(zhí)行后的輸出其中字符串“pressanykeytostart!〞顯示為綠色,這樣顯示醒目,提醒用戶如何操作,這是因?yàn)樵诔绦虻拈_(kāi)始處有這樣的輸出提示符的程序,并調(diào)用了BIOS的3號(hào)功能〔讀取光標(biāo)位置〕、2號(hào)功能〔顯示光標(biāo)位置〕、9號(hào)功能〔在當(dāng)前光標(biāo)位置寫(xiě)字符及其屬性〕使其顯示為綠色,在以后的循環(huán)執(zhí)行中也會(huì)有這樣的提示。當(dāng)操作者按下任意鍵時(shí)會(huì)有下面的顯示:圖4-2按任意鍵后的顯示圖4-2提示操作者輸入1到4中的任意數(shù)字,進(jìn)行加密方式的選擇。此時(shí)操作者假設(shè)鍵入1到4中的任意數(shù)字,即可顯示圖4-3:輸出經(jīng)過(guò)相應(yīng)加密方式后的結(jié)果〔即輸出密碼〕,并以回車鍵結(jié)束。反之,如果鍵入的值不是1到4中的值,即鍵入的是其他的任意鍵,就會(huì)顯示圖4-4的結(jié)果:你選擇的加密方式不存在,請(qǐng)重新輸入!,提示符以黃色顯示,因?yàn)檫@個(gè)程序段也調(diào)用了BIOS的3號(hào)功能、2號(hào)功能、9號(hào)功能,然后程序會(huì)跳到開(kāi)始處重新執(zhí)行,并在此輸出“pressanykeytostart!的提示符圖4-3正確選擇加密方式圖4-4錯(cuò)誤選擇加密方式如圖4-3所示如果鍵入1,說(shuō)明選擇了第一種加密方式〔ASCII值加30進(jìn)行加密并輸出〕。并看出此時(shí)程序進(jìn)入等待鍵盤(pán)輸入局部,等待操作者鍵入明碼字符。如圖4-5所示鍵入明碼“123qweQWE〞的效果,鍵入一個(gè)字符,但不顯示,只顯示相應(yīng)的密碼,這是因?yàn)槌绦蛑姓{(diào)用了DOS中的8號(hào)功能〔不帶回顯鍵盤(pán)輸入〕。輸入完明碼后,以回車鍵結(jié)束,程序跳到輸出明碼局部,先輸出“明碼是:〞的提示符,由于相應(yīng)的程序段中也調(diào)用了BIOS的3號(hào)功能、2號(hào)功能、9號(hào)功能,所以這個(gè)提示符不是一般的顏色〔被設(shè)計(jì)成了白色〕。接著把輸入的明碼輸出并顯示在屏幕上,之后輸出Press"q"or"Q"toquit,orotherstogoon!的提示符。在圖4-3中,如果鍵入的明碼字符不是數(shù)字或大小寫(xiě)字母,而是其他字符,就回顯示“明碼不是數(shù)字或者字母,所以明碼錯(cuò)誤!〞的提示符,并接著跳到程序開(kāi)始處重新執(zhí)行。圖4-5鍵入數(shù)字或大小寫(xiě)字母圖4-6輸入了非數(shù)字或大小寫(xiě)字母的明碼在圖4-5中如果鍵入q或Q,那么會(huì)退出程序。反之,鍵入任意其他鍵,程序會(huì)跳到開(kāi)始出,就會(huì)出現(xiàn)圖4-7的顯示方式,顯示“按任意鍵開(kāi)始!〞的提示符圖4-7鍵入了其他鍵〔非Q或q〕注意:由于在顯示“Pleasechoos

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論