第22部分- Linux x86 64位汇编 字符串传送REP

第22部分- Linux x86 64位汇编 字符串传送REP

 

REP指令

REP指令本身不执行什么操作,指令可以按照特定次数重复执行字符串指令,由ECS寄存器中的值进行控制。类似循环,但是不需要额外的loop指令。

Rep指令重复执行紧跟其后的字符串指令,知道ECX寄存器中的值为0.

此外,还有一些REP指令如下:

 

其中REPE和REPZ同义词。

REPNE和REPNZ指令是同义词。

示例

.extern printf ;//调用外部的printf函数
.section .data
value1:
   .ascii "This is a test string.\n"
.section .bss
   .lcomm output, 24
.section .text
.globl _start
_start:
   nop
   leal value1+22, %esi
   leal output+22, %edi
   movl $23, %ecx
   std
   rep movsb

   cld;//这里要清理DF,不然输出函数printf会包core dump
   movq $value1,%rdi
   call printf

   mov $60,%rax
   syscall

as -o reptest.o reptest.s

ld -o reptest reptest.o -lc -I /lib64/ld-linux-x86-64.so.2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值