2011-06-29 102 views
0
.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?这个程序应该将一个字符串复制到已经初始化为源字符串大小的目标框中,并让每个字段填充零。我没有使用汇编语言的经验。我错了什么? (注意:这是我的教授将程序列出来的,但他没有提供任何真实资料,因为这是一个基于网络的“计算安全”课程。装配中的操纵字符串(MASM)

+4

是的,你说得对 - ESI应在点源,而不是目标 - 它看起来像你的“教授”h至少是该代码中的一个错误。 –

+1

@Paul R:那应该是一个答案,而不是评论,imo – Necrolis

+0

@Necrolis:你可能是对的 - 它感觉不够实质,不过可能它有资格 - 我会移动它。 –

回答

2

是的,你是对的 - esi应在0​​点,不target - 它看起来像你的教授在该码的至少一个错误更改:

  mov esi, OFFSET target 

到:

  mov esi, OFFSET source