匯編語言范文
時間:2023-03-29 22:10:42
導(dǎo)語:如何才能寫好一篇匯編語言,這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公務(wù)員之家整理的十篇范文,供你借鑒。
篇1
關(guān)鍵詞:加密算法DES匯編語言
目前在金融界及非金融界的保密通信中,越來越多地用到了DES算法。DES(DataEncryptionStandard)即數(shù)據(jù)加密算法,是IBM公司于1977年研究成功并公開發(fā)表的。隨著我國三金工程尤其是金卡工程的啟動,DES算法在POS、ATM、磁卡及智能卡(IC卡)中被廣泛應(yīng)用,以此來實(shí)現(xiàn)關(guān)鍵數(shù)據(jù)的保密。如信用卡持卡人的PIN的加密傳輸、IC卡與POS間的雙向認(rèn)證、金融交易中的密碼鍵盤等,均用到DES算法。由于密碼鍵盤不可能使用高級語言,所以用匯編語言實(shí)現(xiàn)DES就非常實(shí)用。
1DES算法的簡單原理
DES是一種分組密碼。假定明文m是由0和1組成的長度為64位的符號串,密鑰k也是64位的0、1符號串。
設(shè):M=m1m2m3…m64
K=k1k2k3…k64
加密過程可表達(dá)如下:
DES(m)=IP-1·T16·T15…T2·T1·IP(m)
其中:IP(m)是初始置換,IP-1是逆置換,T16~T1是16次迭代。
(1)初始置換IP
功能是把輸入的明文m按位重新組合,并把輸出分為L0、R0兩部分,每部分各長32位,其置換規(guī)則如下:
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
經(jīng)過16次迭代運(yùn)算后,得到L16、R16,將此作為輸入,進(jìn)行逆置換。逆置換滿足:
IP·IP-1=IP-1·IP=I
逆置換正好是初始置換的逆運(yùn)算。
(3)T16~T1的迭代計(jì)算
DES的迭代算法采用模2加法。
在通信網(wǎng)絡(luò)的兩端,雙方約定了一致的密鑰。在通信的源點(diǎn)用密鑰對核心數(shù)據(jù)進(jìn)行加密并形成密文,然后,以密文的形式在公共通信網(wǎng)中傳輸?shù)酵ㄐ啪W(wǎng)絡(luò)的終點(diǎn)。數(shù)據(jù)到達(dá)終點(diǎn)后,用同樣的密鑰對密文數(shù)據(jù)進(jìn)行解密,便再現(xiàn)了明文形式的核心數(shù)據(jù)。這樣,便保證了核心數(shù)據(jù)(如PIN、MAC等)在公共通信網(wǎng)中傳輸?shù)陌踩院涂煽啃浴?/p>
2匯編語言的實(shí)現(xiàn)
用匯編語言實(shí)現(xiàn)DES算法有它的優(yōu)勢也有它的難點(diǎn)。優(yōu)勢是51匯編的位操作可以方便地實(shí)現(xiàn)置換功能。但用匯編語言實(shí)現(xiàn)算法的迭代運(yùn)算及循環(huán)功能比較煩瑣。在用51匯編實(shí)現(xiàn)DES的過程中,我編寫了幾個子程序,組合起來可實(shí)現(xiàn)DES算法加密。在這里寫出一些思路,有需要的同行可與我聯(lián)系(E-mail:zhoubin@)。
8031有16個可以位尋址的寄存器,可放置128位的數(shù)據(jù),利用它可實(shí)現(xiàn)DES的轉(zhuǎn)置功能。將明文m放入寄存器27H~20H中,即位地址00H對應(yīng)m64,3FH對應(yīng)m1。利用標(biāo)志寄存器C可實(shí)現(xiàn)置換與逆置換程序。在DES的16次迭代過程中,要實(shí)現(xiàn)公式:
Li=Ri-1;Ri=Li-1f(Ri-1,ki)
的運(yùn)算過程,其關(guān)鍵在于f(Ri-1,ki)的功能。f是將32位的輸入轉(zhuǎn)化為32位的輸出。其中含3項(xiàng)技術(shù):
①將32位膨脹為48位的E功能。該項(xiàng)功能可用類似于置換功能的子程序編寫。
②48位子密鑰的生成。為了便于51匯編生成子密鑰,可以使用主機(jī)用串口下傳的方式,由主機(jī)將16個子密鑰傳給89C52為核心的單片機(jī),然后存入80H~FFH中。如果密鑰是固定的,則可直接將子密鑰固化在89C52的Flash中。
③S盒的功能是將48位的輸入再次縮為32位。具體實(shí)現(xiàn)是將S盒表存入89C52的Flash中,每次通過查表求得S輸出的結(jié)果。
下面列舉其中的幾個子程序。
(1)IP置換子程序
;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)
;功能:將入口寄存器的數(shù)據(jù)按置換表換位。
IP:MOVC,06H;將m58送到進(jìn)位標(biāo)志中
MOV7FH,C;將進(jìn)位標(biāo)志送m1中
MOVC,0EH;將m50送到進(jìn)位標(biāo)志中
MOV7EH,C;將進(jìn)位標(biāo)志送m2中
;重復(fù),按表編寫MOVC,31H;將m15送到進(jìn)位標(biāo)志中
MOV41H,C;將進(jìn)位標(biāo)志送m63中
MOVC,39H;將m7送到進(jìn)位標(biāo)志中
MOV40H,C;將進(jìn)位標(biāo)志送m64中
RET
(2)逆置換子程序
;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)
;功能:將入口寄存器的數(shù)據(jù)按逆置換表換位。
IPRVS:MOVC,18H;將m40送到進(jìn)位標(biāo)志中
MOV7FH,C;將進(jìn)位標(biāo)志送m1中
MOVC,38H
.
.
.
RET
(3)異或子程序
;入口寄存器:272625243F3E3D3C,出口寄存器:2B2A2928
;功能:將寄存器27262524的內(nèi)容和寄存器3F3E3D3C的內(nèi)容異或。結(jié)果保存在2B2A2928寄存器中。
XORLF:MOVA,3FH;將高8位異或
XRLA,27H
MOV2BH,A;放入出口處
MOVA,3EH
XRLA,26H
MOV2AH,A
MOVA,3DH
XRLA,25H
MOV29H,A
MOVA,3CH
XRLA,24H
MOV28H,A
RET
(4)S盒子程序
;入口寄存器:(MSB)2F2E2D2C2B2A2928,出口寄存器:(MSB)27262524
;功能:48位32位
S6TO4:MOV20h,2FH;取出高位數(shù)據(jù)
LCALLS162345;調(diào)用實(shí)現(xiàn)Si(b1b6,b2b3b4b5)
;的功能子程序
MOVDPTR,#S1TAB;S盒表的首址
MOVA,21H;取出第幾個S盒
LCALLDPTRADD
CLRA
MOVCA,@A+DPTR;求出S盒的表地址及S結(jié)果
SWAPA
MOV27H,A;保存高位結(jié)果
MOV20H,2EH
LCALLS162345
;重復(fù)
篇2
匯編語言與cpu有關(guān)。
匯編語言是專門為某一類CPU而設(shè)計(jì)的,所以匯編語言與CPU類型息息相關(guān),當(dāng)然至于型號卻是不一樣的。高級語言與CPU基本上是關(guān)系不是很大的,但完全沒有關(guān)系也不是那么一定的,比如C51就是專門為51單片機(jī)這類CPU而設(shè)計(jì)的高級語言。
匯編語言,即第二代計(jì)算機(jī)語言,用一些容易理解和記憶的字母,單詞來代替一個特定的指令,比如:用“ADD”代表數(shù)字邏輯上的加減,“MOV”代表數(shù)據(jù)傳遞等等,通過這種方法,人們很容易去閱讀已經(jīng)完成的程序或者理解程序正在執(zhí)行的功能,對現(xiàn)有程序的bug修復(fù)以及運(yùn)營維護(hù)都變得更加簡單方便。
(來源:文章屋網(wǎng) )
篇3
論文摘要:本文首先分析了當(dāng)前匯編語言的教學(xué)現(xiàn)狀及實(shí)驗(yàn)環(huán)節(jié)的重要作用,然后闡述了匯編語言實(shí)驗(yàn)教學(xué)的設(shè)計(jì)思路,給出了較詳細(xì)具體的實(shí)驗(yàn)內(nèi)容安排。
1 匯編語言及其教學(xué)現(xiàn)狀
匯編語言是計(jì)算機(jī)能夠提供給用戶使用的最快而又最有效的語言,也是唯一能夠利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語言。對程序的空間和時間要求很高的場合,匯編語言的應(yīng)用是必不可少的,至于很多需要直接控制硬件的操作場合則更是非用匯編語言不可。用匯編語言編寫的程序的執(zhí)行速度通常比高級語言(如C/C++)快很多,甚至成百上千倍。相應(yīng)的,匯編語言的缺點(diǎn)就是使用者需要對硬件有更深入的了解,編程效率不高。
“匯編語言程序設(shè)計(jì)”課程的任務(wù)是為“計(jì)算機(jī)組成原理”、“接口”、“操作系統(tǒng)”等后繼課程提供必要的基礎(chǔ)知識,它對訓(xùn)練學(xué)生掌握與硬件相關(guān)的程序設(shè)計(jì)技術(shù)、從事自主版權(quán)計(jì)算機(jī)芯片和系統(tǒng)軟件的開發(fā)、信息安全、過程控制等方面,均有十分重要的作用。無論計(jì)算機(jī)技術(shù)如何發(fā)展,機(jī)器語言、匯編語言的計(jì)算機(jī)程序設(shè)計(jì)語言體系仍然是計(jì)算機(jī)技術(shù)的基礎(chǔ),也是計(jì)算機(jī)技術(shù)的重要知識體系之一。不能了解和熟悉匯編語言,不僅將導(dǎo)致學(xué)生知識結(jié)構(gòu)的缺乏,也可能導(dǎo)致學(xué)生認(rèn)知水平的降低,開發(fā)手段的貧乏。
然而,初學(xué)者往往感到它難學(xué)、難懂、抽象,更難以掌握。教師開展教學(xué)困難,學(xué)生學(xué)習(xí)和掌握困難,教學(xué)效果差,以致會影響后繼課程的學(xué)習(xí)。
2 實(shí)驗(yàn)環(huán)節(jié)在匯編語言教學(xué)中的作用
在計(jì)算機(jī)相關(guān)專業(yè)的教學(xué)領(lǐng)域,實(shí)驗(yàn)和實(shí)訓(xùn)教學(xué)是培養(yǎng)大學(xué)生學(xué)習(xí)能力、實(shí)踐能力、思考能力、創(chuàng)新能力的重要環(huán)節(jié)和有效途徑。顯然,學(xué)生在學(xué)習(xí)匯編語言這門課程中產(chǎn)生的困難,首先來自于他們對所學(xué)知識缺乏必要的感性認(rèn)識,沒有充分的實(shí)驗(yàn)。
計(jì)算機(jī)在很多方面不同于其他學(xué)科,尤其是與硬件有密切關(guān)系的課程。由于匯編語言課程具有硬件操作的密切相關(guān)性,實(shí)驗(yàn)環(huán)節(jié)在整個教學(xué)活動中就占據(jù)了舉足輕重的地位.匯編語言的實(shí)驗(yàn)對培養(yǎng)學(xué)生的動手能力和學(xué)習(xí)興趣,提高學(xué)生閱讀、編輯和調(diào)試程序的能力,有著不可替代的重要作用。學(xué)生通過實(shí)驗(yàn)課深入了解CPU、存儲器、接口及外部設(shè)備的工作特性,對數(shù)據(jù)在計(jì)算機(jī)中的表達(dá)和傳送產(chǎn)生感性認(rèn)識。在實(shí)驗(yàn)中對匯編語言達(dá)到更好的理解、掌握,從感性認(rèn)識上升到理論認(rèn)識。
3 實(shí)驗(yàn)教學(xué)的設(shè)計(jì)思路
由于各高校辦學(xué)類型不同、培養(yǎng)目標(biāo)不同、所在地及周邊地區(qū)社會需求不同,計(jì)算機(jī)及其相關(guān)專業(yè)的教學(xué)內(nèi)容也應(yīng)有所不同。對于非研究型院校的相關(guān)專業(yè),對“匯編語言”的教學(xué)可以集中在適度的理論知識和充分的操作實(shí)踐上。“適度”體現(xiàn)在理論課的講授中內(nèi)容不必展開太寬,“充分”體現(xiàn)在實(shí)驗(yàn)課的安排上要充分。
盡管學(xué)生學(xué)習(xí)匯編語言有著不少困難,但“興趣是最好的老師”,要激發(fā)學(xué)生的學(xué)習(xí)興趣。有了興趣,他就能積極地思考,大膽地探索,變被動接受為主動思考。因此,匯編語言的實(shí)驗(yàn)教學(xué)總的思路就是要以激發(fā)學(xué)生興趣為主線,盡量設(shè)計(jì)趣味性的實(shí)驗(yàn)內(nèi)容,充分發(fā)揮學(xué)生的積極性和創(chuàng)造性。
很多學(xué)生不重視實(shí)驗(yàn)課的主要原因之一是認(rèn)為實(shí)驗(yàn)課的好壞對學(xué)習(xí)成績影響不大,目前多數(shù)院校的學(xué)習(xí)成績評定,僅以期末一張考試卷的好壞而定,這使很多學(xué)生重理論、輕實(shí)驗(yàn)。因此,應(yīng)認(rèn)真記載每個學(xué)生在實(shí)驗(yàn)課上的實(shí)際操作能力和編程能力,并以優(yōu)、良、中、差進(jìn)行仔細(xì)考核,開學(xué)初就明確告訴學(xué)生這種考核制度的存在,使之開始就沒有怠慢的情緒,從思想上重視實(shí)驗(yàn)。
實(shí)驗(yàn)教學(xué)的安排按照由淺入深、循序漸進(jìn)的方式進(jìn)行,合理選擇實(shí)驗(yàn)內(nèi)容,盡量避免過多過雜,內(nèi)容選擇注意舉一反三,即以啟發(fā)思維為主,對設(shè)計(jì)型、綜合型實(shí)驗(yàn)只要能完成預(yù)定實(shí)驗(yàn)?zāi)繕?biāo),不苛求實(shí)驗(yàn)過程與步驟的統(tǒng)一。實(shí)驗(yàn)所演算的匯編語言程序應(yīng)具備好的觀測效果,能直接體現(xiàn)計(jì)算機(jī)的操作特點(diǎn),教師演示和學(xué)生實(shí)踐穿行,并且注意重復(fù)對比,讓學(xué)生發(fā)現(xiàn)自己操作的失誤,加深對匯編語言操作規(guī)律的理解。
實(shí)驗(yàn)教師在實(shí)驗(yàn)中主要起到引導(dǎo)的作用,實(shí)驗(yàn)前的講解以重點(diǎn)、難點(diǎn)和注意事項(xiàng)為主,不應(yīng)面面俱到,可以先給出一些問題,讓學(xué)生帶著問題去做、去觀察、去思考。實(shí)驗(yàn)中,則應(yīng)以學(xué)生為主體,讓每個同學(xué)通過操作行為感受計(jì)算機(jī)的物理過程,教師將理論揉在實(shí)例中的具體操作中,學(xué)生會感到數(shù)據(jù)是有形的,CPU的操作是物質(zhì)化的。經(jīng)過反復(fù)練習(xí),學(xué)生不但學(xué)到了基礎(chǔ)知識,而且提高了綜合分析和理解能力。實(shí)驗(yàn)中,還要鼓勵學(xué)生自己修改實(shí)驗(yàn),有時學(xué)生對自己編的程序沒有把握,一旦上機(jī)實(shí)驗(yàn)后就清楚了。他在計(jì)算機(jī)上修改程序,觀察修改后的結(jié)果,實(shí)際上就是了解改動部分在整個程序中所起的作用,這種作用的認(rèn)識和理解不是通過說教得來的,而是切身經(jīng)歷的、看到的,學(xué)生對它的理解、記憶就要深刻得多。
4 實(shí)驗(yàn)內(nèi)容的具體安排
具體的實(shí)驗(yàn)內(nèi)容應(yīng)覆蓋匯編語言教學(xué)中的各重要方面,內(nèi)容涉及debug、匯編語言編程環(huán)境、匯編語言程序設(shè)計(jì)、輸入輸出與中斷、Win32匯編、匯編語言與C語言的混合編程等。類型分為選作和必做。每個實(shí)驗(yàn)分屬驗(yàn)證型、設(shè)計(jì)型或綜合型。
4.1 穩(wěn)扎穩(wěn)打練好基本功:debug和編程環(huán)境
“萬事開頭難”。對匯編語言的學(xué)習(xí),能否開好頭很關(guān)鍵,很多學(xué)生就是因?yàn)殚_始沒學(xué)好,感覺跟不上,就不再認(rèn)真地學(xué)習(xí)了,有的甚至放棄了。其實(shí)匯編語言實(shí)驗(yàn)開始的基礎(chǔ)部分是比較簡單的,想掌握它是沒什么大問題的。
匯編語言源程序通常以ASCII文本文件的形式保存,通過匯編鏈接形成一個EXE可執(zhí)行文件。對EXE文件的調(diào)試構(gòu)成了實(shí)驗(yàn)課的主體內(nèi)容,貫穿始終,而EXE文件的調(diào)試通常是通過debug實(shí)現(xiàn)的。學(xué)生通過使用debug可以觀察到存儲器的數(shù)據(jù)存儲情況,也可以隨時觀察到CPU中寄存器的數(shù)據(jù)變化。debug的反匯編命令是理解匯編語言的助記符形態(tài)和機(jī)器指令的01碼形態(tài)的對應(yīng)關(guān)系的重要工具,學(xué)生可以通過它深入體會匯編語言中指令的構(gòu)成及各部分含義。debug提供的單步執(zhí)行命令是另一個重要工具,利用t單步執(zhí)行一條指令,及時觀察數(shù)據(jù)緩沖區(qū)的變化情況,這也是進(jìn)行調(diào)試、發(fā)現(xiàn)程序錯誤的最直接有效的方法。
debug的實(shí)驗(yàn)部分以使用a、t、r、d、u等命令為主反復(fù)進(jìn)行指令練習(xí)。學(xué)生通過使用debug觀察到指令執(zhí)行前后機(jī)器中數(shù)據(jù)的變化,對深入理解計(jì)算機(jī)的工作原理、匯編指令的作用是直接的和不可替代的。學(xué)生不再感到機(jī)器是復(fù)雜的,指令是抽象的。
接下來安排的實(shí)驗(yàn)則是對匯編語言編程環(huán)境的熟悉和掌握,這也是重要的一環(huán)。對編程環(huán)境不熟悉,不僅會影響學(xué)習(xí)匯編語言的效率,還會引起一些不必要的錯誤發(fā)生。因此可以考慮多給幾個簡單完整的程序,讓學(xué)生多去 使用編程環(huán)境,熟悉匯編鏈接過程。實(shí)驗(yàn)初,只給一些正確的程序,讓學(xué)生經(jīng)過匯編鏈接可以較容易地形成exe文件并成功執(zhí)行,看到了正確的結(jié)果,學(xué)生就有了方向,也就有信心去做下面的實(shí)驗(yàn)了。
在熟悉了簡單的編譯過程之后,接下來可以在原有程序中適當(dāng)安排一兩個錯誤,讓學(xué)生觀察匯編鏈接中出現(xiàn)的錯誤信息,理解這些錯誤發(fā)生的原因,這一點(diǎn)對程序調(diào)試是至關(guān)重要的,如果看不懂錯誤信息,就沒有辦法正確定位錯誤,也談不上修正錯誤了。
以上分析,學(xué)習(xí)匯編語言伊始,一定要練好基本功,包括對debug的熟練使用,對編程環(huán)境的熟悉。這部分實(shí)驗(yàn)一定要安排得充分,力求使學(xué)生不再對機(jī)器望而生畏,不再對匯編指令有抽象難懂的感覺,如果能開好這個頭,后繼的學(xué)習(xí)就順利得多了。
4.2 輕輕松松做改變:匯編語言程序設(shè)計(jì)
由于學(xué)習(xí)匯編語言之前,學(xué)生通常已經(jīng)學(xué)習(xí)過一門程序設(shè)計(jì)語言,因此這部分實(shí)驗(yàn)可安排簡單、典型的驗(yàn)證型、設(shè)計(jì)型實(shí)驗(yàn),以編寫程序?yàn)橹鳌O纫髮W(xué)生用之前學(xué)過的程序設(shè)計(jì)語言實(shí)現(xiàn),然后再給出匯編語言的實(shí)現(xiàn),通過對比;學(xué)生自然可以發(fā)現(xiàn)匯編語言與其他程序設(shè)計(jì)語言的異同。當(dāng)程序出現(xiàn)錯誤時,則必須要求學(xué)生使用debug進(jìn)行調(diào)試,觀察變化,排除錯誤,加強(qiáng)程序調(diào)試能力。
4.3 細(xì)心耐心學(xué)核心:輸入輸出與中斷
中斷是學(xué)習(xí)匯編語言的重點(diǎn)加難點(diǎn)部分,能否真正掌握匯編語言也在于此,中斷也是匯編語言的魅力所在。這部分實(shí)驗(yàn)一定要找一些學(xué)生感興趣的、具有明顯觀測效果的例子,至少安排兩個階段的實(shí)驗(yàn)。第一階段以驗(yàn)證型實(shí)驗(yàn)為主,先使學(xué)生熟悉中斷過程、中斷處理程序的框架;第二階段以設(shè)計(jì)型實(shí)驗(yàn)為主,讓學(xué)生自己去思考中斷過程中發(fā)生的事情,中斷程序設(shè)計(jì)的方法。對這部分知識的傳授一定要有耐心,對每個程序的講解要透徹、概念清晰。中斷是真正要用的東西,之前學(xué)習(xí)的內(nèi)容只是為它做鋪墊,不能學(xué)好中斷,匯編語言這門課的真諦就沒有學(xué)到。
4.4 興趣延伸:WIn32匯編、匯編語言與C語言混合編程
很多學(xué)生學(xué)習(xí)匯編語言之初就會問匯編語言用在哪里,很少接觸到匯編語言等問題,其實(shí)現(xiàn)在匯編語言很少單獨(dú)使用,而Win32匯編、匯編語言與C語言的混合編程用的比較多,這兩部分內(nèi)容學(xué)起來并不難,可當(dāng)作拓展知識部分,作為自學(xué)內(nèi)容。教師可以找一些實(shí)際使用這部分內(nèi)容的例子,讓學(xué)生知道匯編語言的用途,使學(xué)生不再“學(xué)而不用”,“學(xué)而不知用”。
篇4
關(guān)鍵詞:匯編語言;實(shí)驗(yàn)教學(xué);模仿法;演示法
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:B
1引言
匯編語言是所有程序設(shè)計(jì)語言中最原始的語言,它與機(jī)器語言最為接近,簡言之,匯編語言是符號化的機(jī)器語言,通過匯編語言可以直接訪問計(jì)算機(jī)的硬件,如果要深入了解計(jì)算機(jī)的工作原理和底層細(xì)節(jié),就必須學(xué)習(xí)匯編語言。著名的計(jì)算機(jī)科學(xué)家Donald Knuth堅(jiān)持推崇匯編語言,并且曾經(jīng)說過“我堅(jiān)持認(rèn)為除非你了解了各種底層細(xì)節(jié),否則根本不可能為態(tài)度認(rèn)真的程序員寫書。”①匯編語言的地位是任何高級語言都無法取代的。因此,匯編語言程序設(shè)計(jì)成為計(jì)算機(jī)專業(yè)的必修課程。
然而匯編語言程序設(shè)計(jì)課程的教學(xué)普遍存在諸多問題,已經(jīng)引起了廣大教師的研究與關(guān)注,如考文獻(xiàn)中的[1][2][3][4][5]等。就目前看來,匯編語言教學(xué)大多不能體現(xiàn)“以學(xué)生為本”的教學(xué)理念,主要表現(xiàn)在對實(shí)驗(yàn)教學(xué)的重視程度不夠。匯編語言程序設(shè)計(jì)是實(shí)踐性很強(qiáng)的一門課程,學(xué)生只有在程序設(shè)計(jì)的實(shí)踐中才能真正掌握。所以我們認(rèn)為匯編語言教學(xué)應(yīng)該“老師少講課、學(xué)生多動手”,也就是要充分重視實(shí)驗(yàn)環(huán)節(jié),讓學(xué)生唱主角,改變傳統(tǒng)的以課堂講授為主的教學(xué)模式。
為此,本文進(jìn)行匯編語言實(shí)驗(yàn)教學(xué)的研究與探索。下面分別從實(shí)驗(yàn)安排、教學(xué)方法和考核方式三個方面介紹作者在多年的匯編語言實(shí)驗(yàn)教學(xué)中的體會。
2精心安排實(shí)驗(yàn)
2.1學(xué)時安排
目前國內(nèi)高校的匯編語言程序設(shè)計(jì)課程大多是基于Intel 8086/8088微處理器的②,總學(xué)時一般在60學(xué)時左右,實(shí)驗(yàn)課學(xué)時一般占總學(xué)時的1/4到1/3。我們認(rèn)為60個總學(xué)時是比較合理的,但是實(shí)驗(yàn)課學(xué)時遠(yuǎn)遠(yuǎn)不夠。事實(shí)上,對于任何一種程序設(shè)計(jì)語言來說,不需要教師講解太多的內(nèi)容,關(guān)鍵是讓學(xué)生多動手。我們認(rèn)為匯編語言的理論課學(xué)時和實(shí)驗(yàn)課學(xué)時各占總學(xué)時的1/2是比較合理的。
2.2實(shí)驗(yàn)內(nèi)容安排
匯編語言的實(shí)驗(yàn)課內(nèi)容應(yīng)該包括但不限于:
(1) 調(diào)試工具DEBUG的使用:匯編語言程序的調(diào)試要比高級語言程序的調(diào)試?yán)щy得多,熟練使用DEBUG是匯編語言程序設(shè)計(jì)的基本技能。
(2) 匯編語言程序設(shè)計(jì)的上機(jī)過程:匯編語言程序的編輯、匯編、連接、運(yùn)行和調(diào)試是匯編語言實(shí)驗(yàn)的必備知識。此外,學(xué)生還應(yīng)當(dāng)懂得在此過程中所產(chǎn)生的各種文件(.obj、.lst、.crf和.exe等)的用途。
(3) 基本程序結(jié)構(gòu)設(shè)計(jì):任何復(fù)雜的程序都是由三種基本結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu))組成的,因此,基本程序結(jié)構(gòu)設(shè)計(jì)訓(xùn)練是編寫復(fù)雜程序的基礎(chǔ),是匯編語言實(shí)驗(yàn)不可缺少的內(nèi)容。
(4) 子程序設(shè)計(jì):所謂子程序,相當(dāng)于C語言中的函數(shù)。子程序是結(jié)構(gòu)化程序的基本組成,子程序設(shè)計(jì)是開發(fā)大型程序的基礎(chǔ),對于培養(yǎng)編程能力十分重要。
(5) 中斷調(diào)用:操作系統(tǒng)和BIOS(Basic Input Output System)以中斷調(diào)用的方式為程序員提供了一組功能強(qiáng)大的程序庫,屏蔽了復(fù)雜的硬件細(xì)節(jié),從而極大程度地減輕了程序員的負(fù)擔(dān)。而且,不理解中斷系統(tǒng)就不能理解計(jì)算機(jī)的工作原理。因而學(xué)習(xí)中斷調(diào)用是匯編語言實(shí)驗(yàn)課的必要內(nèi)容。
此外,中斷服務(wù)程序的編寫和匯編語言程序與高級語言程序的連接等內(nèi)容也應(yīng)該讓學(xué)生有所了解;在實(shí)驗(yàn)學(xué)時允許的前提下,也可以安排一個綜合性實(shí)驗(yàn)。
3選擇合適的教學(xué)方法
對于實(shí)驗(yàn)課,只布置任務(wù)、讓學(xué)生自己做實(shí)驗(yàn)的方法并不可取,因?yàn)槠浣Y(jié)果往往是只有少數(shù)學(xué)生能夠達(dá)到實(shí)驗(yàn)要求,而大多數(shù)的學(xué)生收獲很小,甚至有的把實(shí)驗(yàn)課用來玩游戲了。所以,實(shí)驗(yàn)課應(yīng)該有專門的任課教師。當(dāng)然,從培養(yǎng)學(xué)生的創(chuàng)新能力的角度講,應(yīng)該盡可能地讓學(xué)生獨(dú)立完成任務(wù),但是創(chuàng)新能力的培養(yǎng)有賴于足夠的基礎(chǔ)知識和基本技能。我們認(rèn)為匯編語言實(shí)驗(yàn)課應(yīng)該以基礎(chǔ)知識和基本技能的學(xué)習(xí)為主,適當(dāng)?shù)仃P(guān)注創(chuàng)新能力的培養(yǎng),在照顧到大多數(shù)學(xué)生的前提下,給創(chuàng)新能力強(qiáng)的學(xué)生提供獨(dú)立發(fā)展的空間。要做好這一點(diǎn),我們認(rèn)為有兩種十分有效的教學(xué)方法:演示法和模仿法。
3.1演示法
在實(shí)驗(yàn)課上,我們經(jīng)常發(fā)現(xiàn)有許多學(xué)生向老師問同一個問題,如果一一解答,不但使任課教師十分疲憊,而且嚴(yán)重浪費(fèi)了資源和時間。對于這些共性的問題,可以通過投影儀向?qū)W生演示解決問題的辦法,所以在實(shí)驗(yàn)室中安裝投影儀將為實(shí)驗(yàn)教學(xué)帶來極大的方便,目前大多數(shù)高校具備這樣的硬件條件。特別是對于調(diào)試工具DEBUG的使用和匯編語言程序設(shè)計(jì)的上機(jī)過程的學(xué)習(xí)尤為有效。初學(xué)者對于程序的編輯、匯編、連接、改錯和調(diào)試過程往往不知所措,如果老師從頭到尾演示整個過程、讓學(xué)生一步一步地跟著操作,就能極大地提高學(xué)習(xí)效率。一次簡單的演示往往要勝過千言萬語的解釋。
3.2模仿法
程序設(shè)計(jì)對于大多數(shù)的初學(xué)者來說有一定的難度。對于給定的一個實(shí)驗(yàn)題目,許多學(xué)生往往感到無從下手。事實(shí)上,老師可以把一些經(jīng)典的程序提供給學(xué)生,例如怎樣實(shí)現(xiàn)分支結(jié)構(gòu)、怎樣實(shí)現(xiàn)循環(huán)結(jié)構(gòu)、怎樣使用系統(tǒng)調(diào)用、怎樣編寫子程序、怎樣編寫中斷處理程序等,讓學(xué)生在讀懂之后模仿著編程。模仿的程序多了,編程也就熟練了。通過一段時間的經(jīng)驗(yàn)積累,就能夠編寫比較復(fù)雜的和具有創(chuàng)造性的程序,正所謂“熟能生巧”。我們在教學(xué)中發(fā)現(xiàn)這種模仿的方法十分有效。當(dāng)然要特別注意的是,不能把模仿變成抄襲。
3.3對比法
一般說來,在學(xué)習(xí)匯編語言之前都要學(xué)習(xí)C語言。匯編語言與C語言的學(xué)習(xí)是相輔相成的。老師應(yīng)該通過對比的方法向?qū)W生指出匯編語言與C語言之間的千絲萬縷的聯(lián)系。例如,一塊數(shù)據(jù)區(qū)的開始地址為BASE,要尋找的操作數(shù)相對于開始地址的偏移量為SI,我們發(fā)現(xiàn)幾乎所有的學(xué)生會把這個操作數(shù)寫成[BASE+SI],而不會寫成BASE[SI],因?yàn)榈谝环N寫法更直觀,而第二種寫法令人費(fèi)解。然而,如果教學(xué)生把BASE看成C語言里的數(shù)組、把SI看成下標(biāo),那么學(xué)生就會恍然大悟了。通過對比教學(xué)法,能夠使學(xué)生更深入地理解高級語言中的數(shù)據(jù)類型、變量、函數(shù)、數(shù)組、指針等概念的理解,同時也必將大大促進(jìn)匯編語言的學(xué)習(xí)。
4改革考核方式
因?yàn)椤皡R編語言程序設(shè)計(jì)”是實(shí)踐性很強(qiáng)的一門課程,所以實(shí)驗(yàn)課成績應(yīng)該在總成績中占有相當(dāng)大的比重。我們認(rèn)為以閉卷考試成績?yōu)橹饕罁?jù)的考核方式是不合適的,甚至可以取消考試、以實(shí)驗(yàn)課成績?yōu)橹?如果要考,也應(yīng)該是開卷的。然而由于許多現(xiàn)實(shí)困難,目前大多數(shù)高校的匯編語言課程的實(shí)驗(yàn)課成績只占很小的比重,這也是學(xué)生不重視實(shí)驗(yàn)課的重要原因之一。提高實(shí)驗(yàn)課成績所占比重的主要困難在于學(xué)生多、抄襲成風(fēng)、老師負(fù)擔(dān)重、實(shí)驗(yàn)條件有限、考核的主觀性太強(qiáng)等。盡管面臨諸多困難,我們認(rèn)為實(shí)驗(yàn)課成績應(yīng)該占到總成績的1/2。老師可以根據(jù)學(xué)生的實(shí)驗(yàn)表現(xiàn)按五級分制(優(yōu)、良、中、及格、不及格)或二級分制(通過、不通過)考核。為了減輕教師的負(fù)擔(dān),可以只針對一個綜合性實(shí)驗(yàn)(而不是所有的實(shí)驗(yàn))加以考核。
5結(jié)束語
本文根據(jù)作者多年的教學(xué)體會,對匯編語言實(shí)驗(yàn)教學(xué)進(jìn)行了深入的思考。從“以學(xué)生為本”的教學(xué)理念出發(fā),根據(jù)匯編語言程序設(shè)計(jì)課程所具有的實(shí)踐性強(qiáng)的特點(diǎn),提出“老師少講課、學(xué)生多動手”的教學(xué)模式,主張?zhí)岣邔?shí)驗(yàn)課學(xué)時和實(shí)驗(yàn)課成績的比重,重視實(shí)驗(yàn)教學(xué),并從實(shí)驗(yàn)內(nèi)容、教學(xué)方法和考核方式三個方面介紹了作者的想法。然而由于學(xué)生過多、資源有限、我國高等教育長期投入不足和體制缺陷等許多現(xiàn)實(shí)困難,匯編語言實(shí)驗(yàn)教學(xué)的改革依然任重道遠(yuǎn)。
參考文獻(xiàn):
[1] 張全福. 匯編語言程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)改革與探索[J]. 教學(xué)研究,2005,28(6):545-546.
[2] 周代英,楊曉霞. 匯編語言課程教學(xué)方法改革探索[J]. 中國科教創(chuàng)新導(dǎo)刊,2008(6):55-56.
[3] 吳媛,茹慶云,楊富超. 匯編語言程序設(shè)計(jì)的教學(xué)研究[J]. 中國科技信息,2005(14):215.
篇5
為了實(shí)現(xiàn)創(chuàng)新人才培養(yǎng)的目標(biāo),將研究性教學(xué)模式引入?yún)R編語言程序設(shè)計(jì)教學(xué)中,對教學(xué)方法、教學(xué)組織形式及考核方法等進(jìn)行了改革,改善了教學(xué)效果,提高了教學(xué)質(zhì)量。
【關(guān)鍵詞】
匯編語言程序設(shè)計(jì);研究性教學(xué)模式;創(chuàng)新人才培養(yǎng)
1《匯編語言程序設(shè)計(jì)》課程現(xiàn)狀及存在問題
《匯編語言程序設(shè)計(jì)》是計(jì)算機(jī)專業(yè)的專業(yè)基礎(chǔ)課,是一門實(shí)踐性很強(qiáng)的課程。以往老師講授這門課程時,主要以“老師講、學(xué)生聽”的形式進(jìn)行的,這樣不助于學(xué)生理解指令的執(zhí)行過程,往往導(dǎo)致學(xué)生在上機(jī)調(diào)試時無從下手,更談不上綜合程序的設(shè)計(jì)。這種僵化的教與學(xué)的模式必須進(jìn)行改革,才能達(dá)到創(chuàng)新人才培養(yǎng)的目標(biāo)。
2教學(xué)改革思路:
如果要提高教學(xué)質(zhì)量,達(dá)到預(yù)期的教學(xué)效果,關(guān)鍵要改革教師的教學(xué)方法和學(xué)生的學(xué)習(xí)方式,即教師從傳統(tǒng)的講授灌入式向探究式轉(zhuǎn)變,學(xué)生從傳統(tǒng)的被動接受向主動接受、探究發(fā)現(xiàn)和研究性學(xué)習(xí)轉(zhuǎn)變,達(dá)到培養(yǎng)學(xué)生主動發(fā)現(xiàn)問題、分析問題、創(chuàng)造性地解決問題的能力[1]。這就需要重新定位教師主導(dǎo)地位和學(xué)生主體地位的關(guān)系,采用以"學(xué)生為主體,教師為主導(dǎo)"的新教學(xué)理念。結(jié)合匯編語言程序設(shè)計(jì)課程的特點(diǎn),緊緊圍繞“深入理解機(jī)器工作的基本原理、培養(yǎng)底層編程意識和思想”和提高學(xué)生綜合運(yùn)用所學(xué)知識的能力兩個核心目標(biāo),通過對教學(xué)方法及考核方式等進(jìn)行改革,從而提高教學(xué)質(zhì)量。
3教學(xué)方法及教學(xué)手段的改革
1.啟發(fā)式教學(xué):課程的講授過程中,采用啟發(fā)式教學(xué)方法,有意識地引導(dǎo)學(xué)生思考,將計(jì)算機(jī)的硬件工作過程深入課中,使得學(xué)生對語言的執(zhí)行過程有更深入的理解。例如,在講解存儲器的分段時,可以將CPU與存儲器的數(shù)據(jù)訪問講解一下,這樣學(xué)生就能理解為什么要進(jìn)行分段處理。2.項(xiàng)目驅(qū)動教學(xué):匯編語言程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,老師根據(jù)課程目標(biāo),設(shè)置3個難度適中的綜合訓(xùn)練項(xiàng)目,貫穿整個教學(xué)過程中。學(xué)生在課余時間,通過檢索資料、團(tuán)隊(duì)合作、綜合分析,尋找解決問題的方案,最終提交程序代碼及方案報(bào)告。“項(xiàng)目”教學(xué)是以學(xué)生為中心,老師為組織者和引導(dǎo)者,在項(xiàng)目的實(shí)現(xiàn)過程中,不但使學(xué)生加深對知識的系統(tǒng)理解,而且也了解了與知識相關(guān)的前沿?zé)狳c(diǎn)問題,從而培養(yǎng)大學(xué)生自主學(xué)習(xí)能力、探究問題能力、協(xié)作能力、適應(yīng)和創(chuàng)新能力等。3.隨堂實(shí)踐:學(xué)生上課可以自帶筆記本,在知識點(diǎn)的講解過程中,老師要充分利用多媒體教學(xué)環(huán)境中的計(jì)算機(jī)系統(tǒng),對于程序?qū)嵗烧n堂調(diào)試演示,在機(jī)器上可隨堂編寫小程序現(xiàn)場運(yùn)行,和學(xué)生一起進(jìn)行調(diào)試的過程中,打破匯編語言的神秘感,消除學(xué)生對匯編語言難以掌握的恐懼心理,使同學(xué)們更直觀、更快理解和掌握相關(guān)知識,激發(fā)學(xué)生對新知識和新技術(shù)的求知欲,提高教學(xué)質(zhì)量。
4教學(xué)組織過程
課堂的前幾分鐘進(jìn)行提問,掌握學(xué)生的知識點(diǎn)掌握情況,并督促學(xué)生搞好復(fù)習(xí)與預(yù)習(xí);在知識擴(kuò)展環(huán)節(jié)中,老師布置知識擴(kuò)展點(diǎn)及要求,學(xué)生自主查閱資料并整理資料,增強(qiáng)學(xué)生查閱、整理和總結(jié)資料的能力,進(jìn)而鍛煉學(xué)生自主學(xué)習(xí)的能力;訓(xùn)練項(xiàng)目的實(shí)施以項(xiàng)目組的形式進(jìn)行,即5~6名學(xué)生為1個項(xiàng)目組,并選其中一個學(xué)生擔(dān)任組長,組長組織成員開展討論和交流,但每個學(xué)生都獨(dú)立完成項(xiàng)目的設(shè)計(jì)、實(shí)驗(yàn)和項(xiàng)目報(bào)告;項(xiàng)目的實(shí)施主要采取“課外為主、課內(nèi)為輔”的方式。即學(xué)生領(lǐng)取任務(wù)后,通過課余時間進(jìn)行資料查閱、討論、答疑、編程和調(diào)試,以及完成項(xiàng)目報(bào)告書等。每個項(xiàng)目布置時,老師要進(jìn)行概要的講解,讓學(xué)生了解項(xiàng)目的整體思路及接下來應(yīng)該怎樣解決,然后多安排幾次答疑輔導(dǎo)時間,學(xué)生帶著自己的疑問與老師交流,師生一起找到解決問題的辦法,這也提高了項(xiàng)目的完成質(zhì)量;答辯時要求以組為單位,在規(guī)定的時間范圍內(nèi),做完的組可以找老師答辯,答辯時學(xué)生帶著電腦可以進(jìn)行現(xiàn)場調(diào)試,根據(jù)功能實(shí)現(xiàn)及答辯情況給予答辯分,對平時負(fù)責(zé)本組程序講解的同學(xué)答辯成績有加分;由組長組織,進(jìn)行討論,鍛煉學(xué)生的表達(dá)能力,增加學(xué)生的知識儲備;每周安排一次答疑,這樣可以及時了解學(xué)生知識點(diǎn)的掌握情況,有助于老師課堂內(nèi)容的安排,同時也有助于師生交流,提高教學(xué)質(zhì)量。
5考核方式
以課程結(jié)束時的考試作為評定學(xué)生的依據(jù)是很不科學(xué)的,要改變傳統(tǒng)的學(xué)生學(xué)業(yè)評價中“一考定全局”終結(jié)式評價模式[2]。學(xué)生的評價應(yīng)該是能夠不斷的指導(dǎo)學(xué)生、鼓勵學(xué)生、完善其學(xué)習(xí)方法,增加學(xué)生的應(yīng)用能力,進(jìn)而實(shí)現(xiàn)人才的培養(yǎng)目標(biāo)。在課程考核中,我們采取以下的考核辦法:期末總成績由考試成績(50分)、綜合訓(xùn)練成績(40分)、平時成績(10分)三部分組成。總成績中加重了學(xué)生對所學(xué)知識綜合應(yīng)用能力的比重,同時也注重對學(xué)生學(xué)習(xí)過程的評價。
6結(jié)束語
本文將研究性教學(xué)模式引入《匯編語言程序設(shè)計(jì)》課程教學(xué)中,打破了傳統(tǒng)的教學(xué)理念,經(jīng)過兩輪教學(xué)實(shí)踐,教學(xué)效果較以往有明顯的提高。
參考文獻(xiàn):
[1]羅克露.研究性教學(xué)模式的探討[J].計(jì)算機(jī)教育
篇6
關(guān)鍵詞:匯編語言;C語言;混合編程
匯編語言的優(yōu)勢就是速度快,占用存儲空間不大,而且可以隨時控制硬件,這些優(yōu)點(diǎn)是其它的程序語言無法取代的。匯編語言也有不足之處,就是在高級程序的編寫與調(diào)試時存在著較大的困難,特別是在處理一些數(shù)據(jù)或者一些混合運(yùn)算時顯得更加困難。
C語言,它的優(yōu)勢就是在于功能全面,表達(dá)形式多樣且靈活,開發(fā)使用效率很高,具有其它高級語言無法具有的優(yōu)勢。通常在軟件開發(fā)過程中,大部分程序采用高級語言編寫,以提高程序的開發(fā)效率;但在要求執(zhí)行速度快、占用空間少或要求直接控制硬件的場合,則利用匯編語言編寫,以提高程序的運(yùn)行效率。
1.匯編語言和C語言混合編程的方法
C語言和匯編語言混合編程的具體方法有以下幾種。
2.1 參數(shù)傳遞
匯編語言程序和C語言程序在調(diào)用時會涉及到參數(shù)傳遞,一般采用堆棧進(jìn)行傳遞。在匯編語言中將BP作為基址寄存器,調(diào)用程序先將來自于C語言程序中的參數(shù)依次壓入堆棧中,然后當(dāng)需要使用這些參數(shù)時,再用BP加上不同的偏移量依次對堆棧中的數(shù)據(jù)進(jìn)行存取操作。
2.2 調(diào)用關(guān)系的確定
對于將要涉及到調(diào)用的過程或函數(shù)需要事先說明和建立調(diào)用與被調(diào)用關(guān)系。被調(diào)用的過程或函數(shù)應(yīng)預(yù)先說明為外部類型,以便被外部模塊引用,而調(diào)用程序也需要在程序中說明將要引用的外部模塊的名稱。在說明調(diào)用關(guān)系時還應(yīng)根據(jù)不同的存儲模式確定相應(yīng)的匯編語言格式。C程序小模式對應(yīng)匯編程序的近類型過程,而C程序大模式則對應(yīng)匯 編程序的遠(yuǎn)類型過程。
總而言之,匯編語言和C語言的混合編程方法可以使匯編語言與C語言之間取長補(bǔ)短,充分發(fā)揮各自優(yōu)勢,相互交叉調(diào)用,進(jìn)行參數(shù)傳遞,共享數(shù)據(jù)信息和數(shù)據(jù)結(jié)構(gòu),使由此開發(fā)的軟件更實(shí)用、更安全可靠,使開發(fā)和編程工作達(dá)到事半功倍的效果。
參考文獻(xiàn):
[1] 羅南超,向昌成,李唐輝. 匯編語言實(shí)現(xiàn)多種進(jìn)制的通用輸入輸出[J]電腦知識與技術(shù), 2008,(36) .
[2] 崔衛(wèi)東. VC++與匯編語言混合編程的研究與實(shí)現(xiàn)[J]福建電腦, 2007,(05) .
[3] 宋金華. 匯編語言和C語言在圖形處理中的綜合應(yīng)用[J]湖北廣播電視大學(xué)學(xué)報(bào), 2010,(12) .
篇7
關(guān)鍵詞:計(jì)算機(jī);匯編語言;系統(tǒng)控制;應(yīng)用研究
中圖分類號:TP313 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 11-0000-02
匯編語言是一種面向機(jī)器的特殊程序設(shè)計(jì)語言,計(jì)算機(jī)匯編語言是指通過匯編語言程序設(shè)計(jì)實(shí)現(xiàn)計(jì)算機(jī)的硬件系統(tǒng)控制的指令的一種程序構(gòu)成。利用計(jì)算機(jī)匯編語言進(jìn)行編程設(shè)計(jì),不僅可以有效提高工作效率,還可以節(jié)省程序空間,實(shí)現(xiàn)最大利用。本文將主要對計(jì)算機(jī)匯編語言的相關(guān)理論及其在實(shí)踐中的具體應(yīng)用進(jìn)行研究分析。
一、計(jì)算機(jī)匯編語言的概念
在計(jì)算機(jī)的系統(tǒng)操作過程中,主要是通過計(jì)算機(jī)硬件設(shè)備對計(jì)算機(jī)的軟件發(fā)出工作命令完成的。計(jì)算機(jī)匯編語言是通過匯編語言程序的設(shè)計(jì),來操控計(jì)算機(jī)的某一程序系統(tǒng),從而實(shí)現(xiàn)匯編語言程序?qū)τ?jì)算機(jī)的控制。計(jì)算機(jī)匯編語言的這一操作控制過程也正好符合計(jì)算機(jī)主機(jī)中中央處理器的工作原理和工作結(jié)構(gòu)。控制命令是由控制編碼與操作數(shù)構(gòu)成,操作數(shù)的處理功能和中央處理器能夠擁有的功能是由控制編碼來控制實(shí)現(xiàn),中央處理器是控制命令得以執(zhí)行的根本,操作數(shù)能夠?yàn)橹醒胩幚砥鲌?zhí)行控制命令提供處理對象。
中央處理器執(zhí)行系統(tǒng)所發(fā)出的控制命令,從而的實(shí)現(xiàn)命令完成。中央處理器實(shí)現(xiàn)這一過程主要依據(jù)其強(qiáng)大的功能和結(jié)構(gòu)特性。在計(jì)算機(jī)的中央處理器中,中央處理器的控制器部分首先對其它系統(tǒng)所發(fā)出的控制信息中的操作碼進(jìn)行編譯、執(zhí)行等工作,然后再通過已經(jīng)接收、編譯的信息,發(fā)出控制命令,從而幫助整個計(jì)算機(jī)系統(tǒng)完成運(yùn)行工作;中央處理器的運(yùn)算器部分則是實(shí)行對控制器所接收到的數(shù)據(jù)信息進(jìn)行高速運(yùn)算功能;另外,中央處理器中還有一個寄存器的部分,主要是用來儲存數(shù)據(jù)的,寄存器的功能不同,在處理數(shù)據(jù)和執(zhí)行命令時所發(fā)揮出的作用也就不同。
在計(jì)算機(jī)的實(shí)際應(yīng)用中,匯編語言在對計(jì)算機(jī)軟、硬件的操控和工作效率上的優(yōu)點(diǎn)是其它編程語言不能夠?qū)崿F(xiàn)的。在通過計(jì)算機(jī)硬件設(shè)施來控制計(jì)算機(jī)的軟件系統(tǒng)上,很多時候都只有匯編語言可以滿足;在利用匯編語言進(jìn)行編程來完成工作目標(biāo)上,匯編語言不僅能夠快速的完成工作目標(biāo),而且整個目標(biāo)程序的設(shè)置也是最簡短的,在空間和時間上都具有無可比擬的優(yōu)越性。這里可以通過一個對比顯現(xiàn)出來,假設(shè)現(xiàn)在通過匯編語言和不是采用匯編語言的兩種方法來計(jì)算目標(biāo)程序,通過兩個操作運(yùn)算過程就可以明顯看出,不采用語言匯編計(jì)算方法的計(jì)算過程,在運(yùn)算中不僅花費(fèi)的時間要遠(yuǎn)遠(yuǎn)高于運(yùn)用匯編語言來計(jì)算的方法,而且冗雜繁蕪的計(jì)算過程占用了計(jì)算機(jī)的大部分空間,而運(yùn)用語言匯編計(jì)算方法的計(jì)算過程只占用了一少部分空間,孰優(yōu)孰劣,結(jié)果不言而喻。
二、匯編語言與高級語言、DELPHI語言、C語言的結(jié)合運(yùn)用
(一)匯編語言與高級語言的結(jié)合運(yùn)用
在計(jì)算機(jī)的實(shí)際程序應(yīng)用中,一般程序員在進(jìn)行程序編寫時大部分是運(yùn)用高級語言來完成,而在整個程序的重要部分,或者說在實(shí)際中運(yùn)行要求高、運(yùn)行次數(shù)又較多而且可以直接與計(jì)算機(jī)硬件設(shè)施相關(guān)聯(lián)的部分,其程序的編寫都是運(yùn)用匯編語言來實(shí)現(xiàn)的。采取以上的方法,是因?yàn)樵趯?shí)際操作中雖然匯編語言擁有工作速度快,工作效率高,占用空間小的優(yōu)勢,但它同時也要求對計(jì)算機(jī)內(nèi)存裝置有相當(dāng)?shù)氖煜ざ龋谶M(jìn)行程序編制和讀寫時也存在有一定的難度,在計(jì)算機(jī)程序編寫的實(shí)踐應(yīng)用中有一定的不便利性;而高級語言除了占用計(jì)算機(jī)存放空間比較多,程序編寫的代碼較長使計(jì)算機(jī)運(yùn)行速度較慢外,高級語言本身也存在有豐富的函數(shù)和數(shù)據(jù)信息、齊全的運(yùn)算符、可移植性好、易讀易寫等優(yōu)點(diǎn)。這樣將匯編語言與高級語言結(jié)合在一起運(yùn)用到計(jì)算機(jī)程序編寫實(shí)踐中,不僅可以取長補(bǔ)短實(shí)現(xiàn)優(yōu)勢互補(bǔ),提高工作效率,還節(jié)省了計(jì)算機(jī)的空間占有量。
另外,在計(jì)算機(jī)程序編寫的實(shí)踐應(yīng)用中,匯編語言除了與高級語言可以相互結(jié)合使用實(shí)現(xiàn)優(yōu)勢互補(bǔ)外,匯編語言和DELPHI語言、C語言之間也可以結(jié)合使用,以實(shí)現(xiàn)計(jì)算機(jī)程序編寫過程的最大高效便利化。
(二)匯編語言與DELPHI語言的結(jié)合運(yùn)用
匯編語言與DELPHI語言在進(jìn)行計(jì)算機(jī)程序編寫是相互結(jié)合使用,主要是在DELPHI語言編寫的程序中運(yùn)用一定的數(shù)據(jù)信息將DELPHI語言程序融入到匯編語言編寫程序中去,實(shí)現(xiàn)兩種語言程序相互結(jié)合。
匯編語言編寫程序與DELPHI語言編寫程序之間在進(jìn)行參數(shù)信息的相互傳達(dá)時,可以由DELPHI語言編寫程序向匯編語言程序進(jìn)行傳遞,也可以由匯編語言程序向DELPHI語言編寫程序進(jìn)行傳遞。
DELPHI語言編寫程序向匯編語言程序進(jìn)行參數(shù)傳遞時,首先在DELPHI語言編寫程序選出匯編語言程序中或者編寫過程中的正確參數(shù)信息,然后在對這些參數(shù)信息進(jìn)行匯編過程中直接運(yùn)用其變量參數(shù)數(shù)據(jù),其中存在的所運(yùn)用變量參數(shù)之間語法不相同情況是由于變量參數(shù)在被傳送的過程中,相互傳遞數(shù)據(jù)信息其實(shí)是地址。
匯編語言程序向DELPHI語言編寫程序進(jìn)行參數(shù)傳遞時,對匯編語言程序中的固定數(shù)據(jù)信息參數(shù)的傳遞有一定的特殊要求,匯編語言程序向DELPHI語言編寫程序的參數(shù)傳遞過程則是運(yùn)用指針的方式進(jìn)行數(shù)據(jù)值的傳遞的。
(三)匯編語言與DELPHI語言的結(jié)合運(yùn)用
篇8
【關(guān)鍵詞】匯編語言程序設(shè)計(jì) 現(xiàn)狀 問題 改革
隨著我國國際化的發(fā)展進(jìn)程越來越快,我國對高等院校教育水平的重視度也越來越高。為了加快接軌國際高等教育的進(jìn)程,在近幾年中,我國對教育事業(yè)的投入力度不斷加強(qiáng),提高了對學(xué)生實(shí)際動手能力以及創(chuàng)新能力的培養(yǎng)力度。《匯編語言程序設(shè)計(jì)》課程教學(xué)是高校計(jì)算機(jī)、通信、電子以及自動化等相關(guān)專業(yè)課程中的基礎(chǔ)課程,對學(xué)生在學(xué)習(xí)過程中的創(chuàng)新能力以及實(shí)踐能力的提高有一定的促進(jìn)作用。另外,在對教師對問題進(jìn)行研究的過程中,對提高其相應(yīng)的科研水平以及意識也有一定的積極影響。
一、《匯編語言程序設(shè)計(jì)》課程教學(xué)的現(xiàn)狀以及存在的問題
1.相應(yīng)的教材內(nèi)容單一陳舊,無法激發(fā)學(xué)生的學(xué)習(xí)興趣
《匯編語言程序設(shè)計(jì)》課程在我國所有高等院校相關(guān)計(jì)算機(jī)專業(yè)的課程中都占有重要地位,然而隨著時代的飛速發(fā)展,計(jì)算機(jī)的相關(guān)配置也得到了相應(yīng)的發(fā)展。在《匯編語言程序設(shè)計(jì)》教學(xué)中,其硬件教學(xué)中有些相關(guān)教材內(nèi)容與計(jì)算機(jī)的發(fā)展現(xiàn)狀不相符,存在一定程度的滯后性。在某些新開發(fā)的匯編得到廣泛使用的時候,大多數(shù)學(xué)校的相關(guān)專業(yè)的匯編語言教材依舊還停留在以前的版本中,跟不上實(shí)際的發(fā)展進(jìn)程。
2.沒有明確的教學(xué)目的,對課程重要性認(rèn)識不足
《匯編語言程序設(shè)計(jì)》課程教學(xué)是高校計(jì)算機(jī)、通信、電子以及自動化等相關(guān)專業(yè)課程中的基礎(chǔ)課程,對學(xué)生在學(xué)習(xí)過程中的創(chuàng)新能力以及實(shí)踐能力的提高有一定的促進(jìn)作用。在對《匯編語言程序設(shè)計(jì)》課程的學(xué)習(xí)過程中,大多時候得不到學(xué)生以及教師重視,對其學(xué)習(xí)的重要性認(rèn)識不足。而且,大多數(shù)老師在對這門課程進(jìn)行教學(xué)的過程中,受到相應(yīng)教學(xué)的課時以及大綱限制,在課堂教學(xué)過程中過于偏重對具體指令的相關(guān)應(yīng)用以及功能的講解,從而缺少了對各個課程之間的特點(diǎn)串聯(lián)。這樣的問題導(dǎo)致教師在教學(xué)過程中,對學(xué)生的學(xué)習(xí)興趣不能充分的調(diào)動,從而導(dǎo)致學(xué)生對正確的學(xué)習(xí)方法不能很好的掌握。
3.教學(xué)方法偏差,教學(xué)手段存在缺陷
在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行教學(xué)的過程中,其在相應(yīng)的教學(xué)方法上存在一定程度的偏差,從而導(dǎo)致一些編程中非法指令經(jīng)常性出現(xiàn)。而且,教師在對這門課程進(jìn)行教學(xué)的過程中,教學(xué)手段太過單一,在教學(xué)過程中主要就通過多媒體對課堂內(nèi)容進(jìn)行講解。在教學(xué)過程中對多媒體的運(yùn)用雖然存在直觀生動以及信息量大等相關(guān)優(yōu)勢,但其也在一定程度上使學(xué)生產(chǎn)生了學(xué)習(xí)惰性。
二、對《匯編語言程序設(shè)計(jì)》課程教學(xué)中相應(yīng)的問題進(jìn)行改革
1.加強(qiáng)對課程重要性的認(rèn)識
在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行教學(xué)之前,對其相應(yīng)的重要性進(jìn)行講解,從而使學(xué)生對匯編語言的具體特點(diǎn)進(jìn)行充分掌握,對匯編語言相較于高級語言的具體優(yōu)勢進(jìn)行具體明確,使學(xué)生對其在應(yīng)用領(lǐng)域中必要性有充分的了解。在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行學(xué)習(xí)的過程中,要注意對其實(shí)用性的具體教學(xué),使學(xué)生能夠做到對具體知識的學(xué)以致用,注重對教學(xué)內(nèi)容相關(guān)知識點(diǎn)的訓(xùn)練和拓展。另外,教師在教學(xué)過程中,還要注重對學(xué)生知識面的拓寬,從而使學(xué)生在對匯編語言的學(xué)習(xí)興趣得到相應(yīng)的提高。
2.采用多樣化教學(xué),提高學(xué)生學(xué)習(xí)興趣
在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行學(xué)習(xí)的過程中,想要對相應(yīng)的指令進(jìn)行掌握,就要對其相關(guān)的尋址方式進(jìn)行具體的理解和掌握。在對匯編語言進(jìn)行教學(xué)的過程中,由于其相較高級語言而言,沒有足夠的易讀性,不容易學(xué)生的理解,所以,在教學(xué)的時候要掌握多樣化的教學(xué)方法以及教學(xué)手段,從而使學(xué)生在對其進(jìn)行學(xué)習(xí)的過程中的學(xué)習(xí)興趣得到最大的提高,培養(yǎng)學(xué)生學(xué)習(xí)的自主性,使其對匯編語言的相關(guān)知識的理解和記憶更容易清晰地掌握。
3.增加實(shí)踐環(huán)節(jié),提高學(xué)生具體的實(shí)踐能力
在對《匯編語言程序設(shè)計(jì)》課程進(jìn)行學(xué)習(xí)的過程中,對學(xué)生具體動手實(shí)踐課程進(jìn)行加強(qiáng),使學(xué)生在具體實(shí)踐的過程中對教材上的知識點(diǎn)進(jìn)行具體的理解和掌握。在實(shí)際動手過程中學(xué)習(xí)實(shí)踐理論,使實(shí)踐與理論達(dá)到很好的結(jié)合,從而提升學(xué)生的學(xué)習(xí)效果。其中,在實(shí)踐的過程中,教師要注意對具體實(shí)驗(yàn)內(nèi)容的控制,對實(shí)驗(yàn)的重點(diǎn)著重突出,避免實(shí)驗(yàn)的時間太過漫長。除此之外,還要注意積極引導(dǎo)學(xué)生多多參與相關(guān)實(shí)踐項(xiàng)目,在一定程度上為他們提供一些參與實(shí)際研究項(xiàng)目的機(jī)會。
三、結(jié)束語
綜上所述,隨著時代的飛速發(fā)展,我國對高等院校教育水平的重視度也越來越高,計(jì)算機(jī)的相關(guān)配置也得到了相應(yīng)的發(fā)展。《匯編語言程序設(shè)計(jì)》課程作為計(jì)算機(jī)、通信、電子以及自動化等相關(guān)專業(yè)課程中的基礎(chǔ)課程,其硬件教學(xué)中有些相關(guān)教材內(nèi)容與計(jì)算機(jī)的發(fā)展現(xiàn)狀不相符,存在一定程度的滯后性。為了提高學(xué)生在學(xué)習(xí)過程中的創(chuàng)新性以及實(shí)際動手能力,對《匯編語言程序設(shè)計(jì)》教學(xué)課程的教學(xué)效果進(jìn)行相應(yīng)的提高和改善,從而使學(xué)生在學(xué)習(xí)的過程中對其課程中相應(yīng)的知識內(nèi)容進(jìn)行更清晰精準(zhǔn)的掌握。
參考文獻(xiàn):
[1]陳燕俐,許建.“匯編語言程序設(shè)計(jì)”課程教學(xué)改革探索 [J].中國電力教育,2012,10(04):193-194.
[2]李黎.《匯編語言程序設(shè)計(jì)》課程教學(xué)改革探究 [J].產(chǎn)業(yè)與科技論壇,2013,15(08):197-198.
[3]陶雪麗,郭鳳英.匯編語言程序設(shè)計(jì)課程教學(xué)改革與實(shí)踐 [J].中國教育技術(shù)裝備,2012,25(01):192-193.
篇9
關(guān)鍵詞:整合; 微機(jī)原理與接口技術(shù); 匯編語言
1.前 言
《微型計(jì)算機(jī)原理及應(yīng)用》與《匯編語言程序設(shè)計(jì)》是計(jì)算機(jī)應(yīng)用專業(yè)的兩門較重要的基礎(chǔ)課程,是軟件專業(yè)的必修專業(yè)課。它是后繼計(jì)算機(jī)語言課、操作系統(tǒng)、數(shù)據(jù)庫原理等課程的基礎(chǔ),也是教學(xué)難度和學(xué)習(xí)難度較大的兩門課程。原來的兩門課程雖側(cè)重點(diǎn)不同,但有些內(nèi)容也有重復(fù)現(xiàn)象,況且兩者有密切聯(lián)系,如果分開開設(shè),則不能使學(xué)生對計(jì)算機(jī)的組成框架及系統(tǒng)語言有總體的認(rèn)識,教學(xué)效果也不好。這對本來就難學(xué)的《匯編語言》與《微機(jī)原理與接口技術(shù)》的老師和學(xué)生無疑都是一個挑戰(zhàn)。面對這種困難, 結(jié)合著我們對學(xué)生的接受能力以及認(rèn)知規(guī)律的了解, 我們嘗試將這兩門課程整合為一門《匯編語言與接口技術(shù)》, 將它們放在一起可減少兩門課程的為數(shù)不少的重復(fù)內(nèi)容, 從整體上看學(xué)生的課時減少了, 可是對這兩門課的學(xué)習(xí)時間卻沒有減少, 使教學(xué)更加方便, 而且學(xué)生的學(xué)習(xí)效果也會有所提高。我們從以下幾方面論述了這項(xiàng)課程改革的必要性。
1.1我校課時壓縮迫使課程改革.
[1]好多高校都在加大課程整合的力度, 減少課程總學(xué)分, 拓寬基礎(chǔ), 加強(qiáng)通識教育。在這種趨勢下,《匯編語言程序設(shè)計(jì)》的課時不斷被壓縮。課時減少后, 教師既要介紹復(fù)雜的指令系統(tǒng), 又要介紹程序結(jié)構(gòu), 難免會顧此失彼。通常學(xué)生學(xué)習(xí)結(jié)束后, 還不明白這門語言的用途, 并且容易產(chǎn)生厭學(xué)情緒, 對后續(xù)課程《微機(jī)原理與接口技術(shù)》產(chǎn)生畏懼心理。從內(nèi)容上看《匯編語言程序設(shè)計(jì)》和《微機(jī)原理與接口技術(shù)》都對計(jì)算機(jī)的組成與工作原理、匯編語言源程序的基本構(gòu)成以及與外部設(shè)備的接口問題進(jìn)行了講述, 有很多相連之處。因此, 將這兩門課程合并, 優(yōu)化兩課內(nèi)容, 有利于整個教學(xué)計(jì)劃的安排, 也有利于教學(xué)。
2.合理安排匯編語言與微機(jī)原理與接口技術(shù)的課程內(nèi)容.
《微型計(jì)算機(jī)原理及應(yīng)用》與《匯編語言程序設(shè)計(jì)》有好多知識點(diǎn)是重疊的,《匯編語言程序設(shè)計(jì)》中的內(nèi)容主要是微處理器的結(jié)構(gòu)、8086指令系統(tǒng)和匯編語言程序設(shè)計(jì),《微型計(jì)算機(jī)原理及應(yīng)用》把這些知識點(diǎn)都包含進(jìn)去。 (如表 1 所示)
[2]將兩門課程合二為一勢必要對教學(xué)內(nèi)容進(jìn)行壓縮, 那么選擇什么樣的教學(xué)內(nèi)容較為合適呢? 我們采用的教材是《微機(jī)原理、匯編語言與接口技術(shù)》該書通過80286、80386、80486、Pentium和Itanium(安騰)微處理器和IBM PC機(jī)的硬件和軟件分析以及總線技術(shù),闡明微型計(jì)算機(jī)的組成原理以存儲器、輸入輸出接口芯片與微型計(jì)算機(jī)的接口方法。同時還包括匯編語言程序設(shè)計(jì)和接口技術(shù)兩部分內(nèi)容。匯編語言程序設(shè)計(jì)是微機(jī)應(yīng)用系統(tǒng)的系統(tǒng)軟件和應(yīng)用軟件的設(shè)計(jì)基礎(chǔ),接口技術(shù)是微機(jī)應(yīng)用系統(tǒng)硬件組成的基礎(chǔ)。該書內(nèi)容較全面,實(shí)例豐富。學(xué)習(xí)微型計(jì)算機(jī)的匯編語言程序設(shè)計(jì)和接口技術(shù)必須理論聯(lián)系實(shí)際。該書在介紹基本概念的同時,列舉了大量典型而有意義的例題和習(xí)題。更加注重實(shí)驗(yàn)環(huán)節(jié)。
[3]這門課程實(shí)踐環(huán)節(jié)尤為重要,實(shí)驗(yàn)是實(shí)踐環(huán)節(jié)的一個重要組成部分。可以提前幾周把實(shí)驗(yàn)題目布置下去,讓學(xué)生充分準(zhǔn)備。一般我們對實(shí)驗(yàn)的要求是:硬件原理圖、流程圖、調(diào)試成功的匯編語言程序。從我們實(shí)驗(yàn)課堂來看學(xué)生都很重視,而且大家對實(shí)驗(yàn)的興趣也非常濃厚,都能積極地參與到實(shí)驗(yàn)中去。通過實(shí)驗(yàn)的實(shí)戰(zhàn)練兵,可以進(jìn)一步鞏固所學(xué)理論知識,使學(xué)生對微機(jī)原理系統(tǒng)有了系統(tǒng)的認(rèn)識,通過實(shí)驗(yàn),使學(xué)生對這門課從理論到實(shí)踐跨出了關(guān)鍵性的一步。這是一個升華的過程,是一個質(zhì)的飛躍,為學(xué)生今后的畢業(yè)設(shè)計(jì)乃至將來的工作打下了良好的基礎(chǔ)。
3.考試方法.
按照教改計(jì)劃確定的培養(yǎng)目標(biāo)和對學(xué)生在知識與能力等方面的要求,教師在給學(xué)生期末總成績時,本著重平時、輕期末,既注重課堂教學(xué)又重視實(shí)踐教學(xué)的原則進(jìn)行考核。考核辦法:平時成績+期末試卷成績=總成績。平時成績:作業(yè)+課堂表現(xiàn)+實(shí)驗(yàn)(20分),共計(jì)30分;期末試卷成績:70分,加大平時的考核力度,作業(yè)和課堂表現(xiàn)可以側(cè)重于知識的掌握,實(shí)驗(yàn)和期末成績既有知識的掌握、知識的運(yùn)用、又有綜合性和創(chuàng)造性。這種方式,可以促進(jìn)學(xué)生時時注重學(xué)習(xí),有利于學(xué)風(fēng)和考風(fēng)的好轉(zhuǎn),可以杜絕僅憑期末一次考試就一錘定音的方式。
4.結(jié)束語.
通過計(jì)算機(jī)專業(yè)課程的整合,開拓了整體教學(xué)的新視野,同時也給我們許多新的啟示,給教學(xué)工作增添了活力。課程優(yōu)化是我們教改工作的具體體現(xiàn),今后,我們還需進(jìn)一步研究與探討課程整合的新思路,以培養(yǎng)出更優(yōu)秀人才。
參考文獻(xiàn):
[1]許穎梅. 對匯編語言和微機(jī)原理課程整合的探討[J]. 福建電腦,2007.01.
篇10
數(shù)據(jù)傳輸通信中,常常因傳輸差錯造成誤碼錯碼,尤其在無線通信中,空中的突發(fā)或隨機(jī)干擾噪聲會造成編碼差錯。為了提高傳輸?shù)恼_率,往往采用一些校驗(yàn)方法,以檢驗(yàn)糾正傳輸差錯。通信中校驗(yàn)的方法很多,其中的BCH編碼有其獨(dú)特的優(yōu)點(diǎn):不僅可以檢糾突發(fā)差錯,還能檢糾隨機(jī)差錯,被廣泛地采用在微機(jī)級的通信中。但對更低層的單片機(jī)級的數(shù)據(jù)傳輸通信糾錯,往往采用奇偶校驗(yàn)等簡單的校驗(yàn)方法。BCH校驗(yàn)因其算法復(fù)雜,尤其是動態(tài)實(shí)時的無線通信中,單片機(jī)的通信往往無法采用BCH解碼檢糾。
筆者近幾年在工業(yè)測控和無線通信系統(tǒng)開發(fā),摸索了BCH解碼檢糾在實(shí)時的、動態(tài)的、單片機(jī)級的通信中的算法,并取得十分突出的效果。以下以BCH(31:21)碼為例進(jìn)行探討。
1 BCH碼結(jié)構(gòu)
BCH碼是一種檢糾能力較強(qiáng)的循環(huán)碼。它由信息多項(xiàng)式M(X)和校驗(yàn)多項(xiàng)式J(X)組成,如以T(X)表示整個BCH(31:21)碼字的31位碼組多項(xiàng)式,則:
T(X)=M(X)+J(X) (1)
在31位BCH碼的后面再加上1位,以保證整個碼字32位中“1”的個數(shù)為偶數(shù)。該位稱偶校驗(yàn)位。這樣就形成BCH(31:21)加1位偶校驗(yàn)位的標(biāo)準(zhǔn)碼字,其結(jié)構(gòu)為:
其中校驗(yàn)多項(xiàng)式J(X)由公式(2)計(jì)算:
X0X1……X20X21……X30X31T(X)J(X)偶校驗(yàn)位J(X)=M(X)/S(X) (2)
式中S(X)是BCH(31:21)碼的生成多項(xiàng)式,見式(3):
生成多項(xiàng)式S(X)的值在BCH(31:21)碼的值是固定的。
BCH碼是一種循環(huán)碼,循環(huán)碼是利用除法來糾錯的。由于任一碼組多項(xiàng)式T(X)都能被生成多項(xiàng)式S(X)整除,所以在接收端可以將接收碼組R(X)用S(X)去除。若在傳輸中未發(fā)生錯誤,接收碼與發(fā)送碼相同,即R(X)=T(X),故接收碼組R(X)必定能被生成多項(xiàng)式S(X)整除;若碼組在傳輸中發(fā)生錯誤,即R(X)≠T(X),R(X)被S(X)除時,可能除不盡而有余項(xiàng)Y(X),因此,可根據(jù)余項(xiàng)是否為零來判斷碼中有無錯誤(檢錯),如有余項(xiàng),通過一定的運(yùn)算就可以確定錯誤位置,從而加以糾正(糾錯)。
這里R(X)被S(X)除,是32位被11除,這在非實(shí)時靜態(tài)的微機(jī)級實(shí)現(xiàn)非常簡單;但在實(shí)時的、動態(tài)的、單片機(jī)級的通信中實(shí)現(xiàn)要快速巧妙的算法才能實(shí)現(xiàn),否則,現(xiàn)有的碼未檢錯及糾錯完畢,下一個碼已經(jīng)到了。因?yàn)閯討B(tài)中位和位的時距t往往只有幾十μs,以9.6b/s的短信為例,t=104μs。在這104μs中要完成檢錯、定位和糾錯三個算法程序,才是一個完整的解碼檢糾過程。
2 檢錯
根據(jù)上述原理,檢錯過程也就是求算R(X)被S(X)除的余項(xiàng)Y(X)的過程,如余項(xiàng)Y(X)=0,則R(X)=T(X),傳輸無差錯;如余項(xiàng)Y(X)≠0,則R(X)≠T(X),檢出傳輸差錯。
在算法語言中,所有的運(yùn)算總歸于二種運(yùn)算:加和減。這是電子計(jì)算機(jī)的二進(jìn)制基本電路特性所決定的,也是匯編語言唯一的算術(shù)運(yùn)算方法。為此,這里把除法用模二加法再加右移位實(shí)現(xiàn)。
已知:S(X)=11101101001
R(X)=r3r4r5r6 (ri為8位寄存器)
調(diào)用下面的模二加法右移子程序,得到R(X)/S(X)的余項(xiàng)Y(X)=r3r4。
;32位/16位模二加法右移子程序
m2add:mov r7,#00
m2ddgx:mov a,r3
xrl a,#0edh ;S(x)的高位=oed(h)
mov r3a
mov a,r4
cpl acc.5 ;S(x)的低3位=001(b)
mov r4,a
mov a,r3
acc7e10:jb acc.7m2addgx ;R(x)的最高位為“0”,則R(x)右移
mov a,r6
rlc a
mov r6,a
mov a,r5
rlc a
mov r5,a
mov a,r4
rlc a
mov r4,a
mov a,r3
rlc a
mov r3,a
mov r7
cjne r7,#10h,acc7e10 ;右移總次數(shù)為16次
ret
余項(xiàng)Y(X)的高8位在r3寄存器中,低3位在r4的高3位。
3 定位
如果Y(X)=r3r4≠0,表示接收到的碼組R(X)有差錯,下一步則由Y(X)的值推算差錯在R(X)中的位置。
理論上要找出R(X)中差錯的位置,必須計(jì)算出差錯校驗(yàn)子C(X)。在實(shí)踐中,校驗(yàn)子C(X)的計(jì)算不僅費(fèi)時間,而且多位檢糾還需多個校驗(yàn)子C(X)。為此,經(jīng)過幾年的實(shí)踐,把Y(X)(即r3r4)直接作為綜合校驗(yàn)子,通過快速查表找到差錯位置。查找程序的大小和檢糾差錯位數(shù)有關(guān),這里以檢糾4位差錯為例,說明定位糾錯的方法。
;4位差錯位址查找子程序
bitposi:mov b,0 ;對R(X)高位至低位的移動計(jì)數(shù)
mov r2,#1fh ;設(shè)表格長度
bto a: mov a,b
inc b
acall tabsub ;調(diào)用表格子程序,讀入表格值
clr c
subb a,r3 ;Y(X)中的r3 和表格值比較
jnz binc1 :不相等,轉(zhuǎn)出
mov a,b ;相等,繼續(xù)
acall tabsub
clr
subb a,r4 ;Y(X)中的r4和表格值比較
jnz r2decl:不相等,轉(zhuǎn)出
setb f0 ;相等,置標(biāo)志位返回
ret
bincl:inc b
r2decl:djnz r2,btoa
ret ;表格查畢,沒有相等的值,不置標(biāo)志位返回
從查找子程序返回的B寄存器的值,即為差錯在R(X)中從高位到低位的位數(shù)值。
;4位差錯表格子程序
tabsub:inc a
movc a,@a+pc;將相對位置的表格送入a寄存器
ret
db 0ebh ;表格開始,長度為查找子程序中
db 00 ;r2寄存器的預(yù)置值
db 76h
.
.
.
4 糾錯
找到了差錯在R(X)位置,就可以糾錯了。