2011-06-29 74 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