Я просто тестирую и пытаюсь узнать, как ассемблер работает с 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, но когда я его запускаю, выдается эта ошибка:
Необработанное исключение в 0x00da3660 в Test.exe: 0xC0000005: Место чтения нарушения доступа 0xffffffff.
во второй строке: mov es, axe // lägg startadressen i es
Может быть, программа 16-разрядная и VS 2008 компилирует ее в 32-разрядную программу? Если да, можете ли вы заставить VS 2008 компилировать его по-другому?
Кто-нибудь знает хороший учебник по внутреннему ассемблеру?