.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
吗?该程序应该将一个字符串复制到已初始化为源字符串大小的目标框中,并使每个字段都用零填充。我没有使用汇编语言的经验。我错了什么? (注意:这就是我的教授列出的程序,但他没有提供任何真实材料,因为这是一个基于网络的“计算机安全”课程。
答案 0 :(得分:2)
是的,你是对的 - esi
应该指向source
,而不是target
- 看起来你的教授在该代码中至少有一个错误。变化:
mov esi, OFFSET target
为:
mov esi, OFFSET source