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 20Terminate Program,而不是使用int 10clearscreen功能的 BIOS 中断。

编辑:但你为什么不为此使用汇编程序?以 NASM为例。此外,这个程序:Tech,将帮助您找到正确的 DOS 或 BIOS 功能。

于 2010-12-01T16:50:02.080 回答
1

您正在尝试调用硬件中断(int 20)。由于受保护模式,您将无法进入模式 20。换句话说,Windows 将阻止您直接与硬件对话。

于 2010-12-01T16:43:43.800 回答