汇编程序:字符串加密

来源:互联网 发布:淘宝号忘记了怎么找回 编辑:程序博客网 时间:2024/06/05 23:06

字符串加密

(1)编程为datasg段中字符串中的每个字符加密,加密规则是:每个字符的ASCII值加4。加密好的字符写在待加密字符的后面

assume cs:codesg,ds:datasgdatasg segment      db 'aah, I love you!'      db '................'datasg endscodesg segmentstart: (写程序)       mov ax,4c00h       int 21hcodesg endsend start

[参考解答]

assume cs:codesg,ds:datasgdatasg segment      db 'aah, I love you!'      db '................'datasg endscodesg segmentstart: mov ax, datasg       mov ds, ax       mov cx, 16       mov si, 0       mov di, 16change:mov al, [si]       add al, 4       mov [di], al       inc si       inc di       loop change       mov ax,4c00h       int 21hcodesg endsend start

(2)编程为datasg中的每个字符串加密,加密的规则是,每行第1个字符ASCII码加1,第2个字符ASCII码加2,依类类推。已知每个字符串固定为16个字符,非空格字符不足16的,后都是空格。加密后的符号替代原字任,就写在原处。

datasg segment      db 'He Li Jian      '      db 'Zhai Yi Ming    '      db 'Sun Xue Jiao    '      db 'Ma Wen Ming     'datasg ends

[参考解答](程序变得复杂,要及时写注释了)

assume cs:codesg,ds:datasgdatasg segment      db 'He Li Jian      '      db 'Zhai Yi Ming    '      db 'Sun Xue Jiao    '      db 'Ma Wen Ming     'datasg endsstacksg segment      dw 0,0,0,0,0,0,0,0stacksg endscodesg segmentstart: mov ax, stacksg       mov ss, ax       mov sp, 16       mov ax, datasg       mov ds, ax       mov bx, 0    ;基址       mov cx, 4    ;外层循环次数       mov dl, 1    ;这是第几个字符?   s0: push cx      ;保存外层循环数       mov si, 0    ;[bx+si]将是要处理的字符       mov cx, 16       ;设置内层循环次数    s: mov al, [bx+si]  ;取字符       add al, dl       ;加密       mov [bx+si], al  ;写入加密字符       inc si       inc dl       loop s       add bx, 16   ;准备为下一个字符串加密       mov si, 0       mov dl, 1       pop cx       loop s0       mov ax,4c00h       int 21hcodesg endsend start
0 0