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的处理。