Intel汇编-存储和加载字符串

# An example of using the LODS and STOS instruction (存储和加载字符串)
#
# LODS : 用于把内存中的字符串传送到EAX中。
#     使用ESI作为隐含的源操作数,必须包含要加载的字符串所在的内存地址。递增或递减(DF标志)ESI。
#
# STOS : 把字符串存放到另一个内存位置中。
#     使用EDI作为隐含的目标操作数。
#     STOS真正能够提供的方便是和REP一起使用,多次把一个字符串值复制到大型字符串值中的时候。
#     如把空格字符(ASCII->0x20)复制到256字节的缓冲区区域。
#

    .section .data
space:
    .ascii " "

    .section .bss
.lcomm buffer, 256

    .section .text
    .globl main
main:
    nop
    leal space, %esi
    leal buffer, %edi
    movl $256, %ecx
    cld
    lodsb
    rep stosb

    movl $4, %eax        # 系统调用值  4 --> write
    movl $1, %ebx        # 要写入的文件描述符, 1 --> STDOUT
    movl $buffer, %ecx    # 字符串的开头
    movl $24, %edx        # 字符串的长度    write(STDOUT, buffer, 24)
    int $0x80        # write(STDOUT, buffer, 24)

    movl $1, %eax
    movl $0, %ebx
    int $0x80

# gcc -g -o 08 08-lods-stos.s -m32

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值