3

アセンブラでプログラムを書いてコンパイルしました。これは、青いスマイリーフェイスを印刷し、ユーザーがキーを押すのを待ってから終了することを目的としています。それは最後のビットを行いますが、スマイリーフェイスを印刷しません。誰かが私が間違ったことを説明できますか?

CSEG segment
org 100h
Begin:

mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end Begin

16ビットリンカーを使用してMASMでコンパイルしました

4

3 に答える 3

1

テキストのみのビデオ モードの場合は、ビデオ バッファを直接 poke することしかできません。あなたはある種の Windows を使用していて、実際には DOS を起動していないので、おそらくグラフィック モードになっていると思います。

できることは、コンソール ウィンドウを開いてAltEnterから全画面テキスト モードに移行することです。そこでプログラムを実行してみてください。

于 2009-12-20T23:43:55.337 に答える
0

MASM を使用してから約 1 年ほど経ちますが、家にある唯一の参考書は MIPS です。そのため、確かに少し錆びていますが、画面への印刷にはシステム割り込み (int 21h) が必要ですが、唯一のシステムは私が見ている割り込みは、キーボード割り込み後のプログラム終了呼び出しです。

于 2009-12-20T23:34:25.993 に答える
0

コードは問題ありません。Greg Hewgill が提案したようにフルスクリーンで実行するか、古いラスター フォント (SYSTEM など) を使用するようにコマンド ウィンドウを設定する必要があります。ウィンドウのタイトル バーを右クリックし、[フォント] タブを確認します。

于 2011-01-29T01:41:14.567 に答える