龐新法 PANG Xin-fa
(陜西省委黨??萍冀萄胁?,西安 710061)
(Science and Technology Department,Shaanxi Province Party School of the CPC,Xi'an 710061,China)
匯編語言是計算機提供給用戶的最快而又最有效的語言,時空效率最高,同時能夠利用計算機所有硬件特性并能直接控制硬件。匯編語言編程特點是:①時空效率高。②用匯編語言能設計出高級語言無法實現(xiàn)的程序。③匯編語言難學、難理解、難調試難維護等。④可移植性差。
電子數(shù)字計算機通過電路實現(xiàn)數(shù)學運算。打開機箱,主板上密密麻麻全是線,加電后,該線上要么有電(+5V稱為1),要么沒電(0V稱為0),因此計算機只認識0、1兩個字,計算機唯一特點就是速度快、記憶力強。計算機所能認識的數(shù)據(jù)是0、1組合構成的數(shù)據(jù),稱為二進制數(shù)據(jù),計算機所能認識的語音是0、1組合構成的語音,稱為機器語言。數(shù)值、文字、聲音、圖像、圖形、視頻、動畫等在計算機中全用0、1代碼表示。
自然的人喜歡用十進制,機器只認識二進制。必須10譯2,2譯10。這樣人機才可相互交流。①權值:如期末總評成績,考試與平時權值為7:3,二者重要性不同,考試90分,加權后為63,平時80分,加權后為24,總評成績87。②以算盤為例,如表1所示。雖然都是5,處的位置不同,權值不同,一個代表5000,一個代表50,合計是5050。③以二進制為例,如表2所示。所以(11010)2=16+8+2=(26)10。④用上述方法,還得有表頭。10進制末尾添0乘10、2進制末尾添0乘2、16進制末尾添0乘16等等。325翻譯成二進制,如下所示:
(325)10→1=1→10=2→100=4→1000=8… →100000000=256,325-256=69,還差 69,100000000 的第 6位添 1 為 64=26→101000000,69-64=5,還差 5,101000000的第 2位添 1為 4=22→101000100,5-4=1,還差1,101000100的第 0位添 1 為 1=20→(101 000101)2。
表1
表2
16進制,0~9,A~F,16個狀態(tài),逢16進一,24=16個組合。用4位的二進制表示1位的16進制。0~9用0000~1001表示,A~F用 1010~1111表示,16譯 2,1位變 4位,2譯16,4位變1位,16進制是2進制的縮寫,自然的人喜歡10進制,機器只認2進制,軟件開發(fā)人員,喜歡16進制,看見了16進制等于看見了2進制。如(86)16=(1000 0110)2。
鍵盤上大約有116個鍵,為了區(qū)分每一個鍵,必須起名,按鍵上標有“A”,說明該鍵的外部名字是A,A是一個圖形符號,計算機不認識,在機內必須為該鍵用2進制起名(內部編碼),你的名字是“張偉”,戶籍部門內部名字用身份證號。116鍵,116個名字,27=128,所以一個按鍵的內部名字用7位2進制代碼表示,美國電子學會為A起名(100 0001)2=(41)16=(65)10,該編碼稱為 ASCII碼。只需記住 A=65,a=97,0=48 即可。
表示就是存貯。數(shù)學上的數(shù)據(jù)如+125,-120,由兩部分構成,符號位(2 個狀態(tài)“+”,“-”,21=2,只需 1 個 2 進制位,“+”用 0,“-”用 1),數(shù)值位。
數(shù)值位,正數(shù)值與表示一致,負數(shù)值與表示是二個概念,用補碼表示。如瓶子容量是10斤,里面裝了3斤水,就說差7斤,值是3,表示是“差7”,在補7斤就10斤?,F(xiàn)在是 3:50分,就說“差 10分 4點”,值是 3:50分,表示是“差10分4點”。引入補碼的目的是為了減法變加法,這樣,加、減、乘、除統(tǒng)一是加法。舉例如下:
由此可看出-3用101-3=7表示,-24用102-24=76表示。若為 n 位[x]補碼=10n-[x]真值=2n-[x]真值=2n-1-[x]真值+1=全1-[x]真值+1=[x]反+1,負數(shù)真值變反+1 是表示。由上述公式可推出[x]真值=2n-[x]補碼,表示變反+1 是真值。
計算機內部共有三類單元(房子),一類是CPU芯片中有14個單元(寄存器),較少,為區(qū)分每個單元,給單元起名。內存條中有眾多單元,只能編號(單元號),外設接口板中有較多單元,為其編號(外設單元號、外設地址、I/O地址、I/O端口)。寄存器,暫存數(shù)據(jù),相當于火車站行李寄存處,房間小,離站近,上下火車方便。寄存器少,但在CPU中,存取方便。內存條中單元很多,CPU存取時必須經(jīng)過數(shù)據(jù)總線(高速公路),訪問遙遠的內存,很不方便,編程時要盡量使用寄存器,以提高程序速度。剛開始,只要記住寄存器名字即可,帶X的寄存器可拆分成高低兩個8位,其余均為16位,不可拆分。DS、ES、SS、CS稱為段地址寄存器,專門用于存放段地址。就像有些瓶子專用于裝酒,有些瓶子專用于裝醋,不可亂用。只有 BX、BP、SI、DI、SP 可以放地址。標志寄存器FLAG:指令ADD AX,BX加的結果記錄在AX中,但計算過程沒有記錄在案,導致程序上下文無關。相當于看病時,有個病厲,記錄看病過程,每次找不同的醫(yī)生,均對病情清楚。
內存分段,如100H:200H表示第100段的第200個單元。訪問內存的物理地址=100H*24 (16,10H)+200H=1200H。
①100:數(shù)據(jù)100。除此以外,指令中給出的全是地址,知道了地址,就等于知道了數(shù)據(jù)。②[100]:100號單元,100不是數(shù)據(jù),是地址,100號單元的內容是數(shù)據(jù)。③BX:BX單元。④[BX]:BX所指向的單元,并非BX單元。⑤10[BX]或書寫成 [10+BX]:BX所指向的單元,下10個單元。⑥[SI][BX]或書寫成[SI+BX]:BX所指向的單元,下SI個單元。⑦10[SI][BX]或書寫成10[SI+BX]或書寫成[10+SI+BX]:BX所指向的單元,下SI個單元,再下10個單元。
指令格式:[名字][:]操作碼目的操作數(shù),源操作數(shù);注解。表示做何種操作的代碼稱為操作碼,參加操作的數(shù)稱為操作數(shù),操作數(shù)無非是常量,名字,表達式。存放結果的稱為目的操作數(shù),僅參加運算的數(shù)稱為源操作數(shù)。運算后,目變源不變。數(shù)學上,2+3,做何操作,+操作,對誰做,2和3。常用操作碼功能必須記。
字符的組合是單詞,共3類單詞,常量、名字、運算符。講清詞法規(guī)則。有些名字系統(tǒng)已用(稱為關鍵字),用戶不能再用,天下名字多的是。單詞的組合是表達式(語法成分),表達式的組合是語句。講清語法規(guī)則、語義規(guī)則。
課程特點在很大程度上影響學生的學習興趣與學習效果,如何把匯編語言的基礎知識以直觀形象、寓教于樂、靈活多樣的形式展示給學生,促使學生短時間內準確理解。本文就授課方法予以淺析。
[1]譚浩強.C語言程序設計[M].清華大學出版社,2004.
[2]丁愛萍.C語言程序設計實例教程[M].西安電子科技大學出版社,2006.
[3]林小茶.C語言程序設計[M].中國鐵道出版社,2005.