假设我必须将字符串存储在 .BSS 部分中创建的变量中。
var1 resw 5 ; this is "abcde" (UNICODE)
var2 resw 5 ; here I will copy the first one
我将如何使用 NASM 执行此操作?我试过这样的事情:
mov ebx, var2 ; Here we will copy the string
mov dx, 5 ; Length of the string
mov esi, dword var1 ; The variable to be copied
.Copy:
lodsw
mov [ebx], word ax ; Copy the character into the address from EBX
inc ebx ; Increment the EBX register for the next character to copy
dec dx ; Decrement DX
cmp dx, 0 ; If DX is 0 we reached the end
jg .Copy ; Otherwise copy the next one
所以,第一个问题是字符串不是复制为 UNICODE 而是复制为 ASCII,我不知道为什么。其次,我知道可能不推荐使用某些寄存器。最后,我想知道是否有更快的方法来做到这一点(也许有专门为这种字符串操作创建的指令)。我说的是8086处理器。