2013-12-20 68 views
-1

我在Windows上尝试了一些x86程序集,并且遇到了一些麻烦。一个非常简单的程序:中断不显示任何东西

section .text 
global start 
start: 
    MOV DL, 'a' 
    MOV AH, 02H 
    INT 21H 
    MOV AH, 4CH 
    INT 21H 
    end 

不显示任何东西,虽然我叫21h中断来显示一个字符。 这就是我所做的:

nasm -f win32 f.asm 
alink -subsys win -oPE -c -entry start f.obj 
f 

感谢您的阅读。

回答

1

int 21h是DOS中断,不适用于Windows。如果您想使用Windows,则必须使用Windows API,如果您想使用DOS,则必须将其组装并链接为DOS程序。

+0

然后,我必须使用DOS模拟器。 – edmz

+0

在32位窗口中,您仍然可以运行DOS程序。如果您运行的是64位系统,那么您必须在仿真器上运行它,因为DOS不再直接支持。 – Devolus

+0

不,我不能再继续,因为Windows已经转移到NT内核,Windows不支持旧式的16位DOS应用程序。 另外,2^16字节是一个非常小的可寻址内存。 – edmz