String 在程序集中操作字符串(MASM)
在String 在程序集中操作字符串(MASM),string,assembly,masm,String,Assembly,Masm,在.data部分中,我看到source被定义为字符串。 在.code部分中,我看到目标的内存位置存储在源索引中。我是否应该让源索引(ESI)指向源,而不是目标?该程序应该将一个字符串复制到已初始化为源字符串大小的目标框中,并用零填充每个字段。我没有汇编语言的经验。我做错了什么?(注意:这是我的教授列出的程序,但他没有提供任何关于这方面的真实材料,因为这是一门基于网络的“计算安全”课程。是的,你说得对-esi应该指向源代码,而不是目标代码-看起来你的教授在代码中至少有一个bug。更改: .data
.data
部分中,我看到source
被定义为字符串。
在
.code
部分中,我看到目标
的内存位置存储在源索引中。我是否应该让源索引(ESI
)指向源
,而不是目标
?该程序应该将一个字符串复制到已初始化为源字符串大小的目标框中,并用零填充每个字段。我没有汇编语言的经验。我做错了什么?(注意:这是我的教授列出的程序,但他没有提供任何关于这方面的真实材料,因为这是一门基于网络的“计算安全”课程。是的,你说得对-esi
应该指向源代码,而不是目标代码-看起来你的教授在代码中至少有一个bug。更改:
.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
致:
是的,你是对的-esi应该指向源代码,而不是目标代码-看起来你的“教授”在代码中至少有一个bug。@Paul R:这应该是答案,而不是注释,imo@Necrolis当前位置您可能是对的-它不足以成为一个实质性的答案,但可能它确实符合条件-我将移动它。
mov esi, OFFSET target
mov esi, OFFSET source