汇编学习(3)

字符串处理指令:
lods: 从[esi]传给累加器,根据df和操作字长调整esi
stos: 从累加器传给[edi],根据df和操作字长调整edi
movs: 直接从[esi]传到[edi],,根据df和操作字长调整esi和edi
scas: 累加器与[edi]相减比较,不影响操作数,影响标志位
cmps: [esi]与[edi]相减比较,不影响操作数,影响标志位

重复前缀:
rep: 若ecx=0,结束重复,否则ecx减1,重复操作
repz/repe: 若ecx=0或zf=0,结束重复,否则ecx减1,重复操作
repnz/repne: 若ecx=0或zf=1,结束重复,否则ecx减1,重复操作

1.字符串拼接

 char s1[81], s2[81], s3[81];
 printf("s1 = ");
 scanf("%s", s1);
 printf("s2 = ");
 scanf("%s", s2);
 _asm{
	  lea  edi, s3
	  lea  esi, s1  //獲取s1存儲地址
	L1:
	  movsb
	  cmp  [esi-1], 0
	  jne  L1
	  dec  edi   //刪除s1的終止符
	  lea  esi, s2  //獲取s2存儲地址
	L2:
	  movsb
	  cmp  [esi-1], 0
	  jne  L2
 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值