Visual Studio 2019 中抛出的预期/未处理的异常

问题描述 投票:0回答:1

在我的代码的突出显示行中,我收到消息“在 project.exe 中的 0x002C36C9 抛出异常:0xC0000005:访问冲突读取位置 0x0058C00A”

我一直在尽一切努力摆脱它,但它不起作用,我迫切需要帮助。该代码尚未完全完成,但应该可以运行一些。该代码的目的是从从键盘输入接收到的索引开始将元素从 arrayS 复制到 arrayD。有人请帮助我,代码看起来非常好,所以我真的不知道哪里出了问题

See highlighted line

我真的不知道如何解释我尝试过的事情我想做的事情很简单,这就是为什么我不明白为什么我会收到这个错误。

exception assembly x86 visual-studio-2019 masm
1个回答
0
投票
mov al, [esi + startIndex]

这不使用地址startIndex处的字节,而是startIndex本身的地址。
在循环之前,将字节加载到寄存器中:

 movzx ebx, startIndex
copying:
 mov   al, [esi + ebx]
 mov   [edi], al
 inc   esi
 inc   edi                <<<< You forgot this one!
 loop  copying

提示:如果将startIndex定义为

DWORD
,那么可以这样写:

 mov   ebx, startIndex
copying:
 mov   al, [esi + ebx]
 mov   [edi], al
 inc   esi
 inc   edi                <<<< You forgot this one!
 loop  copying

还有:

 mov   edi, OFFSET arrayD
 mov   esi, OFFSET arrayS
 add   esi, startIndex
 mov   ecx, ...
 rep movsb
© www.soinside.com 2019 - 2024. All rights reserved.