2013-12-20 106 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