在我的代码的突出显示行中,我收到消息“在 project.exe 中的 0x002C36C9 抛出异常:0xC0000005:访问冲突读取位置 0x0058C00A”
我一直在尽一切努力摆脱它,但它不起作用,我迫切需要帮助。该代码尚未完全完成,但应该可以运行一些。该代码的目的是从从键盘输入接收到的索引开始将元素从 arrayS 复制到 arrayD。有人请帮助我,代码看起来非常好,所以我真的不知道哪里出了问题
我真的不知道如何解释我尝试过的事情我想做的事情很简单,这就是为什么我不明白为什么我会收到这个错误。
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