汇编程序:字符串加密

字符串加密

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

assume cs:codesg,ds:datasg
datasg segment
      db 'aah, I love you!'
      db '................'
datasg ends
codesg segment
start: (写程序)
       mov ax,4c00h
       int 21h
codesg ends
end start

[参考解答]

assume cs:codesg,ds:datasg
datasg segment
      db 'aah, I love you!'
      db '................'
datasg ends
codesg segment
start: mov ax, datasg
       mov ds, ax
       mov cx, 16
       mov si, 0
       mov di, 16
change:mov al, [si]
       add al, 4
       mov [di], al
       inc si
       inc di
       loop change

       mov ax,4c00h
       int 21h
codesg ends
end 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:datasg
datasg segment
      db 'He Li Jian      '
      db 'Zhai Yi Ming    '
      db 'Sun Xue Jiao    '
      db 'Ma Wen Ming     '
datasg ends
stacksg segment
      dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start: 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 21h
codesg ends
end start


  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值