A. 用微機原理編密碼
運行結果如圖,8086匯編程序如下:
DATASEGMENT
BUF1DB'Pleaseinputrandomstring,endwithEnterkey:$';提示輸入
BUF2DB0,0,0,0,0,0,0,0,0,0,0DH;存放輸入的字元,假設最多10個字元
NUM1DW0;實際輸入數據的個數
BUF3DB0DH,0AH;回車換行
BUF4DB0,0,0,0,0,0,0,0,0,0,0DH;存放轉換過的字元
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:CODE,DS:DATA
START:PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
CALLPROC1
CALLPROC2
CALLPROC3
CALLPROC4
CALLPROC5
CALLPROC6
RET
MAINENDP
PROC1PROCNEAR;提示輸入
MOVDX,OFFSETBUF1
MOVAH,09H
INT21H;顯示提示輸入語句
RET
PROC1ENDP
;輸入並存儲
PROC2PROCNEAR
MOVSI,OFFSETBUF2
MOVCX,20
SHURU:MOVAH,01H;鍵盤輸入並回顯,AL=輸入字元
INT21H
CMPAL,0DH;判斷是否回車符
JZNEXT
MOV[SI],AL
INCSI
INCNUM1
LOOPSHURU
NEXT:MOV[SI],0DH
RET
PROC2ENDP
PROC3PROCNEAR;字母變,非字母不變,存放於BUF4
MOVCX,NUM1
MOVDI,OFFSETBUF4
MOVSI,OFFSETBUF2
BIANHUAN:MOVAL,[SI]
CMPAL,3AH;判斷是否字母
JCNEXT1;數字
ADDAL,04H
NEXT1:MOV[DI],AL;非字母不變,存入BUF4,若是字母,則變換後再存
;入BUF4對應單元
INCDI
INCSI
LOOPBIANHUAN
RET
PROC3ENDP
PROC4PROCNEAR;輸出一個回車換行
MOVCX,2
MOVDI,OFFSETBUF3
SHUCHU:MOVDL,[DI]
MOVAH,02H
INT21H
INCDI
LOOPSHUCHU
RET
PROC4ENDP
PROC5PROCNEAR;顯示加密後的字元串
MOVCX,NUM1
MOVDI,OFFSETBUF4
SHUCHU1:MOVDL,[DI]
MOVAH,02H
INT21H
INCDI
LOOPSHUCHU1
RET
PROC5ENDP
PROC6PROCNEAR
MOVAH,07H
CMPAL,0DH
JZEXIT1
EXIT1:MOVAH,4CH;按回車鍵,結束程序
INT21H
RET
PROC6ENDP
CODEENDS
ENDSTART
B. 經典的凱撒方法怎麼用8051匯編語言編寫
著名的凱撒加密演算法就是一種簡單的替代加密法,它是將明文中每一個字元用右移3位並以26個字元為模的替代(A由D替代,B由E替代,··…—,W由Z替代,X由A替代,Y由B替代,Z由C替代)。
所以你的匯編很簡單呀,按1的時候,你用一個寄存器指向明文,然後對寄存器指向的數據做加3,然後mod26的處理,解密是按2的時候,你用一個寄存器指向密文,然後然後對寄存器指向的數據做減3,然後mod26的處理。