汇编:将字符串的内容复制到另一个寄存器

时间:2015-03-22 22:17:58

标签: assembly x86 yasm

我无法弄清楚如何将一个字符串的内容复制到另一个字符串中。以下是我正在使用的内容:给定寄存器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个字符。

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

1 个答案:

答案 0 :(得分:1)

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

 mov rcx,10
again:
 mov rax, qword[rbx+rcx*8-8]
 mov qword[rdx+rcx*8-8], rax
 loop again