2009-11-29 150 views
1

我需要建立從下一個彙編代碼的可執行文件:創建可執行的彙編代碼

.MODEL SMALL 
.DATA 
TEXT DB 'Hello world!$' 

.CODE 
.STACK 20 
.STARTUP 
MOV AX, @DATA 
MOV DS, AX 
MOV AH, 9 
MOV BL, 02H 
INT 10H 
MOV Dx, OFFSET TEXT 
INT 21H 
MOV AH, 4CH 
INT 21H 
END 

它與渦輪彙編(tasm.exe),但我不希望繼續使用它,因爲它不能在Windows 7上運行。

謝謝。

+0

這是一個很好的問題,但我會把它寫成:「我現在只是寫了免費的VS Express,到底如何讓它構建並運行我的彙編代碼?」。 – DigitalRoss

+0

是的,這正是我要找的。你有解決方案嗎?謝謝。 – kiewic

回答

5

如果持續需要開發MSDOS程序,請運行像DOSBOX這樣的16位環境。這樣tasm.exe其最優秀的裝配的酮一天,也可以運行,與程序一起,然後在工具與TASM渦輪增壓調試器,鏈接器的Turbo和Turbo C.

您還可以安裝Windows XP走或Windows 98在Windows 7上,作爲多重引導,或在virtual machine hosted by Windows 7。無論哪種方式,您都可以毫無麻煩地運行MSDOS程序。

正如Greg Hewgill所提到的那樣,該程序的主要重構功能需要它在32位(或更高)環境中運行。

+1

嘿,DOSBOX似乎工作。 – kiewic

+0

而且你的程序也可以運行。 –

+0

我對彙編語言很蠢,這讓我擺脫了麻煩,謝謝。 – kiewic

2

使用微軟macro assembler(MASM)

+0

嘿,我試過了,但我不明白它是如何與16位代碼一起工作的。 – kiewic

0
+0

有人有一個聰明的主意,把它命名爲Gas,而不是正常的縮寫詞......我不寒而慄地思考一些可能導致的對話。 –

+0

不給-1,但是推薦給想要真正寫一些彙編程序的人(特別是在DOS或Windows上)的Gas可能被認爲是邪惡的。 – hirschhornsalz

+0

@Matthew Scharley:我以爲它被稱爲GASM – mwcz

1

你可以嘗試NASMMASM,但你的來源很可能需要細微的變化與合作。

+0

無論如何它需要改變,程序就像編譯但不起作用。 (第一次調用,Int 10h函數9要求CX是以BL顏色打印AL中字符的次數,三個寄存器都不需要初始化,所以結果是不確定的) –

1

您提供的代碼適用於16位DOS系統。要使用現代彙編器,您必須修改代碼以在32位環境中工作,這可能是一個不平凡的過程。到目前爲止,您提供的所有代碼都需要重寫。

我建議NASM,因爲它是一個積極的,受到良好支持的項目。

+0

嗨,感謝您的幫助,我使用Windows XP和Windows 7,我應該安裝哪一個NASM win32版本或NASM dos版本?我的代碼是否需要修改? – kiewic

+0

如果TASM在Windows 7中不起作用(可能是因爲它是一個16位程序),那麼NASM DOS版本可能也不起作用。但它可能,並且在這種情況下,您可以繼續使用所發佈的源代碼編譯爲「.COM」文件的16位DOS代碼。但是,如果您使用Win32 NASM版本,那麼您的代碼將需要完全不同,因爲32位的土地有不同的規則。 –