cout 可能由于内联汇编而无法给出输出

cout fails to give output probably due to inline assembly

我正在使用 Visual Studio 2019 开发者命令提示符。内联汇编代码是简单的除法取余。使用cl /EHsc filename.cpp命令编译没有报错。屏幕上绝对没有显示任何内容。最多需要 4 秒的运行时间。

#include<iostream>
using namespace std;
int main()
{
    int x=10,y=20;
    int z=0,r=0;
    //z=x/y
    //r=x%y
    __asm
    {
        MOV EAX,x
        IDIV y
        MOV z,EAX
        MOV r,EDX
    }
    cout<<"z = "<<z<<"\tr = "<<r<<endl;
    return 0;
}

您在 MOV EAX,xIDIV y 指令之间缺少一个 CDQ。没有它,EDX 寄存器中有一个未知值,可能导致除法溢出。 CDQ 指令将符号扩展 EAXEDX.

MOV EAX,x
CDQ
IDIV y