NASM:通过寄存器在存储器之间移动

问题描述 投票:2回答:1

我很难将数据从内存移动到bss中的另一个内存。我的实现有些起作用,但是当移动一些奇怪的字符出现在前几个字节中时,我的字符串的一半也丢失了,而另一半还不错。

这是我打印出message == �F@elcome to the new life时得到的值>

我需要所有帮助,我想念什么?我检查了一百遍代码。

    section .data
hello:       db  "Hello, Welcome to the new life! Lets begin the journey.",10
hello_len:   equ  $ - hello

    section .bss
message: resb 255

    section .text

mov rdi, hello
mov rsi, message

msg_into_message:
    cmp byte [rdi], 10          ; hello ends with a new line char
    je end_count
    mov al, byte [rdi]
    mov byte [rsi], al
    inc rsi
    inc rdi
    jmp msg_into_message

end_count:
    mov [message], rsi
    ret

    ; Prints message
    mov rsi, message
    mov rdx, hello_len
    call pre_print
    syscall

我很难将数据从内存移至bss中的另一个内存。但是,当移动一些奇怪的字符出现在前几个字节中并且我的字符串的一半是...

assembly x86-64 nasm
1个回答
5
投票

首先,首先,sd中的rsirdi代表

© www.soinside.com 2019 - 2024. All rights reserved.