【发布时间】:2015-03-22 22:17:58
【问题描述】:
我无法弄清楚如何将一个字符串的内容复制到另一个字符串中。这是我正在使用的内容:给定寄存器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 个字符。
我提前道歉,因为这可能是一个非常简单的解决方案,但我对组装很陌生。如何将一个字符串的内容移动到另一个字符串?
【问题讨论】:
-
寄存器中只有字符串的地址。如果你想复制一个字符串,你需要以某种方式分配空间(取决于你的环境)并在那里复制字符,然后将该地址加载到寄存器中。