在装配中操纵字符串(MASM)

时间:2011-06-29 14:30:51

标签: string assembly masm

.data
    source  BYTE  "Defense mechanism",0
    target  BYTE  SIZEOF source DUP(0)

.code
    main PROC

        mov  esi, OFFSET target
        mov  edi, OFFSET target
        mov  ecx, SIZEOF source
    L1:
        mov  al,[esi]           ; get a character from source
        mov  [edi],al           ; store it in the target
        inc  esi                ; move to next character
        inc  edi
        loop L1

.data部分,我看到source被定义为字符串。 在.code部分中,我看到target的内存位置存储在源索引中。我不应该希望源索引(ESI)指向source而不是target吗?该程序应该将一个字符串复制到已初始化为源字符串大小的目标框中,并使每个字段都用零填充。我没有使用汇编语言的经验。我错了什么? (注意:这就是我的教授列出的程序,但他没有提供任何真实材料,因为这是一个基于网络的“计算机安全”课程。

1 个答案:

答案 0 :(得分:2)

是的,你是对的 - esi应该指向source,而不是target - 看起来你的教授在该代码中至少有一个错误。变化:

          mov  esi, OFFSET target

为:

          mov  esi, OFFSET source