とCを使用して、私はちょうどので、私はいくつかのチュートリアルを中心に閲覧したと私は、この発見テストとアセンブラは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の私のメインメソッド内でコンパイルすることができますが、私はそれを実行すると、このエラーが生成されます:
Test.exeで0x00da3660で未処理の例外:0xC0000005:場所0xffffffffを読み取るアクセス違反。 2行目
、MOV ES、斧//läggstartadressen I ESそれはプログラムが16ビットであることと、VS 2008は、32ビットのプログラムにコンパイルしていることだろうか?もしそうなら、あなたはそれを別にコンパイルするようにVS 2008を強制することができますか?
誰も良い内部アセンブラチュートリアルを知っていますか?
誰もが彼らに –