亚洲色自偷自拍另类小说-囯产精品一品二区三区-亚洲av无码专区亚洲av网站-四房播播网站

學(xué)術(shù)刊物 生活雜志 SCI期刊 投稿指導(dǎo) 期刊服務(wù) 文秘服務(wù) 出版社 登錄/注冊 購物車(0)

首頁 > 精品范文 > 匯編語言

匯編語言精品(七篇)

時間:2023-01-19 02:31:13

序論:寫作是一種深度的自我表達。它要求我們深入探索自己的思想和情感,挖掘那些隱藏在內(nèi)心深處的真相,好投稿為您帶來了七篇匯編語言范文,愿它們成為您寫作過程中的靈感催化劑,助力您的創(chuàng)作。

匯編語言

篇(1)

關(guān)鍵詞:加密算法DES匯編語言

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

1DES算法的簡單原理

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

設(shè):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位,其置換規(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次迭代運算后,得到L16、R16,將此作為輸入,進行逆置換。逆置換滿足:

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

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

(3)T16~T1的迭代計算

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

在通信網(wǎng)絡(luò)的兩端,雙方約定了一致的密鑰。在通信的源點用密鑰對核心數(shù)據(jù)進行加密并形成密文,然后,以密文的形式在公共通信網(wǎng)中傳輸?shù)酵ㄐ啪W(wǎng)絡(luò)的終點。數(shù)據(jù)到達終點后,用同樣的密鑰對密文數(shù)據(jù)進行解密,便再現(xiàn)了明文形式的核心數(shù)據(jù)。這樣,便保證了核心數(shù)據(jù)(如PIN、MAC等)在公共通信網(wǎng)中傳輸?shù)陌踩院涂煽啃浴?/p>

2匯編語言的實現(xiàn)

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

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

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

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

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

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

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

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

(1)IP置換子程序

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

;功能:將入口寄存器的數(shù)據(jù)按置換表換位。

IP:MOVC,06H;將m58送到進位標(biāo)志中

MOV7FH,C;將進位標(biāo)志送m1中

MOVC,0EH;將m50送到進位標(biāo)志中

MOV7EH,C;將進位標(biāo)志送m2中

;重復(fù),按表編寫MOVC,31H;將m15送到進位標(biāo)志中

MOV41H,C;將進位標(biāo)志送m63中

MOVC,39H;將m7送到進位標(biāo)志中

MOV40H,C;將進位標(biāo)志送m64中

RET

(2)逆置換子程序

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

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

IPRVS:MOVC,18H;將m40送到進位標(biāo)志中

MOV7FH,C;將進位標(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)用實現(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)

關(guān)鍵詞:匯編語言;實驗教學(xué);DEBUG;指令系統(tǒng)

1匯編語言教學(xué)現(xiàn)狀

匯編語言是計算機專業(yè)的核心基礎(chǔ)課程,是一門軟硬件結(jié)合的主干課程,與計算機組成原理、單片機、接口技術(shù)等其他課程都有著重要的聯(lián)系。匯編語言在出現(xiàn)后的近半個世紀(jì)里,指令體系不斷擴展,研究領(lǐng)域不斷發(fā)展變化。在今天看來,盡管C/C++等編譯器運行速度很快,編譯生成的目標(biāo)代碼運行速度也很快,但用匯編語言編寫的源程序匯編后得到的目標(biāo)程序仍在時間和空間兩個方面體現(xiàn)出較大的優(yōu)勢,運行速度更快,目標(biāo)代碼更短。在計算機自動控制、儀器儀表和家用電器等的應(yīng)用程序日益發(fā)展的今天,速度快、功能強的匯編語言更是占有非常重要的地位。對計算機相關(guān)專業(yè)的學(xué)生來說,匯編語言是需要掌握的重要專業(yè)基礎(chǔ)知識之一。

匯編語言是一種以“指令助記符”為特征的低級語言,能直接控制底層機器的操作,同時又為操作系統(tǒng)和高級語言提供支持。然而隨著硬件技術(shù)的飛速發(fā)展,處理器的性能和存儲器的容量達到了相當(dāng)?shù)母叨?計算機體系結(jié)構(gòu)由標(biāo)量計算機向陣列計算機、并行計算機和數(shù)據(jù)流計算機發(fā)展,多任務(wù)的操作系統(tǒng)(Windows、Unix、Linux)為應(yīng)用程序提供了廣闊的平臺。而在操作系統(tǒng)中,大部分代碼采用高級語言(C/C++)編寫。特別是隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,基于Internet的程序設(shè)計與開發(fā)成為了當(dāng)前的熱點,學(xué)生對在C/S與B/S結(jié)構(gòu)下基于J2EE虛擬平臺的程序設(shè)計的學(xué)習(xí)熱情高漲,匯編語言所占的份量大大降低。

在匯編語言的教學(xué)過程中,普遍存在的問題就是主流的微型計算機已經(jīng)進入了32位和64位的時代,多任務(wù)的操作系統(tǒng)取代了DOS,而絕大多數(shù)高校匯編語言課程仍然是單任務(wù)操作系統(tǒng)DOS下的8086匯編語言,主要教學(xué)內(nèi)容是在學(xué)習(xí)8086CPU基本結(jié)構(gòu)以及指令集的基礎(chǔ)上,在DOS環(huán)境下通過軟中斷對BIOS和DOS系統(tǒng)功能的調(diào)用來開發(fā)應(yīng)用程序,盡管以386體系結(jié)構(gòu)為基礎(chǔ)的Pentium處理器也進入了教材,但是對于386體系結(jié)構(gòu)的講解仍是以實模式為主,對于保護模式的知識應(yīng)用能力甚為空泛,給學(xué)生的印象是所學(xué)的匯編語言知識跟不上時展的步伐。又因為匯編語言和機器的體系結(jié)構(gòu)結(jié)合緊密;使用者需要對計算機組成、硬件控制和指令解釋過程有比較清晰的掌握;如果程序的移植性不好,程序的編譯調(diào)試就比較麻煩;編寫出吸引人們感官的程序就比較困難。

因此,學(xué)生在匯編語言的學(xué)習(xí)中產(chǎn)生厭煩情緒,對匯編語言的學(xué)習(xí)熱情普遍不高,有些高校則開始采取各種手段從教學(xué)內(nèi)容和方法等方面對匯編語言課程進行改革。如北京理工大學(xué)計算機學(xué)院從教材建設(shè)、教學(xué)內(nèi)容和方法等方面進行了大膽的改革,有效地提高學(xué)生的學(xué)習(xí)積極性[1-2]。

2教學(xué)方法研究

為了提高學(xué)生學(xué)習(xí)匯編語言的積極性,教師應(yīng)針對匯編語言學(xué)習(xí)的難點來一一破解。對部分同學(xué)認(rèn)為匯編語言知識跟不上時展步伐這一誤區(qū),教師應(yīng)該在上第一節(jié)課時就要予以更正,要告訴學(xué)生匯編語言的應(yīng)用領(lǐng)域,如目前流行的嵌入式系統(tǒng)的硬件的檢測和控制部件都是由匯編語言完成的,還可以找適當(dāng)?shù)臋C會給學(xué)生介紹一下計算機病毒的工作機理,從而提高學(xué)生學(xué)習(xí)匯編語言的積極性。

對于匯編語言和機器的體系結(jié)構(gòu)結(jié)合緊密、抽象性強、難于理解的問題,教師在講解指令系統(tǒng)時,要與CPU的功能結(jié)構(gòu)結(jié)合起來,把地址、數(shù)據(jù)和控制信息的傳遞要通過圖示進行分解。

如講解指令 MOV AL,[3008H],這是一條傳送類指令,即將偏移地址為3008H的存儲單元中的信息送回CPU中的累加器AL寄存器中。如果這樣講,學(xué)生不易明白,因為他們之前學(xué)過的語言都沒有涉及到CPU的內(nèi)部部件,而且在程序中也沒有直接提供存儲器的地址信息。為了讓學(xué)生明白這條指令的含義,可以在課件中畫出CPU的功能結(jié)構(gòu)圖(圖1),然后通過動畫演示整條指令執(zhí)行的全部過程:從指令隊列中讀取指令,通過譯碼器譯出指令的功能;將偏移地址3008H通過內(nèi)部總線送至總線接口部件;通過20位的地址形成部件與16位數(shù)據(jù)寄存器DS的內(nèi)容結(jié)合形成20位的物理地址,通過控制部件發(fā)出存儲器讀命令;存儲器將所存儲的信息通過數(shù)據(jù)總線送至總線接口部件,通過內(nèi)部總線送至AL寄存器中。每一步都要用圖顯示出數(shù)據(jù)的流向以及時序。

圖1CPU功能結(jié)構(gòu)圖

教師在講解指令系統(tǒng)初期對某些具有代表性的指令進行上述詳細(xì)、逼真的講解,可以極大地增強課程的可理解性,提高學(xué)生對指令的感性認(rèn)識,繼而增強學(xué)生的學(xué)習(xí)興趣。

學(xué)生編寫匯編程序的初期,往往會認(rèn)為程序調(diào)試麻煩,這是因為匯編語言相對于其他高級語言來說比較抽象,實驗結(jié)果不容易檢驗造成的。簡單的匯編語言實驗結(jié)果往往是存儲在CPU內(nèi)部的寄存器或者內(nèi)存當(dāng)中,不能夠很直觀的看到,如果通過DEBUG就可以觀察到寄存器的內(nèi)容和存儲器的內(nèi)容,同時通過T命令,可以跟蹤每條指令執(zhí)行后寄存器和存儲器的變化,這是調(diào)試程序和發(fā)現(xiàn)邏輯錯誤非常有效的手段。它要求學(xué)生要靈活掌握DEBUG的各種功能,記住它的各種命令,因此,需要教師在課堂上花費一定的時間來講解各種命令的用途,同時需要演示它們的使用方法。一旦學(xué)生真正地掌握了DEBUG的應(yīng)用方法,對深入了解計算機的工作原理和指令系統(tǒng)將起到直接和不可替代的作用

3實驗教學(xué)平臺設(shè)計

實驗教學(xué)是檢驗和鞏固已學(xué)知識的一個必要手段,是培養(yǎng)學(xué)生創(chuàng)造性的關(guān)鍵環(huán)節(jié),也是教學(xué)改革的一個重要方面。然而學(xué)生在匯編語言這門課程中,對所學(xué)知識缺乏必要的感性認(rèn)識,因此實驗環(huán)節(jié)在整個教學(xué)活動中就占據(jù)了舉足輕重的地位。

然而,傳統(tǒng)的80X86匯編語言實驗一般都是在DOS環(huán)境下進行的[3],具體過程如圖2所示,用編輯程序(如EDIT命令)編寫源程序,然后用編譯程序(MASM命令)將源程序編譯成目標(biāo)程序(即.obj文件),然后用連接程序(LINK命令)將目標(biāo)文件轉(zhuǎn)換成可執(zhí)行文件,在DOS環(huán)境中執(zhí)行這些命令時,后面往往需要緊跟各種參數(shù),這些會給學(xué)生帶來很多額外的負(fù)擔(dān),而且在一個源程序進行編譯連接的過程中往往不能一次通過,可能會出現(xiàn)各種錯誤,這樣上面的過程會多次的重復(fù),因此在DOS的命令行上要頻繁進行上面的操作,非常的繁瑣,容易引起學(xué)生厭倦。

目前流行的操作系統(tǒng)是Windows,學(xué)生對DOS的使用非常陌生,DOS的各種命令也都很少使用,因此在做匯編實驗時,學(xué)生往往會頻繁在Windows和DOS之間切換,這樣大大的影響了學(xué)生上機的效率,使得用匯編語言編程變成了一件非常不舒服的事情[4]。

因此作者所在的教研組開發(fā)了一個基于Windows操作系統(tǒng)的以Intel 80X86為指令系統(tǒng)的匯編語言集成環(huán)境,該集成系統(tǒng)集編輯、編譯、連接和調(diào)試于一體的實驗開發(fā)平臺。開發(fā)人員可以在該實驗平臺上編寫源程序,然后用戶只要直接用鼠標(biāo)點擊菜單上的相應(yīng)命令,就可以完成程序的匯編和連接工作,直接生成可執(zhí)行文件,所有工作一次性完成。并且同時把匯編和連接時產(chǎn)生的輸出信息輸出到輸出窗口中,供用戶參考,而不會輸出到DOS的命令界面上去,省去了不同操作環(huán)境之間的頻繁切換。當(dāng)然實驗平臺包含了文件導(dǎo)入功能,如果需要編輯其他未匯編的匯編程序,可以在該平臺中導(dǎo)入用其他文本編輯工具編寫的匯編語言原程序進行匯編,只要導(dǎo)入的原代碼格式是純文本文件即可。

這一開發(fā)平臺很好地解決了匯編語言的開發(fā)與操作系統(tǒng)之間的矛盾,運用在課程的實驗教學(xué)中,效果良好,大大提高了學(xué)生做實驗的積極性。

4實驗教學(xué)的組織

由于DEBUG是關(guān)鍵的調(diào)試程序,因此教師需要專門設(shè)計若干個小實驗讓學(xué)生對DEBUG有一個深刻的了解和認(rèn)識,通過熟悉DEBUG的過程掌握指令的功能和各種尋址方式。

由于匯編語言不同于其他高級語言,因此直接讓

學(xué)生來編寫匯編語言程序并不太現(xiàn)實,應(yīng)該設(shè)計一些具有一定功能的小程序,讓學(xué)生來驗證,通過模仿和驗證逐漸掌握匯編語言的編程規(guī)律和方法。同時讓學(xué)生在現(xiàn)有正確程序的基礎(chǔ)上故意安排幾個錯誤,重新進行編譯和連接,使學(xué)生熟悉匯編語言編譯系統(tǒng)所報的各種錯誤信息的含義,以及修改方法,這樣當(dāng)學(xué)生調(diào)試自己所編寫的程序時,遇到報錯信息,就會心里有數(shù)而不至于手足無措了,這樣會大大提高學(xué)生編寫匯編語言程序的自信心和實踐能力。

為了提高學(xué)生的學(xué)習(xí)興趣,DOS功能調(diào)用實驗是必不可少的,這需要選取一些學(xué)生感興趣的、具有觀測效果的實驗。對于能力比較強的學(xué)生,可以讓他們試一試底層操作,如BIOS調(diào)用、I/O操作,對顯示器以及硬盤的控制等,那樣會令這些學(xué)生體會到學(xué)習(xí)匯編語言的快樂。

5知識的提升

學(xué)生在學(xué)習(xí)匯編語言課程之前,通常都已經(jīng)學(xué)習(xí)了C語言,在實際中,匯編語言和C語言混合編程的應(yīng)用也比較多,因此可以作為擴展內(nèi)容,讓有能力和有興趣的學(xué)生選做一些混合編程的實驗,使學(xué)生更深刻的體會到學(xué)習(xí)匯編語言的用途,提高學(xué)生的動手能力和實踐能力。學(xué)有余力的同學(xué)可以選作一些Win32匯編語言的程序設(shè)計,由于Win32匯編程序設(shè)計方法和思路與當(dāng)前主流的程序設(shè)計技術(shù)一致,具有較強的實用性及先進性,因此可以對學(xué)生的知識結(jié)構(gòu)體系進行提升和延續(xù)。

6結(jié)語

匯編語言是計算機專業(yè)一門重要而又難學(xué)的課程,這要求教師必須不斷學(xué)習(xí)、創(chuàng)新,在改革教學(xué)模式的同時努力培養(yǎng)學(xué)生的創(chuàng)新精神和動手實踐能力。

參考文獻:

[1] 張雪蘭,譚毓安,李元章. 匯編語言程序設(shè)計課程教學(xué)改革與創(chuàng)新能力培養(yǎng)[J]. 計算機教育,2008(8):22-23.

[2] 劉輝. 匯編語言實驗教學(xué)探討[J]. 計算機教育.2008(4):11-13.

[3] 王正智. 8086/8088宏匯編語言程序設(shè)計教程[M]. 北京:電子工業(yè)出版社,2006:203-206.

[4] 焦殿科,郭延鋒. 計算機專業(yè)“匯編語言程序設(shè)計”課教學(xué)改革研究與探討[J]. 遼寧工學(xué)院學(xué)報,2007,9(6):123-125.

Discussion of Assembly Language Teaching

WANG Xiao-ye, WEN Xian-bin

(School of Computer and Communication Engineering, Tianjin University of Technology, Tianjin 300191, China)

篇(3)

匯編語言與cpu有關(guān)。

匯編語言是專門為某一類CPU而設(shè)計的,所以匯編語言與CPU類型息息相關(guān),當(dāng)然至于型號卻是不一樣的。高級語言與CPU基本上是關(guān)系不是很大的,但完全沒有關(guān)系也不是那么一定的,比如C51就是專門為51單片機這類CPU而設(shè)計的高級語言。

匯編語言,即第二代計算機語言,用一些容易理解和記憶的字母,單詞來代替一個特定的指令,比如:用“ADD”代表數(shù)字邏輯上的加減,“MOV”代表數(shù)據(jù)傳遞等等,通過這種方法,人們很容易去閱讀已經(jīng)完成的程序或者理解程序正在執(zhí)行的功能,對現(xiàn)有程序的bug修復(fù)以及運營維護都變得更加簡單方便。

(來源:文章屋網(wǎng) )

篇(4)

關(guān)鍵詞 微機原理與接口 匯編語言與C語言比較

中圖分類號:TP368.1 文獻標(biāo)識碼:A

0 引言

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

1 8253知識點進行描述

8253工作方式:

1.1 頻率發(fā)生器

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

1.2 方波產(chǎn)生器

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

1.3 C語言的優(yōu)點

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

1.4 匯編語言的優(yōu)點

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

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

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

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

outportb(0x203, 0x56)

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

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

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

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

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

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

MOV AL, 56H ;設(shè)置工作方式

OUT DX, AL;往端口送數(shù)據(jù)

MOV DX, 201H;指向計數(shù)器1

MOV AL, 8;給計數(shù)值

OUT DX, AL;往端口送數(shù)據(jù)

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

MOV AL,94H;設(shè)置工作方式

OUT DX,AL;往端口送數(shù)據(jù)

MOV DX,202H;指向計數(shù)器2

MOV AL,6;給計數(shù)值

OUT DX,AL;往端口送數(shù)據(jù)

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

3 結(jié)束語

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

參考文獻

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

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

篇(5)

關(guān)鍵詞:匯編語言 二進制 十進制 十六進制 顯示

1 引言

如果要處理一個與數(shù)相關(guān)的問題,不管是中間的、還是最終的結(jié)果,我們都希望能直觀地在顯示器上顯示出來。數(shù)字計算機中的數(shù)據(jù)存儲方式是由“0”和“1”組成的二進制碼串,根據(jù)不同的需要,我們往往要求數(shù)據(jù)的顯示形式不一樣,如二進制、十進制、十六進制、八進制等等,然而在匯編語言中實現(xiàn)數(shù)據(jù)的顯示沒有類似高級語言中的輸出格式命令那么方便,對每個數(shù)的顯示,一般都需要逐位地轉(zhuǎn)換成ASCII碼才能調(diào)用系統(tǒng)顯示功能完成顯示,其中,按不同的數(shù)制要求,還要先完成數(shù)制間的轉(zhuǎn)換。下面我們來探討一個數(shù)如何編程讓它分別按二進制、十進制、十六進制的數(shù)制形式顯示在CTR顯示器上。

2 編程思路與算法

以一個16位二進制機器整數(shù)為例,它的二進制表示范圍是0至1111111111111111B;十進制的范圍是0至65535(無符號數(shù)),或-32768至+32767(有符號數(shù));十六進制表示范圍是0000至FFFFH。為方便說明,假設(shè)此數(shù)放在BX寄存器中,下面介紹按不同進制形式顯示的編程思路和算法。

2.1 按二進制形式顯示

二進制只有“0”和“1”兩個數(shù)字,它們的ASCII碼分別是30H和31H,只要逐位判斷是“0”還是“1”,然后轉(zhuǎn)換成對應(yīng)的ASCII碼即可。

實際編程時,對于BX中的十六位二進制數(shù),可設(shè)置一個循環(huán)次數(shù)為16的循環(huán)體,用向左的移位指令,通過CPU標(biāo)志寄存器中的CF標(biāo)志,由高位到低位逐位判斷、逐位取ASCII碼值、逐位顯示。當(dāng)然也可以先將十六個數(shù)位都轉(zhuǎn)換成一ASCII碼串放入內(nèi)存緩沖區(qū)后再按字符串方式顯示,要注意兩種方法在顯示時系統(tǒng)調(diào)用的功能號不同。

2.2 按十進制形式顯示

首先要完成二進制到十進制數(shù)的轉(zhuǎn)換,一般采用“除10取余”法來完成,其大致過程如下:將待轉(zhuǎn)換的數(shù)(在BX中)除以10,得到第一個商和余數(shù),此第一個余數(shù)就是所求的十進制數(shù)的個位;再用第一個商除以10,得到第二個商和余數(shù),此第二個余數(shù)就是所求十進制數(shù)的十位;……;重復(fù)這一過程直至商為0,此時的余數(shù)就是所求十進制數(shù)的最高位。

在內(nèi)存中分配一緩沖區(qū),用來存放以上分離出來的十進制數(shù)的每一位,然后再逐個轉(zhuǎn)換成ASCII碼,轉(zhuǎn)換成ASCII碼的過程很簡單,就是給每個十進制位加上30H即可;最后送顯示器輸出。從轉(zhuǎn)換的過程可以看出,先分離出來的是十進制數(shù)的低位,要后顯示;后分離出來的是十進制數(shù)的高位,應(yīng)該先顯示。因此在編程時,我們可以利用堆棧操作中“先進后出、后進先出”的特性,當(dāng)分離出各十進制位時依次入棧,要逐個轉(zhuǎn)換成ASCII碼送顯示時依次出棧。

2.3 按十六進制形式顯示

十六進制與二進制有很好的對應(yīng)關(guān)系(每4位二進制數(shù)和1位十六進制數(shù)存在一一對應(yīng)關(guān)系),顯示時只需將原二進制數(shù)(在BX中)每4位劃成一組,按組求對應(yīng)的ASCII碼送顯示器即可。

ASCII碼與十六進制數(shù)字的對應(yīng)關(guān)系為:30H~39H對應(yīng)數(shù)字0~9,41H~46H對應(yīng)數(shù)字A~F,從數(shù)字9到A,其ASCII碼間隔了7H,這一點在轉(zhuǎn)換時要特別注意。為使一個十六進制數(shù)能按高位到低位依次顯示,實際編程中,我們對先BX中的數(shù)每次循環(huán)左移一組(4位二進制),然后屏蔽掉當(dāng)前高12位,對當(dāng)前余下的4位(即1位十六進制數(shù))求其ASCII碼,要判斷它是0~9還是A~F,是前者則加30H得對應(yīng)的ASCII碼,后者則要加37H才行,最后送顯示器輸出。以上步驟重復(fù)4次,就可以完成BX中數(shù)以4位十六進制的形式顯示出來。

3 匯編語言源程序?qū)嵗?/p>

假設(shè)要將BX寄存器中的數(shù)分別按無符號二進制、十進制和十六進制顯示在屏幕上,下面給出實現(xiàn)的匯編源程序,均為子程序方式,為了簡明,略去現(xiàn)場的保護與恢復(fù)操作。

3.1 按二進制形式

DISPBXB PROC NEAR

MOV CX,16

LP:ROL BX,1

JC D1

MOV DL,30H

JMP OUTP

D1:MOV DL,31H

OUTP:MOV AH,2

INT 21H

LOOP LP

MOV DL,’B’ ;顯示字母“B”

MOV AH,2

INT 21H

RET

DISPBXB ENDP

設(shè)(BX)=7FFFH,則輸出格式為0111111111111111B,后面的大字字母B表示二進制形式,顯示結(jié)果固定為十六位。

3.2 按十進制形式

DISPBXD PROC NEAR

MOV SI,10

XOR CX,CX

MOV AX,BX

NEXT:MOV DX,10

DIV SI

PUSH DX

INC CX

CMP AX,0 ;商為0則完成轉(zhuǎn)換

JNZ NEXT

OUTP:POP DX

ADD DL,30H

MOV AH,2

INT 21H

LOOP OUTP

RET

DISPBXD ENDP

此程序在轉(zhuǎn)換和顯示時的循環(huán)控制方式和二進制形式的例子不一樣,即顯示結(jié)果的位數(shù)是不固定的。若(BX)=7FFFH=32767,則顯示結(jié)果為5位:32767;若(BX)=00FFH=255,則顯示結(jié)果為3位:255,與十進制的有效位數(shù)相同。

3.3 按十六進制形式

DISPBXH PROC NEAR

MOV CL,

MOV CH,4

NEXT:ROL BX,CL

MOV AL,BL

AND AL,0FH

ADD AL,30H

CMP AL,3AH

JL OUTP

ADD AL,07H ;是A~F,要多加7

OUTP:MOV DL,AL

MOV AH,02H

INT 21H

DEC CH

CMP CH,0

JA NEXT

MOV DL,’H’ ;顯示字母“H”

MOV AH,2

INT 21H

RET

DISPBXH ENDP

此程序的顯示格式固定為四位,最后加上字母“H”表示為十六進制形式。設(shè)(BX)=7FFFH,則顯示結(jié)果為:7FFFH;若(BX)=00FFH,則顯示結(jié)果為:00FFH。

4 對有符號數(shù)顯示的擴展應(yīng)用

CMP BX,0

JGE ZS

MOV DL,’-’

MOV AH,2

INT 21H

ZS:CALL DISPBXD

5 結(jié)束語

以上介紹了在匯編語言程序設(shè)計中,根據(jù)不同的需要,如何把機器數(shù)按不同數(shù)制形式顯示出來的方法,對于不具體介紹的八進制形式,只需將十進制顯示的子程序(DISPBXD)中的除數(shù)由10改為8即可。各種方法中,主要是數(shù)據(jù)轉(zhuǎn)換的方法不同,顯示的功能調(diào)用指令是一樣的,當(dāng)然還可以用其它(比如字符串方式)方法調(diào)用顯示功能,這里不再詳細(xì)介紹。

參 考 文 獻

[1]沈美明,溫冬嬋.IBM-PC匯編語言程序設(shè)計.北京.清華大學(xué)出版社.1991.

[2]Barry B. Brey. Programming the 80286,80386,and Pentium-Based Personal Computer.北京.電子工業(yè)出版社.1998.

篇(6)

關(guān)鍵詞:匯編語言 高級編程語言 歷史 趨勢

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

一、編程語言的發(fā)展歷程

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

1.機器語言

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

2.匯編語言

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

3.高級語言

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

二、高級編程語言、匯編語言和機器語言的區(qū)別

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

高級編程語言,作為用戶層面的程工具,用戶并不需要去了解硬件的結(jié)構(gòu),而是去用邏輯的語言去實現(xiàn)想要的目標(biāo),但是因為高級編程語言的架構(gòu)高于匯編,所以不能編寫直接訪問硬件資源的系統(tǒng)程序,因次,高級編程語言必須要調(diào)用匯編語言編寫的程序來訪問硬件地址。

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

三、匯編語言和高級編程語言的優(yōu)缺點

1.匯編語言的優(yōu)缺點

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

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

2)編寫的代碼因為少了很多編譯的環(huán)節(jié),可以能夠準(zhǔn)備的被執(zhí)行

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

缺點:

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

2)因為匯編仍然需要自己去調(diào)用存儲器存儲數(shù)據(jù),很容易出現(xiàn)BUG而且調(diào)試起來也不容易

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

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

2.高級編程語言的優(yōu)點

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

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

通過上面的介紹,我們不難發(fā)現(xiàn)面向?qū)ο笏枷朐诰幊淘O(shè)計中占有很重要的地位,同時現(xiàn)在編程語言的多元化也告訴我們,未來的語言發(fā)展不會是一枝獨秀,也不會是單純的語言發(fā)展,而是以完全面向?qū)ο蟮淖藨B(tài)你展現(xiàn)我們的現(xiàn)實世界。它將更容易被工程師學(xué)習(xí)和使用,人們完全可以通過簡單的操作來完成復(fù)雜的編程。這就得出了未來語言發(fā)展的第一個趨勢--面向?qū)ο螅捎嬎銠C來提供現(xiàn)有的函數(shù)功能、封裝結(jié)構(gòu)。而工程師只需要去拿現(xiàn)成的函數(shù)來調(diào)用,大大提高了代碼的利用率。同時簡單性也成為未來追求的目標(biāo),如果一個有簡單計算機知識的人只需學(xué)習(xí)一些基本的操作就能編寫適合于各種情況的應(yīng)用程序,這樣創(chuàng)造和編寫的成本將會大大降低。在互聯(lián)網(wǎng)高速發(fā)展的今天,安全也將成為了代碼編寫中必不可少的因素,一個更安全更具有保密性的語言也是未來的需求。綜上在這樣一個“百花齊放百家爭鳴”的編程語言環(huán)境,只有能真正給使用者帶來便利的語言才會走的更遠(yuǎn)走的更好。

參考文獻

[1]張t蕊,C++教學(xué)方法及學(xué)習(xí)方法的調(diào)研與分析,計算機教育第23期

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

[3]路士兵,淺談計算機匯編語言的特點和學(xué)習(xí)方法,科技創(chuàng)新導(dǎo)報2014NO.20

篇(7)

關(guān)健詞:匯編語言;案例教學(xué)法;考核方法

中圖分類號:G642文獻標(biāo)識碼:A文章編號:1009-3044(2011)10-2459-03

Research on Teaching Method of Assembly Language and Programming

HE Li-xin, WANG Kun-lun, LIU Deng-sheng, WU Xiao-qin, TU Jing

(Key Laboratory of Net work and Intelligent Information Processing, Hefei University, Hefei 230601, China)

Abstract: At present,it is very hard to get a satisfied effect of teaching. This paper discusses how to get a better effect on teaching of assembly language by four facets. The four facets include that interesting the students in studying the course, and declining the difficulty of the course, and improving the teaching of experiment, and that a reasonable method of assessment is established. Practice proves the efficiency of this method.

Key words: assembly language; case methods of teaching; methods of assessment

《匯編語言程序設(shè)計》是高等院校計算機軟、硬件及應(yīng)用專業(yè)的專業(yè)基礎(chǔ)(核心)課,它不僅是計算機原理、接口技術(shù)及操作系統(tǒng)等其它核心課程的先行課,而且對訓(xùn)練學(xué)生掌握程序設(shè)計技術(shù)、加深對計算機工作原理的理解有非常重要的作用。 在實際應(yīng)用當(dāng)中,可以使用匯編語言進行計算機系統(tǒng)維護、操作系統(tǒng)維護、操作系統(tǒng)分析、反病毒分析,還可以直接被用于嵌入式軟件開發(fā)之中,更為重要是在與硬件直接打交道時匯編語言是唯一的選擇。因此,搞好《匯編語言程序設(shè)計》課程的教學(xué)很重要,如何搞好該課程教學(xué)值得廣大教師們探討和總結(jié)。

1 現(xiàn)狀分析

目前,匯編語言課程教學(xué)存在的如下問題:

1)絕大多數(shù)同學(xué)對匯編語言課程的目的認(rèn)識不夠,且錯誤地認(rèn)為匯編語言已經(jīng)過時,沒有用,從而對這門課程的學(xué)習(xí)沒有興趣。

絕大多數(shù)學(xué)生把匯編語言作為一門純粹的編程語言課程來對待,這是一個較大的誤區(qū),這從思想上和意識上把匯編語言放到一個普通的程序設(shè)計軟件的位置,這樣勢必難以達到較好的教學(xué)效果。而本課程的一個主要目的就是讓學(xué)生學(xué)習(xí)與認(rèn)識基本存儲控制思想、底層設(shè)備操縱方法、系統(tǒng)輸入輸出特點等內(nèi)容,為學(xué)生在高層應(yīng)用與底層的系統(tǒng)結(jié)構(gòu)組織與實現(xiàn)之間架設(shè)一座橋梁,使他們能夠建立一個完整的系統(tǒng)思想體系,為將來更好地應(yīng)用和發(fā)展打下一個良好的基礎(chǔ)[1]。

另外,目前直接用匯編語言編寫軟件的情況的確不多,所以有不少學(xué)生都錯誤地認(rèn)為在高級語言盛行的時代匯編語言已經(jīng)過時且在企業(yè)的實際應(yīng)用中沒有用途,因此對這門課程沒有興趣。

2)匯編語言難學(xué),挫傷了學(xué)生對該課程的學(xué)習(xí)熱情。

由于匯編語言程序設(shè)計涉及到計算機底層硬件,學(xué)習(xí)內(nèi)容枯燥,需要記憶的內(nèi)容繁多,起步比較困難,不像計算機高級語言起步容易并在現(xiàn)在的應(yīng)用程序設(shè)計中占有絕對的優(yōu)勢,相對于匯編語言,高級語言接近人類的自然語言,易學(xué)易用,很多功能用高級語言里只要一條語句就可實現(xiàn),而用匯編語言則要好幾條甚至幾十條語句才能實現(xiàn),這在很大程度上挫傷了學(xué)生對該課程的學(xué)習(xí)熱情。

3)實驗內(nèi)容枯燥無味,實驗考核方法不夠好,實驗課效果差。

當(dāng)前絕大多數(shù)學(xué)校的實驗與實踐環(huán)節(jié)的組織對學(xué)生學(xué)習(xí)匯編語言沒有起到太大的幫助,匯編語言實驗內(nèi)容仍然停留在程序三大結(jié)構(gòu)、數(shù)據(jù)組織與數(shù)值計算、代碼轉(zhuǎn)換和數(shù)制轉(zhuǎn)換等方面,這會導(dǎo)致學(xué)生對本課程實驗和實踐環(huán)節(jié)沒有興趣,不能激發(fā)學(xué)生的學(xué)習(xí)熱情。另外,很多實驗課基本上是學(xué)生做實驗,有問題請教老師,教師指導(dǎo),實驗課結(jié)束就意味著同學(xué)們都通過了該實驗這種方式進行的。很顯然這種方式對自我要求不高的學(xué)生沒有任何監(jiān)督力,實驗課教學(xué)效果差是很自然的事情。

4)課程考核方法不夠完善,對學(xué)習(xí)過程的考核不夠嚴(yán)謹(jǐn)。

傳統(tǒng)的考核方法是按照期末考試占70%,平時成績占30%來計算總評成績的,有點甚至直接用期末考試成績代替總評成績。顯然這些方法對學(xué)習(xí)過程的表現(xiàn)考慮不夠,這就導(dǎo)致有些平時不愛學(xué)習(xí)的同學(xué),經(jīng)常采取考試之前突擊學(xué)習(xí)、押題等臨時抱佛腳的方法來應(yīng)付,這樣的學(xué)習(xí)方式有時能僥幸通過考試,但很顯然學(xué)到的知識不牢固,不全面,考過之后很快就會忘記的。

2 問題的解決方案

1)引領(lǐng)學(xué)生認(rèn)識匯編語言課程的重要性,結(jié)合企業(yè)對匯編語言人才的需求和實例激發(fā)學(xué)生學(xué)習(xí)匯編語言的興趣。

人們常說“興趣是最好的老師”,事實的確如此,當(dāng)學(xué)生們對課程產(chǎn)生了興趣時他們會很主動地去學(xué)習(xí),遇到困難會積極思考。為了激發(fā)學(xué)生的學(xué)習(xí)興趣,作者在教學(xué)中使用了如下方法:

第一、強調(diào)《匯編語言》課程的重要性。《匯編語言》是高等院校計算機軟、硬件及應(yīng)用專業(yè)的專業(yè)基礎(chǔ)(核心)課,它不僅是計算機原理、接口技術(shù)及操作系統(tǒng)等其它核心課程的先行課,而且對訓(xùn)練學(xué)生掌握程序設(shè)計技術(shù)、加深對計算機工作原理的理解有非常重要的作用。同時也是我們學(xué)習(xí)高級語言的利器[2]。

第二、介紹匯編語言在計算機系統(tǒng)維護等方面的實際應(yīng)用,并選擇有代表性的問題現(xiàn)場演示,讓學(xué)生親身體會到匯編語言的用途。雖然目前用匯編語言編寫軟件的情況的確不多。但是在實際應(yīng)用中可以使用匯編語言進行計算機系統(tǒng)維護、操作系統(tǒng)維護、操作系統(tǒng)分析、反病毒分析,另外在一些嵌入式軟件開發(fā)中有時還需要用到匯編語言,更為重要是在與硬件直接打交道時匯編語言是唯一的選擇。

第三、用與生活中密切相關(guān)的實例現(xiàn)場演示,激發(fā)興趣。

演示事先準(zhǔn)備好的用匯編語言開發(fā)的與日常生活密切相關(guān)的應(yīng)用實例,如:交通燈系統(tǒng),空調(diào)單暖溫度控制器,以及銀行排隊系統(tǒng)等等。使學(xué)生親身體會到匯編語言的用途,從而徹底扭轉(zhuǎn)學(xué)生們的編語言沒有用的思想,激發(fā)學(xué)生學(xué)習(xí)匯編語言的興趣。

第四、強調(diào)企業(yè)中需要懂匯編語言的人才。空口無憑,可以打開百度或Google的網(wǎng)頁,輸入“匯編語言 招聘”進行搜索就會發(fā)現(xiàn)的確有不少企業(yè)在招聘懂匯編的高級人才且待遇豐厚。親眼見到上述企業(yè)的招聘廣告,學(xué)生會深刻體會到《匯編語言程序設(shè)計》決非無用課程。

教學(xué)的實踐表明:當(dāng)學(xué)生明白了該課程的重要性和學(xué)習(xí)該課程的目的,學(xué)生們就會覺得學(xué)好該課程是很有必要的;而當(dāng)學(xué)生們親眼見到匯編語言在計算機維護等方面的實際應(yīng)用和用匯編語言開發(fā)的與生活中密切相關(guān)的應(yīng)用實例的演示時,他們就會體會到匯編語言的用途,激起他們的興趣;最后當(dāng)學(xué)生們看到網(wǎng)上不少企業(yè)在招聘懂匯編的高級人才且待遇豐厚時,學(xué)生們就會真正感受到匯編語言課程的魅力,激起他們更大的學(xué)習(xí)興趣。

2)通過合理安排教學(xué)內(nèi)容和充分利用多媒體教學(xué)的優(yōu)勢等方法降低匯編語言學(xué)習(xí)的難度,提高教學(xué)效果。

有了學(xué)習(xí)興趣固然是好事,但如果在學(xué)習(xí)過程中遇到的困難太多或太大都會挫傷學(xué)生的學(xué)習(xí)熱情。

而要想學(xué)習(xí)好一門課程,首先要選擇一本好的教材。我們選擇教材的原則是:結(jié)構(gòu)清晰、主線特出,內(nèi)容要有一定的深度和廣度,所選例題要有代表性。根據(jù)該原則,我們選用普通高等教育“九五” 國家教委重點教材(沈美明,溫冬嬋 編著.《80X86匯編語言程序設(shè)計》. 北京:清華大學(xué)出版社, 2001.7)作為本課程的教材[3],該教材也得到了全國廣大匯編語言教師的認(rèn)可。經(jīng)過多年的教學(xué)以及和學(xué)生的交流中我們發(fā)現(xiàn),如果直接按照該教材的順序教學(xué)效果不是很好。為了提高教學(xué)效果,作者在教學(xué)過程中做了如下四方面的改進。

第一,合理調(diào)整課程內(nèi)容的先后順序,將枯燥無味、需要大量記憶的內(nèi)容分散到多個章節(jié)中講授。例如:本書第三章 80x86的指令系統(tǒng)和尋址方式,這一章的指令太多,內(nèi)容太雜,枯燥無味,要記憶的內(nèi)容多。 若將該章中的串處理指令、控制轉(zhuǎn)移指令等放到第五章的循環(huán)與分支程序設(shè)計中結(jié)合例題講解效果更好,而將與子程序相關(guān)的指令放到第六章講更合適,因為經(jīng)過這樣調(diào)換后,不僅避免了指令集中講解時的指令太多,太枯燥,難記憶等問題,而且剛剛講到的指令很快就能在例題中得到應(yīng)用,學(xué)生對指令的理解和掌握會更加深入。第六章的dos系統(tǒng)功能調(diào)用內(nèi)容也應(yīng)該放到第五章中穿插講授,這樣提前的目的是為了讓學(xué)生在實驗中使用dos系統(tǒng)功能調(diào)用,因為上到第五章時就要求學(xué)生上機動手編寫程序并用到這些知識點。

第二,充分利用計算機綜合處理教學(xué)中的文字、聲音、圖象、圖形、動畫等教學(xué)信息,進一步優(yōu)化《匯編語言程序設(shè)計》多媒體教學(xué)課件,從而降低匯編語言的學(xué)習(xí)難度。例如:初學(xué)者對于用匯編語言編寫程序往往較難入門,可以首先對問題進行分析,用多媒體動畫形式畫出流程圖,并用動畫形式將每一步流程圖與相應(yīng)的實現(xiàn)該步驟的匯編指令一一對應(yīng)起來,教學(xué)實踐表明這樣學(xué)生入門起來就要容易得多;再如:在子程序遞歸調(diào)用的講解中,堆棧中的數(shù)據(jù)變化是學(xué)習(xí)的難點,很多學(xué)生被搞糊涂了,此時若將指令的逐條執(zhí)行與相應(yīng)的堆棧內(nèi)數(shù)據(jù)變化情況采用動畫的形式表現(xiàn)出來,學(xué)生就很容易理解這樣難點內(nèi)容了。像這樣的例子還很多,由于篇幅有限,在此就不再列舉了。

第三,抓住匯編語言的教學(xué)主線(即存儲控制思想)進行教學(xué)。 匯編語言不像其他程序設(shè)計語言采用抽象了的數(shù)據(jù),它采儲存取控制的方式組對數(shù)據(jù)進行組織和操作,這既是匯編語言和其他程序設(shè)計語言的不同之處,同時也是這也體現(xiàn)出匯編語言與計算機硬件和操作系統(tǒng)之間的有著緊密聯(lián)系,因此,匯編語言課程的教學(xué)主線是存儲控制,該主線貫穿于整個教學(xué)過程。牢牢把握該主線,有利于掌握匯編語言程序設(shè)計的思想精髓和更好地抓住匯編語言面向機器的特點。

第四,采用案例教學(xué)法[4]進行教學(xué)。在教學(xué)當(dāng)中,我經(jīng)常使用案例教學(xué)法,教學(xué)效果很好。案例教學(xué)法就是教師使用與教學(xué)內(nèi)容密切相關(guān)的實際案例來解決教學(xué)中的各種問題,以提高學(xué)生思考問題、分析問題和解決問題的能力,培養(yǎng)學(xué)生濃厚的學(xué)習(xí)興趣的一種教學(xué)方法。運用這種教學(xué)方法,關(guān)鍵在于教師要準(zhǔn)備大量與教學(xué)內(nèi)容緊密相關(guān)的案例,并有計劃、有意識、靈活地運用到教學(xué)實踐中去,以取得預(yù)期的效果和目的。

3)增強實驗內(nèi)容的實用性和趣味性,增加匯編語言與高級語言混合編程的教學(xué)內(nèi)容,建立合理可行的實驗制度和考核方法。

對于任何一門計算機語言課程來說,實驗都是教學(xué)中非常重要的一個環(huán)節(jié),實驗可以加深對理論知識的理解,提高學(xué)生的實踐動手能力。

為了避免傳統(tǒng)的程序三大結(jié)構(gòu)、數(shù)據(jù)組織與數(shù)值計算、代碼轉(zhuǎn)換和數(shù)制轉(zhuǎn)換等方面的枯燥無味的實驗,我們將實驗內(nèi)容和實際應(yīng)用相結(jié)合,如將匯編語言和計算機的系統(tǒng)維護等實際相聯(lián)系,用匯編語言編寫簡單的設(shè)備驅(qū)動程序等等,增加圖形化的實驗內(nèi)容等方法和手段,使實驗變得實用有趣,增強學(xué)生動手的積極性和提高學(xué)生的動手能力。

另外,在實驗中還要增加匯編語言與高級語言混合編程的教學(xué)內(nèi)容。高級語言在軟件開發(fā)中比匯編語言的使用要廣泛的多,但是匯編語言有它自己獨特的優(yōu)點:占用空間小,速度快,可以與硬件直接打交道,而且與硬件直接打交道時匯編語言也是唯一的選擇。因此要使匯編語言具有更多更好的應(yīng)用性,就必須增加匯編語言與高級語言混合編程的教學(xué)內(nèi)容,以引導(dǎo)學(xué)生在今后的實際應(yīng)用程序開發(fā)中合理使用匯編語言開發(fā)出高效率的軟件。

實驗制度和考核方法的建立有利于進一步提高實驗課的學(xué)習(xí)效果,實驗課應(yīng)使學(xué)生做到實驗前預(yù)習(xí),實驗后總結(jié),實驗中逐個通過的方法。實驗前預(yù)習(xí)是為了讓學(xué)生在實驗前對實驗題目進行分析,查找相關(guān)資料,做好充分的準(zhǔn)備以便保證學(xué)生在規(guī)定時間內(nèi)完成實驗;實驗中逐個提高的方法是對每個完成實驗的同學(xué)進行單獨提3至4個問題,讓其回答,只有回答正確才算該實驗通過,這樣做的主要目的是防止作弊和查找學(xué)生薄弱點;實驗后總結(jié)則是總結(jié)經(jīng)驗和不足之處,達到進一步加深對相關(guān)知識點的理解和應(yīng)用。上述三個環(huán)節(jié)在實驗考核中分別占30%、40%和30%。教學(xué)實踐表明建立實驗制度和考核方法可以在很大程度上促進學(xué)生學(xué)習(xí)。

4)建立既注重期末考試結(jié)果又注重平時學(xué)習(xí)過程的課程考核方法

每門課程學(xué)習(xí)結(jié)束都需要對學(xué)生進行考核,有些同學(xué)平時不愛學(xué)習(xí),經(jīng)常采取考試之前突擊學(xué)習(xí)、押題等臨時抱佛腳的方法來應(yīng)付,這樣的學(xué)習(xí)方式有時能僥幸通過考試,但很顯然學(xué)到的知識不牢固,不全面,考過之后很快就會忘記的。

為了防止這種現(xiàn)象的產(chǎn)生,在教學(xué)中采用“N+2”的考核方法,其中的“N”是教學(xué)過程中的考核次數(shù)或項目數(shù),“N+2”中的“2”中的“1”是期末考試,另一個“1”是課堂筆記。針對每門課程, N不小于3且不大于5,過程考核可采用的形式有:作業(yè)、平時表現(xiàn)、單元(階段)測試、期中考試、課程論文、課程實驗、綜合性實驗等。一般來說課堂筆記占總分比例不得超過10%,期末考試占總分比例范圍為40%~50%,實驗占20%,其他的根據(jù)實際需要靈活選擇。在這種考核方法下,那些臨時抱佛腳的同學(xué)即便在期末考試中考了六七十分,但也會由于平時成績不理想也無法通過該課程的考核,也就是說這種考核方法既注重期末考試結(jié)果又注重平時學(xué)習(xí)過程,因此那些原本平時不愛學(xué)習(xí)的同學(xué)在這種考核制度的要求下也不得不抓緊時間學(xué)習(xí)了。實踐表明該考核方法的確行之有效,平時學(xué)習(xí)的同學(xué)越來越多了,知識的掌握程度有了明顯的提高,補考的人數(shù)顯著下降,有些班級甚至沒有人需要補考。

3 結(jié)束語

本文是作者將自己在教學(xué)過程中如何激發(fā)學(xué)生學(xué)習(xí)興趣,通過適當(dāng)?shù)姆椒ê褪侄谓档驼n程學(xué)習(xí)難度,重視和嚴(yán)格要求實驗教學(xué),建立合理可行的課程教學(xué)制度和考核方法,從而達到改善教學(xué)效果的一些方法做了初步探討,作者深知要想取得更好的教學(xué)效果還需要廣大教師付出更多的努力,進行更多的探索和廣泛的交流。

參考文獻:

[1] 陳曉東.《匯編語言》教學(xué)方法探討[J].山西農(nóng)業(yè)大學(xué)學(xué)報,2006,5(6):70-71.

[2] 掌握匯編仍然是技術(shù)高手的必經(jīng)之路[J].程序員,2004,(10):108-112.

主站蜘蛛池模板: 亚洲色欲久久久久综合网| 亚洲欧美一区二区成人片| 中文精品一区二区三区四区| 超碰成人人人做人人爽| 无码av高潮喷水无码专区线| 亚洲av片一区二区三区| 国产亚洲欧美日韩亚洲中文色| 日本免费大黄在线观看| 99riav国产精品视频| 久久国产色av免费看| 嫩草院一区二区乱码| 国产精品久久久久久av| 97婷婷狠狠成为人免费视频| 8x成年视频在线观看| 久久久久亚洲av成人片| 亚洲国产成人久久综合 | 蜜桃日本免费观看mv| 精品人妻伦九区久久aaa片69| 夜夜欢天天干| 亚洲第一av网站| 最近在线更新8中文字幕免费| 野花香视频在线观看免费高清版 | 国产精品免费_区二区三区观看| 免费无码一区二区三区蜜桃| 中国国语毛片免费观看视频 | 色综合久久久久久久久久| 国产强被迫伦姧在线观看无码| 免费人成视频xvideos入口| 天堂8中文在线最新版在线 | 法国白嫩大屁股xxxx| 天天爽天天爽夜夜爽毛片| 69一区二三区好的精华液| 国产一女三男3p免费视频| 中国丰满人妻videoshd| 亚洲av永久无码精品放毛片| ā片在线观看免费观看| 免费a级毛片18以上观看精品 | 欧美三级不卡在线观看| 国内精品伊人久久久久网站| 又色又爽又黄又无遮挡网站 | 欧美丰满熟妇xxxx性大屁股 |