時間:2023-01-19 02:31:13
序論:寫作是一種深度的自我表達。它要求我們深入探索自己的思想和情感,挖掘那些隱藏在內心深處的真相,好投稿為您帶來了七篇匯編語言范文,愿它們成為您寫作過程中的靈感催化劑,助力您的創作。
關鍵詞:加密算法DES匯編語言
目前在金融界及非金融界的保密通信中,越來越多地用到了DES算法。DES(DataEncryptionStandard)即數據加密算法,是IBM公司于1977年研究成功并公開發表的。隨著我國三金工程尤其是金卡工程的啟動,DES算法在POS、ATM、磁卡及智能卡(IC卡)中被廣泛應用,以此來實現關鍵數據的保密。如信用卡持卡人的PIN的加密傳輸、IC卡與POS間的雙向認證、金融交易中的密碼鍵盤等,均用到DES算法。由于密碼鍵盤不可能使用高級語言,所以用匯編語言實現DES就非常實用。
1DES算法的簡單原理
DES是一種分組密碼。假定明文m是由0和1組成的長度為64位的符號串,密鑰k也是64位的0、1符號串。
設:M=m1m2m3…m64
K=k1k2k3…k64
加密過程可表達如下:
DES(m)=IP-1·T16·T15…T2·T1·IP(m)
其中:IP(m)是初始置換,IP-1是逆置換,T16~T1是16次迭代。
(1)初始置換IP
功能是把輸入的明文m按位重新組合,并把輸出分為L0、R0兩部分,每部分各長32位,其置換規則如下:
58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7
(2)逆置換IP-1
經過16次迭代運算后,得到L16、R16,將此作為輸入,進行逆置換。逆置換滿足:
IP·IP-1=IP-1·IP=I
逆置換正好是初始置換的逆運算。
(3)T16~T1的迭代計算
DES的迭代算法采用模2加法。
在通信網絡的兩端,雙方約定了一致的密鑰。在通信的源點用密鑰對核心數據進行加密并形成密文,然后,以密文的形式在公共通信網中傳輸到通信網絡的終點。數據到達終點后,用同樣的密鑰對密文數據進行解密,便再現了明文形式的核心數據。這樣,便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。
2匯編語言的實現
用匯編語言實現DES算法有它的優勢也有它的難點。優勢是51匯編的位操作可以方便地實現置換功能。但用匯編語言實現算法的迭代運算及循環功能比較煩瑣。在用51匯編實現DES的過程中,我編寫了幾個子程序,組合起來可實現DES算法加密。在這里寫出一些思路,有需要的同行可與我聯系(E-mail:zhoubin@)。
8031有16個可以位尋址的寄存器,可放置128位的數據,利用它可實現DES的轉置功能。將明文m放入寄存器27H~20H中,即位地址00H對應m64,3FH對應m1。利用標志寄存器C可實現置換與逆置換程序。在DES的16次迭代過程中,要實現公式:
Li=Ri-1;Ri=Li-1f(Ri-1,ki)
的運算過程,其關鍵在于f(Ri-1,ki)的功能。f是將32位的輸入轉化為32位的輸出。其中含3項技術:
①將32位膨脹為48位的E功能。該項功能可用類似于置換功能的子程序編寫。
②48位子密鑰的生成。為了便于51匯編生成子密鑰,可以使用主機用串口下傳的方式,由主機將16個子密鑰傳給89C52為核心的單片機,然后存入80H~FFH中。如果密鑰是固定的,則可直接將子密鑰固化在89C52的Flash中。
③S盒的功能是將48位的輸入再次縮為32位。具體實現是將S盒表存入89C52的Flash中,每次通過查表求得S輸出的結果。
下面列舉其中的幾個子程序。
(1)IP置換子程序
;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)
;功能:將入口寄存器的數據按置換表換位。
IP:MOVC,06H;將m58送到進位標志中
MOV7FH,C;將進位標志送m1中
MOVC,0EH;將m50送到進位標志中
MOV7EH,C;將進位標志送m2中
;重復,按表編寫MOVC,31H;將m15送到進位標志中
MOV41H,C;將進位標志送m63中
MOVC,39H;將m7送到進位標志中
MOV40H,C;將進位標志送m64中
RET
(2)逆置換子程序
;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)
;功能:將入口寄存器的數據按逆置換表換位。
IPRVS:MOVC,18H;將m40送到進位標志中
MOV7FH,C;將進位標志送m1中
MOVC,38H
.
.
.
RET
(3)異或子程序
;入口寄存器:272625243F3E3D3C,出口寄存器:2B2A2928
;功能:將寄存器27262524的內容和寄存器3F3E3D3C的內容異或。結果保存在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;取出高位數據
LCALLS162345;調用實現Si(b1b6,b2b3b4b5)
;的功能子程序
MOVDPTR,#S1TAB;S盒表的首址
MOVA,21H;取出第幾個S盒
LCALLDPTRADD
CLRA
MOVCA,@A+DPTR;求出S盒的表地址及S結果
SWAPA
MOV27H,A;保存高位結果
MOV20H,2EH
LCALLS162345
;重復
關鍵詞:匯編語言;實驗教學;DEBUG;指令系統
1匯編語言教學現狀
匯編語言是計算機專業的核心基礎課程,是一門軟硬件結合的主干課程,與計算機組成原理、單片機、接口技術等其他課程都有著重要的聯系。匯編語言在出現后的近半個世紀里,指令體系不斷擴展,研究領域不斷發展變化。在今天看來,盡管C/C++等編譯器運行速度很快,編譯生成的目標代碼運行速度也很快,但用匯編語言編寫的源程序匯編后得到的目標程序仍在時間和空間兩個方面體現出較大的優勢,運行速度更快,目標代碼更短。在計算機自動控制、儀器儀表和家用電器等的應用程序日益發展的今天,速度快、功能強的匯編語言更是占有非常重要的地位。對計算機相關專業的學生來說,匯編語言是需要掌握的重要專業基礎知識之一。
匯編語言是一種以“指令助記符”為特征的低級語言,能直接控制底層機器的操作,同時又為操作系統和高級語言提供支持。然而隨著硬件技術的飛速發展,處理器的性能和存儲器的容量達到了相當的高度,計算機體系結構由標量計算機向陣列計算機、并行計算機和數據流計算機發展,多任務的操作系統(Windows、Unix、Linux)為應用程序提供了廣闊的平臺。而在操作系統中,大部分代碼采用高級語言(C/C++)編寫。特別是隨著網絡技術的發展,基于Internet的程序設計與開發成為了當前的熱點,學生對在C/S與B/S結構下基于J2EE虛擬平臺的程序設計的學習熱情高漲,匯編語言所占的份量大大降低。
在匯編語言的教學過程中,普遍存在的問題就是主流的微型計算機已經進入了32位和64位的時代,多任務的操作系統取代了DOS,而絕大多數高校匯編語言課程仍然是單任務操作系統DOS下的8086匯編語言,主要教學內容是在學習8086CPU基本結構以及指令集的基礎上,在DOS環境下通過軟中斷對BIOS和DOS系統功能的調用來開發應用程序,盡管以386體系結構為基礎的Pentium處理器也進入了教材,但是對于386體系結構的講解仍是以實模式為主,對于保護模式的知識應用能力甚為空泛,給學生的印象是所學的匯編語言知識跟不上時展的步伐。又因為匯編語言和機器的體系結構結合緊密;使用者需要對計算機組成、硬件控制和指令解釋過程有比較清晰的掌握;如果程序的移植性不好,程序的編譯調試就比較麻煩;編寫出吸引人們感官的程序就比較困難。
因此,學生在匯編語言的學習中產生厭煩情緒,對匯編語言的學習熱情普遍不高,有些高校則開始采取各種手段從教學內容和方法等方面對匯編語言課程進行改革。如北京理工大學計算機學院從教材建設、教學內容和方法等方面進行了大膽的改革,有效地提高學生的學習積極性[1-2]。
2教學方法研究
為了提高學生學習匯編語言的積極性,教師應針對匯編語言學習的難點來一一破解。對部分同學認為匯編語言知識跟不上時展步伐這一誤區,教師應該在上第一節課時就要予以更正,要告訴學生匯編語言的應用領域,如目前流行的嵌入式系統的硬件的檢測和控制部件都是由匯編語言完成的,還可以找適當的機會給學生介紹一下計算機病毒的工作機理,從而提高學生學習匯編語言的積極性。
對于匯編語言和機器的體系結構結合緊密、抽象性強、難于理解的問題,教師在講解指令系統時,要與CPU的功能結構結合起來,把地址、數據和控制信息的傳遞要通過圖示進行分解。
如講解指令 MOV AL,[3008H],這是一條傳送類指令,即將偏移地址為3008H的存儲單元中的信息送回CPU中的累加器AL寄存器中。如果這樣講,學生不易明白,因為他們之前學過的語言都沒有涉及到CPU的內部部件,而且在程序中也沒有直接提供存儲器的地址信息。為了讓學生明白這條指令的含義,可以在課件中畫出CPU的功能結構圖(圖1),然后通過動畫演示整條指令執行的全部過程:從指令隊列中讀取指令,通過譯碼器譯出指令的功能;將偏移地址3008H通過內部總線送至總線接口部件;通過20位的地址形成部件與16位數據寄存器DS的內容結合形成20位的物理地址,通過控制部件發出存儲器讀命令;存儲器將所存儲的信息通過數據總線送至總線接口部件,通過內部總線送至AL寄存器中。每一步都要用圖顯示出數據的流向以及時序。
圖1CPU功能結構圖
教師在講解指令系統初期對某些具有代表性的指令進行上述詳細、逼真的講解,可以極大地增強課程的可理解性,提高學生對指令的感性認識,繼而增強學生的學習興趣。
學生編寫匯編程序的初期,往往會認為程序調試麻煩,這是因為匯編語言相對于其他高級語言來說比較抽象,實驗結果不容易檢驗造成的。簡單的匯編語言實驗結果往往是存儲在CPU內部的寄存器或者內存當中,不能夠很直觀的看到,如果通過DEBUG就可以觀察到寄存器的內容和存儲器的內容,同時通過T命令,可以跟蹤每條指令執行后寄存器和存儲器的變化,這是調試程序和發現邏輯錯誤非常有效的手段。它要求學生要靈活掌握DEBUG的各種功能,記住它的各種命令,因此,需要教師在課堂上花費一定的時間來講解各種命令的用途,同時需要演示它們的使用方法。一旦學生真正地掌握了DEBUG的應用方法,對深入了解計算機的工作原理和指令系統將起到直接和不可替代的作用
3實驗教學平臺設計
實驗教學是檢驗和鞏固已學知識的一個必要手段,是培養學生創造性的關鍵環節,也是教學改革的一個重要方面。然而學生在匯編語言這門課程中,對所學知識缺乏必要的感性認識,因此實驗環節在整個教學活動中就占據了舉足輕重的地位。
然而,傳統的80X86匯編語言實驗一般都是在DOS環境下進行的[3],具體過程如圖2所示,用編輯程序(如EDIT命令)編寫源程序,然后用編譯程序(MASM命令)將源程序編譯成目標程序(即.obj文件),然后用連接程序(LINK命令)將目標文件轉換成可執行文件,在DOS環境中執行這些命令時,后面往往需要緊跟各種參數,這些會給學生帶來很多額外的負擔,而且在一個源程序進行編譯連接的過程中往往不能一次通過,可能會出現各種錯誤,這樣上面的過程會多次的重復,因此在DOS的命令行上要頻繁進行上面的操作,非常的繁瑣,容易引起學生厭倦。
目前流行的操作系統是Windows,學生對DOS的使用非常陌生,DOS的各種命令也都很少使用,因此在做匯編實驗時,學生往往會頻繁在Windows和DOS之間切換,這樣大大的影響了學生上機的效率,使得用匯編語言編程變成了一件非常不舒服的事情[4]。
因此作者所在的教研組開發了一個基于Windows操作系統的以Intel 80X86為指令系統的匯編語言集成環境,該集成系統集編輯、編譯、連接和調試于一體的實驗開發平臺。開發人員可以在該實驗平臺上編寫源程序,然后用戶只要直接用鼠標點擊菜單上的相應命令,就可以完成程序的匯編和連接工作,直接生成可執行文件,所有工作一次性完成。并且同時把匯編和連接時產生的輸出信息輸出到輸出窗口中,供用戶參考,而不會輸出到DOS的命令界面上去,省去了不同操作環境之間的頻繁切換。當然實驗平臺包含了文件導入功能,如果需要編輯其他未匯編的匯編程序,可以在該平臺中導入用其他文本編輯工具編寫的匯編語言原程序進行匯編,只要導入的原代碼格式是純文本文件即可。
這一開發平臺很好地解決了匯編語言的開發與操作系統之間的矛盾,運用在課程的實驗教學中,效果良好,大大提高了學生做實驗的積極性。
4實驗教學的組織
由于DEBUG是關鍵的調試程序,因此教師需要專門設計若干個小實驗讓學生對DEBUG有一個深刻的了解和認識,通過熟悉DEBUG的過程掌握指令的功能和各種尋址方式。
由于匯編語言不同于其他高級語言,因此直接讓
學生來編寫匯編語言程序并不太現實,應該設計一些具有一定功能的小程序,讓學生來驗證,通過模仿和驗證逐漸掌握匯編語言的編程規律和方法。同時讓學生在現有正確程序的基礎上故意安排幾個錯誤,重新進行編譯和連接,使學生熟悉匯編語言編譯系統所報的各種錯誤信息的含義,以及修改方法,這樣當學生調試自己所編寫的程序時,遇到報錯信息,就會心里有數而不至于手足無措了,這樣會大大提高學生編寫匯編語言程序的自信心和實踐能力。
為了提高學生的學習興趣,DOS功能調用實驗是必不可少的,這需要選取一些學生感興趣的、具有觀測效果的實驗。對于能力比較強的學生,可以讓他們試一試底層操作,如BIOS調用、I/O操作,對顯示器以及硬盤的控制等,那樣會令這些學生體會到學習匯編語言的快樂。
5知識的提升
學生在學習匯編語言課程之前,通常都已經學習了C語言,在實際中,匯編語言和C語言混合編程的應用也比較多,因此可以作為擴展內容,讓有能力和有興趣的學生選做一些混合編程的實驗,使學生更深刻的體會到學習匯編語言的用途,提高學生的動手能力和實踐能力。學有余力的同學可以選作一些Win32匯編語言的程序設計,由于Win32匯編程序設計方法和思路與當前主流的程序設計技術一致,具有較強的實用性及先進性,因此可以對學生的知識結構體系進行提升和延續。
6結語
匯編語言是計算機專業一門重要而又難學的課程,這要求教師必須不斷學習、創新,在改革教學模式的同時努力培養學生的創新精神和動手實踐能力。
參考文獻:
[1] 張雪蘭,譚毓安,李元章. 匯編語言程序設計課程教學改革與創新能力培養[J]. 計算機教育,2008(8):22-23.
[2] 劉輝. 匯編語言實驗教學探討[J]. 計算機教育.2008(4):11-13.
[3] 王正智. 8086/8088宏匯編語言程序設計教程[M]. 北京:電子工業出版社,2006:203-206.
[4] 焦殿科,郭延鋒. 計算機專業“匯編語言程序設計”課教學改革研究與探討[J]. 遼寧工學院學報,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)
匯編語言與cpu有關。
匯編語言是專門為某一類CPU而設計的,所以匯編語言與CPU類型息息相關,當然至于型號卻是不一樣的。高級語言與CPU基本上是關系不是很大的,但完全沒有關系也不是那么一定的,比如C51就是專門為51單片機這類CPU而設計的高級語言。
匯編語言,即第二代計算機語言,用一些容易理解和記憶的字母,單詞來代替一個特定的指令,比如:用“ADD”代表數字邏輯上的加減,“MOV”代表數據傳遞等等,通過這種方法,人們很容易去閱讀已經完成的程序或者理解程序正在執行的功能,對現有程序的bug修復以及運營維護都變得更加簡單方便。
(來源:文章屋網 )
關鍵詞 微機原理與接口 匯編語言與C語言比較
中圖分類號:TP368.1 文獻標識碼:A
0 引言
“微機原理與接口”是信息學科的一門必修課,主要介紹8086微處理器的原理及其擴展接口的應用。然而8253芯片是接口芯片中的一個重要組成部分,因此本文就從8253出發,闡述用匯編語言和C語言對其開發,讓學生更好地用軟件對硬件進行開發。
1 8253知識點進行描述
8253工作方式:
1.1 頻率發生器
在該方式下,計數器裝入初值,開始工作后,計數器的輸出OUT將連續輸出一個時鐘周期寬的負脈沖。兩負脈沖之間的時鐘周期數就是計數器裝入的初值。在這種初始方式下,門控信號GATE用作控制信號。當GATE為低電平時,強迫OUT輸出高電平。當GATE為高電平時,分頻開始。時序波形如圖1所示。
1.2 方波產生器
當裝入數值為N時,若N為偶數,則完成N/2計數時OUT為高電平,完成另外N/2計數時OUT低電平,一直進行下去。若N為奇數,則(N+1)/2計數時OUT保持高電平,而(N-1)/2計數期間OUT為低電平。在GATE為高電平的時,產生對稱方波。時序波形如圖2所示。
1.3 C語言的優點
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。由于C語言的易可移植性,在嵌入式系統里面應用廣泛。
1.4 匯編語言的優點
匯編語言是面向機器的程序設計語言。匯編語言是一種功能很強的程序設計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。匯編語言的長處在于編寫高效且需要對機器硬件精確控制的程序。
總之,雖然匯編語言執行起來速度比較快,但開發起來比較麻煩,尤其是8086架構里面只有有限的寄存器,在開發大型的軟件時就會顯得捉襟見肘,采用C語言開發就可以提高代碼的質量,用一句C就可以代替好幾句匯編語言,會讓開發人員輕松很多,更會讓很多初學者對嵌入式系統的開發產生興趣。
2 實例:C語言方式下和匯編語言下控制8253
8253控制端口地址為 203H;計數器0地址為 200H;計數器1地址為 201H;計數器2地址為 202H。
outportb(0x203, 0x56)
//56H(01010110B).選擇計數器1,低八位讀寫,方式3(方波發生器),二進制計數.
outportb(0x201, 8); // 向計數器1寫入低八位初值8H(00001000B).
outportb(0x203, 0x94); // 向8253控制端口寫控制字94H(10010100B)。選擇計數器2,低八位后讀寫,方式2(分頻脈沖發生器),二進制計數。
outportb(0x202, 6); // 向計數器2寫入低八位初值6H(00000110B).
如果使用匯編語言程序,則變成
MOV DX,203H;指向控制端口
MOV AL, 56H ;設置工作方式
OUT DX, AL;往端口送數據
MOV DX, 201H;指向計數器1
MOV AL, 8;給計數值
OUT DX, AL;往端口送數據
MOV DX,203H;指向控制端口
MOV AL,94H;設置工作方式
OUT DX,AL;往端口送數據
MOV DX,202H;指向計數器2
MOV AL,6;給計數值
OUT DX,AL;往端口送數據
從中可以直觀地可以看出,如果使用匯編語言對8253寫入控制字MOV DX,203H,MOV AL,36H,OUT DX,AL,需要三條語句完成,而且需要3個寄存器,并且寄存器本來就是很少的了,這樣很浪費資源;用C語言只需調用outport函數:outport(0x203,0x36),C語言的代碼長度短了很多,并且也方便學生們掌握,使學生在嵌入式軟件開發上產生更多的興趣,為大型嵌入式軟件的開發奠定堅實的基礎。
3 結束語
根據本文比較C語言和匯編語言對8253的開發,會讓更多的學生明白C語言作為一種面向結構的語言對嵌入式系統開發的優勝性,希望越來越多的學生在微機原理和接口的實驗課上,采用C語言進行開發,削減代碼量,提高效率。由于目前我國正處于信息化高速建設的時代,對嵌入式系統的開發水平也決定著我國在世界上的影響力。因此,讓更多的學生學會用更高效的語言進行嵌入式系統軟件的開發顯得尤其重要,本文就此發表自己的看法。
參考文獻
[1] 馬義德,張在峰,徐光柱,杜桂芳.微型計算機原理及應用(第二版).北京:高等教育出版社,2001.
[2] 王永山,楊宏五.微型計算機原理與應 用(第二版).西安:西安電子科技大學出版社,1999.5.
關鍵詞:匯編語言 二進制 十進制 十六進制 顯示
1 引言
如果要處理一個與數相關的問題,不管是中間的、還是最終的結果,我們都希望能直觀地在顯示器上顯示出來。數字計算機中的數據存儲方式是由“0”和“1”組成的二進制碼串,根據不同的需要,我們往往要求數據的顯示形式不一樣,如二進制、十進制、十六進制、八進制等等,然而在匯編語言中實現數據的顯示沒有類似高級語言中的輸出格式命令那么方便,對每個數的顯示,一般都需要逐位地轉換成ASCII碼才能調用系統顯示功能完成顯示,其中,按不同的數制要求,還要先完成數制間的轉換。下面我們來探討一個數如何編程讓它分別按二進制、十進制、十六進制的數制形式顯示在CTR顯示器上。
2 編程思路與算法
以一個16位二進制機器整數為例,它的二進制表示范圍是0至1111111111111111B;十進制的范圍是0至65535(無符號數),或-32768至+32767(有符號數);十六進制表示范圍是0000至FFFFH。為方便說明,假設此數放在BX寄存器中,下面介紹按不同進制形式顯示的編程思路和算法。
2.1 按二進制形式顯示
二進制只有“0”和“1”兩個數字,它們的ASCII碼分別是30H和31H,只要逐位判斷是“0”還是“1”,然后轉換成對應的ASCII碼即可。
實際編程時,對于BX中的十六位二進制數,可設置一個循環次數為16的循環體,用向左的移位指令,通過CPU標志寄存器中的CF標志,由高位到低位逐位判斷、逐位取ASCII碼值、逐位顯示。當然也可以先將十六個數位都轉換成一ASCII碼串放入內存緩沖區后再按字符串方式顯示,要注意兩種方法在顯示時系統調用的功能號不同。
2.2 按十進制形式顯示
首先要完成二進制到十進制數的轉換,一般采用“除10取余”法來完成,其大致過程如下:將待轉換的數(在BX中)除以10,得到第一個商和余數,此第一個余數就是所求的十進制數的個位;再用第一個商除以10,得到第二個商和余數,此第二個余數就是所求十進制數的十位;……;重復這一過程直至商為0,此時的余數就是所求十進制數的最高位。
在內存中分配一緩沖區,用來存放以上分離出來的十進制數的每一位,然后再逐個轉換成ASCII碼,轉換成ASCII碼的過程很簡單,就是給每個十進制位加上30H即可;最后送顯示器輸出。從轉換的過程可以看出,先分離出來的是十進制數的低位,要后顯示;后分離出來的是十進制數的高位,應該先顯示。因此在編程時,我們可以利用堆棧操作中“先進后出、后進先出”的特性,當分離出各十進制位時依次入棧,要逐個轉換成ASCII碼送顯示時依次出棧。
2.3 按十六進制形式顯示
十六進制與二進制有很好的對應關系(每4位二進制數和1位十六進制數存在一一對應關系),顯示時只需將原二進制數(在BX中)每4位劃成一組,按組求對應的ASCII碼送顯示器即可。
ASCII碼與十六進制數字的對應關系為:30H~39H對應數字0~9,41H~46H對應數字A~F,從數字9到A,其ASCII碼間隔了7H,這一點在轉換時要特別注意。為使一個十六進制數能按高位到低位依次顯示,實際編程中,我們對先BX中的數每次循環左移一組(4位二進制),然后屏蔽掉當前高12位,對當前余下的4位(即1位十六進制數)求其ASCII碼,要判斷它是0~9還是A~F,是前者則加30H得對應的ASCII碼,后者則要加37H才行,最后送顯示器輸出。以上步驟重復4次,就可以完成BX中數以4位十六進制的形式顯示出來。
3 匯編語言源程序實例
假設要將BX寄存器中的數分別按無符號二進制、十進制和十六進制顯示在屏幕上,下面給出實現的匯編源程序,均為子程序方式,為了簡明,略去現場的保護與恢復操作。
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
設(BX)=7FFFH,則輸出格式為0111111111111111B,后面的大字字母B表示二進制形式,顯示結果固定為十六位。
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則完成轉換
JNZ NEXT
OUTP:POP DX
ADD DL,30H
MOV AH,2
INT 21H
LOOP OUTP
RET
DISPBXD ENDP
此程序在轉換和顯示時的循環控制方式和二進制形式的例子不一樣,即顯示結果的位數是不固定的。若(BX)=7FFFH=32767,則顯示結果為5位:32767;若(BX)=00FFH=255,則顯示結果為3位:255,與十進制的有效位數相同。
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”表示為十六進制形式。設(BX)=7FFFH,則顯示結果為:7FFFH;若(BX)=00FFH,則顯示結果為:00FFH。
4 對有符號數顯示的擴展應用
CMP BX,0
JGE ZS
MOV DL,’-’
MOV AH,2
INT 21H
ZS:CALL DISPBXD
5 結束語
以上介紹了在匯編語言程序設計中,根據不同的需要,如何把機器數按不同數制形式顯示出來的方法,對于不具體介紹的八進制形式,只需將十進制顯示的子程序(DISPBXD)中的除數由10改為8即可。各種方法中,主要是數據轉換的方法不同,顯示的功能調用指令是一樣的,當然還可以用其它(比如字符串方式)方法調用顯示功能,這里不再詳細介紹。
參 考 文 獻
[1]沈美明,溫冬嬋.IBM-PC匯編語言程序設計.北京.清華大學出版社.1991.
[2]Barry B. Brey. Programming the 80286,80386,and Pentium-Based Personal Computer.北京.電子工業出版社.1998.
關鍵詞:匯編語言 高級編程語言 歷史 趨勢
中圖分類號: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
關健詞:匯編語言;案例教學法;考核方法
中圖分類號:G642文獻標識碼: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
《匯編語言程序設計》是高等院校計算機軟、硬件及應用專業的專業基礎(核心)課,它不僅是計算機原理、接口技術及操作系統等其它核心課程的先行課,而且對訓練學生掌握程序設計技術、加深對計算機工作原理的理解有非常重要的作用。 在實際應用當中,可以使用匯編語言進行計算機系統維護、操作系統維護、操作系統分析、反病毒分析,還可以直接被用于嵌入式軟件開發之中,更為重要是在與硬件直接打交道時匯編語言是唯一的選擇。因此,搞好《匯編語言程序設計》課程的教學很重要,如何搞好該課程教學值得廣大教師們探討和總結。
1 現狀分析
目前,匯編語言課程教學存在的如下問題:
1)絕大多數同學對匯編語言課程的目的認識不夠,且錯誤地認為匯編語言已經過時,沒有用,從而對這門課程的學習沒有興趣。
絕大多數學生把匯編語言作為一門純粹的編程語言課程來對待,這是一個較大的誤區,這從思想上和意識上把匯編語言放到一個普通的程序設計軟件的位置,這樣勢必難以達到較好的教學效果。而本課程的一個主要目的就是讓學生學習與認識基本存儲控制思想、底層設備操縱方法、系統輸入輸出特點等內容,為學生在高層應用與底層的系統結構組織與實現之間架設一座橋梁,使他們能夠建立一個完整的系統思想體系,為將來更好地應用和發展打下一個良好的基礎[1]。
另外,目前直接用匯編語言編寫軟件的情況的確不多,所以有不少學生都錯誤地認為在高級語言盛行的時代匯編語言已經過時且在企業的實際應用中沒有用途,因此對這門課程沒有興趣。
2)匯編語言難學,挫傷了學生對該課程的學習熱情。
由于匯編語言程序設計涉及到計算機底層硬件,學習內容枯燥,需要記憶的內容繁多,起步比較困難,不像計算機高級語言起步容易并在現在的應用程序設計中占有絕對的優勢,相對于匯編語言,高級語言接近人類的自然語言,易學易用,很多功能用高級語言里只要一條語句就可實現,而用匯編語言則要好幾條甚至幾十條語句才能實現,這在很大程度上挫傷了學生對該課程的學習熱情。
3)實驗內容枯燥無味,實驗考核方法不夠好,實驗課效果差。
當前絕大多數學校的實驗與實踐環節的組織對學生學習匯編語言沒有起到太大的幫助,匯編語言實驗內容仍然停留在程序三大結構、數據組織與數值計算、代碼轉換和數制轉換等方面,這會導致學生對本課程實驗和實踐環節沒有興趣,不能激發學生的學習熱情。另外,很多實驗課基本上是學生做實驗,有問題請教老師,教師指導,實驗課結束就意味著同學們都通過了該實驗這種方式進行的。很顯然這種方式對自我要求不高的學生沒有任何監督力,實驗課教學效果差是很自然的事情。
4)課程考核方法不夠完善,對學習過程的考核不夠嚴謹。
傳統的考核方法是按照期末考試占70%,平時成績占30%來計算總評成績的,有點甚至直接用期末考試成績代替總評成績。顯然這些方法對學習過程的表現考慮不夠,這就導致有些平時不愛學習的同學,經常采取考試之前突擊學習、押題等臨時抱佛腳的方法來應付,這樣的學習方式有時能僥幸通過考試,但很顯然學到的知識不牢固,不全面,考過之后很快就會忘記的。
2 問題的解決方案
1)引領學生認識匯編語言課程的重要性,結合企業對匯編語言人才的需求和實例激發學生學習匯編語言的興趣。
人們常說“興趣是最好的老師”,事實的確如此,當學生們對課程產生了興趣時他們會很主動地去學習,遇到困難會積極思考。為了激發學生的學習興趣,作者在教學中使用了如下方法:
第一、強調《匯編語言》課程的重要性。《匯編語言》是高等院校計算機軟、硬件及應用專業的專業基礎(核心)課,它不僅是計算機原理、接口技術及操作系統等其它核心課程的先行課,而且對訓練學生掌握程序設計技術、加深對計算機工作原理的理解有非常重要的作用。同時也是我們學習高級語言的利器[2]。
第二、介紹匯編語言在計算機系統維護等方面的實際應用,并選擇有代表性的問題現場演示,讓學生親身體會到匯編語言的用途。雖然目前用匯編語言編寫軟件的情況的確不多。但是在實際應用中可以使用匯編語言進行計算機系統維護、操作系統維護、操作系統分析、反病毒分析,另外在一些嵌入式軟件開發中有時還需要用到匯編語言,更為重要是在與硬件直接打交道時匯編語言是唯一的選擇。
第三、用與生活中密切相關的實例現場演示,激發興趣。
演示事先準備好的用匯編語言開發的與日常生活密切相關的應用實例,如:交通燈系統,空調單暖溫度控制器,以及銀行排隊系統等等。使學生親身體會到匯編語言的用途,從而徹底扭轉學生們的編語言沒有用的思想,激發學生學習匯編語言的興趣。
第四、強調企業中需要懂匯編語言的人才??湛跓o憑,可以打開百度或Google的網頁,輸入“匯編語言 招聘”進行搜索就會發現的確有不少企業在招聘懂匯編的高級人才且待遇豐厚。親眼見到上述企業的招聘廣告,學生會深刻體會到《匯編語言程序設計》決非無用課程。
教學的實踐表明:當學生明白了該課程的重要性和學習該課程的目的,學生們就會覺得學好該課程是很有必要的;而當學生們親眼見到匯編語言在計算機維護等方面的實際應用和用匯編語言開發的與生活中密切相關的應用實例的演示時,他們就會體會到匯編語言的用途,激起他們的興趣;最后當學生們看到網上不少企業在招聘懂匯編的高級人才且待遇豐厚時,學生們就會真正感受到匯編語言課程的魅力,激起他們更大的學習興趣。
2)通過合理安排教學內容和充分利用多媒體教學的優勢等方法降低匯編語言學習的難度,提高教學效果。
有了學習興趣固然是好事,但如果在學習過程中遇到的困難太多或太大都會挫傷學生的學習熱情。
而要想學習好一門課程,首先要選擇一本好的教材。我們選擇教材的原則是:結構清晰、主線特出,內容要有一定的深度和廣度,所選例題要有代表性。根據該原則,我們選用普通高等教育“九五” 國家教委重點教材(沈美明,溫冬嬋 編著.《80X86匯編語言程序設計》. 北京:清華大學出版社, 2001.7)作為本課程的教材[3],該教材也得到了全國廣大匯編語言教師的認可。經過多年的教學以及和學生的交流中我們發現,如果直接按照該教材的順序教學效果不是很好。為了提高教學效果,作者在教學過程中做了如下四方面的改進。
第一,合理調整課程內容的先后順序,將枯燥無味、需要大量記憶的內容分散到多個章節中講授。例如:本書第三章 80x86的指令系統和尋址方式,這一章的指令太多,內容太雜,枯燥無味,要記憶的內容多。 若將該章中的串處理指令、控制轉移指令等放到第五章的循環與分支程序設計中結合例題講解效果更好,而將與子程序相關的指令放到第六章講更合適,因為經過這樣調換后,不僅避免了指令集中講解時的指令太多,太枯燥,難記憶等問題,而且剛剛講到的指令很快就能在例題中得到應用,學生對指令的理解和掌握會更加深入。第六章的dos系統功能調用內容也應該放到第五章中穿插講授,這樣提前的目的是為了讓學生在實驗中使用dos系統功能調用,因為上到第五章時就要求學生上機動手編寫程序并用到這些知識點。
第二,充分利用計算機綜合處理教學中的文字、聲音、圖象、圖形、動畫等教學信息,進一步優化《匯編語言程序設計》多媒體教學課件,從而降低匯編語言的學習難度。例如:初學者對于用匯編語言編寫程序往往較難入門,可以首先對問題進行分析,用多媒體動畫形式畫出流程圖,并用動畫形式將每一步流程圖與相應的實現該步驟的匯編指令一一對應起來,教學實踐表明這樣學生入門起來就要容易得多;再如:在子程序遞歸調用的講解中,堆棧中的數據變化是學習的難點,很多學生被搞糊涂了,此時若將指令的逐條執行與相應的堆棧內數據變化情況采用動畫的形式表現出來,學生就很容易理解這樣難點內容了。像這樣的例子還很多,由于篇幅有限,在此就不再列舉了。
第三,抓住匯編語言的教學主線(即存儲控制思想)進行教學。 匯編語言不像其他程序設計語言采用抽象了的數據,它采儲存取控制的方式組對數據進行組織和操作,這既是匯編語言和其他程序設計語言的不同之處,同時也是這也體現出匯編語言與計算機硬件和操作系統之間的有著緊密聯系,因此,匯編語言課程的教學主線是存儲控制,該主線貫穿于整個教學過程。牢牢把握該主線,有利于掌握匯編語言程序設計的思想精髓和更好地抓住匯編語言面向機器的特點。
第四,采用案例教學法[4]進行教學。在教學當中,我經常使用案例教學法,教學效果很好。案例教學法就是教師使用與教學內容密切相關的實際案例來解決教學中的各種問題,以提高學生思考問題、分析問題和解決問題的能力,培養學生濃厚的學習興趣的一種教學方法。運用這種教學方法,關鍵在于教師要準備大量與教學內容緊密相關的案例,并有計劃、有意識、靈活地運用到教學實踐中去,以取得預期的效果和目的。
3)增強實驗內容的實用性和趣味性,增加匯編語言與高級語言混合編程的教學內容,建立合理可行的實驗制度和考核方法。
對于任何一門計算機語言課程來說,實驗都是教學中非常重要的一個環節,實驗可以加深對理論知識的理解,提高學生的實踐動手能力。
為了避免傳統的程序三大結構、數據組織與數值計算、代碼轉換和數制轉換等方面的枯燥無味的實驗,我們將實驗內容和實際應用相結合,如將匯編語言和計算機的系統維護等實際相聯系,用匯編語言編寫簡單的設備驅動程序等等,增加圖形化的實驗內容等方法和手段,使實驗變得實用有趣,增強學生動手的積極性和提高學生的動手能力。
另外,在實驗中還要增加匯編語言與高級語言混合編程的教學內容。高級語言在軟件開發中比匯編語言的使用要廣泛的多,但是匯編語言有它自己獨特的優點:占用空間小,速度快,可以與硬件直接打交道,而且與硬件直接打交道時匯編語言也是唯一的選擇。因此要使匯編語言具有更多更好的應用性,就必須增加匯編語言與高級語言混合編程的教學內容,以引導學生在今后的實際應用程序開發中合理使用匯編語言開發出高效率的軟件。
實驗制度和考核方法的建立有利于進一步提高實驗課的學習效果,實驗課應使學生做到實驗前預習,實驗后總結,實驗中逐個通過的方法。實驗前預習是為了讓學生在實驗前對實驗題目進行分析,查找相關資料,做好充分的準備以便保證學生在規定時間內完成實驗;實驗中逐個提高的方法是對每個完成實驗的同學進行單獨提3至4個問題,讓其回答,只有回答正確才算該實驗通過,這樣做的主要目的是防止作弊和查找學生薄弱點;實驗后總結則是總結經驗和不足之處,達到進一步加深對相關知識點的理解和應用。上述三個環節在實驗考核中分別占30%、40%和30%。教學實踐表明建立實驗制度和考核方法可以在很大程度上促進學生學習。
4)建立既注重期末考試結果又注重平時學習過程的課程考核方法
每門課程學習結束都需要對學生進行考核,有些同學平時不愛學習,經常采取考試之前突擊學習、押題等臨時抱佛腳的方法來應付,這樣的學習方式有時能僥幸通過考試,但很顯然學到的知識不牢固,不全面,考過之后很快就會忘記的。
為了防止這種現象的產生,在教學中采用“N+2”的考核方法,其中的“N”是教學過程中的考核次數或項目數,“N+2”中的“2”中的“1”是期末考試,另一個“1”是課堂筆記。針對每門課程, N不小于3且不大于5,過程考核可采用的形式有:作業、平時表現、單元(階段)測試、期中考試、課程論文、課程實驗、綜合性實驗等。一般來說課堂筆記占總分比例不得超過10%,期末考試占總分比例范圍為40%~50%,實驗占20%,其他的根據實際需要靈活選擇。在這種考核方法下,那些臨時抱佛腳的同學即便在期末考試中考了六七十分,但也會由于平時成績不理想也無法通過該課程的考核,也就是說這種考核方法既注重期末考試結果又注重平時學習過程,因此那些原本平時不愛學習的同學在這種考核制度的要求下也不得不抓緊時間學習了。實踐表明該考核方法的確行之有效,平時學習的同學越來越多了,知識的掌握程度有了明顯的提高,補考的人數顯著下降,有些班級甚至沒有人需要補考。
3 結束語
本文是作者將自己在教學過程中如何激發學生學習興趣,通過適當的方法和手段降低課程學習難度,重視和嚴格要求實驗教學,建立合理可行的課程教學制度和考核方法,從而達到改善教學效果的一些方法做了初步探討,作者深知要想取得更好的教學效果還需要廣大教師付出更多的努力,進行更多的探索和廣泛的交流。
參考文獻:
[1] 陳曉東.《匯編語言》教學方法探討[J].山西農業大學學報,2006,5(6):70-71.
[2] 掌握匯編仍然是技術高手的必經之路[J].程序員,2004,(10):108-112.