dosbox+masm5.0編譯匯編文件


在去年寫過如何bc3.1編譯ucos,不過現在很少去用到,但是那是用dosbox也是懵懵懂懂的,參見https://blog.csdn.net/liming0931/article/details/82320088

隨着c語言使用的不斷熟悉,偶爾看到一篇pdf,是姚新顏寫的《c語言的標准和實現》,里面有提到如果要深入學習c語言,要懂點x86的匯編,之前我增加學過51的匯編,多多少少有點理解,就是x86的很多寄存器和51的不一樣,自然界聯想到了王爽的《匯編語言》第三版,那么學習之前要有匯編的編譯環境,網上有虛擬機+dos的方案,但是我用過dosbox,那么不用費盡安裝虛擬機,因為我的老電腦已經帶不動了,但是dosbox肯定沒問題的,所以就使用了這個方案。

網上下載的masm5.0和debug.exe,dosbox下載最新版,和之前不會沖突,這樣我之前的配置文件依然有效,會有兩個conf文件,這樣我0.74.3用學習匯編,0.74.2學習ucos,互不干擾。

在C:\Users\Administrator\AppData\Local\DOSBox下會有dosbox-0.74-3.conf文件。很不錯哦~~

末尾添加如下:

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c d:\masm5.0
set PATH=%PATH;
c:

這樣就把我的編譯器加載進來了。

實例:

參考https://www.cnblogs.com/liuzeyu12a/p/10285384.html

https://www.cnblogs.com/lihaiyan/p/4274475.html

https://blog.csdn.net/zdwzzu2006/article/details/3990152?locationNum=11&fps=1

DATA SEGMENT
    BUF DB 'HELLO WORLD!  THIS IS MY FIRST ASM FILE! $'
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:   MOV AX,DATA
    MOV DS,AX
    LEA DX,BUF
    MOV AH,09
    INT 21H
    MOV AH,4CH
    INT 21H
CODE ENDS
END START

  保存hello.asm

1、開啟dosbox:

 

 2、編譯asm文件

 

這樣會生成hello.obj文件。后面兩個是不會生成的。 

3、link鏈接 obj文件

 

 同樣,后面兩個文件不生成,最后生成了hello.exe。

執行后就打印了字符串的信息。

匯編的語法還需要繼續學習,尤其是指針的操作

 

 

lea是“load effective address”的縮寫,簡單的說,lea指令可以用來將一個內存地址直接賦給目的操作數,例如:
lea eax,[ebx+8]就是將ebx+8這個值直接賦給eax,而不是把ebx+8處的內存地址里的數據賦給eax。

而mov指令則恰恰相反,例如:
mov eax,[ebx+8]則是把內存地址為ebx+8處的數據賦給eax。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM