抛出异常:访问冲突读取位置

问题描述

我正在使用一本旧书中的示例代码,但该代码是作为内联汇编编写的! 我创建了一个新的控制台应用程序项目。添加了 MASM 依赖项,文件类型为 Microsoft Macro Assembler。

无论是针对 32 还是 64,我都会收到此错误

=>MOVAPS XMM0,[esi]
Exception thrown at 0x00D4101C in Project3.exe: 0xC0000005: Access violation reading location 0xFFFFFFFF
Exception thrown at 0x00000000004F101C in Project3.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF.

asmcode.asm

.model flat,c
.const
 .data
A     dd 0.1,0.2,0.3,0.4 
B     dd 1,2,3,4


 .code
main PROC
        MOV esi,A
        MOV edi,B
        MOVAPS XMM0,[esi]
        MOVUPS XMM1,[edi]
        ADDPS XMM0,XMM1
        MOVAPS XMM1,XMM0
        MOVAPS[esi],XMM0
        MOVUPS[edi],XMM1
        
main endp
 end 

知道为什么它不起作用吗? 当我尝试获取 A 和 B 的地址而不是寄存器 esi 和 edi 的地址时,它起作用了

所以这有效

MOVAPS XMM0,[A]
MOVUPS XMM1,[B]

仅供参考该代码与内联汇编中的寄存器一起使用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)