龐新法PANG Xin-fa
(陜西省委黨??萍冀萄胁?,西安710061)
匯編語言不同于其它高級語言,必須要求編程人員有一定的硬件基礎,如對CPU的結構、CPU與存儲器等部件的數據傳送過程必須要有基本的了解,這樣才能學好這門課程。在教學過程中,教師發現學生對高級語言編程學習積極性高,對匯編語言課程缺乏興趣,但因為課程本身指令復雜,規定繁多,再加上學習匯編指令前對CPU的相關工作過程理解不透,導致學生厭學,又由于本課程面對的低年級學生只有高級語言的基礎,習慣于高級語言的自然表達,初次接觸計算機硬件知識心理上有恐懼感,更難以適應繁雜的低級語言。本文用比較的辦法,通俗易懂的自然比喻對這門課中易混淆的,較難理解的概念予以解釋分析。
表1
例如:ADD AX,10+5 經過匯編變成 ADD AX,15,10+5的運算匯編階段完成,AX和15的加法運算要等到運行階段才能完成,匯編階段能實現的運行階段一定能實現,上述+運算可變為ADD AX,10;ADD AX,5兩句實現。運行階段能實現的,匯編階段不一定能實現,如ADD AX,BX+CX;程序還沒有運行,匯編階段不可能知道BX,CX的值,更談不上計算二者之和。
再如以下用漢語表示的程序,要翻譯成英語,看看偽指令語句如何指導匯編過程:
以下是黑體,2號字,居中 ;指導匯編
通知 ;翻譯
以下是宋體,3號字,首行縮進 ;指導匯編
今天下午開會…… ;翻譯
以下是楷體,4號字,右對齊 ;指導匯編
特此通知 ;翻譯
表2
表3
5 CALL、INT、硬中斷的區別
表4
可以看出,INT既有CALL的特點(可預知),又有硬中斷的特點(中斷類型碼轉換成入口地址),介于二者之間,故稱INT指令為軟中斷指令(由軟件指令INT發出的中斷)。
表5
為了說明段地址、段內地址、物理地址三者之間的關系,下面舉例說明(表7)。
表6
表7
溢出,就是放不下,一旦溢出結果一定是錯的。例如兩個瓶子容量各是5斤,一個裝了3斤水,一個裝了4斤水,理論上講,倒在一個瓶子應該是7斤,但全部倒在一個瓶子后,成了5斤,2斤溢出,不能說3+4=5,所以一旦溢出結果一定是錯的。異號相加,越加越少,原來放得下,加了之后一定放得下,故絕對不溢出。同號相加,越加越多,原來放得下,加了之后不一定放得下,故有可能溢出。若溢出OF=1,正數加正數應該是正數,應該SF=0,但若結果SF=1,正數加正數是負數,SF=1是錯的(假的符號位)。同樣道理,負數加負數應該是負數,應該SF=1,但若結果SF=0,負數加負數是正數,SF=0是錯的(假的符號位)。
表8
總之,匯編語言是計算機程序編寫中最經常用的一種必要程序語言,投入匯編語言領域更多的研究與開發關注也是十分必要和有益的。
[1](美)布魯姆著.編語言程序設計[M].馬朝暉,譯.北京:機械工業出版社,2006.
[2]全選悅,趙煥平.匯編語言的教學改革和思考[J].福建電腦,2008(2).
[3]鄭影,林立東,李大輝,王殿富,艾麗麗,滕艷平.基于匯編語言課程培養高素質應用型人才策略[J].高師理科學刊,2012(03).