国产一区二区三精品久久久无广告,中文无码伦av中文字幕,久久99久久99精品免视看看,亚洲a∨无码精品色午夜

匯編語言范例6篇

前言:中文期刊網精心挑選了匯編語言范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。

匯編語言范文1

一、變量與函數的相互調用

c語言可以調用匯編子程序和匯編語言中定義的變量。但要注意由于。編譯后的目標文件自動地在函數名和變量名前加一個下劃線,所以在匯編語言中調用C語言的函數和變量時,應在函數名和變量名前加一下劃線。在匯編語言程序開始部分,應對調用的函數和變量用EXTERN加以說明。

二、調用者與被調用者的參數傳遞

這種數據傳遞通過堆棧完成,在執行調用時從調用程序參數表中的最后一個參數開始,即從右到左自動依次壓人堆棧;將所有參數壓人堆棧后,再自動將被調用程序執行結束后的返回地址(斷點)壓人堆棧,以使被調程序結束后能返回主調程序的正確位置而繼續執行。進人匯編子程序后,為了能正確獲取主調程序并存人堆棧中的數據,被調的匯編子程序先后要做如下一些工作:

l、保存sp的副本進人匯編子程序后,子程序中免不了要有壓棧和出棧的操作,故sP時刻在變化。為了能用SP訪問堆棧中的參數,安全辦法是一進人子程序后,先為SP制副本,以后對傳遞參數的訪問都用副本進行。一般可用BP保存SP,如:pushbPmovbP,sp

2、保留數據空間如果匯編子程序中需要一些局部數據,可以簡單地減小SP的值,以便在??臻g中保留出一段存貯區,用于存放局部數據,該區域須在子程序結束后恢復。如下語句可以保留一個局部數據區:pushbPmovbP,spsubsp,spaee;設spaee=4如上語句段中,SPACE是局部數據的總字節數。在以后的應用中,由于SP是變化的,而BP是固定的,用負偏移量可以存取局部變量。上例利用BP及偏移量,將兩個字的局部數據初始化為0。

3、保留寄存器值如果在被調子程序中用到sI、DI等其它寄存器,則應先把它們壓人堆棧,以保留寄存器原值。例如,下例就是將SI和DI寄存器的值壓棧:pushbpmoybp,SpsubSp,sPaeePush51Pushdi

4、獲取傳遞參數BP保留了SP在參數傳遞完并將BP壓棧后的一個副本,利用BP可以很方便地訪問各參數。現假設調用了名為funcl匯編程序模塊的主函數:maln(){……fund(pl,pZ,p3);……}。各參數都是2字節的整數值,返回地址retumaddress,在小模式編譯方式共占用2個字節。如果要將傳遞的參數p卜pZ、p3取出,并分別賦給bx、Cx、dx寄存器,可由下列語句完成這一功能:movbx,[bp+4jmovcx,[bp+6]movdx,[bp+8〕

匯編語言范文2

Abstract: Assembly language has complex instructions and many provisions which lead to the weariness of students. In order to improve the teaching effect of assembly language programming, this article explains how to easily learn assembly language from the comparative perspective of English and C language grammar in order to improve the interest of learning.

關鍵詞: 單詞;詞法規則;語法規則;語法成分;語句

Key words: word;lexical rule;grammar rule;grammatical component;statement

中圖分類號:TP313 文獻標識碼:A 文章編號:1006-4311(2014)19-0193-02

1 緒論

作為最接近機器語言的編程語言,匯編語言可以稱得上是最接近于計算機操作本質的語言。其直接面向硬件的特性,使得在使用匯編語言編程時,能夠清楚感知計算機的運行過程和原理,充分認識應用程序和計算機硬件之間的聯系與交互。相對于高級語言來說,匯編語言對編程者思維邏輯的鍛煉表現尤為突出,對于形成軟、硬兼備的編程知識體系具有舉足輕重的作用,而且指令集合簡約,指令操作直接。很多硬件設施的嵌入式編程使用的都是匯編語言,因為匯編語言更直接,更有效率。例如現在很多數碼產品賴以生存的芯片、主板等,都包含了嵌入式程序,而這些程序中,匯編語言的使用是非常普遍和相當重要的。對于計算機專業語言類課程的學習來說,從匯編語言開始學習更符合循序漸進的學習原理。特別是在計算機技術專業的學習中,匯編語言具有十分重要甚至說不可代替的作用。因學生有英語、C語言學習的基礎和習慣,故本文從英語、C語言語法對比的角度,說明如何輕松學好匯編語言,以便更好地由英語學習、C語言學習自然過渡到匯編語言學習。

2 匯編語言課程的特點

匯編語言是計算機能提供給用戶的最快而又最有效的語言,同時能夠利用計算機所有硬件特性并能直接控制硬件。所以高級語言簡單、易學且開發效率高,而匯編語言復雜、難懂、開發效率低。優點:①用匯編語言所編程序時空效率高。由于匯編語言本質上就是機器語言,可直接、有效地控制計算機硬件,因而與高級語言相比,容易得到運行速度快、執行代碼短、占用內存空間少的高時空效的目標程序。②用匯編語言能設計出高級語言無法實現的程序。正是由于與機器的密切相關性,使得匯編語言能充分利用計算機的硬件特性,編寫出與硬件緊密相關而高級語言又無法實現的程序。缺點:①難學、難理解、難編程、難調試、難維護等。②匯編語言程序可移植性差,它是面向機器的語言,不同的機器CPU不一樣,一個CPU一個指令系統,硬件CPU的不兼容導致程序移植困難。

3 英語與匯編語言的對比(表1)

例如以下程序:

Data segment ;data段開始

X dw 10,20,50,70,-90 ;data段正文

Data ends ;data段結束

Code segment ;code段開始

Assume cs:code,ds:data

Main: mov ax,data

Mov ds,ax

Mov bx,offset x

Mov cx,5 ;code段正文

Mov ax,0

L: Add ax,[bx]

Add bx,2

Loop l

MOV AH,4CH

Int 21h

Code ends ;code段結束

End main ;整個程序書寫結束,從語句main開始執行

該程序的功能是求數據10,20,50,70,-90的累加和

4 單詞的種類

4.1 常量(常數)單詞 ①10進制整形常量。詞法規則:以D結束(D可省略),由0-9構成 如 123D,456。②16進制整形常量。詞法規則:以H結束,由0-9,A-F構成 如 123H,456H。③8進制整形常量。詞法規則:以Q結束,由0-7構成 如 101Q,456Q。④2進制整形常量。詞法規則:以B結束,由0-1構成 如 101B,110B。⑤字符型常量。詞法規則:單引號括起來的字符,其值為其ASCII碼如‘1’的值是41H,’AB’的值是4241H,’ABCD’的值是44434241H,字符順次存放,其值是低位在低地址部分。

4.2 名字單詞 詞法規則:以字母或下劃線開始,由字母,數字,下劃線構成的串。如xyz,flag,名字可以是段名,子程序名,指令的名字,常量名,變量名,寄存器名等。

4.3 運算符單詞 算術運算符:如+,-,*,/。偽指令運算符:如offset,seg,xor。

4.4 操作碼單詞 區分不同的操作(運算),含義必須硬記。如ADD(加法),SUB(減法),MUL(乘法),DIV(除法)。

5 語法成份――表達式

語法規則:由常量,運算符,括號,名字構成。如123+456+x,其中最常用的表達式有:①100:數據100。②[100]:100號單元,100不是數據,是地址,100號單元的內容是數據。③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個單元。

6 語句格式

自然語言格式是:動詞(做什么)賓語(對誰做)狀語(怎么做)。匯編語言格式是:動詞(做什么)賓語(對誰做),省掉狀語(運算結果怎么辦,隱含給出)。

語法規則:[名字][:]操作碼目的操作數,源操作數;注解。表示做何種操作的代碼稱為操作碼,參加操作的數稱為操作數,操作數無非是常量,名字,表達式。存放結果的稱為目的操作數,僅參加運算的數稱為源操作數。運算后,目變源不變。

語義規則:目的操作數操作上源操作數,結果送到目的操作數(運算結果怎么辦,隱含給出)。

如 ADD AX,BX表示AX的內容加上BX的內容送AX,(AX)+(BX)送AX。

7 匯編語言與C語言的比較(表2)

8 結束語

計算機由硬件軟件兩部分構成,匯編語言可直接在硬件層上編程序,高級語言有編譯程序,該軟件層遮蓋了硬件層,使得用戶看不到硬件,看到的只是編譯程序的語法約定。故學好匯編語言,對于理解計算機內部運行機制及產品開發尤為重要。

參考文獻:

[1]王成耀.80X86匯編語言程序設計(第2版)[M].北京:人民郵電出版社,2008.

匯編語言范文3

關鍵詞 微機原理與接口 匯編語言與C語言比較

中圖分類號:TP368.1 文獻標識碼:A

0 引言

“微機原理與接口”是信息學科的一門必修課,主要介紹8086微處理器的原理及其擴展接口的應用。然而8253芯片是接口芯片中的一個重要組成部分,因此本文就從8253出發,闡述用匯編語言和C語言對其開發,讓學生更好地用軟件對硬件進行開發。

1 8253知識點進行描述

8253工作方式:

1.1 頻率發生器

在該方式下,計數器裝入初值,開始工作后,計數器的輸出OUT將連續輸出一個時鐘周期寬的負脈沖。兩負脈沖之間的時鐘周期數就是計數器裝入的初值。在這種初始方式下,門控信號GATE用作控制信號。當GATE為低電平時,強迫OUT輸出高電平。當GATE為高電平時,分頻開始。時序波形如圖1所示。

1.2 方波產生器

當裝入數值為N時,若N為偶數,則完成N/2計數時OUT為高電平,完成另外N/2計數時OUT低電平,一直進行下去。若N為奇數,則(N+1)/2計數時OUT保持高電平,而(N-1)/2計數期間OUT為低電平。在GATE為高電平的時,產生對稱方波。時序波形如圖2所示。

1.3 C語言的優點

C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。由于C語言的易可移植性,在嵌入式系統里面應用廣泛。

1.4 匯編語言的優點

匯編語言是面向機器的程序設計語言。匯編語言是一種功能很強的程序設計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。匯編語言的長處在于編寫高效且需要對機器硬件精確控制的程序。

總之,雖然匯編語言執行起來速度比較快,但開發起來比較麻煩,尤其是8086架構里面只有有限的寄存器,在開發大型的軟件時就會顯得捉襟見肘,采用C語言開發就可以提高代碼的質量,用一句C就可以代替好幾句匯編語言,會讓開發人員輕松很多,更會讓很多初學者對嵌入式系統的開發產生興趣。

2 實例:C語言方式下和匯編語言下控制8253

8253控制端口地址為 203H;計數器0地址為 200H;計數器1地址為 201H;計數器2地址為 202H。

outportb(0x203, 0x56)

//56H(01010110B).選擇計數器1,低八位讀寫,方式3(方波發生器),二進制計數.

outportb(0x201, 8); // 向計數器1寫入低八位初值8H(00001000B).

outportb(0x203, 0x94); // 向8253控制端口寫控制字94H(10010100B)。選擇計數器2,低八位后讀寫,方式2(分頻脈沖發生器),二進制計數。

outportb(0x202, 6); // 向計數器2寫入低八位初值6H(00000110B).

如果使用匯編語言程序,則變成

MOV DX,203H;指向控制端口

MOV AL, 56H ;設置工作方式

OUT DX, AL;往端口送數據

MOV DX, 201H;指向計數器1

MOV AL, 8;給計數值

OUT DX, AL;往端口送數據

MOV DX,203H;指向控制端口

MOV AL,94H;設置工作方式

OUT DX,AL;往端口送數據

MOV DX,202H;指向計數器2

MOV AL,6;給計數值

OUT DX,AL;往端口送數據

從中可以直觀地可以看出,如果使用匯編語言對8253寫入控制字MOV DX,203H,MOV AL,36H,OUT DX,AL,需要三條語句完成,而且需要3個寄存器,并且寄存器本來就是很少的了,這樣很浪費資源;用C語言只需調用outport函數:outport(0x203,0x36),C語言的代碼長度短了很多,并且也方便學生們掌握,使學生在嵌入式軟件開發上產生更多的興趣,為大型嵌入式軟件的開發奠定堅實的基礎。

3 結束語

根據本文比較C語言和匯編語言對8253的開發,會讓更多的學生明白C語言作為一種面向結構的語言對嵌入式系統開發的優勝性,希望越來越多的學生在微機原理和接口的實驗課上,采用C語言進行開發,削減代碼量,提高效率。由于目前我國正處于信息化高速建設的時代,對嵌入式系統的開發水平也決定著我國在世界上的影響力。因此,讓更多的學生學會用更高效的語言進行嵌入式系統軟件的開發顯得尤其重要,本文就此發表自己的看法。

參考文獻

[1] 馬義德,張在峰,徐光柱,杜桂芳.微型計算機原理及應用(第二版).北京:高等教育出版社,2001.

[2] 王永山,楊宏五.微型計算機原理與應 用(第二版).西安:西安電子科技大學出版社,1999.5.

匯編語言范文4

微機原理與接口技術是計算機類學科的專業基礎課之一,講過和學過這門課的教師和學生都知道這門課“很難學”,特別是對于職教的學生來說,如何讓他們學好這門課,是我們職教教師所面臨的嚴峻挑戰。

匯編語言在微機原理與接口技術中占有十分重要的地位,大部分學生覺得這門課難學或對這門課失去學習熱情的很大一部分原因在于對匯編語言的學習產生了畏難情緒。誠然,匯編語言是一門低級語言,就8086來說,它就有115個指令,給學生的學習造成了很大的負擔。但是,如果教師采用方法得當的話,可以讓學生感覺匯編語言“很易學”,甚至讓他們“愛上”它,這并非沒有可能。本人就對匯編語言的熱愛,談談在教授這門課時的一點心得體會。

一、提高學習興趣,激發求知欲

俗話說:興趣是最好的老師。一個人只有對某個問題產生興

趣,才會主動去尋找解決它的辦本文由收集整理法,才會主動獲取相關的知識。因此,在教學過程中,教師的重要任務之一就是激發學生的學習興趣。

第一次課很重要。對于大多數職教學生來說,他們只對最新的、實用的知識感興趣,如果要他們去學習一些理論性的、陳舊的內容的話,他們必然會失去興趣。所以,在我們上第一次課的時候,就需要強調本門課的重要性,讓他們覺得學習這門課的用處很大。比如,我的第一堂課是在多媒體教室上的,這堂課主要展示匯編語言的一些實用技巧:利用匯編語言破解cmos密碼;利用匯編語言程序控制計算機主機中小喇叭發出的聲音;利用匯編語言程序播放音樂;借助特定軟件用匯編語言破解某個軟件的注冊碼。讓學生記下相應的程序與操作,在下一節課上機房完成相應的操作,讓學生收獲成功的喜悅。這兩節課的主要目的是讓學生領略匯編語言的魅力及其實用性,為以后的學習做鋪墊。在后續的學習過程中,在原有知識的基礎上可以增加一些實用性的內容,以維持他們的學習興趣。

二、講課內容打亂教材順序,抽取精髓,激勵學生主動獲取知識

就8086 cpu來說,它具有115個指令,這么多指令介紹完的話,時間是肯定不允許的。如果真要這么做的話,枯燥的指令會打消學生的學習積極性。所以,在具體教學過程中,肯定得有所刪減。

在教學過程中,我們應該從教學內容選擇、教學方法的改進等多方面下手。例如,在介紹8086指令時,選擇重點指令,不必將所有指令一個個詳細地講解。教學中,教師應該盡早引導學生上機練習,編寫有交互性的程序,尤其應該有顯示結果,使學生有成就感。

在學的過程中,希望學生不要急功近利、太過浮躁。學習的重點不是語言本身,而是編程思想和方法,通過匯編語言學習,更好地理解微機內部工作原理,熟悉底層程序設計的思路。

三、遵循循序漸進原則,盡量與原有的知識相聯系

學生在學習匯編語言時,會遇到各種各樣的困難,比如,很多指令格式很相似,一些指令格式有太多的限定,指令操作數的形式多樣等,從而對匯編語言產生了恐懼感,不知怎樣學習,心里很茫然。由于匯編語言的特點,初次接觸的確有些困難,習慣了高級語言的自然表達,一時無法適應低級語言的生硬規則是產生恐懼感的一個重要原因。

1.教學過程要遵循循序漸進原則,不要急于求成

在介紹指令的格式和功能時,如mov指令,對它格式的限定

太多,如果在學生基本的指令功能還沒掌握的情況下,就給指令的使用加上條條框框,那只會使學生在具體寫指令的時候疑神疑鬼,失去寫程序的勇氣。對于這些格式的限定可以在學生具有一定的基礎后安排一節上機課,讓學生把一些錯誤的情況找出來,然后教師總結,在以后的學習過程中慢慢掌握指令的格式。再如,學習匯編語言編程時本文由收集整理,我們教師的重點不是去教學生編程,而是要讓學生先學會看懂程序,然后在一定的閱讀程序的基礎上再嘗試讓學生編程,由易入難,由淺入深,讓學生逐步掌握。

2.學習指令功能時盡量與原有知識相聯系

匯編語言范文5

關鍵詞:加密算法 DES 匯編語言

目前在金融界及非金融界的保密通信中,越來越多地用到了DES算法。DES(Data Encryption Standard)即數據加密算法,是IBM公司于 1977年研究成功并公開發表的。隨著我國三金工程尤其是金卡工程的啟動,DES算法在POS、ATM、磁卡及智能卡(IC卡)中被廣泛應用,以此來實現關鍵數據的保密。如信用卡持卡人的PIN的加密傳輸、IC卡與POS間的雙向認證、金融交易中的密碼鍵盤等,均用到DES算法。由于密碼鍵盤不可能使用高級語言,所以用匯編語言實現DES就非常實用。

1 DES算法的簡單原理

DES是一種分組密碼。假定明文m是由0和1組成的長度為64位的符號串,密鑰k也是64位的0、1符號串。

設:M=m1m2m3…m64

K=k1k2k3…k64

加密過程可表達如下:

DES(m)=IP-1·T16·T15…T2·T1·IP(m)

其中:IP(m)是初始置換,IP-1是逆置換,T16~T1是16次迭代。

(1)初始置換IP

功能是把輸入的明文m按位重新組合,并把輸出分為L0、R0兩部分,每部分各長32位,其置換規則如下:

58,50,42,34,26,18,10,2,

60,52,44,36,28,20,12,4,

62,54,46,38,30,22,14,6,

64,56,48,40,32,24,16,8,

57,49,41,33,25,17,9 ,1,

59,51,43,35,27,19,11,3,

61,53,45,37,29,21,13,5,

63,55,47,39,31,23,15,7

(2)逆置換IP-1

經過16次迭代運算后,得到L16、R16,將此作為輸入,進行逆置換。逆置換滿足:

IP·IP-1=IP-1·IP=I

逆置換正好是初始置換的逆運算。

(3)T16~T1的迭代計算

DES的迭代算法采用模2加法。

在通信網絡的兩端,雙方約定了一致的密鑰。在通信的源點用密鑰對核心數據進行加密并形成密文,然后,以密文的形式在公共通信網中傳輸到通信網絡的終點。數據到達終點后,用同樣的密鑰對密文數據進行解密,便再現了明文形式的核心數據。這樣,便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

2 匯編語言的實現

用匯編語言實現DES算法有它的優勢也有它的難點。優勢是51匯編的位操作可以方便地實現置換功能。但用匯編語言實現算法的迭代運算及循環功能比較煩瑣。在用51匯編實現DES的過程中,我編寫了幾個子程序,組合起來可實現DES算法加密。在這里寫出一些思路,有需要的同行可與我聯系(E-mail:zhoubin@jlu.edu.cn)。

8031有16個可以位尋址的寄存器,可放置128位的數據,利用它可實現DES的轉置功能。將明文m放入寄存器27H~20H中,即位地址00H對應m64 ,3FH對應m1。利用標志寄存器C可實現置換與逆置換程序。在DES的16次迭代過程中,要實現公式:

Li=Ri-1;Ri=Li-1f(Ri-1,ki)

的運算過程,其關鍵在于f(Ri-1,ki)的功能。f是將32位的輸入轉化為32位的輸出。其中含3項技術:

① 將32位膨脹為48位的E功能。該項功能可用類似于置換功能的子程序編寫。

② 48位子密鑰的生成。為了便于51匯編生成子密鑰,可以使用主機用串口下傳的方式,由主機將16個子密鑰傳給89C52為核心的單片機,然后存入80H~FFH中。如果密鑰是固定的,則可直接將子密鑰固化在89C52的Flash中。

③ S盒的功能是將48位的輸入再次縮為32位。具體實現是將S盒表存入89C52的Flash中,每次通過查表求得S輸出的結果。

下面列舉其中的幾個子程序。

(1)IP置換子程序

;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)

;功能:將入口寄存器的數據按置換表換位。

IP: MOV C,06H ;將m58送到進位標志中

MOV 7FH,C ;將進位標志送m1中

MOV C,0EH ;將m50送到進位標志中

MOV 7EH,C ;將進位標志送m2中

;重復,按表編寫

.

.

.

MOV C,31H ;將m15送到進位標志中

MOV 41H,C ;將進位標志送m63中

MOV C,39H ;將m7送到進位標志中

MOV 40H,C ;將進位標志送m64中

RET

(2)逆置換子程序

;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)

;功能:將入口寄存器的數據按逆置換表換位。

IPRVS:MOV C,18H ;將m40送到進位標志中

MOV 7FH,C ;將進位標志送m1中

MOV C,38H

.

.

.

RET

(3)異或子程序

;入口寄存器:272625243F3E3D3C,出口寄存器:2B2A2928

;功能:將寄存器27262524的內容和寄存器3F3E3D3C的內容異或。結果保存在2B2A2928寄存器中。

XORLF: MOV A,3FH ;將高8位異或

XRL A,27H

MOV 2BH,A ;放入出口處

MOV A,3EH

XRL A,26H

MOV 2AH,A

MOV A,3DH

XRL A,25H

MOV 29H,A

MOV A,3CH

XRL A,24H

MOV 28H,A

RET

(4)S盒子程序

;入口寄存器:(MSB)2F2E2D2C2B2A2928,出口寄存器:(MSB)27262524

;功能:48位32位

S6TO4: MOV 20h,2FH ;取出高位數據

LCALL S162345 ;調用實現Si(b1b6,b2b3b4b5)

;的功能子程序

MOV DPTR,#S1TAB;S盒表的首址

MOV A,21H ;取出第幾個S盒

LCALL DPTRADD

CLR A

MOVC A,@A+DPTR;求出S盒的表地址及S 結果

SWAP A

MOV 27H,A ;保存高位結果

MOV 20H,2EH

LCALL S162345

;重復

匯編語言范文6

關鍵詞:匯編語言;指令系統;宏匯編;Win32

中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2014)07-1473-03

在《微機原理及應用》課程中,微處理器中的指令系統以及匯編語言編程是很重要的內容,它是微機系統的主要組成部分之一。隨著計算機技術的不斷發展,微型計算機由16位微處理器早已過度到了32位微處理器,當前,《微機原理及應用》課程的內容應該以32位微機為主,而32位微處理器是基于16位微處理器的基礎之上產生與發展的,它兼容了16位微處理器8086的指令集,因此,在闡述32位微處理器指令系統時,必然涉及到16位的指令,相應的匯編語言編程也在發展,教學過程中如何優化處理16位與32位指令系統及相應的匯編語言編程,使學生能夠快速地學習與接受32位機的工作原理,提高教學效果,它是《微機原理及應用》課程教學中的一個難點,是一個值得探討的問題。

1 《微機原理及應用》課程中的指令集

32位微處理器指令系統包括基本指令集、浮點指令集、保護方式指令集以及擴展指令集等。根據浮點運算部件和浮點運算格式,用浮點指令編寫浮點運算程序;保護方式指令集通常由系統程序員使用,編寫操作系統程序,保護方式一般是由操作系統通過執行初始化程序來設置的;CPU擴展指令集指的是CPU增加的多媒體或者是3D處理指令,這些擴展指令可以提高CPU處理多媒體和3D圖形的能力。一般在計算機課程教學中涉及的指令系統主要是基本指令集,因此,該文所討論的指令系統是指微處理器的基本指令以及應用基本指令進行的匯編語言編程。

2 教學中以16位指令系統作為基礎

微處理器的發展過程經歷了從經典的16位微處理器8086到80286、80386、80486、Pentium、多核等系列微處理器的演變和應用。在教學中,首先還是要以8086 CPU為基礎組織教學,介紹16位CPU的結構及16位的指令系統,理由如下:

第一,8086 CPU的內部結構簡單,有利于學生學習與建立微處理器的概念。

8086微處理器的內部主要包括執行單元EU和總線接口單元BIU,它具有中央處理器(CPU)的經典結構,使學生容易建立微處理器的概念??偩€接口部件BIU是8086 CPU與外部存儲器和I/O端口的接口,它提供了16位雙向數據總線和20位地址總線,負責CPU與存儲器及I/O端口之間的數據傳送操作。執行部件EU從BIU中的指令隊列獲取指令,對指令進行譯碼分析并執行,執行指令所需要的操作數和運算結果都是通過總線接口部件與指定的內存單元或外設端口進行傳送的。

在一般教材中,高檔微處理器的結構則側重于其他復雜功能塊的分析,不易為初學者接受。

第二,8086 CPU內部各組寄存器結構清晰,通過DEBUG調試程序或MASM匯編程序,很容易驗證,而且,學生理解8086 CPU內部寄存器組后,很容易理解32位微處理器內部擴充后的寄存器組。

8086 CPU內部分為:8個16位通用寄存器,每個寄存器還有它們各自的專用場合;4個段寄存器都有各自所代表的內存段;16位的指令指針IP用來存放將要執行的下一條指令在當前代碼段中的偏移地址,它與代碼段寄存器CS聯用,以確定下一條指令的物理地址; 16位的標志寄存器(FLAGS)只定義了9位,分為兩類,一類用于反映部分指令(例算術運算及邏輯運算指令)執行結果的狀態,常用作后續條件轉移指令的轉移控制條件,另一類為控制標志,用來控制CPU的操作。

如果學生從理論與實踐上,理解與認同了8086 CPU內部的寄存器后,一方面對微處理器的工作原理有了較系統的認識,另一方面,對于下一步學習32位微處理器,奠定了堅實的基礎。

3 教學中快速處理32位指令系統

由于學生從理論與實踐(上機)兩方面,已經掌握了16位機的指令系統,如何快速處理32位指令系統,首先,要簡單介紹32位CPU內部寄存器的編程結構,比如,通用寄存器擴充到了32位,增加了兩個段寄存器(FS、GS)等。然后,著重介紹32位機的尋址方式,32位機與16位機尋址方式絕大部分是相同的,主要是32位機尋址內存方式多,而且靈活,因此,要重點介紹32位機尋址內存的幾種方式。

4 在宏匯編MASM 6.X IDE環境下調試程序

MASM 6.X是一個IDE環境(集成開發環境),它將匯編語言源程序的編輯、匯編、執行、調試合為一體,呈現在程序員面前的是一個窗口,使用非常方便。MASM 6.X將匯編程序和調試程序(DEBUG)集成到一起,使程序的開發和調試結合的更緊密。MASM 6.X最具特色的是能夠匯編簡化段模式的匯編語言源程序,可用于簡化段程序的設計及匯編16、32位指令的程序,還提供了類似于高級語言的IF/ELSE分支結構、WHILE和REPEAT/UNTIL循環結構,使編寫匯編語言程序和編寫高級語言程序一樣方便。現在最新的匯編程序MASM32支持32位段操作,可以構造出窗口程序,功能已接近于高級語言程序。

16位匯編語言編程以完整段格式編寫,32位匯編語言編程以簡化段格式編寫,程序不在于多,但具有典型性。由于《微機原理及應用》課程總學時數不可能完全滿足教學的需求,所以,在上機學時的分配上,MASM 6.x IDE環境的熟悉與16位匯編語言上機4學時,32位匯編語言上機6學時。

5 在Win32匯編語言集成開發環境下調試程序

Win32匯編語言程序是構筑在Win32 API基礎上的。在Win32 API中,包括了大量的函數、結構和消息等,它不僅為應用程序所調用,也是Windows自身的一部分,Windows自身的運行也調用這些API函數。

Win32環境中的API編程接口實際上代替了DOS中的軟中斷,和DOS的結構相比,Win32的系統功能模塊放在Windows的動態鏈接庫(DLL)中,DLL是一種Windows的可執行文件,采用的是和.exe文件同樣的PE格式,在PE格式文件頭的導出表中,以字符串形式指出了這個DLL能提供的函數列表。應用程序使用字符串類型的函數名來指定要調用的函數。應用程序在使用的時候由Windows自動裝入DLL程序,并調用相應的函數。

5.1 Win32匯編語言程序集成開發環境的使用

Win32匯編語言程序集成開發環境下的使用并不復雜,大致過程如下:

1)啟動Win32匯編語言程序集成開發環境;

2)匯編語言編程的第一步是建立一個新文件,所以在菜單中選擇“File”“New”建立一個新文件;

3)第二步是進行文件的編輯,編輯包括程序輸入、插入、刪除、修改和保存,最后生成文件的后綴是.asm。

4)匯編語言編程的第三步是匯編和連接源程序,生成可執行文件。所以在菜單中選擇“Project”“Build All”來完成此工作;

5)在匯編和連接無錯誤的情況下,會自動生成可執行程序,在菜單中選擇“Project”“Run Program”,執行程序得到結果。

5.2 Win32匯編語言程序的理論教學與上機

Win32匯編語言程序的編寫,是一個重要的問題,建議講解4學時。主要講解內容:

1)針對簡單的Win32匯編語言源程序,講述有關模式的定義、頭文件和庫文件的加載、程序段的定義、Win32匯編源程序注釋和換行的規定;

2)關于API的說明與調用API;

3)Win32匯編語言程序設計方法和實例。

Win32匯編語言程序的實踐教學,教師提供2學時的上機范例,包括機房講解Win32匯編語言程序集成開發環境。學生自己編程,上機2~4學時,共計6學時左右。

6 結束語

匯編語言程序設計在計算機專業是一門獨立的課程,在《微機原理及應用》課程中講解匯編語言程序設計,由于其內容非常豐富、涉及知識面寬、難度大,教學組織困難,學生難學。我們將《微機原理及應用》課程作為精品課程進行建設,通過不斷地學習、教學實踐以及編寫教材,總結出了自己的認識與體會,教學效果較好。

參考文獻:

[1] 李華貴,. 微機原理與接口技術[M]. 北京:電子工業出版社,2010.

主站蜘蛛池模板: av无码精品一区二区三区宅噜噜| 久久国产午夜精品理论片34页| 男人靠女人免费视频网站| 亚洲乱码av中文一区二区| 亚洲色欲网熟女少妇| 国产精品三级在线观看无码| 天天爽夜夜爽夜夜爽| 国产精品免费观看调教网| 国产一卡2卡3卡四卡国色天香| 精品无码久久久久久尤物| 久久精品无码一区二区三区免费| 久久久久人妻一区二区三区| 2020天堂在线亚洲精品专区| 熟女少妇丰满一区二区| 亚洲av永久精品无码桃色| 久久人人爽人人爽人人片av麻烦| 艳妇乳肉豪妇荡乳av| 人妻无码aⅴ不卡中文字幕| 亚洲国产欧美在线人成大黄瓜| 国产亚洲精品久久久性色情软件| 免费无码又爽又刺激软件下载直播| 法国白嫩大屁股xxxx| 国产成人无码牲交免费视频| 国产亚洲精品一区在线播放| 亚洲日韩精品欧美一区二区一| 夜夜躁日日躁狠狠久久av| 国产成人综合久久精品推| 国产顶级熟妇高潮xxxxx| 国产精品 精品国内自产拍| 亚洲日韩精品欧美一区二区一| 少妇性荡欲视频| 丰满人妻一区二区三区无码av| 中文字幕精品一区二区精品| 国产精品1卡2卡3卡4卡| 国精一二二产品无人区免费应用| 国产精品一区二区手机在线观看| 在线视频夫妻内射| 小蜜被两老头吸奶头在线观看| 国内精品国内精品自线一二三区| 国产婷婷亚洲999精品小说| 国产肉体xxxx裸体137大胆|