0

我无法弄清楚如何将一个字符串的内容复制到另一个字符串中。这是我正在使用的内容:给定一个寄存器中的字符串地址rbx,我需要将该字符串地址的内容复制到另一个寄存器中(参数 4)rdx

这是我目前正在做的事情

mov rbx, qword[rsi+16] ; rbx = some string address
; performs checks on string
; etc..
; string passes tests so
mov rbx, qword[rbx]
mov qword[rdx], rbx

问题是qword这只允许我将8个字符存储到 rdx 中,而实际最大值是 80(只是我在程序开始时定义的任意最大值)。我当然可以更改qworddqword,但这并不能解决我的问题,因为它会从 8 个字符变为 16 个字符。如果我将字符串传递给Arguments上面的函数,我将被返回Argument,因为复制分配只处理 8 个字符。

我提前道歉,因为这可能是一个非常简单的解决方案,但我对组装很陌生。如何将一个字符串的内容移动到另一个字符串?

4

1 回答 1

1

为什么不写一个循环来传输 80 个字节?

 mov rcx,10
again:
 mov rax, qword[rbx+rcx*8-8]
 mov qword[rdx+rcx*8-8], rax
 loop again
于 2015-03-22T22:45:03.890 回答