1

画面をクリアして名前を出力し、次に改行して名前を再度出力するプログラムがあります。しかし、実行しても何も表示されません。プログラムが正常に終了しただけです。デバッグを使用してWindowsコマンドプロンプトでこれを行っています。

    call 010E
    call 0125
    call 012D
    call 0125
    int 20

    push ax     #clearscreen(010E)
    push bx
    push cx
    push dx
    xor al, al
    xor cx, cx
    mov dh, 18
    mov dl, 4f
    mov bh, 07
    mov ah, 06
    int 20
    pop dx
    pop cx
    pop bx
    pop ax
    ret

    mov dx, 0200    #printline(0125)
    mov ah, 09
    int 21
    ret

    push ax         #new line( 012D)
    push dx
    mov ah, 02
    mov dl, 0d
    int 21
    mov dl, 0a
    int 21,
    pop dx
    pop ax
    ret

    DB' Antarr$ #(0200)
4

2 に答える 2

2

最初の最も明白なエラーは、関数int 20でBIOS割り込みを実行する代わりに、プログラムの終了を呼び出すことです。int 10clearscreen

編集:しかし、なぜこれにアセンブラを使用しないのですか?たとえば、NASMを試してください。また、このプログラム:Techは、適切なDOSまたはBIOS機能を見つけるのに役立ちます。

于 2010-12-01T16:50:02.080 に答える
1

ハードウェア割り込み (int 20) を呼び出そうとしています。プロテクト モードのため、モード 20 に入ることができなくなります。つまり、Windows はハードウェアとの直接通信をブロックします。

于 2010-12-01T16:43:43.800 に答える