国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

問題牽引的匯編語言教學(xué)實(shí)踐

2009-12-11 07:27:04許向陽王元珍
計(jì)算機(jī)教育 2009年18期
關(guān)鍵詞:匯編語言寄存器建構(gòu)主義

許向陽 王元珍

摘要:沒有問題就是最大的問題。培養(yǎng)學(xué)生發(fā)現(xiàn)問題、提出問題、解決問題的能力是教學(xué)改革的重要內(nèi)容。本文介紹了匯編語言教學(xué)活動(dòng)中提出的系列問題,通過教師的示范、引導(dǎo)和鼓勵(lì),在輕松和諧的師生交流環(huán)境中將知識(shí)學(xué)習(xí)和思維能力培養(yǎng)有機(jī)的統(tǒng)一起來。

關(guān)鍵詞:匯編語言;寄存器;思維能力;建構(gòu)主義

中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:B

1引言

沒有問題就是最大的問題。沒有問題的安逸如同沒有引爆的地雷一樣危險(xiǎn)。在滿堂灌輸、不與學(xué)生交流和溝通的教學(xué)模式下,學(xué)生只是被動(dòng)的接收知識(shí),其發(fā)現(xiàn)問題的能力、提出問題的勇氣、解決問題的追求、尋根問底的態(tài)度在悄無聲息的受到摧殘。久而久之,學(xué)生成為了一個(gè)無所思無所想的機(jī)械,失去了思維的活力、想象的活力、創(chuàng)造的活力。

問題的提出是解決問題的開始。圍繞某一知識(shí)點(diǎn)提出一系列的問題,在師生互動(dòng)中解決這些問題,能夠?qū)⒅R(shí)學(xué)習(xí)和能力培養(yǎng)有機(jī)的結(jié)合在一起。這種教學(xué)方法是建構(gòu)主義理論實(shí)踐的具體體現(xiàn)。建構(gòu)主義認(rèn)為認(rèn)識(shí)是一種以主體已有的知識(shí)、經(jīng)驗(yàn)、認(rèn)知結(jié)構(gòu)、心理結(jié)構(gòu)等為基礎(chǔ)的主動(dòng)建構(gòu)過程,堅(jiān)信知識(shí)是由認(rèn)知主體主動(dòng)建構(gòu)的結(jié)果,學(xué)習(xí)是認(rèn)知主體的一個(gè)意義建構(gòu)的過程,教學(xué)是培養(yǎng)學(xué)生主體性的創(chuàng)造活動(dòng),是引導(dǎo)學(xué)生從原有的知識(shí)經(jīng)驗(yàn)中生長(zhǎng)出新的知識(shí)經(jīng)驗(yàn)的過程,教師應(yīng)是學(xué)生主動(dòng)建構(gòu)意義的促進(jìn)者、合作者和指導(dǎo)者。

本文以匯編語言的最基礎(chǔ)內(nèi)容——寄存器教學(xué)實(shí)踐為例,介紹教學(xué)過程中提出的一系列問題。通過問題的牽引,教師與學(xué)生、學(xué)生與學(xué)生之間的互動(dòng),將有關(guān)知識(shí)組織組成網(wǎng)絡(luò),開闊學(xué)生的眼界,培養(yǎng)學(xué)生主動(dòng)求知的技能、態(tài)度與習(xí)慣。

2數(shù)據(jù)寄存器教學(xué)中問的問題

數(shù)據(jù)寄存器是學(xué)習(xí)匯編語言時(shí)學(xué)生最早接觸的內(nèi)容,單純的介紹有哪些寄存器(名稱、大小),各個(gè)寄存器的含義(常用用法),學(xué)生們會(huì)覺得寄存器很抽象,既不知道寄存器有何實(shí)際用途,也不知道如何使用寄存器。我們通過系列問題的牽引,從不同角度不同側(cè)面來解讀寄存器,將新知識(shí)和已有知識(shí)組織成一個(gè)網(wǎng)絡(luò)。

(1) 為什么要設(shè)置寄存器?

通過“CPU執(zhí)行一個(gè)加法指令”的具體應(yīng)用場(chǎng)景來引導(dǎo)學(xué)生回答。CPU要執(zhí)行一個(gè)加法操作,就需要從內(nèi)存取兩個(gè)操作數(shù),CPU能夠一次性地取來兩個(gè)操作數(shù)嗎?答案是不能,地址總線、數(shù)據(jù)總線上一次只能加載一個(gè)單元的地址和數(shù)據(jù)。先取到的數(shù)據(jù)放在何處呢?類比生活中車站、超市的寄存處,學(xué)生能自然而然的接受寄存器的概念。

(2)CPU的執(zhí)行部件中有哪些寄存器呢?32位的寄存器是什么含義?

這些問題的回答是寄存器教學(xué)的基本內(nèi)容,在匯編語言教材上都有較詳細(xì)的介紹。但是我們?cè)诮虒W(xué)時(shí)對(duì)有些內(nèi)容進(jìn)行了簡(jiǎn)化,避免一次性引入過多的概念。

(3) 寄存器為何能記住0、1呢?

直接回答該問題已超出了本門課程的范疇。但為了激發(fā)同學(xué)們的好奇心,有必要提出該問題。同時(shí)指出計(jì)算機(jī)組成原理將會(huì)回答該問題,使學(xué)生感受課程間的一些聯(lián)系。

(4) 如何使用寄存器?

用一個(gè)指令實(shí)例說明一種給寄存器賦值的方法。例如:MOV EAX, 12345678H。之后,一個(gè)接著一個(gè)地提出寫完成某功能的指令問題。遵循循序漸進(jìn)、由淺入深的原則,使學(xué)生能夠模仿實(shí)踐(學(xué)生自己寫指令)、能夠在和已有知識(shí)關(guān)聯(lián)中給出答案,在問答互動(dòng)和鼓勵(lì)中,建立信心,鞏固所學(xué)知識(shí)、開啟靈活應(yīng)用之門,開闊思路和眼界。

① 如何將EAX的低16位全部置成0?

② 如何將EAX的低8~15位全部置成1?

③ 有無其他將EAX的低16位全部置成0的方法?

④ 如何將EAX的高16位全部置成0?

⑤ 如何將EAX的第30位置成0?

⑥ 如何將EAX的第30位置成1?

在此過程中,一方面使學(xué)生記牢32位寄存器、16位寄存器、8位寄存器之間的相互關(guān)系,另一方面調(diào)動(dòng)學(xué)生積極性,思考實(shí)現(xiàn)各功能的辦法。教師作為引導(dǎo)者只是進(jìn)行必要的啟發(fā)提醒。與此同時(shí),同學(xué)們看到了算術(shù)運(yùn)算(減法)、邏輯運(yùn)算(XOR、AND、OR)、移位操作、數(shù)據(jù)傳送(借助其他寄存器)等方法的指令。建立實(shí)現(xiàn)某一種功能的指令多樣性概念,破除指令寫法僵化單一的迷信。在應(yīng)用中熟悉了指令的功能和寫法,在寫指令的過程中強(qiáng)化了記憶。

(5) 通用寄存器又為何給予特定含義的名稱?

我們以一個(gè)生活場(chǎng)景來進(jìn)行類比,講解通用性與常用性的關(guān)系。飲水的杯子作為一種容器,它可以用來裝可樂、裝牛奶、葡萄酒,這就是容器的通用性,但我們一般只有它來喝水,即常用性。“葡萄美酒夜光杯”,用茶杯喝紅葡萄酒就難顯現(xiàn)品酒的情趣和情調(diào)。類比CPU里要計(jì)算一組連續(xù)數(shù)的和,涉及到和、加法的次數(shù)、加數(shù)的位置等信息的存放,需要不同的寄存器。各種信息分別存放到什么寄存器中?從寄存器的通用性角度來看,可用累加器EAX來保存計(jì)數(shù)值,用計(jì)數(shù)器ECX來保存和等。同時(shí)指出不需要這樣標(biāo)新立異,而要注重約定俗成,注意程序的可讀性和可理解性。當(dāng)然,也可以指出在某些指令中是要專用某些寄存器的。

計(jì)算機(jī)作為人類史上的杰出人造產(chǎn)物,其設(shè)計(jì)之中有很多優(yōu)美的地方,值得我們品味和欣賞、借鑒和學(xué)習(xí),其中寄存器的命名、指令的命名都能很好地表達(dá)“望文生義”的理念。解讀這些理念是對(duì)學(xué)生欣賞能力的一個(gè)熏陶,也是人文和科技和諧統(tǒng)一的具體體現(xiàn)。

(6) 寄存器在什么時(shí)候使用呢?

雖然前面已從原理上分析了寄存器存在的必要性,但在一般的C語言程序中并沒有直接使用到寄存器。因此,我們使用VC++6.0環(huán)境下的調(diào)試工具顯示一個(gè)C語言程序及其對(duì)應(yīng)的機(jī)器碼,如圖1所示,很清楚地展現(xiàn)寄存器在被不停地使用著,寄存器這些程序運(yùn)行必不可少的幕后英雄走上了前臺(tái)。學(xué)生能夠初步看到編譯器的杰作。

在閱讀“z=x+y; a[x]=100”等語句對(duì)應(yīng)的機(jī)器指令時(shí),請(qǐng)同學(xué)猜測(cè)各指令的功能。在機(jī)器指令的單步執(zhí)行中,觀察寄存器的變化,在互動(dòng)中鞏固前面所學(xué)知識(shí),極大地消除了對(duì)匯編語言、指令、寄存器等的神秘感。

(7) 能否現(xiàn)在動(dòng)手體會(huì)一下所學(xué)內(nèi)容呢?

從學(xué)習(xí)寄存器開始就可以使用調(diào)試工具來寫一些指令,然后執(zhí)行這些指令,觀察指令的執(zhí)行結(jié)果,并不需要有完整的程序才能使用調(diào)試工具。調(diào)試器TD的用法在文獻(xiàn)[5]中有較詳細(xì)的介紹。

(8) 如何理解寄存器中0、1的含義?

學(xué)生在前面課程的學(xué)習(xí)中,從宏觀的角度建立了計(jì)算機(jī)程序復(fù)雜、應(yīng)用靈活、表象豐富的概念。而在匯編語言課程中,將從微觀的角度揭示計(jì)算機(jī)工作簡(jiǎn)單、呆板的一面。在學(xué)習(xí)匯編語言之時(shí),學(xué)生要轉(zhuǎn)變觀點(diǎn),以機(jī)器的角度去考慮問題,把自己當(dāng)成一個(gè)CPU,理解計(jì)算機(jī)工作的本質(zhì)。這會(huì)引發(fā)許多值得深思的問題。

首先,讓學(xué)生牢固建立計(jì)算機(jī)世界是0、1世界的觀點(diǎn),認(rèn)識(shí)計(jì)算機(jī)是一個(gè)編碼的世界,人世間的萬事萬物映射到計(jì)算機(jī)中都是0、1,就如豐富多彩的物質(zhì)世界只由有限化學(xué)元素組成一樣。復(fù)雜的對(duì)象由簡(jiǎn)單的元素排列組合而成。其次,建立計(jì)算機(jī)(CPU)是機(jī)械工作的觀點(diǎn),它是按部就班的處理指令,當(dāng)根據(jù)CS:EIP取出指令后,才依序確定指令各成份的含義,進(jìn)行解釋和操作,改變EIP,就會(huì)看到指令都發(fā)生了變化。這也就是說,0和1代表的含義和作用是在程序運(yùn)行時(shí)才體現(xiàn)出來的,具有動(dòng)態(tài)性和角色轉(zhuǎn)換性,例如對(duì)于文件拷貝程序、病毒程序而言,被拷貝或感染的程序只是作為一個(gè)數(shù)據(jù)對(duì)象;而在運(yùn)行時(shí),指令的各組成成份依其位置起到操作碼、地址碼、操作數(shù)等作用。第三,計(jì)算機(jī)并不關(guān)心0、1串對(duì)應(yīng)現(xiàn)實(shí)世界對(duì)象的含義,而只是機(jī)械的處理;而對(duì)于編程者和程序閱讀者,他們會(huì)關(guān)心各對(duì)象代表的含義,他們達(dá)成一致性的理解是得益于對(duì)象出現(xiàn)的場(chǎng)景和雙方的約定,這也是人們編寫和閱讀程序的基礎(chǔ)。

3其他寄存器教學(xué)中問的問題

與數(shù)據(jù)寄存器教學(xué)一樣,我們也通過一系列問題來引導(dǎo)學(xué)生思考,學(xué)生在思考中尋求問題的答案,逐步加深對(duì)計(jì)算機(jī)工作基本原理的理解。

(1) 指令的地址放在何處?

(2) 改變EIP的值,TD代碼區(qū)有何變化?TD的數(shù)據(jù)區(qū)有無變化?

(3)C語言程序變量的定義和處理語句是混在一起的,在其對(duì)應(yīng)的機(jī)器語言程序中,它們所占空間在一起嗎?

從取指令、EIP自動(dòng)更新的方法、計(jì)算機(jī)基本的工作過程分析,不難給出其答案。將數(shù)據(jù)所占的存儲(chǔ)空間與指令所占的存儲(chǔ)空間分開,又是編譯器編譯時(shí)的功勞。該問題的解答自然會(huì)引出分段的概念。

(4) 在指令中出現(xiàn)的地址能夠是物理地址嗎?有必要是物理地址嗎?

(5) 在調(diào)度程序運(yùn)行時(shí),指令之間的相對(duì)位置會(huì)發(fā)生變化嗎?

(6) 能用16位的寄存器存放20位的段開始位置的物理地址嗎?

(7) 段從內(nèi)存的何處開始?段的首地址放在何處?

教學(xué)實(shí)踐表明,學(xué)生在一個(gè)一個(gè)問題中受到了啟發(fā),問問題和解答問題的能力和習(xí)慣逐步得到了強(qiáng)化,課堂充滿了活力和生機(jī),激發(fā)了探究式學(xué)習(xí)的熱情。

4結(jié)束語

學(xué)習(xí)過程中最大的問題是沒有問題。一個(gè)無所思無所想的機(jī)械是沒有創(chuàng)造活力的。興趣是最好的老師,而體現(xiàn)興趣的一個(gè)重要方面就是心中存有“為什么、是什么、怎么樣、行不行、可以嗎”等問題。示范、引導(dǎo)、鼓勵(lì)學(xué)生從多角度多視野來問問題,培養(yǎng)學(xué)生細(xì)致入微的觀察能力,深刻全面的分析能力,使學(xué)生逐步養(yǎng)成主動(dòng)求知的態(tài)度與習(xí)慣,這都將為創(chuàng)新活動(dòng)奠定良好的基礎(chǔ)。

參考文獻(xiàn):

[1] 江珊. 沒有問題就是最大的問題[M]. 北京:新華出版社,2009.

[2] 張建偉,陳琦. 從認(rèn)知主義到建構(gòu)主義[J]. 北京師范大學(xué)學(xué)報(bào):社會(huì)科學(xué)版,1996(4):75-82.

[3] 王曉茜. 建構(gòu)主義教學(xué)論探析[J]. 科學(xué)探索,2006(11):30-31.

[4] 陳威. 建構(gòu)主義學(xué)習(xí)理論綜述[J]. 學(xué)術(shù)交流,2007(3):175-177.

[5] 許向陽. 80X86匯編語言程序設(shè)計(jì)上機(jī)指南[M]. 武漢:華中科技大學(xué)出版社,2007.

猜你喜歡
匯編語言寄存器建構(gòu)主義
高等學(xué)校計(jì)算機(jī)專業(yè)課程教學(xué)改革實(shí)踐——以匯編語言與接口技術(shù)課程為例
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
旁批:建構(gòu)主義視域下的語文助讀抓手——以統(tǒng)編初中教材為例
匯編語言與C語言的混合程序設(shè)計(jì)技術(shù)研究
電子制作(2019年10期)2019-06-17 11:45:16
借鑒建構(gòu)主義思想培養(yǎng)財(cái)會(huì)專業(yè)人才
提高《匯編語言程序設(shè)計(jì)》教學(xué)效率的思考與實(shí)踐
分簇結(jié)構(gòu)向量寄存器分配策略研究*
多媒體技術(shù)在建構(gòu)主義教學(xué)模式中的應(yīng)用
建構(gòu)主義視角下的翻譯標(biāo)準(zhǔn)
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
西城区| 青州市| 名山县| 岳阳县| 化德县| 高雄市| 普宁市| 浮山县| 达日县| 桑植县| 临汾市| 双流县| 府谷县| 汉中市| 石屏县| 海淀区| 阿拉善右旗| 左贡县| 开远市| 饶平县| 永城市| 山东| 香格里拉县| 文山县| 烟台市| 稷山县| 吴旗县| 靖安县| 图木舒克市| 西充县| 青浦区| 肃宁县| 尉氏县| 庄浪县| 综艺| 资源县| 民丰县| 台湾省| 江阴市| 五原县| 吉木乃县|