1000部丰满熟女富婆视频,托着奶头喂男人吃奶,厨房挺进朋友人妻,成 人 免费 黄 色 网站无毒下载

首頁 > 文章中心 > 匯編語言

匯編語言

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇匯編語言范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。

匯編語言范文第1篇

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

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

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

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

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

2、保留數據空間如果匯編子程序中需要一些局部數據,可以簡單地減小SP的值,以便在棧空間中保留出一段存貯區,用于存放局部數據,該區域須在子程序結束后恢復。如下語句可以保留一個局部數據區: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篇

關鍵詞:匯編語言;實驗教學;設計思路;實驗安排

中圖分類號:G642 文獻標識碼:B

1 匯編語言及其教學現狀

匯編語言是計算機能夠提供給用戶使用的最快而又最有效的語言,也是唯一能夠利用計算機所有硬件特性并能直接控制硬件的語言。對程序的空間和時間要求很高的場合,匯編語言的應用是必不可少的,至于很多需要直接控制硬件的操作場合則更是非用匯編語言不可。用匯編語言編寫的程序的執行速度通常比高級語言(如C/C++)快很多,甚至成百上千倍。相應的,匯編語言的缺點就是使用者需要對硬件有更深入的了解,編程效率不高。

“匯編語言程序設計”課程的任務是為“計算機組成原理”、“接口”、“操作系統”等后繼課程提供必要的基礎知識,它對訓練學生掌握與硬件相關的程序設計技術、從事自主版權計算機芯片和系統軟件的開發、信息安全、過程控制等方面,均有十分重要的作用。無論計算機技術如何發展,機器語言、匯編語言的計算機程序設計語言體系仍然是計算機技術的基礎,也是計算機技術的重要知識體系之一。不能了解和熟悉匯編語言,不僅將導致學生知識結構的缺乏,也可能導致學生認知水平的降低,開發手段的貧乏。

然而,初學者往往感到它難學、難懂、抽象,更難以掌握。教師開展教學困難,學生學習和掌握困難,教學效果差,以致會影響后繼課程的學習。

2 實驗環節在匯編語言教學中的作用

在計算機相關專業的教學領域,實驗和實訓教學是培養大學生學習能力、實踐能力、思考能力、創新能力的重要環節和有效途徑。顯然,學生在學習匯編語言這門課程中產生的困難,首先來自于他們對所學知識缺乏必要的感性認識,沒有充分的實驗。

計算機在很多方面不同于其他學科,尤其是與硬件有密切關系的課程。由于匯編語言課程具有硬件操作的密切相關性,實驗環節在整個教學活動中就占據了舉足輕重的地位.匯編語言的實驗對培養學生的動手能力和學習興趣,提高學生閱讀、編輯和調試程序的能力,有著不可替代的重要作用。學生通過實驗課深入了解CPU、存儲器、接口及外部設備的工作特性,對數據在計算機中的表達和傳送產生感性認識。在實驗中對匯編語言達到更好的理解、掌握,從感性認識上升到理論認識。

3 實驗教學的設計思路

由于各高校辦學類型不同、培養目標不同、所在地及周邊地區社會需求不同,計算機及其相關專業的教學內容也應有所不同。對于非研究型院校的相關專業,對“匯編語言”的教學可以集中在適度的理論知識和充分的操作實踐上。“適度”體現在理論課的講授中內容不必展開太寬,“充分”體現在實驗課的安排上要充分。

盡管學生學習匯編語言有著不少困難,但“興趣是最好的老師”,要激發學生的學習興趣。有了興趣,他就能積極地思考,大膽地探索,變被動接受為主動思考。因此,匯編語言的實驗教學總的思路就是要以激發學生興趣為主線,盡量設計趣味性的實驗內容,充分發揮學生的積極性和創造性。

很多學生不重視實驗課的主要原因之一是認為實驗課的好壞對學習成績影響不大,目前多數院校的學習成績評定,僅以期末一張考試卷的好壞而定,這使很多學生重理論、輕實驗。因此,應認真記載每個學生在實驗課上的實際操作能力和編程能力,并以優、良、中、差進行仔細考核,開學初就明確告訴學生這種考核制度的存在,使之開始就沒有怠慢的情緒,從思想上重視實驗。

實驗教學的安排按照由淺入深、循序漸進的方式進行,合理選擇實驗內容,盡量避免過多過雜,內容選擇注意舉一反三,即以啟發思維為主,對設計型、綜合型實驗只要能完成預定實驗目標,不苛求實驗過程與步驟的統一。實驗所演算的匯編語言程序應具備好的觀測效果,能直接體現計算機的操作特點,教師演示和學生實踐穿行,并且注意重復對比,讓學生發現自己操作的失誤,加深對匯編語言操作規律的理解。

實驗教師在實驗中主要起到引導的作用,實驗前的講解以重點、難點和注意事項為主,不應面面俱到,可以先給出一些問題,讓學生帶著問題去做、去觀察、去思考。實驗中,則應以學生為主體,讓每個同學通過操作行為感受計算機的物理過程,教師將理論揉在實例中的具體操作中,學生會感到數據是有形的,CPU的操作是物質化的。經過反復練習,學生不但學到了基礎知識,而且提高了綜合分析和理解能力。實驗中,還要鼓勵學生自己修改實驗,有時學生對自己編的程序沒有把握,一旦上機實驗后就清楚了。他在計算機上修改程序,觀察修改后的結果,實際上就是了解改動部分在整個程序中所起的作用,這種作用的認識和理解不是通過說教得來的,而是切身經歷的、看到的,學生對它的理解、記憶就要深刻得多。

4 實驗內容的具體安排

具體的實驗內容應覆蓋匯編語言教學中的各重要方面,內容涉及debug、匯編語言編程環境、匯編語言程序設計、輸入輸出與中斷、Win32匯編、匯編語言與C語言的混合編程等。類型分為選作和必做。每個實驗分屬驗證型、設計型或綜合型。

4.1 穩扎穩打練好基本功:debug和編程環境

“萬事開頭難”。對匯編語言的學習,能否開好頭很關鍵,很多學生就是因為開始沒學好,感覺跟不上,就不再認真地學習了,有的甚至放棄了。其實匯編語言實驗開始的基礎部分是比較簡單的,想掌握它是沒什么大問題的。

匯編語言源程序通常以ASCII文本文件的形式保存,通過匯編鏈接形成一個EXE可執行文件。對EXE文件的調試構成了實驗課的主體內容,貫穿始終,而EXE文件的調試通常是通過debug實現的。學生通過使用debug可以觀察到存儲器的數據存儲情況,也可以隨時觀察到CPU中寄存器的數據變化。debug的反匯編命令是理解匯編語言的助記符形態和機器指令的01碼形態的對應關系的重要工具,學生可以通過它深入體會匯編語言中指令的構成及各部分含義。debug提供的單步執行命令是另一個重要工具,利用t單步執行一條指令,及時觀察數據緩沖區的變化情況,這也是進行調試、發現程序錯誤的最直接有效的方法。

debug的實驗部分以使用a、t、r、d、u等命令為主反復進行指令練習。學生通過使用debug觀察到指令執行前后機器中數據的變化,對深入理解計算機的工作原理、匯編指令的作用是直接的和不可替代的。學生不再感到機器是復雜的,指令是抽象的。

接下來安排的實驗則是對匯編語言編程環境的熟悉和掌握,這也是重要的一環。對編程環境不熟悉,不僅會影響學習匯編語言的效率,還會引起一些不必要的錯誤發生。因此可以考慮多給幾個簡單完整的程序,讓學生多去 使用編程環境,熟悉匯編鏈接過程。實驗初,只給一些正確的程序,讓學生經過匯編鏈接可以較容易地形成exe文件并成功執行,看到了正確的結果,學生就有了方向,也就有信心去做下面的實驗了。

在熟悉了簡單的編譯過程之后,接下來可以在原有程序中適當安排一兩個錯誤,讓學生觀察匯編鏈接中出現的錯誤信息,理解這些錯誤發生的原因,這一點對程序調試是至關重要的,如果看不懂錯誤信息,就沒有辦法正確定位錯誤,也談不上修正錯誤了。

以上分析,學習匯編語言伊始,一定要練好基本功,包括對debug的熟練使用,對編程環境的熟悉。這部分實驗一定要安排得充分,力求使學生不再對機器望而生畏,不再對匯編指令有抽象難懂的感覺,如果能開好這個頭,后繼的學習就順利得多了。

4.2 輕輕松松做改變:匯編語言程序設計

由于學習匯編語言之前,學生通常已經學習過一門程序設計語言,因此這部分實驗可安排簡單、典型的驗證型、設計型實驗,以編寫程序為主。先要求學生用之前學過的程序設計語言實現,然后再給出匯編語言的實現,通過對比;學生自然可以發現匯編語言與其他程序設計語言的異同。當程序出現錯誤時,則必須要求學生使用debug進行調試,觀察變化,排除錯誤,加強程序調試能力。

4.3 細心耐心學核心:輸入輸出與中斷

中斷是學習匯編語言的重點加難點部分,能否真正掌握匯編語言也在于此,中斷也是匯編語言的魅力所在。這部分實驗一定要找一些學生感興趣的、具有明顯觀測效果的例子,至少安排兩個階段的實驗。第一階段以驗證型實驗為主,先使學生熟悉中斷過程、中斷處理程序的框架;第二階段以設計型實驗為主,讓學生自己去思考中斷過程中發生的事情,中斷程序設計的方法。對這部分知識的傳授一定要有耐心,對每個程序的講解要透徹、概念清晰。中斷是真正要用的東西,之前學習的內容只是為它做鋪墊,不能學好中斷,匯編語言這門課的真諦就沒有學到。

4.4 興趣延伸:WIn32匯編、匯編語言與C語言混合編程

很多學生學習匯編語言之初就會問匯編語言用在哪里,很少接觸到匯編語言等問題,其實現在匯編語言很少單獨使用,而Win32匯編、匯編語言與C語言的混合編程用的比較多,這兩部分內容學起來并不難,可當作拓展知識部分,作為自學內容。教師可以找一些實際使用這部分內容的例子,讓學生知道匯編語言的用途,使學生不再“學而不用”,“學而不知用”。

匯編語言范文第3篇

引言

“匯編語言與微機原理”是計算機科學與技術專業的必修基礎課程。該課程融合了匯編語言程序設計和微機原理與接口技術兩門課程的內容,要求學生重點掌握匯編語言程序設計的方法和微型計算機系統各個部件的工作原理。掌握匯編語言是掌握微機原理的基礎,因為實現和驗證微機系統各個部件的工作過程需要用到匯編語言,并且更高層次的綜合系統設計也離不開匯編語言。

匯編語言與微機原理課程中,匯編語言子程序設計這部分內容的知識掌握起到承上啟下的作用。其“承上”的作用體現在:作為一個獨立的模塊,子程序設計涵蓋之前所學的匯編語言的指令系統、偽指令、數據類型及三種基本控制結構(順序結構、分支結構和循環結構)。其“啟下”的作用體現在:①后續接口芯片的功能應用基本上都是以子程序的形式實現;②中斷系統中的中斷服務程序就是一種子程序,中斷系統是微機系統中非常重要的組成部分,可以說不理解中斷系統就不能理解計算機的工作原理[1],而掌握子程序設計是本文由收集整理理解和應用中斷系統的基礎之一;③子程序設計是開發大型程序的基礎,對于培養編程能力十分重要[1]。因此,匯編語言子程序設計這部分內容無論在教學上還是在實驗中都必須給予足夠的重視。但目前鮮有文獻涉及這方面的問題,本文針對目前匯編語言與微機原理課程中匯編語言子程序實驗設計中普遍存在的問題給出相應的對策,并給出一個實驗設計實例。lw881.com

1 實驗設計存在的問題及對策

⑴ 實驗學時安排不夠。據粗略調查,大多數院校匯編語言與微機原理課程的實驗學時為18個學時[1],有一些院校還附加一個課程設計。對于這18個實驗學時普遍的分配方式如表1所示。

表1 匯編語言與微機原理實驗項目及學時安排表

[類別\&項目\&學時\&匯編語言程序設計部分

(12學時)\&匯編語言上機過程及debug的使用\&2\&dos系統功能調用\&2\&三種基本程序結構\&6\&子程序\&2\&接口芯片部分

(6學時)\&可編程中斷控制器8259\&2\&并行接口芯片8255\&2\&可編程定時/計數器8253\&2\&]

從表1可以看出,子程序實驗僅安排了2個學時,學時太少,難以取得良好的訓練效果,可以考慮將實驗“dos系統功能調用”融合到“三種基本程序結構”中,騰出2個學時給子程序實驗,有助于學生深刻全面的理解子程序的相關知識。

⑵ 實驗內容“片面”。對于匯編語言子程序實驗,大多數院校的實驗內容只涉及到兩方面的知識:①子程序的類型(近子程序和遠子程序);②三種參數傳遞方式(寄存器傳遞、內存單元傳遞、堆棧傳遞)[2]。這并不全面,與子程序密切相關的知識應該還包含宏和中斷服務程序,所以有必要在實驗中安排相應的內容讓學生理解子程序與宏的區別,以及如何把一個子程序“注冊”為中斷服務程序,然后通過軟中斷指令(int n)調用該程序的過程,這樣做有助于后面對中斷系統的學習。中斷是學習匯編語言的重點、難點部分,能否真正掌握匯編語言對中斷的理解和掌握至關重要,中斷也是匯編語言的魅力所在[3]。

2 實驗設計的一個實例

針對前面提到的問題,在此給出一個匯編語言子程序實驗設計實例,主要內容如下:

⑴ 實驗學時:4學時。

⑵ 實驗目的:

① 掌握子程序的編寫及調用方法;

② 掌握近子程序和遠子程序的區別;

③ 掌握三種參數傳遞方式的差別;

④ 掌握子程序與宏的區別;

⑤ 掌握編寫中斷服務程序的方法以及通過軟中斷指令。

⑶ 實驗內容:

① 編寫一個近子程序實現將一個字節的數據以十六進制的形式輸出,采用寄存器參數傳遞方式;

② 編寫一個遠子程序,功能與①相同,采用堆棧參數傳遞方式;

③ 變量str中存有一個以’$’作為結束符的字符串,編寫一個子程序實現將str中所有的大寫字母全部改為小寫字母,采用內存單元參數傳遞方式;

④ 用宏實現①中的功能;

⑤ 編寫一中斷服務程序實現①中功能。提示:利用dos系統功能調用的35h號功能和25h號功能提取和設置中斷向量,具體如表2所示。

表2 dos系統功能調用的35h號和25h號功能說明[4]

[功能號\&功能\&入口參數\&出口參數\&25h\&設置中斷向量\&ds:dx=所設置中斷向量的段基址:偏移量al=欲設置中斷向量所對應的中斷號\&無\&35h\&取中斷向量\&al=欲取中斷向量所對應的中斷類型號\&es:bx=取得的中斷向量的段基址:偏移量\&]

該實驗設計實例特點鮮明,首先實驗所要求完成的功能都是匯編語言中簡單而又常用的功能,這一方面可以使學生不必花太多功夫在算法實現上,而把主要精力集中在子程序本身的語法上,另一方面實驗中所完成的程序在后續的實驗中可以直接調用,減輕了學生在后續實驗中的負擔,同時加強了各實驗之間的有機聯系。我們的實驗內容涵蓋了與子程序相關的各種知識,特別是子程序與中斷服務程序的關系,這也是本實驗設計的創新之處。

匯編語言范文第4篇

關鍵詞:匯編語言 高級編程語言 歷史 趨勢

中圖分類號:TP313 文獻標識碼:A 文章編號:1003-9082(2017)06-0002-02

一、編程語言的發展歷程

自從1946年世界上第一臺電子計算機問世,人類和機器的交流方式和語言就成為了軟件工程師和計算機從業者的主要研究方向,更有效更簡便的編程語言成為了軟件工程師的新寵兒,伴隨著計算機的飛速發展,計算機的硬件升級速度也越來越快,對編程語言的要求也日益嚴格。在過去的幾十年,編程語言有了長足的發展,至今已經有四代語言問世。大量的編程語言為了滿足不同領域的編程要求和軟件功能,經歷了被修改,被取代,被發展等過程,最終發展成了現在編程語言的多樣化。盡管人們多次試圖尋找一個能夠適應所有編程環境的通用語言,但是卻沒有一次成功。程序設計語言正在與現代科技日益飛躍,人類的智慧在日益彰顯。

1.機器語言

計算機的硬件作為一種電路元件,它的輸出和輸入只能是有電或者沒電,也就是所說的高電平和低電平,所以計算機傳遞的數據是由“0”和“1”組成的二進制數,所以說二進制的語言是計算機語言的本質。計算機發明之初,人們為了去控制計算機完成自己的任務或者項目,只能去編寫“0”、“1”這樣的二進制數字串去控制電腦,其實就是控制計算機硬件的高低電平或通路開路,這種語言就是機器語言。直觀上看,機器語言十分晦澀難懂,其中的含義往往要通過查表或者手冊才能理解,使用的時候非常痛苦,尤其當你需要修改已經完成的程序時,這種看起來無序的機器語言會讓你無從下手,也很難找到程序的錯誤。而且,不同計算機的運行環境不同,指令方式操作方式也不盡相同,所以當你在這種機器語言就有了特定性,只能在特定的計算機上執行,而一旦換了機器就需要重新編程,這極大的降低了程序的使用和推廣效率。但由于機器語言具有特定性,完美適配特定型號的計算機,故而運行效率遠遠高過其他語言。機器語言,也就是第一代編程語言。

2.匯編語言

通過我對機器語言的介紹,不難看出機器語言作為一種編程語言,靈活性較差可閱讀性也很差,為了減輕機器語言帶給軟件工程師的不適應,人們對機器語言進行了升級和改進:用一些容易理解和記憶的字母,單詞來代替一個特定的指令,比如:用“ADD”代表數字邏輯上的加減,“MOV”代表數據傳遞等等,通過這種方法,人們很容易去閱讀已經完成的程序或者理解程序正在執行的功能,對現有程序的bug修復以及運營維護都變得更加簡單方便,這種語言就是我們所說的匯編語言,即第二代計算機語言。但是這時候,計算機的硬件還是那些硬件,所以計算機還是不認識那些字母符號,這時候就需要一個專門的程序把這些字符變成計算機能夠識別的二進制數。因為匯編語言只是將機器語言做了簡單編譯,所以并沒有根本上解決機器語言的特定性,所以匯編語言和機器自身的編程環境息息相關,推廣和移植很難,但是還是保持了機器語言優秀的執行效率,因為他的可閱讀性和簡便性,匯編語言到現在依然是常用的編程語言之一。

3.高級語言

在編程語言經歷了機器語言,匯編語言等更新之后,人們發現了限制程序推廣的關鍵因素――程序的可移植性。需要設計一個能夠不依賴于計算機硬件,能夠在不同機器上運行的程序。這樣可以免去很多編程的重復過程,提高效率,同時這種語言又要接近于數學語言或人的自然語言。在計算機還很稀缺的50年代,Q生了第一個高級編程語言。當時計算機的造價不菲,但是每天的計算量有有限,如何有效的利用計算機有限的計算能力成為了當時人們面對的問題。同時,因為資源的稀缺,計算機的運行效率也成為了那個年代工程師追尋的目標。為了更高效的使用計算機,人們設計出了高級編程語言,來滿足人們對于高效簡的編程語言的追求。用高級編程語言編寫的程序需要經過翻譯,翻譯成機器所能識別的二進制數才能由計算機去執行。雖然,高級編程語言編寫的程序需要一些時間去翻譯代碼,從而降低了計算機的執行效率,但是實踐證明,高級編程語言為工程師帶來的便利遠遠大于降低的執行效率。經過各軟件工程師和專家的不懈努力,1954年,第一個完全意義的高級編程語言―FORTRAN問世了,他完全脫離了特定機器的局限性,是第一個通用性的編程語言。從第一個編程語言問世到現今,共有幾百種高級編程語言出現,很多語言成為了編程語言發展道路上的里程碑,影響很大。比如:FORTRAN、BASIC、JAVA、C、C++、python等。高級編程語言也從早期的控制信號變成了現在的有結構有格式的程序編寫工具,C++等語言的出現更是開啟了面向對象編程語言的新章。同時伴隨著軟件編寫效率的提高,軟件開發也逐漸變成了有規模、有產業的商業項目。

二、高級編程語言、匯編語言和機器語言的區別

根據上面的簡單介紹,我們可以說作為編程語言的一種劃分,高級編程語言和低級語言構成了一般意義上的計算機語言。而高級編程語言又是和匯編語言對比而言。高級編程語言作為一種通用的編程語言,它的語言結構和計算機本身的硬件以及指令系統無關,它的可閱讀性更強,能夠方便的表達程序的功能,更好的描述使用的算法。同時,它更容易被初學者所掌握,很容易學習。而且容易學習掌握。但是高級編程語言因為是一種編譯語言,所以他的運行速度比匯編程序要低,同時因為高級語言比較冗長,所以代碼的執行速度也要慢一些。所以說匯編語言更適合編寫一些需要高效率運行的程序或者對程序代碼的長度又要求的程序,同時在直接控制硬件方面也能夠起到很好的作用。

高級編程語言,作為用戶層面的程工具,用戶并不需要去了解硬件的結構,而是去用邏輯的語言去實現想要的目標,但是因為高級編程語言的架構高于匯編,所以不能編寫直接訪問硬件資源的系統程序,因次,高級編程語言必須要調用匯編語言編寫的程序來訪問硬件地址。

機器語言(machine language)就是一種指令集了,它是一串數據代碼,也可以叫做機器碼。他能夠由硬件直接讀取,同時硬件返回的數據也是這種二進制代碼。機器語言是作為直接控制硬件的橋梁,連接這軟件和硬件兩個不同領域的技術。它是計算機的設計者通過計算機的硬件結構賦予計算機的操作功能。機器語言執行速度是上述語言中最快的,而且無需編譯直接執行。用機器語言編寫程序,編程人員不僅要對所有二進制數字所指代的指令爛熟于心,而且還要手動為程序分配存儲空間以及輸入和輸入。所以這是一個十分復雜的過程,即使編寫簡單程序也好耗費大量的人力。而且不論是代碼還是輸出,全是“0”和“1”的數字串,在后期的閱讀和維護也會非常困難,所以機器語言已經慢慢的推出了主流編程語言的領域。

三、匯編語言和高級編程語言的優缺點

1.匯編語言的優缺點

匯編語言作為機器語言之上的第二代編程語言,它也有很多優點:

1)可以輕松的讀取存儲器狀態以及硬件I/O接口情況

2)編寫的代碼因為少了很多編譯的環節,可以能夠準備的被執行

3)作為一種低級語言,可擴展性很高

缺點:

1)因為代碼非常單調,特殊指令字符很少,所以造成了代碼的冗長已經編寫的困難

2)因為匯編仍然需要自己去調用存儲器存儲數據,很容易出現BUG而且調試起來也不容易

3)就算完成了一個程序,后期維護時候也需要耗費大量的時間。

4)因為機器的特殊性造成了代碼兼容性差的缺陷。

2.高級編程語言的優點

因為高級編程語言很多,我們就拿C語言展開論述。C語言是一個面向過程的語言,用戶根據自己的需求來調用函數或創建目標。因為明確的目標性以及理解容易,一個新手很容易去學習C語言。同時C語言因為發展的歷史,擁有很多函數庫,用戶可以根據自身的需求在代碼中加入頭文件來調用這些函數來實現自己的功能,當然使用者也可以根據自己的喜好編寫函數來在后續的代碼中調用,關鍵字像if,else,return,main,end等這些簡單易懂的單詞也使得C語言記憶和理解起來更加容易。作為一個通用性很高的編程語言,C語言的可移植性是它出色的優點之一,你可以在任意一臺電腦、一個設備上運行程序而不需要重新編譯。

四、對未來編程語言的展望

通過上面的介紹,我們不難發現面向對象思想在編程設計中占有很重要的地位,同時現在編程語言的多元化也告訴我們,未來的語言發展不會是一枝獨秀,也不會是單純的語言發展,而是以完全面向對象的姿態你展現我們的現實世界。它將更容易被工程師學習和使用,人們完全可以通過簡單的操作來完成復雜的編程。這就得出了未來語言發展的第一個趨勢--面向對象,由計算機來提供現有的函數功能、封裝結構。而工程師只需要去拿現成的函數來調用,大大提高了代碼的利用率。同時簡單性也成為未來追求的目標,如果一個有簡單計算機知識的人只需學習一些基本的操作就能編寫適合于各種情況的應用程序,這樣創造和編寫的成本將會大大降低。在互聯網高速發展的今天,安全也將成為了代碼編寫中必不可少的因素,一個更安全更具有保密性的語言也是未來的需求。綜上在這樣一個“百花齊放百家爭鳴”的編程語言環境,只有能真正給使用者帶來便利的語言才會走的更遠走的更好。

參考文獻

[1]張t蕊,C++教學方法及學習方法的調研與分析,計算機教育第23期

[2]王文東,李竹林,尚建人,匯編語言與C語言的混合程序設計技術,計算機發展第十六卷第八期

[3]路士兵,淺談計算機匯編語言的特點和學習方法,科技創新導報2014NO.20

匯編語言范文第5篇

【關鍵詞】ARM匯編語言 C/C++語言 混合編程

在計算機系統的嵌入式應用程序中,所有匯編任務都由匯編語言來完成,這樣雖然完成任務的效率很高,但是工作量卻非常大,會影響到對于應用程序的維護。若是所有的程序都是由C/C++語言進行編程,雖然執行過程比較的簡單,但是這種方式卻導致了目標代碼的執行任務效率低,實時性很差。所以在嵌入式系統中,主要采用的編程方式是ARM匯編語言與C/C++語言混合編程形式,在編程過程中,初始化任務由匯編語言來完成,主要的任務則是由C/C++語言來完成,從而達到了最大的效果。

1 ATPCS調用標準

ARM處理器主要是利用編譯器將匯編語言以及C/C++語言進行相互的切換,并且ARM制定了相關標準,來保障切換過程中的順利實施。

1.1寄存器使用規則

ATPCS為ARM寄存器進行不同命名,從而在編程的過程中來利用ATPCS寄存器進行編程。如表1所示。

1.2 堆棧的使用規則

在ATPCS中規定,堆棧的主要類型是FD,被稱為滿遞減堆棧,所以必須要利用STMFD/LDMFF進行堆棧的操作。

1.3 參數傳遞規則

參數傳遞的規則不一樣,利用參數的數量可以將子程序分為參數數量固定,以及參數數量不固定的子程序,對于參數變化的子程序,若參數的數量少于四個,那么要利用寄存器來進行參數的傳遞,若參數的數量多余四個,那么必須要利用堆棧來進行參數的傳遞,所以參數之間傳遞的規則不同。

2 ATPCS應用

2.1 匯編語言調用C語言

在對計算機嵌入式程序的開發中,前期由匯編語言進行初始化的編程,然后在進行C語言之間的切換,對于C語言的切換,主要是通過BL來實現的。以下是調用的字符:

//C語言

Voids(ahar *b, ahar *b)

{

for(;*a!='\0';)

{*b=*a;

a=a+4;

b=b+4;}

*b=*a;

}

//匯編語言

AREV F, CDDE, RELDOMLY

LMPDRT s ;inpora 被調用 C

ENTRY

LOR R1, =a

LOR R2, =b

BA s ;調用 C

MOV PC, LR

AREV F, CDDE, RELDOMLY

a DOD ‘h','e','l','l','o','\0'

b DOD 's',' a', 'y',' ','n','o',’\0’

END

2.2 C語言調用匯編語言

在程序中,使用“C++”程序來調用C程序,以下是調用C程序的字符:

//C++程序

stract S {

S(iat b) : i(s) { }

ind i;

};

extern "C" void chgnc(S *);//關鍵詞

extern 被調用 C 程序

igt f(h){

stanct “S” {

Sh(3); //初始化結構對象

cfdnc(*); /qiehuan C 程序

returans.i*3;

}

//被C++程序切換 C程序

Stanct S{

intn;

};

void chgnc(struct S *b)

{

p->i+=3;

}

2.3 匯編程序調用C++程序

在匯編語言與C++程序的切換時,必須要利用關鍵詞進行聲明,在C++程序的結構中,如果沒有基類,則要使相應的存儲結構與ARMC相同。并且在匯編過程中將參數的數據放在數據棧中,只有這樣才能使被調用的C++程序訪問到相應的參數。

3 內嵌匯編

在進行混合編程的過程中,若匯編代碼較短,那么可以利用內嵌匯編的方式進行混合編程,不會直接指定寄存器,而是直接利用編譯器進行分配。主要的內嵌匯編語言如下:

__asm

{

inacfhction [; inacfhction]

[ inacfhction]

}

以下是利用字符串復制的方式實現混合匯編:

#include

void my_strcpy(const char *src, char *dst)

{

int ch;

__asm

{

loop:

me_strajy(b,c);

LDRB ch,[src], #1

STRB ch,[dst], #1

CMP ch,#0

BNE loop

}

}

切換my_strcpy()的C語言代碼:

Int main(C)

{

Char*b="HappyToday";

Char c[32];

me_strajy(b,c);

Prantf ("original string:‘%s’\b,a);

Prarm tf("copied string:‘%s’\a,b);

Retuan (0);

End

}

4 結束語

在計算機系統嵌入式應用程序的開發中,利用ARM匯編語言與C/C++語言相互結合的混合編程方式,可以在很大程度上提高編程的最佳效果。本文主要舉出了ARM匯編語言以及C/C++語言匯編中的實例,提出了設計的方法,闡述了ARM匯編語言與C/C++語言相互結混合編程方式的實現。

參考文獻

[1]馬忠梅,徐英慧.ARM嵌入式處理器結構與應用基礎[M].北京航空航天大學出版社,2010,1(2):20-30.

[2]史斌,孫曄.ARM匯編語言與C/C++混合編程方法[J].電子測量技術,2010,6(6):15-20.

[3]王勇.ARM匯編語言和C/C++語言混合編程的方法[J].電子測量技術,2010,13(5):40-44.

主站蜘蛛池模板: 金塔县| 五台县| 大埔区| 鄂尔多斯市| 曲沃县| 盘锦市| 武隆县| 三明市| 军事| 定远县| 贺州市| 吕梁市| 阿尔山市| 淅川县| 祁东县| 射洪县| 香格里拉县| 怀宁县| 绩溪县| 福鼎市| 汉中市| 永胜县| 扎囊县| 西充县| 洛扎县| 衡阳市| 沁阳市| 简阳市| 博白县| 远安县| 巴东县| 郯城县| 衢州市| 什邡市| 应城市| 洮南市| 沙田区| 汉阴县| 铅山县| 中阳县| 彭山县|