【问题标题】:How to increment letters of pointer in assembler?如何在汇编程序中增加指针的字母?
【发布时间】:2015-03-05 14:57:00
【问题描述】:

我在汇编程序中有程序,我想在字符串 strV 的每个字母上添加一些值,这是字节指针的一些值,在这种情况下它将是 +3。我尝试只为第一个字母添加 3,但 proc 返回奇怪的符号或什么也没有,所以我寻求帮助。 (返回的指针将在 C++ 中分配给 char * 字符串)。

start proc strV: PTR BYTE
    mov eax, [strV]
    ret
start endp

【问题讨论】:

    标签: c++ assembly 32-bit masm


    【解决方案1】:

    你想给字符串的每个字母加 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 作为您的指针寄存器。
    • 当然,你说得对,我会编辑答案。我不确定是什么让我这样做。
    • 我正在编写凯撒密码应用程序,在其中比较 C++ 和 asm 的时间。你的帮助给了我我想要的一切:)谢谢你
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2012-01-19
    相关资源
    最近更新 更多