Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编程序帮助_Assembly_Windows Xp_Masm32 - Fatal编程技术网

Assembly 汇编程序帮助

Assembly 汇编程序帮助,assembly,windows-xp,masm32,Assembly,Windows Xp,Masm32,我有一个程序,应该清除屏幕并打印我的名字,然后换行并再次打印我的名字。但当我运行它时,什么都没有显示。只是程序正常终止。我在windows命令提示符下使用debug执行此操作 call 010E call 0125 call 012D call 0125 int 20 push ax #clearscreen(010E) push bx push cx push dx xor al, al xor

我有一个程序,应该清除屏幕并打印我的名字,然后换行并再次打印我的名字。但当我运行它时,什么都没有显示。只是程序正常终止。我在windows命令提示符下使用debug执行此操作

    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)

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

您的第一个也是最明显的错误是调用
int 20
,终止程序,而不是使用
clearscreen
功能中断BIOS
int 10


编辑:但是为什么不使用汇编程序呢?举个例子。此外,此程序:,将帮助您找到正确的DOS或BIOS功能。

1)为什么要调试?2) 为什么你确定程序的确切长度?3) 是什么让你认为你的名字会在偏移量0x200处?4) 在清除屏幕中,是int 20还是int 21?5) 你确定CS和DS是相等的吗?我的长度是精确的,因为我用手键入了它,然后返回并修改了调用。我在透明屏幕中将int值从20改为21。这有助于用换行符打印我的名字,但没有清晰的屏幕检查我的更新答案。它将在控制台中运行,您可以在控制台中运行旧的16 DOS代码。大多数中断调用都是由Windows模拟的
int20
表示退出程序,
int21
是呼叫DOS。我不明白。我没有问题时,运行像mov dx,0200短程序;莫夫·阿赫,09岁;int 21;int 20我在这台机器上没有安装软件的权限。我没读过,我想中断10起作用了。清除了屏幕的顶部