我只是在测试并尝试学习汇编程序如何与 C 一起工作。所以我浏览了一些教程,我发现了这个:
__asm
{
mov ax,0B800h //startaddress for the screen memory (in textmode)
mov es,ax //add the startaddress to es
xor di,di //reset di (start at the beginning of the screen)
mov al, 65 //65 = ascii for the 'A' character to al
mov ah, 16*4+1 //Attribute = blue text on a red background to ah.
mov cx,2000 //25*80 = 2000 characters on the screen
rep stosw //write ax to the screen memory and count di up 2000 times
}
我遇到的问题是我无法运行它,我可以在 Microsoft Visual Studio 2008 的 main 方法中编译它,但是当我运行它时,它会产生这个错误:
Test.exe 中 0x00da3660 处的未处理异常:0xC0000005:访问冲突读取位置 0xffffffff。
在第二行,mov es,ax //lägg startadressen i es
难道程序是16位的,VS 2008编译成32位的程序?如果是这样,您可以强制 VS 2008 以不同方式编译它吗?
有谁知道一个好的内部汇编教程?