【发布时间】:2015-03-05 14:57:00
【问题描述】:
我在汇编程序中有程序,我想在字符串 strV 的每个字母上添加一些值,这是字节指针的一些值,在这种情况下它将是 +3。我尝试只为第一个字母添加 3,但 proc 返回奇怪的符号或什么也没有,所以我寻求帮助。 (返回的指针将在 C++ 中分配给 char * 字符串)。
start proc strV: PTR BYTE
mov eax, [strV]
ret
start endp
【问题讨论】:
我在汇编程序中有程序,我想在字符串 strV 的每个字母上添加一些值,这是字节指针的一些值,在这种情况下它将是 +3。我尝试只为第一个字母添加 3,但 proc 返回奇怪的符号或什么也没有,所以我寻求帮助。 (返回的指针将在 C++ 中分配给 char * 字符串)。
start proc strV: PTR BYTE
mov eax, [strV]
ret
start endp
【问题讨论】:
你想给字符串的每个字母加 3 吗?
以下代码未测试过,但它应该可以工作。当然,假设您的字符串是一个以 NUL 结尾的字符串。
我只是检查我们是否在字符串的末尾, 如果我们不是,它会增加 3 并继续。
start proc strV: PTR BYTE
mov eax, strV
next:
cmp byte ptr [eax], 0
je done
add byte ptr [eax], 3
inc eax
jmp next
done:
ret
start endp
【讨论】:
ecx 在这里是多余的。您可以使用eax 作为您的指针寄存器。