摘要 簡單介紹Emu8086功能,通過匯編程序實例調試,對比Emu8086和Debug在匯編語言程序設計中的應用。可以看出,Emu8086的使用使得匯編語言程序的編譯、執行變得更加直觀和清晰,有助于提高初學者的學習興趣。
關鍵詞 Emu8086;匯編語言;Debug
中圖分類號:TP368.1 文獻標識碼:B 文章編號:1671-489X(2010)03-0064-02
Exploration of Assemble Language Program Design based on Emu8086//Xing Jiang
Abstract Firstly functions of Emu8086 are introduced. A program of assemble language is debugged. Emu8086 and debug are contrasted in it. The beginner can make use of Emu8086.Because compiling and running of assemble language program became clearly and easily by Emu8086.
Key words Emu8086; assemble language; Debug
Author’s address College of Computer Science Technology, Hubei Normal University, Huangshi, Hubei, China 435002
1 前言
有很多人認為匯編語言的應用范圍很小,由此忽視它的重要性。其實匯編語言對每一個希望學習計算機科學與技術的人來說都是非常重要的,是不能不學習的語言。匯編語言是計算機能夠提供給用戶使用的最快而又最有效的語言,也是能夠利用計算機所有硬件特性并能夠直接控制硬件的唯一語言[1]。
Emu8086是8086微處理器的仿真軟件,完全兼容Intel和Amd系列,內部集成了匯編程序編譯器、連接器和豐富的參考資料、例程、學習指南等。該款軟件可模擬真實微處理器運行程序的詳細步驟,不僅能夠顯示寄存器、存儲器、堆棧、標志寄存器以及變量的值,而且還可通過雙擊鼠標來改變存儲器的值。除此之外,通過Emu8086可模擬顯示器、直流步進電機、交通紅綠燈和LED等外設[2]。
2 Emu8086和Debug的應用對比
對于Emu8086,可在工作區輸入并編輯源程序。單擊工具欄上的“emulate”按鈕,Emu8086便會自動完成對源程序的編譯和連接;如無錯誤,將會進入指令調試界面。通過該軟件提供的單步調試方式,可以方便觀察當時寄存器值和狀態。不僅如此,系統還可提供機器碼、反匯編指令和指令地址,非常直觀、便捷。
動態調試程序Debug,實際上是DOS中的一個外部命令,功能強大。通過Debug提供的命令,可以監視和控制被調試程序的運行過程;可以裝入、顯示和修改文件;可對磁盤直接進行物理讀寫或邏輯讀寫。但是對于初學者來說,Debug難以掌握和理解,缺乏友好的互動界面。
下面通過實例來說明Emu8086在匯編語言程序設計中的運用,同時對比Debug的使用。
該程序可將BX寄存器內的二進制數用十六進制數的形式在屏幕上顯示出來。

題意分析:可通過循環結構,將BX的內容從左到右,每4位為一組在屏幕上顯示出來;至于字符的顯示,可以通過DOS功能調用來實現。
1)Emu8086實現過程。
①編輯源代碼。在Emu8086工作區中輸入下列源代碼,并保存,如圖1所示。
… …
start: push ds
subax, ax
push ax
movbx,1010B
movch, 4
rotate:movcl, 4
rolbx, cl
moval, bl
andal, 0fh
addal, 30h ; ’0’~’9’ ASCII 30H~39H
cmpal, 3ah
jl printit
addal, 7h; ’A’~’F’ ASCII 41H~46H
printit:movdl, al
movah, 2
int21h
decch
jnzrotate
ret
… …
②編譯源程序。單擊Emu8086工具欄上的“compile”按鈕,系統會提示編譯好的文件存放位置和文件名稱。編譯成功后,在彈出的窗口上單擊“run”,即可得到結果,如圖2所示。

③模擬仿真。編譯成功后,單擊Emu8086工具欄上的“emulate”按鈕,便可將已編譯好的文件導入仿真器執行,如圖3所示。在該窗口中,可以看到當前正在執行的機器指令,以及編譯后的匯編語言指令的執行情況,也可看到相關寄存器等的數據變化情況。另外,單擊該窗口工具欄上的“single step”按鈕,可控制程序的單步執行。通過這種方式,可以很方便地觀察指令執行情況以及寄存器的變化。當然也可單擊“run”按鈕,直接執行程序。

2)Masm+Debug實現過程。
①編輯源代碼。在文本編輯器中編寫源代碼,保存。
②編譯源程序。在Windows XP的命令行方式下,調用Masm程序,對源程序進行編譯、鏈接,生成可執行文件,如圖4所示。運行生成的可執行文件,即可得到結果。如要詳細獲知指令執行情況或寄存器狀態,則需借助Debug的幫助。

③Debug調試。通過Debug命令來實現對程序動態跟蹤,則較為麻煩和困難。比如Debug:R命令可查看或修改寄存器的內容;Debug:T可實現單步跟蹤的目的,如圖5所示。

3 結語
本文通過一個匯編程序的調試,比較Emu8086與Debug的使用。可以看出,初學者通過Emu8086可以方便觀察數據的變化和程序的執行,加深對匯編語言的認識,提高學習興趣;而Debug則稍顯麻煩,增加學習的難度。
參考文獻
[1]沈美明,溫冬蟬.IBM-PC匯編語言程序設計[M].第2版.北京:清華大學出版社,2001
[2]8086 Micro processor Emulator[EB/OL].http:∥www.emu8086.com/dr/emu8086_assembler_solutions_faq.html