我无法弄清楚如何将一个字符串的内容复制到另一个字符串中。以下是我正在使用的内容:给定寄存器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(只是我在程序开头定义的任意最大值) 。我当然可以将qword
更改为dqword
但这不会解决我的问题,因为它会从8个字符变为16个。如果我将字符串Arguments
传递给上面的函数我会返回Argument
,因为复制分配只处理8个字符。
我提前道歉,因为这可能是一个非常简单的解决方案,但我对组装非常新。如何将一个字符串的内容移动到另一个字符串?
答案 0 :(得分:1)
为什么不写一个循环来传输80个字节?
mov rcx,10
again:
mov rax, qword[rbx+rcx*8-8]
mov qword[rdx+rcx*8-8], rax
loop again