*如今王爽老師的《彙編語言》已經看到4.5了,想把接下來看書過程當中遇到的所學所想記下來。eclipse
正在安裝masm,感受這個工具的安裝界面就頗有年代感(忘記截圖了),並且安裝真的很慢。工具
這本書太老了,我翻看了一下是2003年出的,致使書中說的masm 5.0都變成了masm 11……spa
安裝完畢後發現根本找不到一個叫masm.exe的程序,不知道masm32這個文件夾中哪個纔是編譯器…….net
查了不少資料發現一個叫qeditor的程序,應該是這個版本11把編譯器作成了eclipse那種圖形界面。3d
結果在link的時候就出現了問題:code
我懷疑是這樣的:blog
由於個人系統是64位的,按理來講應該在Dosbox中編譯才能成功,但這個圖形界面的編譯器又不能在Dos方式下打開,致使只能在本機64位的環境下編譯,就沒法成功(?)ip
又找資料找啊找,找到了這篇文章:DOSBox0.74以及彙編編譯器的安裝使用(虛擬)64位資源
實際上是使用了文章中給的資源(主要是masm和link),以後在cmd中就能夠實現4.4和4.5中寫道的編譯鏈接了。get
須要注意的是由於咱們用的是8086的彙編語言,編譯造成的exe也是16位的,並不能在64位系統上直接執行:
試了一下在Dos中運行,沒有反應……固然沒有反應,由於asm文件中的內容是這樣的:
1 assume cs:codesg 2 3 codesg segment 4 5 mov ax,123h 6 mov bx,456h 7 add ax,bx 8 add ax,ax 9 10 mov ax,4c00h 11 int 21h 12 13 codesg ends 14 15 end
只是作了一些寄存器的處理,並無什麼要顯示出來的(真可惡我看了4.7才反應過來這一點,以前先入爲主地覺得在Dos中也沒法運行……)
看到說「存有機器碼的目標文件」想起來把obj文件放到010editor看看是什麼狀況:
obj文件內容要比本來的asm文件少,標註出的部分是彙編指令的機器碼。再對比一下exe:
中間全是零,代碼段在最後。