前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的匯編程序主題范文,僅供參考,歡迎閱讀并收藏。
關(guān)鍵詞:匯編語(yǔ)言程序設(shè)計(jì); 教學(xué)方法; 內(nèi)聯(lián)編程
1課程的現(xiàn)狀
匯編語(yǔ)言不同于其它高級(jí)語(yǔ)言,必須要求編程人員有一定的硬件基礎(chǔ),如對(duì)CPU的結(jié)構(gòu)、CPU與存儲(chǔ)器等部件的數(shù)據(jù)傳送過(guò)程必須要有基本的了解,這樣才能學(xué)好這門課程。在教學(xué)過(guò)程中,我們發(fā)現(xiàn)學(xué)生對(duì)高級(jí)語(yǔ)言編程學(xué)習(xí)積極性高,對(duì)匯編語(yǔ)言課程缺乏興趣,因?yàn)檎n程本身指令復(fù)雜,規(guī)定繁多,再加上學(xué)習(xí)匯編指令前對(duì)CPU的相關(guān)工作過(guò)程理解不透,導(dǎo)致學(xué)生厭學(xué),又由于本課程面對(duì)的低年級(jí)學(xué)生只有高級(jí)語(yǔ)言的基礎(chǔ),習(xí)慣于高級(jí)語(yǔ)言的自然表達(dá),初次接觸計(jì)算機(jī)硬件知識(shí)心理上有恐懼感,更難以適應(yīng)繁雜的低級(jí)語(yǔ)言。
針對(duì)本課程的特點(diǎn),對(duì)教學(xué)內(nèi)容、環(huán)節(jié)、過(guò)程等進(jìn)行了精心設(shè)計(jì),下面就教學(xué)方法的設(shè)計(jì)、實(shí)踐教學(xué)方法、課程考核形式等方面進(jìn)行的一系列改革進(jìn)行詳細(xì)探討。
2教學(xué)方法設(shè)計(jì)改革
為了避免學(xué)生因指令復(fù)雜,規(guī)定繁多、難度大而對(duì)該課程產(chǎn)生畏懼的學(xué)習(xí)心理,教師有必要對(duì)教學(xué)內(nèi)容進(jìn)行合理組織,對(duì)教學(xué)過(guò)程進(jìn)行精心的設(shè)計(jì)。
2.1利用FLASH技術(shù),使教學(xué)難點(diǎn)容易理解
在多年的教學(xué)過(guò)程中,我發(fā)現(xiàn)學(xué)生在學(xué)習(xí)CPU結(jié)構(gòu)這章節(jié)中,對(duì)介紹的CPU由哪些寄存器(名稱、大小)構(gòu)成,各個(gè)寄存器的含義,用途,CPU與存儲(chǔ)器等部件的數(shù)據(jù)傳送過(guò)程,會(huì)覺得很抽象,多數(shù)同學(xué)都是采用死記硬背的方式,這章節(jié)是第二章節(jié)的內(nèi)容,也是能否學(xué)好該課程關(guān)鍵的一章,如果理解不深,這無(wú)疑為后續(xù)的學(xué)習(xí),特別是尋址方式的學(xué)習(xí)埋下了隱患。
針對(duì)這個(gè)問題,教師有必要對(duì)教學(xué)過(guò)程進(jìn)行精心的設(shè)計(jì)。
在這章節(jié)中我們利用FLASH技術(shù),把各種尋址方式下傳送指令的CPU與存儲(chǔ)器等部件的數(shù)據(jù)傳送過(guò)程以動(dòng)畫形式展現(xiàn)給學(xué)生,使得復(fù)雜,抽象的過(guò)程變得直觀,學(xué)生理解比較容易,也加深了對(duì)尋址方式的記憶。
2.2對(duì)比法教學(xué)
目前計(jì)算機(jī)專業(yè)的課程設(shè)置中,《匯編程序語(yǔ)言的程序設(shè)計(jì)》課程通常是學(xué)習(xí)完C語(yǔ)言課程之后開始學(xué)習(xí)的。所以在教學(xué)中可以采用對(duì)比法來(lái)講解課程,對(duì)某些語(yǔ)法知識(shí)點(diǎn)和程序設(shè)計(jì)過(guò)程我們可以以C語(yǔ)言和匯編語(yǔ)言對(duì)應(yīng)分析。
例如在介紹寄存器時(shí),由于在一般的c語(yǔ)言程序中并沒有直接使用到寄存器。因此,我們使用vC++6.0環(huán)境下的調(diào)試工具顯示一個(gè)c語(yǔ)言程序及其對(duì)應(yīng)的機(jī)器碼,讓學(xué)生看到編寫匯編程序寄存器的用途,加深了學(xué)生對(duì)匯編語(yǔ)言程序的理解。
int m=5,n=6,c;
004010E8 mov dword ptr [ebp-4],5
004010EF mov dword ptr [ebp-8],6
c=m+n;
004010F6 mov eax,dword ptr [ebp-4]
004010F9 add eax,dword ptr [ebp-8]
004010FC mov dword ptr [ebp-0Ch],eax
在介紹語(yǔ)法知識(shí)時(shí),比如變量的定義:
C語(yǔ)言中的變量定義形式如下:
int c1,c2=0;
匯編語(yǔ)言的變量定義形式如下:
cl DW ?
c2 DW 0 轉(zhuǎn)貼于
2.3抽象概念的比喻教學(xué)法
在對(duì)段地址和偏移地址的講解過(guò)程中,可以采用比喻法,把操作數(shù)比喻成學(xué)生,把教室的房間號(hào)比喻成段地址,教室內(nèi)每個(gè)座位編個(gè)號(hào),編號(hào)就是偏移地址,要想到教室把某個(gè)學(xué)生找到,就要找到相應(yīng)的教室號(hào),再到對(duì)應(yīng)的座位號(hào)找到這個(gè)學(xué)生,同理,要想把主存中的操作數(shù)找到就要找到段地址和相應(yīng)的偏移地址,另外要讓學(xué)生知道每個(gè)教室里的座位號(hào)都是從0號(hào)開始編號(hào)的,也就是每個(gè)段里的偏移地址如果不特別指定,也是從0號(hào)開始編號(hào)的。
3實(shí)踐教學(xué)改革
3.1增強(qiáng)實(shí)驗(yàn)環(huán)節(jié),做一些實(shí)際項(xiàng)目
程序設(shè)計(jì)對(duì)于大多數(shù)的初學(xué)者來(lái)說(shuō)有一定的難度。對(duì)于給定的一個(gè)實(shí)驗(yàn)題目,許多學(xué)生往往感到無(wú)從下手。目前的上機(jī)實(shí)驗(yàn)時(shí)間往往很短,常常是學(xué)生才剛剛有點(diǎn)入門,實(shí)驗(yàn)環(huán)節(jié)就結(jié)束了;且課外實(shí)踐環(huán)節(jié)幾乎沒有,導(dǎo)致學(xué)生即使課內(nèi)學(xué)的再好也不會(huì)應(yīng)用。
在實(shí)驗(yàn)設(shè)計(jì)方面可以先把一些經(jīng)典的程序提供給學(xué)生,例如分支結(jié)構(gòu)的設(shè)計(jì)、循環(huán)結(jié)構(gòu)的設(shè)計(jì)等,讓學(xué)生在寫出C語(yǔ)言程序之后再設(shè)計(jì)匯編程序,找出兩者編程思維的區(qū)別。這樣通過(guò)一段時(shí)間的經(jīng)驗(yàn)積累,就能夠編寫比較復(fù)雜的的程序,由于上機(jī)時(shí)間有限,可以每次實(shí)驗(yàn)課之后布置一些題目供學(xué)生選擇思考,讓學(xué)生課外分組來(lái)設(shè)計(jì)這些程序,題目的類型可以是研討型的讓學(xué)生從更多的角度去思考上機(jī)實(shí)驗(yàn)過(guò)的題目,編寫出不同的程序;另一種為編程型,
例如可以設(shè)置這2道題目,音樂小鍵盤、貪吃蛇游戲等,以加強(qiáng)同學(xué)們的編程能力的訓(xùn)練。
3.2采用與高級(jí)語(yǔ)言混合編程
目前越來(lái)越多的場(chǎng)合要使用匯編語(yǔ)言和高級(jí)語(yǔ)言進(jìn)行混合編程,因此在教學(xué)時(shí)應(yīng)強(qiáng)調(diào)匯編語(yǔ)言和C/C++的混合編程,并且這樣也可以為今后嵌入式系統(tǒng)軟件開發(fā)的學(xué)習(xí)打下堅(jiān)實(shí)的軟硬件基礎(chǔ)。
在實(shí)驗(yàn)課中可以借助 Visual C++開發(fā)工具,采用內(nèi)聯(lián)匯編的方式,在 C/C++源程序中嵌入?yún)R編指令序列完成一定的功能,并讓學(xué)生設(shè)置斷點(diǎn)然后跟蹤執(zhí)行,同時(shí)注意觀察寄存器的內(nèi)容和變量的值。這樣可以一方面讓同學(xué)們熟練掌握兩種語(yǔ)言的切換使用,另一方面讓他們感受到兩種語(yǔ)言各有特點(diǎn)。例如可以利用匯編語(yǔ)言處理高級(jí)語(yǔ)言中不方便處理的一些問題。
4課程考核形式改革
因?yàn)椤皡R編語(yǔ)言程序設(shè)計(jì)”是實(shí)踐性很強(qiáng)的一門課程,所以實(shí)驗(yàn)課成績(jī)應(yīng)該在總成績(jī)中占有相當(dāng)大的比重。目前大多數(shù)高校的匯編語(yǔ)言課程的實(shí)驗(yàn)課成績(jī)只占很小的比重,即理論知識(shí)往往占課程期末考核總成績(jī)的70%~80%,這樣往往會(huì)導(dǎo)致學(xué)生不得不將大量的精力放在理論知識(shí)的學(xué)習(xí)中,結(jié)果只會(huì)造就大批的應(yīng)試高手。在教學(xué)中,我們遇到過(guò)有的學(xué)生考試試卷能考90分以上,卻連最基本的計(jì)算機(jī)操作都不能動(dòng)手。今后這門課程的考核,實(shí)驗(yàn)課成績(jī)應(yīng)該提高到占總成績(jī)的1/2。老師在實(shí)驗(yàn)中應(yīng)該營(yíng)造出互動(dòng)氣氛,檢查每個(gè)學(xué)生的完成情況同時(shí)做好記錄,根據(jù)學(xué)生的實(shí)際動(dòng)手情況給出他們的平時(shí)實(shí)驗(yàn)成績(jī),而不是只依據(jù)交上來(lái)的實(shí)驗(yàn)報(bào)告,這樣也能杜絕抄襲之風(fēng)。
5結(jié)束語(yǔ)
通過(guò)教學(xué)改革的實(shí)踐,在一定程度上提高了他們對(duì)本課程的學(xué)習(xí)積極性,又降低了學(xué)習(xí)難度。良好的教學(xué)效果是永遠(yuǎn)追求的目標(biāo),在今后的教學(xué)中,我們還需要不斷進(jìn)行探索、研究和嘗試,不斷更新觀念,發(fā)現(xiàn)自身教學(xué)過(guò)程中的問題,找到解決辦法,提高教學(xué)效果。
參考文獻(xiàn)
[1] 王成耀.80x86匯編語(yǔ)言程序設(shè)計(jì)[M].北京:人民郵電出版社,2008(第2版).
[2] 卜登立,彭嵩松,唐衛(wèi)東,龍侃.“匯編語(yǔ)言程序設(shè)計(jì)”課程教學(xué)改革研究與探討[J].井岡山學(xué)院學(xué)報(bào),2009,30(10):124-127.
“微機(jī)原理與接口技術(shù)”是電子電氣信息類專業(yè)中一門非常重要的專業(yè)基礎(chǔ)課程,其內(nèi)容包括微處理器基本結(jié)構(gòu)與工作原理、匯編語(yǔ)言指令系統(tǒng)、常用接口芯片的基本原理與編程方式、通過(guò)系統(tǒng)總線與外設(shè)接口進(jìn)行連接的基本方法等,具備軟件與硬件緊密結(jié)合的顯著特點(diǎn)。該課程幫助學(xué)生從根本上認(rèn)識(shí)和理解計(jì)算機(jī)的底層工作原理[1],培養(yǎng)學(xué)生綜合運(yùn)用模擬電子技術(shù)、數(shù)字電子技術(shù)和匯編語(yǔ)言、C語(yǔ)言等相關(guān)知識(shí),理解接口電路工作原理,設(shè)計(jì)接口電路及對(duì)接口電路進(jìn)行初始化編程的能力。其中,匯編語(yǔ)言的編程能力對(duì)學(xué)生理解硬件工作原理及對(duì)接口芯片進(jìn)行初始化編程具有非常重要的意義。筆者在實(shí)驗(yàn)教學(xué)中利用Debug[2-3]調(diào)試程序引導(dǎo)學(xué)生對(duì)匯編語(yǔ)言程序的執(zhí)行過(guò)程進(jìn)行詳細(xì)跟蹤分析,幫助學(xué)生理解計(jì)算機(jī)底層[4]工作的實(shí)質(zhì),取得了顯著的效果。
1 主要命令簡(jiǎn)介
2.1 排序前內(nèi)存中數(shù)據(jù)的存儲(chǔ)情況
閱讀此段程序可知,子程序disp用以顯示字符串“Hello World!”,將disp子程序定義為中斷處理子程序,分配的中斷類型號(hào)為67H,利用指令“int 67h”實(shí)現(xiàn)中斷調(diào)用顯示字符串。子程序init_int將67H號(hào)中斷原來(lái)的中斷向量從中斷向量表中取出來(lái)加以保存,將disp子程序的入口地址填寫至中斷向量表中把原來(lái)的中斷向量替換掉。子程序restore_int用以恢復(fù)原來(lái)的中斷向量。對(duì)程序調(diào)試過(guò)程如下。
4.1 查找原中斷向量和數(shù)據(jù)段的值
5 結(jié)束語(yǔ)
利用Debug調(diào)試程序的主要命令,結(jié)合實(shí)例闡述了匯編程序執(zhí)行過(guò)程的跟蹤方法,展示了Debug調(diào)試程序強(qiáng)大的功能。在教學(xué)中,要充分利用Debug調(diào)試程序的幾個(gè)主要命令,對(duì)課程內(nèi)容做層次化設(shè)計(jì)[8],引導(dǎo)學(xué)生對(duì)匯編語(yǔ)言程序的執(zhí)行過(guò)程加以詳細(xì)跟蹤和比較分析,從而深入理解計(jì)算機(jī)底層工作的實(shí)質(zhì),這種方法不僅適用于“微機(jī)原理與接口技術(shù)”課程,對(duì)于其他微處理器和高級(jí)語(yǔ)言的學(xué)習(xí)都是有價(jià)值的。
參考文獻(xiàn):
[1] 曹玉波.Debug軟件在微機(jī)原理課程教學(xué)中的應(yīng)用與實(shí)踐[J].吉林化工學(xué)院學(xué)報(bào),2010.27(5):21-24
[2] 龍祖強(qiáng),梁昔明,楊利容.匯編語(yǔ)言程序調(diào)試工具DEBUG淺析[J].衡陽(yáng)師范學(xué)院學(xué)報(bào),2008.29(6):33-35
[3] 董潔.淺談DEBUG程序的主要命令用法[J].赤峰學(xué)院學(xué)報(bào),2007.23(5):61-62
[4] 孫丹嶺,蔣方炎.匯編語(yǔ)言和微機(jī)接口技術(shù)實(shí)驗(yàn)教學(xué)探討[J].計(jì)算機(jī)教育,2011.17:43-45
[5] 錢曉捷.匯編語(yǔ)言程序設(shè)計(jì)[M].電子工業(yè)出版社,2000.
[6] 羅萬(wàn)鈞.田立炎,馮子綱,馮世蔚.匯編語(yǔ)言程序設(shè)計(jì)[M].西安電子科技大學(xué)出版社,1998.
匯編語(yǔ)言傳送指令是匯編語(yǔ)言中使用的一些操作符和助記符,還包括一些偽指令。
用于告訴匯編程序如何進(jìn)行匯編的指令,它既不控制機(jī)器的操作也不被匯編成機(jī)器代碼,只能為匯編程序所識(shí)別并指導(dǎo)匯編如何進(jìn)行。
(來(lái)源:文章屋網(wǎng) )
關(guān)鍵詞 仿真技術(shù) 微機(jī)原理 EMU8086
隨著信息科學(xué)的發(fā)展,高校課程體系也在改革,微機(jī)原理的教學(xué)課時(shí)不斷被壓縮,這提高了實(shí)際講授和學(xué)習(xí)的難度,學(xué)生普遍反映難度大且不容易理解,教學(xué)效果一般。為了提高教學(xué)效率,并在一定程度上降低學(xué)習(xí)難度,本文依據(jù)筆者的教學(xué)經(jīng)驗(yàn),借助多媒體教室的平臺(tái)優(yōu)勢(shì),發(fā)揮CAD仿真工具直觀形象的功能特點(diǎn),對(duì)微機(jī)原理課程的重點(diǎn)和難點(diǎn)部分做了課堂同步仿真演示,并對(duì)仿真過(guò)程和結(jié)果做出分析,取得了較好的教學(xué)效果,同時(shí)也調(diào)動(dòng)了學(xué)生的積極性。
目前,計(jì)算機(jī)在高校圖書館和學(xué)生中相當(dāng)普及,課下學(xué)生可在教師課件和仿真文件的幫助下,對(duì)課程的教學(xué)內(nèi)容做仿真分析,這調(diào)動(dòng)了學(xué)生學(xué)習(xí)積極性的同時(shí)也培養(yǎng)了獨(dú)立分析和解決問題的能力。在電子設(shè)計(jì)分析領(lǐng)域中,CAD仿真工具眾多,本文以EMU8086為仿真工具,結(jié)合實(shí)例介紹將仿真技術(shù)引入微機(jī)原理課堂教學(xué)中所體現(xiàn)的優(yōu)勢(shì)。
一、EMU8086軟件介紹
EMU8086是一款基于Windows平臺(tái)的8086微處理器仿真軟件,內(nèi)部集成了匯編程序、連接器和調(diào)試器,并提供了豐富的設(shè)計(jì)例程和參考資料。該軟件可模擬真實(shí)微處理器運(yùn)行程序的過(guò)程,也可單步執(zhí)行并顯示寄存器、存儲(chǔ)器、堆棧、標(biāo)志寄存器以及變量的值,對(duì)數(shù)值的修改通過(guò)鼠標(biāo)操作即可完成。另外,通過(guò)EMU8086還可模擬IO接口及顯示器、直流步進(jìn)電機(jī)、交通紅綠燈和LED等外設(shè)。
二、EMU8086仿真在課堂教學(xué)中的運(yùn)用
(一)源程序的輸入和編譯。在EMU8086環(huán)境下,系統(tǒng)提供了四套模板com/exe/bin/boot,分別用于簡(jiǎn)單程序段、完整匯編程序、二進(jìn)制源碼和啟動(dòng)程序的高效輸入編寫。結(jié)合微機(jī)原理課程特點(diǎn),本文選擇exe模板,輸入?yún)R編程序代碼如下:
data segment
x dd 11111111h
y dd 2222F222h
z dd ?
ends
stack segment
dw 128 dup(0)
ends
code segment
assume cs: code, ds:data, ss:stack
start:
mov ax, data
mov ds, ax
mov si, offset x
mov di, offset y
mov bx, offset z
mov ax, [si]
mov cx, [di]
add ax, cx
mov [bx], ax
mov ax, [si+2]
mov cx, [di+2]
adc ax,cx
mov [bx+2], ax
mov ah, 4ch
int 21h
ends
end start
該程序采用完整匯編程序結(jié)構(gòu)編寫,用于完成存儲(chǔ)器中兩個(gè)32位二進(jìn)制數(shù)的加法操作,并將結(jié)果送存儲(chǔ)器保存;其中涉及數(shù)據(jù)傳送指令、加法指令和中斷調(diào)用指令的使用。將源文件存盤后進(jìn)行編譯,并根據(jù)系統(tǒng)提示修改可能出現(xiàn)的錯(cuò)誤,編譯通過(guò)后即可進(jìn)行模擬仿真。
(二)仿真分析。點(diǎn)擊工具欄emulate按鈕,即可對(duì)編譯得到的可執(zhí)行文件進(jìn)行仿真,并出現(xiàn)如圖1所示的仿真界面:
仿真界面同時(shí)以窗口形式顯示了:源程序代碼、機(jī)器碼、反匯編代碼、通用寄存器值和段寄存器值等信息,方便使用者對(duì)照分析;底部擴(kuò)展按鈕可用于查看標(biāo)志寄存器、變量、堆棧段、存儲(chǔ)器、ALU數(shù)據(jù)。工具欄按鈕實(shí)現(xiàn)程序控制功能,如:reload可重新加載程序,run可運(yùn)行程序,single back和single step可分別控制程序向后與向前單步執(zhí)行。在程序執(zhí)行中,各通用寄存器的值同步更新。
對(duì)本程序單步執(zhí)行“add ax, cx”指令后,寄存器AX的值更新為0333H,進(jìn)位標(biāo)志為1,實(shí)現(xiàn)了變量x和y的低16數(shù)據(jù)相加。在仿真界面也可得到如下信息:指令“add ax, cx”對(duì)應(yīng)的機(jī)器碼為“07222:03H, 07223:C1H”,對(duì)應(yīng)的反匯編指令為“add ax, cx”。
此仿真過(guò)程可以直觀形象地向?qū)W生展示CPU工作的狀態(tài)變化和工作原理,以及匯編和反匯編的對(duì)應(yīng)信息。在實(shí)際課程教學(xué)的相關(guān)章節(jié)中適當(dāng)添加EMU8086的仿真演示,可獲得較好的教學(xué)效果。
三、結(jié)束語(yǔ)
本文針對(duì)《微機(jī)原理》課程的特點(diǎn),提出了將仿真技術(shù)引入課程教學(xué)的方法,并結(jié)合實(shí)例給出了仿真過(guò)程介紹和分析,提高了教學(xué)效率,調(diào)動(dòng)了學(xué)生的積極性,是一種較好的教學(xué)方式,取得了較好的實(shí)際教學(xué)效果。
參考文件:
李娜娜(1981-),女,商丘市人,本科,助理實(shí)驗(yàn)師,研究方向:計(jì)算機(jī)教學(xué)與研究。
摘要:C語(yǔ)言和匯編語(yǔ)言原本各自獨(dú)立,在單片機(jī)程序設(shè)計(jì)中各具優(yōu)勢(shì)。為減輕程序開發(fā)難度,并提高程序的效率,將兩種設(shè)計(jì)語(yǔ)言混合是最好的方式。主要對(duì)混合編程機(jī)理以及函數(shù)的混合調(diào)用進(jìn)行了分析。
關(guān)鍵詞:C語(yǔ)言;匯編語(yǔ)言;混合編0.引言
當(dāng)前的單片機(jī)系統(tǒng)程序設(shè)計(jì)多依靠?jī)煞N設(shè)計(jì)語(yǔ)言完成,一是C語(yǔ)言,它具有良好的可讀性和較強(qiáng)的可移植性,不足之處在于難以精確控制程序的運(yùn)行時(shí)間,而且編碼效率較低;二是匯編語(yǔ)言,其編碼效率高,但是可讀性并不理想,且數(shù)據(jù)運(yùn)算處理函數(shù)設(shè)計(jì)極為復(fù)雜。在提高運(yùn)行效率的同時(shí),為了能降低開發(fā)難度,將C語(yǔ)言和匯編語(yǔ)言混合使用成了研究重點(diǎn)。
1.原理
設(shè)計(jì)人員在利用純匯編語(yǔ)言設(shè)計(jì)程序時(shí),常會(huì)出現(xiàn)代碼重疊的情況,這就要求綜合代碼長(zhǎng)度、代碼段的起始地址等因素加以考慮;設(shè)計(jì)中斷服務(wù)函數(shù)時(shí),需保證代碼定位的準(zhǔn)確性;使用數(shù)據(jù)段時(shí),需合理分配寄存器空間,為提高對(duì)空間的利用率,通常還會(huì)涉及數(shù)據(jù)生存期等問題。如果使用純C語(yǔ)言進(jìn)行編程,則無(wú)需考慮這些問題,可將其交由編譯器和連接器完成?;贑語(yǔ)言的程序最終經(jīng)編譯器轉(zhuǎn)換,會(huì)形成包含有代碼段定位、寄存器使用狀況等信息的匯編語(yǔ)言文件。因此,在今后可以此匯編文件規(guī)范進(jìn)行匯編程序的編寫工作,從而使得編譯器和連接器將C語(yǔ)言代碼和匯編代碼相結(jié)合。
2.函數(shù)的混合調(diào)用機(jī)制
2.1 函數(shù)特征及命名規(guī)則
在編寫函數(shù)時(shí)通常要考慮很多因素,如有無(wú)參數(shù)傳遞、有無(wú)返回值、是否是公共函數(shù)等。只有這些條件成立,才能成為函數(shù)。函數(shù)都有名稱,如在A51中 利用ACALL、LCALL兩個(gè)指令調(diào)用函數(shù),就以指令的操作函數(shù)作為函數(shù)名稱,在程序體內(nèi)具有唯一性。匯編時(shí)調(diào)用C函數(shù),如果C函數(shù)無(wú)需依靠寄存器傳遞函數(shù),則ACALL的參數(shù)就是C函數(shù)的名稱;反之,ACALL的參數(shù)需要在C函數(shù)名稱前面加一個(gè)下劃線“_”。在編寫匯編函數(shù)時(shí),需在利用寄存器傳遞參數(shù)的匯編函數(shù)名稱以下劃線開始。
2.2 參數(shù)傳遞方式
通常依靠以下兩種方式傳遞函數(shù)參數(shù):
①工作寄存器
對(duì)參數(shù)數(shù)量有限制,如果參數(shù)過(guò)多,則盡量選擇另一種方式。Keil編譯環(huán)境將工作寄存器作為默認(rèn)的傳遞方式,若不能傳遞所有參數(shù),剩余的參數(shù)需要借助數(shù)據(jù)緩沖區(qū)完成。是否使用工作寄存器傳遞函數(shù)參數(shù),可通過(guò)編譯器人為地控制,如#pragma noregparms為禁止使用,#pragma regparms則表示開啟。指令與C函數(shù)的名稱也有關(guān),因?yàn)椴皇褂眠@種方式,那么就無(wú)需在C函數(shù)前面加下劃線。
雖然51單片機(jī)安裝有4個(gè)工作寄存器組,但一次只能使用一組。在C語(yǔ)言中常借助using n(n=0,1,2,…,n)來(lái)表示參與參數(shù)傳遞的寄存器組,n是其序號(hào)。應(yīng)注意的是,若兩個(gè)參與參數(shù)傳遞的函數(shù)使用的寄存器組不是同一個(gè),那么函數(shù)參數(shù)就無(wú)法正確地傳遞。這意味著在函數(shù)調(diào)用時(shí)盡量不要改變寄存器組。這4個(gè)寄存器組中有一個(gè)8字節(jié)的,最多只能傳遞3個(gè)參數(shù)。函數(shù)中傳遞參數(shù)最多的數(shù)量為4個(gè)。
②數(shù)據(jù)緩沖
在C函數(shù)中調(diào)用匯編函數(shù),因?yàn)槿考?xì)節(jié)在匯編函數(shù)內(nèi)部都進(jìn)行了處理,所以采用兩種方式的操作具有一致性。在匯編中處理C函數(shù)參數(shù)表的難度較大,尤其是訪問參數(shù)寄存器時(shí)。利用寄存器傳遞參數(shù)時(shí),寄存器的地質(zhì)具有固定性,可以直接訪問。然而采用數(shù)據(jù)緩沖的傳遞方式時(shí),參數(shù)地址是由編譯器和連接器自動(dòng)分配的,需采用偏移地址的方法才能確定參數(shù)具置。其實(shí)在這兩種傳遞方式中,參數(shù)都?xì)w為函數(shù)的局部變量,但只有對(duì)數(shù)據(jù)緩沖區(qū)的參數(shù)才能通過(guò)偏移地址的方法訪問。
利用偏移地址訪問C函數(shù)的參數(shù)時(shí),需在匯編中將調(diào)用的數(shù)據(jù)段首地址?fuc_name?BYTE通過(guò)extrn data(?func_name?BYTE)加以說(shuō)明,然后通過(guò)MOV?func_name?BYTE+n,A等賦值指令進(jìn)行訪問。
2.3 函數(shù)的聲明與定位
C語(yǔ)言程序中函數(shù)體的聲明為:void c_func(void)。這是一個(gè)名稱為c_func且沒有參數(shù)傳遞及返回值的函數(shù)??砂凑找韵路绞綄?shí)現(xiàn)函數(shù)體的定義:
Void c_func(void)
{
/*c_func()函數(shù)體*/
}
匯編語(yǔ)言包括有傳遞參數(shù)及無(wú)傳遞參數(shù)的兩種函數(shù),一般匯編程序設(shè)計(jì)時(shí)無(wú)需區(qū)分,但混合編程需要給編譯器一個(gè)函數(shù)是否有參數(shù)傳遞的標(biāo)志,即函數(shù)名稱之前是否有下劃線。若有說(shuō)明有參數(shù)傳遞,反之則沒有參數(shù)傳遞。
為提高程序的可移植性,需要對(duì)中斷項(xiàng)量表精確定位,其它函數(shù)則完全有連接器進(jìn)行定位。不過(guò)這種情況并不絕對(duì),比如需要給程序加密時(shí)應(yīng)將某段代碼精確定位于一個(gè)固定的地址,此時(shí)便需要絕對(duì)定位。設(shè)計(jì)時(shí)可利用ORG、AT任意一個(gè)關(guān)鍵詞對(duì)代碼段進(jìn)行定位,但若是數(shù)據(jù)段定位,只能選擇后者。
3.混合編程的應(yīng)用分析
某類測(cè)量?jī)x器主要用于檢測(cè)物體表面的污染程度,主控制器使用的是uPSD芯片psd3224,具有控制外設(shè)及處理數(shù)據(jù)等功能。在開發(fā)時(shí)需要對(duì)時(shí)間和時(shí)序進(jìn)行嚴(yán)格控制,這就對(duì)匯編語(yǔ)言提出了較高的要求。另外,有大量數(shù)據(jù)需要處理,匯編語(yǔ)言難以完成,此時(shí)應(yīng)選擇C語(yǔ)言編寫。最后將這兩種設(shè)計(jì)語(yǔ)言混合使用,既有利于提高代碼使用效率,又能夠起到簡(jiǎn)化系統(tǒng)設(shè)計(jì)的作用。
因篇幅有限,在此只給出了部分程序,程序包含main.asm和file_c.c兩個(gè)文件。前者為匯編程序文件,里面包括主程序main和一個(gè)有參數(shù)傳入和傳出的控制函數(shù)char control(char);后者為C語(yǔ)言文件,包括一個(gè)8b與8b乘法的處理函數(shù)int process(char)。
ACALL_PROCESS
MOV A,R7;處理process()函數(shù)的返回值的低位
MOV B,R6;處理process()函數(shù)的返回值的高位
AJMP MAIN
;char control(char i);
PUBLIC_CONTROL;聲明control()為public型
?PR?_CONTROL;FILE_ASM SEGMENT CODE AT 0100H;control()函數(shù)的代碼段聲明
RSEG?PR?_CONTROL?FILE_ASM;control()函數(shù)代碼段的開始
…
…
…
{
int result;
result=i*100;
i=control(i);//調(diào)用匯編控制程序
Return result;
}
4.結(jié)束語(yǔ)
該儀器在程序設(shè)計(jì)時(shí)采用C語(yǔ)言和匯編語(yǔ)言混合的方法,使得程序設(shè)計(jì)更加簡(jiǎn)單,開發(fā)周期有所縮短。測(cè)試結(jié)果表明,系統(tǒng)性能穩(wěn)定可靠,驗(yàn)證了函數(shù)混合調(diào)用的安全性。可見,C語(yǔ)言和匯編語(yǔ)言混合編程能取得更好的效果,值得推薦應(yīng)用。(作者單位:商丘職業(yè)技術(shù)學(xué)院)
參考文獻(xiàn):
[1]張開便.C語(yǔ)言與匯編混合編程機(jī)理探析與應(yīng)用[J].電腦開發(fā)與應(yīng)用,2010,22(4):109-110
[2]袁靜萍.C與匯編混合編程技術(shù)及其應(yīng)用實(shí)例[J].江蘇技術(shù)師范學(xué)院學(xué)報(bào),2012,24(2):143-145
二、怎么學(xué)習(xí)匯編:
1、匯編的調(diào)試環(huán)境總的來(lái)說(shuō)比較少,也很少有非常好的編譯器。
2、設(shè)計(jì)的輕松匯編是一款非常適合初學(xué)者的匯編編譯器。輕松匯編是一個(gè)匯編語(yǔ)言集成開發(fā)環(huán)境,主要面向匯編語(yǔ)言初學(xué)者,也可以用它進(jìn)行開發(fā)。
關(guān)鍵詞:微機(jī)原理;接口技術(shù);教學(xué)改革
作者簡(jiǎn)介:王昊(1985-),男,江蘇泰州人,南京理工大學(xué)泰州科技學(xué)院,助教。(江蘇 泰州 225300)
中圖分類號(hào):G642.0?????文獻(xiàn)標(biāo)識(shí)碼:A?????文章編號(hào):1007-0079(2012)31-0084-02
“微機(jī)原理與接口技術(shù)”是電子信息類專業(yè)的一門必修專業(yè)基礎(chǔ)課程。課程內(nèi)容涉及8086CPU工作原理及匯編語(yǔ)言設(shè)計(jì)、存儲(chǔ)器工作原理及擴(kuò)展設(shè)計(jì)、接口電路工作原理及應(yīng)用設(shè)計(jì)三大方面,是一門兼有軟件設(shè)計(jì)與硬件電路設(shè)計(jì)的綜合應(yīng)用性課程。[1]隨著計(jì)算機(jī)科學(xué)的發(fā)展,微機(jī)的應(yīng)用也愈加廣泛,“微機(jī)原理與接口技術(shù)”課程在整個(gè)專業(yè)課程體系中也占據(jù)著越來(lái)越重要的地位,課程的教學(xué)質(zhì)量好壞將直接影響學(xué)生后續(xù)課程的學(xué)習(xí)及畢業(yè)就業(yè)。因此,如何把握學(xué)生學(xué)習(xí)現(xiàn)狀,激發(fā)學(xué)生學(xué)習(xí)熱情,開拓學(xué)生思維,挖掘?qū)W生動(dòng)手實(shí)踐能力,成為教學(xué)工作的重中之重。
一、“微機(jī)原理與接口技術(shù)”教學(xué)現(xiàn)狀
依據(jù)筆者所在學(xué)院“微機(jī)原理與接口技術(shù)”課程教學(xué)大綱安排,設(shè)定學(xué)分?jǐn)?shù)為3,學(xué)時(shí)數(shù)為48,其中理論教學(xué)40學(xué)時(shí),實(shí)驗(yàn)教學(xué)8學(xué)時(shí)。教材選用彭虎、周佩玲編著,電子工業(yè)出版社出版的《微機(jī)原理與接口技術(shù)》,并配以其編著的《微機(jī)原理與接口技術(shù)學(xué)習(xí)指導(dǎo)》作為參考書。課程需要學(xué)生掌握匯編語(yǔ)言、8086微處理器與接口電路,目的旨在培養(yǎng)學(xué)生軟硬件開發(fā)能力。針對(duì)獨(dú)立學(xué)院學(xué)生特點(diǎn),并結(jié)合兩屆學(xué)生的教學(xué)效果分析,發(fā)現(xiàn)傳統(tǒng)的教學(xué)過(guò)程中存在一些問題。
1.學(xué)生學(xué)習(xí)動(dòng)力匱乏
現(xiàn)今微處理器已發(fā)展至64位,而本課程主講16位的8086/8088微處理器。部分學(xué)生認(rèn)為課程學(xué)習(xí)16位微處理器缺少實(shí)際意義,沒有實(shí)際用處,從而導(dǎo)致學(xué)習(xí)能動(dòng)性薄弱。
2.課程概念性強(qiáng),記憶量大
“微機(jī)原理與接口技術(shù)”課程概念多、專用名詞多、接口芯片多、內(nèi)容抽象,相互之間缺少必要的關(guān)聯(lián)和體系。學(xué)生面對(duì)大量的抽象概念,難以記牢,從而增加學(xué)習(xí)畏難情緒。
3.課程涉及軟硬件,難度較高
“微機(jī)原理與接口技術(shù)”是學(xué)生學(xué)習(xí)的第一門涵蓋軟件設(shè)計(jì)與硬件設(shè)計(jì)兩大方面的課程,其中軟件設(shè)計(jì)采用匯編語(yǔ)言。匯編語(yǔ)言與C語(yǔ)言風(fēng)格差異較大,編程復(fù)雜。硬件設(shè)計(jì)電路接口豐富,對(duì)數(shù)電、模電相關(guān)知識(shí)應(yīng)用要求較高。學(xué)生往往很難真正掌握微機(jī)與其接口電路的內(nèi)部結(jié)構(gòu),很難形成匯編程序設(shè)計(jì)的思維方式,對(duì)教學(xué)內(nèi)容似懂非懂,更不用說(shuō)軟硬件開發(fā)能力的培養(yǎng)。同時(shí),“微機(jī)原理與接口技術(shù)”也是一門教學(xué)難度較大的課程,存在學(xué)生基礎(chǔ)差異大的問題,教師很難把握教學(xué)的進(jìn)度與深度。
4.課程實(shí)驗(yàn)缺乏挑戰(zhàn)性
課程實(shí)驗(yàn)基本為驗(yàn)證性實(shí)驗(yàn)。由教師給出匯編程序,給出電路接線圖,學(xué)生只需要將程序燒入微處理器,按照接線圖連接好各種線路,點(diǎn)擊調(diào)試運(yùn)行按鈕,記錄實(shí)驗(yàn)現(xiàn)象并撰寫實(shí)驗(yàn)報(bào)告就可。整個(gè)實(shí)驗(yàn)過(guò)程中,學(xué)生只是處于一個(gè)低級(jí)的操作工角色,很難激發(fā)學(xué)生的動(dòng)手熱情。
二、“微機(jī)原理與接口技術(shù)”教學(xué)改革
針對(duì)上述教學(xué)現(xiàn)狀中存在的問題,本文從理論教學(xué)、實(shí)驗(yàn)教學(xué)以及考核評(píng)價(jià)體系方面進(jìn)行改革探索。
1.理論教學(xué)改革
“微機(jī)原理與接口技術(shù)”內(nèi)容比較枯燥難懂,講課過(guò)程中經(jīng)常出現(xiàn)學(xué)生聽課精神萎靡的現(xiàn)象。為了激發(fā)學(xué)生的學(xué)習(xí)興趣,達(dá)到預(yù)期的教學(xué)效果,在講課內(nèi)容和講課方法上進(jìn)行改革,充分調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性和主動(dòng)性。
(1)講解課程體系,提升學(xué)生課程認(rèn)識(shí)。微機(jī)課程既是數(shù)電、模電的后續(xù)課程,又是單片機(jī)原理與應(yīng)用、數(shù)字信號(hào)處理及嵌入式系統(tǒng)等課程的學(xué)習(xí)基礎(chǔ),具有極強(qiáng)的承接作用。課堂教學(xué)中,講述微處理器從16位到64位的發(fā)展過(guò)程,梳理微機(jī)原理與接口技術(shù)、單片機(jī)、嵌入式系統(tǒng)的脈絡(luò)關(guān)系。例如,講述8086處理器結(jié)構(gòu),強(qiáng)調(diào)對(duì)單片機(jī)等處理器架構(gòu)的影響;講述8086匯編語(yǔ)言,強(qiáng)調(diào)匯編語(yǔ)言在單片機(jī)、嵌入式課程中的應(yīng)用;講述接口電路,復(fù)習(xí)數(shù)電、模電相關(guān)知識(shí),同時(shí)涉及相同接口電路在單片機(jī)、嵌入式課程中的使用。通過(guò)對(duì)課程體系的講解,加強(qiáng)學(xué)生對(duì)課程意義的認(rèn)識(shí),改變認(rèn)為微機(jī)課程無(wú)用的錯(cuò)誤觀念。
(2)弱化抽象概念,突出重點(diǎn)、難點(diǎn)。微機(jī)課程只有40理論學(xué)時(shí)。在如此短的學(xué)時(shí)之內(nèi),要將各個(gè)知識(shí)點(diǎn)都講到,做到面面俱到,顯然是不現(xiàn)實(shí)的。因此,教學(xué)過(guò)程中,將概念進(jìn)行篩選,舍去抽象、較冷僻的概念,只求學(xué)生重點(diǎn)掌握核心概念,從而消減其記憶量,將較多的課時(shí)安排到匯編程序編寫、接口電路的設(shè)計(jì)章節(jié)中。
(3)運(yùn)用多媒體動(dòng)畫,豐富講課形式。講課過(guò)程中,采用多媒體課件、FLASH動(dòng)畫等現(xiàn)代化教學(xué)手段進(jìn)行教學(xué),將圖形、文字、動(dòng)畫有機(jī)地結(jié)合在一起,豐富講課形式,增加學(xué)生學(xué)習(xí)興趣。例如,在8086尋址方式的教學(xué)過(guò)程中,8086的尋址方式共有8種,并且每種尋址方式都涉及到8086內(nèi)部存儲(chǔ)器的相應(yīng)操作,包括存儲(chǔ)器地址的形成和存儲(chǔ)器的讀寫,學(xué)生對(duì)此較難理解。為此,課堂上,利用FLASH,將存儲(chǔ)器地址的形成以及數(shù)據(jù)在存儲(chǔ)器中存入與取出的過(guò)程做成動(dòng)畫,動(dòng)態(tài)演示,富有感染力,使學(xué)生得到更多的視覺與聽覺的刺激,加速知識(shí)理解的過(guò)程。
程序文件。org是游戲系統(tǒng)里自己調(diào)用的文件,一般除了本游戲,無(wú)法另外將其打開。org在匯編語(yǔ)言中是一條指令。其作用是告訴匯編程序,在開始執(zhí)行的時(shí)候,將某段機(jī)器語(yǔ)言裝載到內(nèi)存中的哪個(gè)地址。如果沒有它,有些指令就不能正確地翻譯和執(zhí)行。由于這條指令不是機(jī)器語(yǔ)言中的直接指令,所以又被稱之為偽指令。另外,某些指令符號(hào)的含義也隨之變化。例如::RESB 0x1fe-$這條指令的含義是從現(xiàn)在開始,填寫0x00,直到0x001fe,而有了ORG指令后,美元符“$”的含義也隨之變化。它不再是指輸出文件的第幾個(gè)字節(jié),而是代表將要讀入的的內(nèi)存地址。
文件格式(或文件類型)是指電腦為了存儲(chǔ)信息而使用的對(duì)信息的特殊編碼方式,是用于識(shí)別內(nèi)部?jī)?chǔ)存的資料。比如有的儲(chǔ)存圖片,有的儲(chǔ)存程序,有的儲(chǔ)存文字信息。每一類信息,都可以一種或多種文件格式保存在電腦存儲(chǔ)中。每一種文件格式通常會(huì)有一種或多種擴(kuò)展名可以用來(lái)識(shí)別,但也可能沒有擴(kuò)展名。擴(kuò)展名可以幫助應(yīng)用程序識(shí)別的文件格式。對(duì)于硬盤機(jī)或任何電腦存儲(chǔ)來(lái)說(shuō),有效的信息只有0和1兩種。所以電腦必須設(shè)計(jì)有相應(yīng)的方式進(jìn)行信息-位元的轉(zhuǎn)換。對(duì)于不同的信息有不同的存儲(chǔ)格式。
(來(lái)源:文章屋網(wǎng) )
關(guān)鍵詞:Keil;編程;調(diào)試;仿真
年來(lái),隨著社會(huì)對(duì)人才素質(zhì)要求的不斷提高和MCU51單片機(jī)的廣泛應(yīng)用,社會(huì)已形成的學(xué)習(xí)單片機(jī)的熱潮,單片機(jī)在各行業(yè)中已經(jīng)發(fā)揮了重要的作用,相適應(yīng)的單片機(jī)軟件開發(fā)工具也種類繁多,在高校和業(yè)界最廣泛應(yīng)用的是德國(guó)Keil Software公司的8051單片機(jī)軟件開發(fā)工具,它可用于眾多的8051及派生MCU以實(shí)現(xiàn)嵌入式應(yīng)用開發(fā)。
一、系統(tǒng)要求
Keil運(yùn)行的系統(tǒng)要求相對(duì)于現(xiàn)代計(jì)算機(jī)的主流配置來(lái)說(shuō)是相當(dāng)之低的,通常為了保證編譯器和工具的正常工作的Windows系統(tǒng)必須滿足軟件和硬件的最低配置為: 100 IBM 兼容386 或以上PC、Windows3.1 版或以上、至少4M 內(nèi)存、硬盤至少有6MB 磁盤空間。
二、軟件開發(fā)流程
當(dāng)使用Keil Software工具時(shí)的項(xiàng)目開發(fā)流程和其它軟件開發(fā)項(xiàng)目的流程極其相似:
1.創(chuàng)建一個(gè)項(xiàng)目從器件庫(kù)中選擇目標(biāo)器件配置工具設(shè)置 ;2.用C語(yǔ)言或匯編語(yǔ)言創(chuàng)建源程序;3.用項(xiàng)目管理器生成你的應(yīng)用;4.修改源程序中的錯(cuò)誤;5.測(cè)試連接應(yīng)用。
三、開發(fā)工具
(一)µVision集成開發(fā)環(huán)境
µVision IDE(目前使用的版本一般為µVision2或µVision3)是一個(gè)基于Windows的開發(fā)平臺(tái)包含一個(gè)高效的編輯器、一個(gè)項(xiàng)目管理器和一個(gè)MAKE工具。µVision有兩種操作模式:1.創(chuàng)建模式讓你編譯應(yīng)用中所有的文件以產(chǎn)生執(zhí)行程序; 2.調(diào)試模式提供一個(gè)非常強(qiáng)勁的調(diào)試器你可以用它來(lái)調(diào)試你的程序。
(二)C51優(yōu)化的C語(yǔ)言交叉編譯器
Keil C51交叉編譯器是一個(gè)基于ANSI C標(biāo)準(zhǔn)的針對(duì)8051系列MCU的C編譯器,生成的可執(zhí)行代碼快速、緊湊,在運(yùn)行效率和速度上可以和匯編程序得到的代碼相媲美。
(三)A51宏匯編器
A51是一個(gè)8051MCU系列的宏匯編器,它把匯編語(yǔ)言翻譯成機(jī)器代碼。該匯編器的宏特性讓公共代碼只需要開發(fā)一次從而節(jié)約了開發(fā)和維護(hù)的時(shí)間源。
(四)BL51具有代碼分段功能的連接/重定位器
BL51是具有代碼分段功能的連接/重定位器,它組合一個(gè)或多個(gè)目標(biāo)模塊成一個(gè)8051的執(zhí)行程序。此連接器處理外部和全局?jǐn)?shù)據(jù),并將可重定位的段分配到固定的地址上。
(五)LIB51庫(kù)管理器
該庫(kù)管理器讓用戶建立和維護(hù)庫(kù)文件。一個(gè)庫(kù)文件是格式化的目標(biāo)模塊(由編譯器或匯編器產(chǎn)生)的集合。庫(kù)文件提供了一個(gè)方便的方法來(lái)組合和使用大量的連接程序可能用到的目標(biāo)模塊,利用µVision項(xiàng)目管理器的Options for Target Output Create Library選項(xiàng)可以建造一個(gè)庫(kù),也可以從命令行運(yùn)行LIB51程序命令行參數(shù)。
(六)OH51 目標(biāo)代碼到HEX文件的轉(zhuǎn)換器
此轉(zhuǎn)換器為絕對(duì)目標(biāo)模塊創(chuàng)建Intel HEX格式的文件。
四、應(yīng)用舉例
下面依托武漢偉福賽思電子有限公司的LabMCU51-X08(KF)單片機(jī)實(shí)驗(yàn)板,通過(guò)設(shè)計(jì)數(shù)碼管的0-9每隔1秒跳動(dòng)循環(huán)顯示來(lái)詳細(xì)分析Keil編輯源程序、調(diào)試、運(yùn)行、仿真的各功能模塊。
(一)算法分析
為了更好實(shí)現(xiàn)源代碼的編寫,在具體編寫之前要整理好設(shè)計(jì)問題的核心算法。該設(shè)計(jì)涉及3個(gè)方面:定時(shí)器實(shí)現(xiàn)1s計(jì)時(shí)、數(shù)碼管顯示、0-9的數(shù)據(jù)查表,通過(guò)分析得出該設(shè)計(jì)的算法流程圖:(見圖1)
由于現(xiàn)在設(shè)計(jì)分析處理問題均應(yīng)有工程理念,所以程序編寫第一步應(yīng)新建工程項(xiàng)目,新建的工程項(xiàng)目名建議能準(zhǔn)確描述項(xiàng)目含義,例如該設(shè)計(jì)問題可命名為DigitalDisplay,工程保存的后綴名為.uv2,接下來(lái)Keil環(huán)境要求為該工程進(jìn)行單片機(jī)的芯片選型,我們選擇Atmel公司的89C51系列,然后工程建立完畢。
接下來(lái)新建一個(gè)源程序文件,這里我們選用匯編程序代碼,保存為文件的后綴名為DisplayLoop.asm(如選用C51程序代碼,后綴名為.c)。利用編輯器進(jìn)行代碼編寫,編輯器有語(yǔ)法分析功能,不同的語(yǔ)言成分會(huì)程序不同的顏色,可幫助用戶及時(shí)發(fā)現(xiàn)錯(cuò)誤。代碼編寫完畢后將源文件添加到項(xiàng)目目錄下,具體操作為: 鼠標(biāo)右鍵點(diǎn)擊 “Source Group 1”,在彈出的菜單中選“Add Files to Group ‘Source Group 1’”:,選擇編寫的源文件,這樣文件就添加到了工程中。
(三)程序運(yùn)行
源程序編寫完成之后,利用Keil的編譯器進(jìn)行編譯運(yùn)行,具體操作為:點(diǎn)擊Project->Build Target 或者 點(diǎn)擊工具欄的圖標(biāo)。如若程序無(wú)語(yǔ)法錯(cuò)誤,在Keil的Build Window 會(huì)顯示 “DigitalDisplay ― 0 Error(s),0 Warning(s)”。由于要將程序最終寫入單片機(jī)芯片中,所以我們要生成HEX(16進(jìn)制)文件或BIN(2進(jìn)制)文件,Keil也提供了這一便利:右鍵點(diǎn)擊“Target 1”,在彈出的菜單中選擇“Option for Target 1”,在打開的對(duì)話框中選擇“Output”選項(xiàng)卡,在選項(xiàng)卡中的“Create HEX File”選項(xiàng)前打勾,Rebuild all target files之后匯編、連接、創(chuàng)建HEX文件一氣呵成,在工程中會(huì)生成與工程名相同的一些文件,如:DigitalDisplay.hex,這是我們燒入芯片所需要的文件。
(四)調(diào)試仿真
如若編寫的源程序有語(yǔ)法錯(cuò)誤或者寫入芯片后,硬件顯示出來(lái)的效果與預(yù)期設(shè)計(jì)的不一樣,即邏輯錯(cuò)誤時(shí),我們就需要應(yīng)用Keil的第二種操作模式:調(diào)式模式。點(diǎn)擊工具欄的圖標(biāo)或者在菜單欄選擇“Start Debug Session”。
而且在實(shí)際應(yīng)用中,如果每次將程序?qū)懭胄酒瑏?lái)進(jìn)行操作會(huì)增加操作成本,比如我們所使用的AT89S52的重復(fù)燒寫次數(shù)為1000次左右,芯片的批發(fā)單價(jià)在7.5元/片,當(dāng)程序較長(zhǎng)邏輯較復(fù)雜時(shí),重復(fù)燒寫是不經(jīng)濟(jì)的,所以利用Keil的仿真功能是很重要的。Keil中可仿真的設(shè)備有:Interrupt System(中斷系統(tǒng))、I/O-Ports(I/O口)、Serial(串口)、Timer(定時(shí)器)。仿真可分為軟件模擬仿真和硬件仿真,兩者區(qū)別在于前者不需要外接任何硬件,只是在PC機(jī)上用純軟件的形式模擬目標(biāo)程序的運(yùn)行,后者需要外接仿真器和目標(biāo)系統(tǒng)。µVision可提供的調(diào)試手段有:CPU程序計(jì)數(shù)器復(fù)位(Reset CPU)、連續(xù)運(yùn)行直到斷點(diǎn)或程序結(jié)束(Go)、停止運(yùn)行(Stop Running)、單步運(yùn)行(Step)、單步跨越(Step Over)等。以本項(xiàng)目為例,進(jìn)入調(diào)試模式后(如圖5),調(diào)出“Memory Window”和Peripherals中的“Timer-Timer 0”,接著單步運(yùn)行程序,首先可通過(guò)存儲(chǔ)器窗口觀察到查表存數(shù)據(jù)的過(guò)程,同時(shí)關(guān)注左邊寄存器窗口各所用到的寄存器值的變化是否符合自身事先的設(shè)計(jì)變化思路;接下來(lái)程序依次選擇了定時(shí)器0的工作方式、設(shè)置定時(shí)器初值、開啟中斷后開始計(jì)數(shù)、進(jìn)入等待中斷。我們可以來(lái)觀看Timer/Counter窗口,當(dāng)定時(shí)器開始計(jì)數(shù)后,“TR0”被選中,“Status”中內(nèi)容由“Stop”轉(zhuǎn)變?yōu)椤癛un”,T0由4C00H計(jì)數(shù)到達(dá)FFFFH,再經(jīng)過(guò)1個(gè)機(jī)器周期,計(jì)數(shù)溢出,“TF0”被置1,選項(xiàng)被選中(我們也可手動(dòng)選中該項(xiàng),使T0的中斷請(qǐng)求位TF0置1),產(chǎn)生中斷信號(hào),程序從定時(shí)器0的中斷向量入口地址000BH進(jìn)入,執(zhí)行顯示的中斷服務(wù)子程序。由此可見Keil在模擬仿真設(shè)備的優(yōu)越性和對(duì)于程序調(diào)試的便利性。
五、結(jié)語(yǔ):
本文通過(guò)Keil在單片機(jī)系統(tǒng)中的具體應(yīng)用實(shí)例將其功能模塊做了較詳細(xì)的介紹,將其把單片機(jī)原理的學(xué)習(xí)和實(shí)踐可以很好的貫穿起來(lái),充分發(fā)揮“理論指導(dǎo)實(shí)踐,實(shí)踐帶動(dòng)理論”的教育教學(xué)方式。
參考文獻(xiàn):
[1]陳濤.單片機(jī)應(yīng)用及C51程序設(shè)計(jì)[M].機(jī)械工業(yè)出版社,2008.
[2]潘永雄.新編單片機(jī)原理與應(yīng)用實(shí)驗(yàn)[M].西安:西安電子科技大學(xué)出版社,2005
級(jí)別:部級(jí)期刊
榮譽(yù):中國(guó)期刊全文數(shù)據(jù)庫(kù)(CJFD)
級(jí)別:統(tǒng)計(jì)源期刊
榮譽(yù):中國(guó)優(yōu)秀期刊遴選數(shù)據(jù)庫(kù)
級(jí)別:部級(jí)期刊
榮譽(yù):中國(guó)期刊全文數(shù)據(jù)庫(kù)(CJFD)
級(jí)別:省級(jí)期刊
榮譽(yù):中國(guó)優(yōu)秀期刊遴選數(shù)據(jù)庫(kù)
級(jí)別:省級(jí)期刊
榮譽(yù):Caj-cd規(guī)范獲獎(jiǎng)期刊