眾賞文庫(kù)
全部分類(lèi)
  • 抗擊疫情 >
    抗擊疫情
    病毒認(rèn)知 防護(hù)手冊(cè) 復(fù)工復(fù)產(chǎn) 應(yīng)急預(yù)案 防控方案 英雄事跡 院務(wù)工作
  • 成品畢設(shè) >
    成品畢設(shè)
    外文翻譯 畢業(yè)設(shè)計(jì) 畢業(yè)論文 開(kāi)題報(bào)告 文獻(xiàn)綜述 任務(wù)書(shū) 課程設(shè)計(jì) 相關(guān)資料 大學(xué)生活 期刊論文 實(shí)習(xí)報(bào)告
  • 項(xiàng)目策劃 >
    項(xiàng)目策劃
    土地準(zhǔn)備 規(guī)劃設(shè)計(jì) 開(kāi)工開(kāi)盤(pán) 項(xiàng)目綜合 竣工移交 售后移交 智慧方案 安全專(zhuān)項(xiàng) 環(huán)境影響評(píng)估報(bào)告 可行性研究報(bào)告 項(xiàng)目建議書(shū) 商業(yè)計(jì)劃書(shū) 危害評(píng)估防治 招投標(biāo)文件
  • 專(zhuān)業(yè)資料 >
    專(zhuān)業(yè)資料
    人文法律 環(huán)境安全 食品科學(xué) 基礎(chǔ)建設(shè) 能源化工 農(nóng)林牧畜 綜合待分類(lèi) 教育經(jīng)驗(yàn) 行政人力 企業(yè)管理 醫(yī)學(xué)衛(wèi)生 IT技術(shù) 土木建筑 考研專(zhuān)題 財(cái)會(huì)稅務(wù) 公路隧道 紡織服裝
  • 共享辦公 >
    共享辦公
    總結(jié)匯報(bào) 調(diào)研報(bào)告 工作計(jì)劃 述職報(bào)告 講話(huà)發(fā)言 心得體會(huì) 思想?yún)R報(bào) 事務(wù)文書(shū) 合同協(xié)議 活動(dòng)策劃 代理加盟 技術(shù)服務(wù) 求職簡(jiǎn)歷 辦公軟件 ppt模板 表格模板 融資協(xié)議 發(fā)言演講 黨團(tuán)工作 民主生活
  • 學(xué)術(shù)文檔 >
    學(xué)術(shù)文檔
    自然科學(xué) 生物科學(xué) 天文科學(xué) 醫(yī)學(xué)衛(wèi)生 工業(yè)技術(shù) 航空、航天 環(huán)境科學(xué)、安全科學(xué) 軍事 政學(xué) 文化、科學(xué)、教育、 交通運(yùn)輸 經(jīng)濟(jì) 語(yǔ)言、文字 文學(xué) 農(nóng)業(yè)科學(xué) 社會(huì)科學(xué)總論 藝術(shù) 歷史、地理 哲學(xué) 數(shù)理科學(xué)和化學(xué) 綜合性圖書(shū) 哲學(xué)宗教
  • 經(jīng)營(yíng)營(yíng)銷(xiāo) >
    經(jīng)營(yíng)營(yíng)銷(xiāo)
    綜合文檔 經(jīng)濟(jì)財(cái)稅 人力資源 運(yùn)營(yíng)管理 企業(yè)管理 內(nèi)控風(fēng)控 地產(chǎn)策劃
  • 教學(xué)課件 >
    教學(xué)課件
    幼兒教育 小學(xué)教育 初中教育 高中教育 職業(yè)教育 成人教育 高等教育 考研資源 試題真題 作業(yè)習(xí)題 課后答案 綜合教學(xué)
  • 土木建筑 >
    土木建筑
    專(zhuān)項(xiàng)施工 應(yīng)急預(yù)案 建筑規(guī)范 工藝方案 技術(shù)交底 施工表格 圖片圖集
  • 課程導(dǎo)學(xué) >
    課程導(dǎo)學(xué)
    醫(yī)學(xué)綜合 中醫(yī)養(yǎng)生 醫(yī)學(xué)研究 身心發(fā)展 醫(yī)學(xué)試題 影像醫(yī)學(xué) 醫(yī)院辦公 外科醫(yī)學(xué) 老年醫(yī)學(xué) 內(nèi)科醫(yī)學(xué) 婦產(chǎn)科 神經(jīng)科 醫(yī)學(xué)課件 眼鼻喉科 皮膚病科 腫瘤科 兒科醫(yī)學(xué) 康復(fù)醫(yī)學(xué) 全科醫(yī)學(xué) 護(hù)理學(xué)科 針灸學(xué)科 重癥學(xué)科 病毒學(xué)科 獸醫(yī) 藥學(xué)
    • 下載積分: 6 賞幣
      上傳時(shí)間:2024-03-05
      頁(yè)數(shù): 13
      3人已閱讀
      ( 4 星級(jí))
    • 下載積分: 8 賞幣
      上傳時(shí)間:2024-03-06
      頁(yè)數(shù): 29
      3人已閱讀
      ( 4 星級(jí))
    • 下載積分: 6 賞幣
      上傳時(shí)間:2024-03-05
      頁(yè)數(shù): 10
      2人已閱讀
      ( 4 星級(jí))
    • 下載積分: 3 賞幣
      上傳時(shí)間:2024-03-06
      頁(yè)數(shù): 1
      7人已閱讀
      ( 4 星級(jí))
    • 下載積分: 6 賞幣
      上傳時(shí)間:2024-03-05
      頁(yè)數(shù): 6
      3人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:1,系統(tǒng)級(jí)設(shè)計(jì)描述語(yǔ)言SYSTEMC,徐寧儀XUNY97MAILSTSINGHUAEDUCNXUNYSMTH東主樓9區(qū)324房間62781914,版權(quán)所有2004,第二部分SYSTEMC的基本語(yǔ)法,教材陳曦徐寧儀SYSTEMC片上系統(tǒng)設(shè)計(jì),科學(xué)出版社,2003本課件大部分內(nèi)容參考此書(shū),僅作為大學(xué)教學(xué)之用,請(qǐng)勿用于商業(yè),2,課程主要內(nèi)容,共講4次,爭(zhēng)取講清楚WHY,WHAT,SC_CTORHELLO{//此處聲明SYSTEMC構(gòu)造函數(shù)COUTBUILDSYSTEMCLIBF7,20,NAND2,CREATENEWPROJECTFILENEWPROJECTWIN32CONSOLEAPPLICATIONEMPTYPROJECTADDEXISTEDFILESPROJECTADDTOPROJECTFILESMAINCPPTBHNAND2HBUILDINGARGUMENTANDDEPENDENCYPROJECTSETTINGSC/CCLANGUAGEENABLERUNTIMEINFORMATIONPROJECTSETTINGSC/CPREPROCESSORADDITIONALINCLUDEDIRECTORYC\TEMP\SYSTEMC201\SRCADDSYSTEMCLIBPROJECTADDTOPROJECTFILESC\TEMP\SYSTEMC201\MSVC60\SYSTEMC\DEBUG\SYSTEMCLIBBUILD,RUN,21,用MODESIM查看波形,建一個(gè)MODELSIM項(xiàng)目,將NAND2VCD復(fù)制到該項(xiàng)目的目錄下。使用MODELSIM行命令VCD2WLF將VCD文件轉(zhuǎn)化為WLF文件。命令格式為VCD2WLF,這里我們輸入VCD2WLFNAND2VCDNAND2WLF。請(qǐng)注意VCD2WLF與NAND2VCD、NAND2VC與NAND2WLF之間都有空格。如果沒(méi)有任何提示,則命令被正確執(zhí)行,這時(shí)將產(chǎn)生一個(gè)NAND2WLF文件。,22,用MODESIM查看波形,打開(kāi)SIGNAL、STRUCTURE和WAVE窗口。,在WAVE窗口下選擇OPENDATASET菜單,將生成的NAND2WLF文件導(dǎo)入進(jìn)來(lái)。這時(shí)你將在STRUCTURE窗口中看到設(shè)計(jì)SYSTEMC,在SIGNAL窗口中選擇所要看的信號(hào)放到WAVE窗口中你就可以看到波形了。,23,特別強(qiáng)調(diào),所有的支持標(biāo)準(zhǔn)C的編譯器都可以編譯SYSTEMC。為了方便PC上的使用,我們使用VISUALC60編譯器。,可以使用MODELSIM、WAVEVIEWER、VCS、SIGNALSCAN等查看波形。WAVEVIEWER是免費(fèi)的,直接可以查看VCD文件記錄的波形。,24,SYSTEMC仿真過(guò)程,SYSTEMC可執(zhí)行文件的執(zhí)行EXECUTION過(guò)程分為目標(biāo)描述(ELABORATION)、初始化(INITIALIZATION)和仿真(SIMULATION)三個(gè)階段。,SYSTEMC的仿真過(guò)程是基于事件EVENT的。仿真時(shí)間只前進(jìn),不后退。前進(jìn)的尺度與仿真時(shí)間分辨率和時(shí)間單位有關(guān)。,25,目標(biāo)描述(ELABORATION)階段,從SC_MAIN到SC_START的第一次執(zhí)行。SC_MAININT,CHAR{//ELABORATIONSTARTSHERESC_START1000//ELABORATIONENDSHERE},ELABORATION部分一般包括模塊實(shí)例和連接模塊的通道的初始化、設(shè)置缺省時(shí)間單位和仿真分辨率、SC_CLOCK的初始化、SC_TIME類(lèi)型數(shù)據(jù)的初始化。,SYSTEMC不支持模塊的動(dòng)態(tài)創(chuàng)建。(SYSTEMC模塊等效于VHDL的ENTITY),26,初始化INITIALIZATION階段,整個(gè)SYSTEMC仿真的執(zhí)行過(guò)程由SYSTEMC調(diào)度器控制,INITIALIZATION是SYSTEMC調(diào)度器執(zhí)行的第一步。,SYSTEMC核心語(yǔ)言庫(kù)定義了三種進(jìn)程SC_METHOD、SC_THREAD和SC_CTHREAD。在初始化階段,缺省情況下每一個(gè)進(jìn)程都被執(zhí)行一次,THREAD進(jìn)程被執(zhí)行到第一個(gè)WAIT語(yǔ)句。,通過(guò)DON’T_INITIALIZE函數(shù)可以關(guān)閉對(duì)進(jìn)程的初始化。當(dāng)進(jìn)程的敏感表上有事件發(fā)生的時(shí)候,沒(méi)有初始化的進(jìn)程的第一條語(yǔ)句才開(kāi)始執(zhí)行。,27,初始化INITIALIZATION階段CON’T,在初始化階段,進(jìn)程的初始化順序是不確定的。但不同次執(zhí)行中進(jìn)程的初始化順序是確定的。所以同一設(shè)計(jì)用不同的編譯器得到的可執(zhí)行文件由于初始化順序不同可能產(chǎn)生不同的運(yùn)行結(jié)果??聪马?yè)的例子,28,初始化INITIALIZATION階段CON’T,上述代碼中第一次顯示的ADDR的值是0還是1,SC_MODULEEXAMPLE{SC_IN_CLKCLKSC_UINTLAST_ADDR0SC_UINTADDR0VOIDINC{WHILETRUE{ADDRLAST_ADDR1WAIT}}VOIDDISPLAY{COUTDATA_BUS,SYSTEMC中信號(hào)與變量的區(qū)別與VHDL中一樣。信號(hào)常被用來(lái)連接模塊和用于進(jìn)程間通信,變量則用于進(jìn)程和模塊的本地存儲(chǔ)。變量仿真的賦值是立刻發(fā)生的,沒(méi)有DELTA延時(shí)而信號(hào)和端口的值刷新要經(jīng)過(guò)一個(gè)DELTA延時(shí),變量的定義與標(biāo)準(zhǔn)C是一樣的。,按照上面的說(shuō)法,信號(hào)應(yīng)常被綜合為邏輯塊間的連線(xiàn)。變量常被綜合為邏輯塊,可以是組合或者時(shí)序邏輯。,53,信號(hào)和端口的關(guān)聯(lián),關(guān)聯(lián)(ASSOCIATION)基本等于連接CONNECT,也稱(chēng)為綁定BIND,關(guān)聯(lián)(ASSOCIATION)分為位置關(guān)聯(lián)和名字關(guān)聯(lián),與VHDL一樣。名字關(guān)聯(lián)就是按照名字一一對(duì)應(yīng);位置關(guān)聯(lián)就是按照端口定義的順序一一對(duì)應(yīng)。,54,名字關(guān)聯(lián)實(shí)例,INCLUDE“NAND2H“INCLUDE“TBH“INTSC_MAININT,CHAR{SC_SIGNALA,B,FSC_CLOCKCLK“CLK“,20,SC_NSNAND2N2“NAND2“N2AAN2BBN2FFTBTB1“TB“TB1CLKCLKTB1AATB1BBTB1FF//RESTOFTHECODEOMITTEDRETURN0},55,位置關(guān)聯(lián)實(shí)例,INCLUDE“NAND2H“INCLUDE“TBH“INTSC_MAININT,CHAR{SC_SIGNALA,B,FSC_CLOCKCLK“CLK“,20,SC_NSNAND2N2“NAND2“N2A,B,FTBTB1“TB“TB1CLK,A,B,F//RESTOFTHECODEOMITTEDRETURN0},56,兩種關(guān)聯(lián)方式的對(duì)比,位置關(guān)聯(lián)在一個(gè)只有少量端口的模塊的初始化中是非常合適的,它能夠使描述簡(jiǎn)單化。,然而在對(duì)一個(gè)有大量端口的模塊的初始化中使用位置關(guān)聯(lián)將是非常危險(xiǎn)的,因?yàn)閷?shí)際工作中設(shè)計(jì)者可能會(huì)不經(jīng)意間修改了模塊的端口的順序,這時(shí)就會(huì)產(chǎn)生關(guān)聯(lián)錯(cuò)誤,而這種錯(cuò)誤很可能是很難發(fā)現(xiàn)的。遇到這種情況最好使用下文所述的名字關(guān)聯(lián)。,所以對(duì)于一個(gè)大的SYSTEMC項(xiàng)目,一般建議統(tǒng)一的使用名字關(guān)聯(lián)。,57,模塊的構(gòu)造函數(shù),C中的構(gòu)造函數(shù)創(chuàng)建模塊內(nèi)部數(shù)據(jù)結(jié)構(gòu),并把這些數(shù)據(jù)結(jié)構(gòu)初始化為已知的值。,SYSTEMC構(gòu)造函數(shù)還用于初始化進(jìn)程的類(lèi)型并創(chuàng)建進(jìn)程的敏感表。,SYSTEMC的構(gòu)造函數(shù)用SC_CTOR標(biāo)識(shí),構(gòu)造函數(shù)的名字必須與模塊的名字相同。,58,一個(gè)構(gòu)造函數(shù)的實(shí)例,//ASYSTEMCDESCRIPTIONOF2INPUTNANDGATEDESIGNEDBYCHENXI,2003322INCLUDEINCLUDESC_MODULENAND2{SC_INA,BSC_OUTFVOIDDO_NAND{FA}SC_CTORNAND2{SC_METHODDO_NAND//聲明DO_NAND為SC_METHOD進(jìn)程SENSITIVEAB}//這里是DO_NAND進(jìn)程的敏感表},59,另外一個(gè)構(gòu)造函數(shù)的例子,INCLUDE//OTHERINCLUDESSC_MODULESIMPLE_SOC{CPUCPU1MEMORYUNITMU1GPIOGPIO1DMADMA1//DECLARECLOCKAND//OTHERSINGALS//CONSTRUCTORSC_CTORSIMPLE_SOC{//SEENEXTSLIDE}SIMPLE_SOC{}//DESTRUCTOR},60,另外一個(gè)構(gòu)造函數(shù)的例子CON’T,SIMPLE_SOC的構(gòu)造函數(shù)如下,SC_CTORSIMPLE_SOC{CPU1NEWCPU“CPU“//CONNECTPORTSMU1NEWMEMORYUNIT“MU“//CONNECTPORTSGPIO1NEWGPIO“GPIO“//CONNECTPORTSDMA1NEWDMA“DMA“//CONNECTPORTS},61,在構(gòu)造函數(shù)中對(duì)端口的初始化方法,SC_MODULETB{SC_OUTDATA_SOURCE//OTHERPORTDECLARATIONSBOOLVALUEVOIDGENINPUT{DATA_SOURCEWRITEVALUEVALUEVALUE}SC_CTORTB{SC_METHODGENINPUTSENSITIVE_POSCLKDATA_SOURCEWRITETRUE//WRONGDATA_SOURCETRUE//WRONGDATA_SOURCEINITIALIZETRUE//OKVALUETRUE//OK}}(INT2BOOLTESTDSW),62,析構(gòu)函數(shù),析構(gòu)函數(shù)釋放代碼中申請(qǐng)的內(nèi)存SIMPLE_SOC的析構(gòu)函數(shù)如下,//DESTRUCTORSIMPLE_SOC{IFCPU1{DELETECPU1CPU10}IFMU1{DELETEMU1MU10}IFGPIO1{DELETEGPIO1GPIO10}IFDMA1{DELETEDMA1DMA10}},63,SYSTEMC時(shí)鐘模型,在SYSTEMC中,時(shí)鐘被作為一個(gè)特殊的對(duì)象處理,它就是SC_CLOCK類(lèi)。,時(shí)鐘端口作為一個(gè)特殊的端口。如SC_IN_CLKCLK1//可以用SC_INCLK1代替,在SYSTEMC201中,SC_CLOCK一共有6個(gè)重載的構(gòu)造函數(shù)。如SC_CLOCKSC_MODULE_NAMENAME_,CONSTSC_TIME,64,SYSTEMC時(shí)鐘定義實(shí)例1,SC_CLOCKCLK1“CLK1“,20,05,5,TRUE,65,SYSTEMC時(shí)鐘定義實(shí)例2,SC_CLOCKCLK2“CLK2“,20,05,0,TRUE,66,以上兩例的缺點(diǎn),在CLK1和CLK2的定義中,沒(méi)有給出時(shí)鐘的具體時(shí)間單位,系統(tǒng)默認(rèn)的時(shí)間單位將被采用,不同的系統(tǒng)的默認(rèn)時(shí)間單位可能不同,這將不利于IP核的設(shè)計(jì)復(fù)用。假設(shè)CLK1的周期為50MHZ,則更合適的定義方法為SC_CLOCKCLK1“CLK1“,20,SC_NS,05,5,SC_NS,TRUE,67,其它生成時(shí)鐘的辦法,另外一種定義時(shí)鐘的辦法SC_SIGNALCLOCKSC_INITIALIZEFORINTI0I1000ICLOCK1SC_CYCLE5CLOCK0SC_CYCLE5},
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-07
      頁(yè)數(shù): 149
      2人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:0,主講人劉雪潔,ASSEMBLYLANGUAGEPROGRAMMING,,匯編語(yǔ)言程序設(shè)計(jì),1,課程介紹,匯編語(yǔ)言程序設(shè)計(jì)課程是國(guó)家教育部所屬高等院校計(jì)算機(jī)軟硬件專(zhuān)業(yè)的專(zhuān)業(yè)基礎(chǔ)課、必修課。作為一種低級(jí)語(yǔ)言,匯編語(yǔ)言是高級(jí)語(yǔ)言程序設(shè)計(jì)的基礎(chǔ),通常被視為微型計(jì)算機(jī)的又一核心內(nèi)容。雖然現(xiàn)今大量問(wèn)題都可應(yīng)用高級(jí)語(yǔ)言編程,但匯編語(yǔ)言是能夠利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的惟一語(yǔ)言,對(duì)于直接控制硬件的應(yīng)用場(chǎng)合或若干實(shí)時(shí)處理與控制的應(yīng)用開(kāi)發(fā)項(xiàng)目,匯編語(yǔ)言具有明顯的優(yōu)勢(shì)。,2,使用教材,沈美明、溫冬嬋編著IBMPC匯編語(yǔ)言程序設(shè)計(jì)(第2版)清華大學(xué)出版社2001年參考1王爽編著匯編語(yǔ)言清華大學(xué)出版社2003年2錢(qián)曉捷編著匯編語(yǔ)言程序設(shè)計(jì)電子工業(yè)出版社2003年,3,教學(xué)內(nèi)容,第1章匯編語(yǔ)言基礎(chǔ)知識(shí)第2章80X86的指令系統(tǒng)第3章匯編語(yǔ)言程序格式第4章基本匯編語(yǔ)言程序設(shè)計(jì)第5章高級(jí)匯編語(yǔ)言程序設(shè)計(jì),4,第1章匯編語(yǔ)言基礎(chǔ)知識(shí),11匯編語(yǔ)言及意義12數(shù)據(jù)編碼與運(yùn)算13數(shù)據(jù)表示1480X86CPU和寄存器組15存儲(chǔ)器和端口,5,111機(jī)器語(yǔ)言計(jì)算機(jī)能夠直接識(shí)別的數(shù)據(jù)是由二進(jìn)制數(shù)0和1組成的代碼。機(jī)器指令就是用二進(jìn)制代碼組成的指令,一條機(jī)器指令控制計(jì)算機(jī)完成一個(gè)基本操作。用機(jī)器語(yǔ)言編寫(xiě)的程序是計(jì)算機(jī)惟一能夠直接識(shí)別并執(zhí)行的程序,而用其他語(yǔ)言編寫(xiě)的程序必須經(jīng)過(guò)翻譯才能變換成機(jī)器語(yǔ)言程序。,11匯編語(yǔ)言及意義,返回本章,6,112匯編語(yǔ)言匯編語(yǔ)言是一種用符號(hào)書(shū)寫(xiě)的、基本操作與機(jī)器指令相對(duì)應(yīng)的、并遵循一定語(yǔ)法規(guī)則的計(jì)算機(jī)語(yǔ)言。匯編語(yǔ)言是一種符號(hào)語(yǔ)言,比機(jī)器語(yǔ)言容易理解和掌握,也容易調(diào)試和維護(hù)。但對(duì)于匯編語(yǔ)言編寫(xiě)的程序必須經(jīng)過(guò)匯編和連接之后,才能在計(jì)算機(jī)上執(zhí)行。,返回本節(jié),返回本章,7,用匯編語(yǔ)言編寫(xiě)的程序稱(chēng)為匯編源程序。采用微機(jī)中任何一個(gè)文本編輯器編寫(xiě)匯編語(yǔ)言源程序。匯編程序可將匯編語(yǔ)言源程序翻譯成機(jī)器代碼目標(biāo)模塊。80X86CPU的匯編程序主要有微軟的宏匯編程序MASM。較著名的還有BORLAND公司的TASM,無(wú)實(shí)質(zhì)差別。,返回本節(jié),返回本章,8,連接程序?qū)R編后的目標(biāo)模塊轉(zhuǎn)換為可執(zhí)行程序。連接程序的文件名通常是LINKEXE。,返回本節(jié),返回本章,9,113高級(jí)語(yǔ)言高級(jí)程序設(shè)計(jì)語(yǔ)言接近于人類(lèi)自然語(yǔ)言的語(yǔ)法習(xí)慣,與計(jì)算機(jī)硬件無(wú)關(guān),易被用戶(hù)掌握和使用。114匯編語(yǔ)言特點(diǎn)匯編語(yǔ)言程序與處理器指令系統(tǒng)密切相關(guān)。程序員可直接、有效地控制系統(tǒng)硬件。形成的可執(zhí)行文件運(yùn)行速度快、占用主存容量少。,返回本節(jié),返回本章,10,12數(shù)據(jù)編碼與運(yùn)算,121各種進(jìn)位計(jì)數(shù)制(1)十進(jìn)制計(jì)數(shù)十進(jìn)制數(shù)的基數(shù)為10,采用數(shù)字0、1、2、3、4、5、6、7、8、9共10個(gè)數(shù)碼來(lái)計(jì)數(shù)。每位數(shù)字的10K為該位數(shù)字的權(quán)。例795412107102+9101+5100+4101+1102+2103,返回本章,11,(2)二進(jìn)制計(jì)數(shù)二進(jìn)制數(shù)的基數(shù)為2,只有0、1兩個(gè)數(shù)碼,并遵循逢2進(jìn)1的規(guī)則,它的各位權(quán)是以2K表示的。例1110012121+120+121+022+023+124N位二進(jìn)制數(shù)可以表示2N個(gè)數(shù),例如3位二進(jìn)制數(shù)可以表示8個(gè)數(shù),即000111。4位二進(jìn)制數(shù)則表示16個(gè)數(shù),即00001111。,返回本節(jié),返回本章,12,(3)八進(jìn)制和十六進(jìn)制計(jì)數(shù)為便于閱讀及書(shū)寫(xiě),經(jīng)常使用八進(jìn)制數(shù)和十六進(jìn)制數(shù)來(lái)表示二進(jìn)制數(shù)。八進(jìn)制的基數(shù)為8,數(shù)碼為0、1、2、3、4、5、6、7。十六進(jìn)制數(shù)的基數(shù)為16,數(shù)碼為0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。按同樣的方法,可以容易掌握八進(jìn)制和十六進(jìn)制的表示方法。十進(jìn)制數(shù)結(jié)尾一般用D、二進(jìn)制數(shù)用B、八進(jìn)制數(shù)用O、十六進(jìn)制數(shù)H。如117D、1010B,67O,1ABH,。,返回本節(jié),返回本章,13,122數(shù)制的轉(zhuǎn)換(1)十進(jìn)制與二、八、十六進(jìn)制間轉(zhuǎn)換將十進(jìn)制數(shù)轉(zhuǎn)換成二、八、十六進(jìn)制數(shù)的方法將數(shù)分成整數(shù)部分和小數(shù)部分,整數(shù)部分采用除基取余法,小數(shù)部分采用乘基取整法分別進(jìn)行轉(zhuǎn)換。例76425D1001100011011B,商余數(shù)76÷238038÷219019÷2919÷2414÷2202÷2101÷201,乘積整數(shù)042520850008521701072141042080082161062121,,,返回本節(jié),返回本章,14,例將十進(jìn)制數(shù)76125轉(zhuǎn)換成十六進(jìn)制數(shù)。商余數(shù)乘積整數(shù)部分76÷164C(12)0125162024÷1604轉(zhuǎn)換結(jié)果為761254C2H,,,返回本節(jié),返回本章,15,將二、八、十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法各位數(shù)碼與其對(duì)應(yīng)權(quán)的積再求和即為該進(jìn)制數(shù)相對(duì)應(yīng)的十進(jìn)制數(shù)。例10111B575DB56D7H2902839844D。計(jì)算過(guò)程10111B122+021+120+121+1224105025575DB56D7HB162+5161+6160+D161+71622816+80+6+08125+00273442902839844,返回本節(jié),返回本章,16,轉(zhuǎn)換過(guò)程1011110100111001B00010111101001110010B17A72HB56D7H10110101011011010111B,(2)二進(jìn)制與八、十六進(jìn)制間轉(zhuǎn)換將二進(jìn)制數(shù)轉(zhuǎn)換成八(十六)進(jìn)制數(shù)的方法一個(gè)二制數(shù)從小數(shù)點(diǎn)向兩個(gè)方向每3位4位劃為一組位數(shù)不夠補(bǔ)零,然后每組用八(十六)進(jìn)制數(shù)表示就可以了。反之,把八(十六)進(jìn)制數(shù)每一位用3位(4位)二進(jìn)制數(shù)表示,就形成相應(yīng)的二進(jìn)制數(shù)了。例1011110100111001B17A72HB56D7H10110101011011010111B,返回本節(jié),返回本章,17,123數(shù)據(jù)運(yùn)算(1)二進(jìn)制數(shù)運(yùn)算二進(jìn)制加法運(yùn)算規(guī)則逢2進(jìn)1。即0+0=00+1=11+0=11+1=0產(chǎn)生進(jìn)位1二進(jìn)制減法運(yùn)算規(guī)則借1作2。即0-0=00-1=1產(chǎn)生借位11-0=11-1=0,返回本節(jié),返回本章,18,二進(jìn)制乘法運(yùn)算與十進(jìn)制乘法運(yùn)算類(lèi)似即00=001=010=011=1(2)十六進(jìn)制運(yùn)算加法當(dāng)兩個(gè)一位數(shù)之和S小于16時(shí),與十進(jìn)制同樣處理,如果S大于或等于16,則應(yīng)用S16及進(jìn)位1取代S。減法與十進(jìn)制類(lèi)似,夠減時(shí)可直接相減,不夠減時(shí)服從向高位借1為16的規(guī)則。乘法可用十進(jìn)制乘法的規(guī)則來(lái)計(jì)算,但結(jié)果必須用十六進(jìn)制數(shù)來(lái)表示。,返回本節(jié),返回本章,19,例,05C3H3D25H3D25H05C3H42E8H3762H05C3H00A1H05C3399E39FA3H,,,,,,,返回本節(jié),返回本章,20,13數(shù)據(jù)表示,131數(shù)值數(shù)據(jù)數(shù)值數(shù)據(jù)分為有符號(hào)數(shù)和無(wú)符號(hào)數(shù)。無(wú)符號(hào)數(shù)最高位表示數(shù)值,而有符號(hào)數(shù)最高位表示符號(hào)。有符號(hào)數(shù)有不同的編碼方式,常用的是補(bǔ)碼。,返回本章,21,(1)原碼最高位表示符號(hào)(正數(shù)用0,負(fù)數(shù)用1),其它位為該數(shù)的二進(jìn)制數(shù)值,稱(chēng)為有符號(hào)數(shù)的原碼表示。【例】X45D00101101BX原00101101BX45DX原10101101B原碼表示簡(jiǎn)單易懂,但若是兩個(gè)異號(hào)數(shù)相加(或兩個(gè)同號(hào)數(shù)相減),就要做減法。為了把減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算就引進(jìn)了反碼和補(bǔ)碼。,返回本節(jié),返回本章,22,(2)反碼正數(shù)的反碼與原碼相同,符號(hào)位用0表示,數(shù)值位不變。負(fù)數(shù)的反碼符號(hào)位用1表示,數(shù)值位為原碼數(shù)值位按位取反形成,即0變1、1變0?!纠縓45D00101101B,X反00101101BX45DX反11010010B(3)補(bǔ)碼正數(shù)的補(bǔ)碼與原碼相同,即符號(hào)位用0表示,數(shù)值位不變。負(fù)數(shù)的補(bǔ)碼為反碼加1形成?!纠縓45D00101101BX補(bǔ)00101101BX45DX補(bǔ)11010011B,返回本節(jié),返回本章,23,(4)符號(hào)擴(kuò)展在數(shù)據(jù)處理時(shí),有時(shí)需要把8位二進(jìn)制數(shù)擴(kuò)展成16位二進(jìn)制數(shù)。當(dāng)要擴(kuò)展的數(shù)是無(wú)符號(hào)數(shù)時(shí),可在最高位前擴(kuò)展8個(gè)0。如果要擴(kuò)展的數(shù)是補(bǔ)碼形式的有符號(hào)數(shù),那么就要進(jìn)行符號(hào)位的擴(kuò)展。符號(hào)擴(kuò)展后,其結(jié)果仍是該數(shù)的補(bǔ)碼。,返回本節(jié),返回本章,24,(5)數(shù)據(jù)的表示范圍和大小N位二進(jìn)制數(shù)能表示的無(wú)符號(hào)整數(shù)的范圍是0≤I≤2N1;N位二進(jìn)制數(shù)能表示的有符號(hào)整數(shù)的范圍是2N1≤I≤2N11(6)補(bǔ)碼的加法和減法補(bǔ)碼的特性X補(bǔ)X補(bǔ)X補(bǔ)補(bǔ)碼的加法規(guī)則X+Y補(bǔ)X補(bǔ)+Y補(bǔ)補(bǔ)碼的減法規(guī)則XY補(bǔ)X補(bǔ)+Y補(bǔ),返回本節(jié),返回本章,求補(bǔ),求補(bǔ),25,132字符數(shù)據(jù)(1)ASCII碼標(biāo)準(zhǔn)ASCII碼用7位二進(jìn)制數(shù)編碼,共有128個(gè)。計(jì)算機(jī)存儲(chǔ)器基本單位為8位,ASCII碼的最高位通常為0,通信時(shí),最高位用作奇偶校驗(yàn)位。常用字符的ASCII碼數(shù)字0~930H~39H字母A~Z41H~5AH字母A~Z61H~7AH空格20H回車(chē)CR0DH換行LF0AH注意回車(chē)與換行的差別CR用來(lái)控制光標(biāo)回到當(dāng)前行的最左端;LF用來(lái)移動(dòng)光標(biāo)到下一行,而所在列不變。,返回本節(jié),返回本章,26,(2)BCD碼雖然二進(jìn)制數(shù)實(shí)現(xiàn)容易,但不符合人們的使用習(xí)慣,且書(shū)寫(xiě)閱讀不方便,所以在計(jì)算機(jī)輸入輸出時(shí)通常還是采用十進(jìn)制來(lái)表示數(shù),這就需要實(shí)現(xiàn)十進(jìn)制與二進(jìn)制間的轉(zhuǎn)換。為了轉(zhuǎn)換方便,常采用二進(jìn)制編碼的十進(jìn)制,簡(jiǎn)稱(chēng)為BCD碼。,返回本節(jié),返回本章,27,壓縮BCD碼以4個(gè)二進(jìn)制位表示1個(gè)十進(jìn)制位,用0000B~1001B表示0~9。例如,十進(jìn)制數(shù)6429的壓縮BCD碼表示為0110010000101001B(即6429H)非壓縮BCD碼以8個(gè)二進(jìn)制位表示1個(gè)十進(jìn)制位,低4位與壓縮BCD碼相同,高4位無(wú)意義。例如,十進(jìn)制數(shù)6429的非壓縮BCD碼表示為XXXX0110XXXX0100XXXX0010XXXX1001B有時(shí),要求非壓縮BCD碼的高4位為0,這時(shí),6429的非壓縮BCD碼為06040209H。,返回本節(jié),返回本章,28,1480X86CPU和寄存器組,計(jì)算機(jī)硬件中央處理單元CPU(INTEL80X86)對(duì)匯編語(yǔ)言程序員,最關(guān)心其中的寄存器存儲(chǔ)器(主存儲(chǔ)器)呈現(xiàn)給匯編語(yǔ)言程序員的,是存儲(chǔ)器地址外部設(shè)備(接口電路)匯編語(yǔ)言程序員看到的是端口(I/O地址),返回本章,29,14180X86CPU計(jì)算機(jī)執(zhí)行程序時(shí),首先要將其裝入內(nèi)存,然后由CPU執(zhí)行程序指令。CPU的作用執(zhí)行算術(shù)與邏輯運(yùn)算,控制指令的執(zhí)行。通常,將INTEL公司生產(chǎn)的8086/8088、80286、80386、80486、PENTIUM、PENTIUMPRO、PENTIUMII、PENTIUMIII、PENTIUM4及其兼容的CPU,統(tǒng)稱(chēng)為80X86CPU或X86CPU,將基于這些CPU的計(jì)算機(jī),稱(chēng)為80X86計(jì)算機(jī)或X86計(jì)算機(jī)。其中,8086CPU是INTEL公司于1978年推出的16位微處理器,時(shí)鐘頻率為5MHZ,有16位數(shù)據(jù)信號(hào)線(xiàn),20位地址信號(hào)線(xiàn),可尋址的內(nèi)存地址空間為1MB。,返回本章,30,80X86CPU的3種工作模式1實(shí)模式與8086兼容的工作模式,只有低20位地址線(xiàn)起作用,僅能尋址第一個(gè)1MB的內(nèi)存空間。MSDOS運(yùn)行在實(shí)模式下。2保護(hù)模式32位80X86CPU的主要工作模式,提供對(duì)程序和數(shù)據(jù)進(jìn)行安全檢查的保護(hù)機(jī)制。WINDOWS9X/NT/2000運(yùn)行在保護(hù)模式下。3虛擬8086模式在WINDOWS9X下,若打開(kāi)一個(gè)MSDOS窗口,運(yùn)行一個(gè)DOS應(yīng)用程序,那么該程序就運(yùn)行在虛擬8086模式下。,返回本節(jié),返回本章,31,,14280X86寄存器組,8086寄存器組,返回本節(jié),返回本章,32,1.通用寄存器,(1)數(shù)據(jù)寄存器8位數(shù)據(jù)寄存器8個(gè)AL、AH、BL、BH、CL、CH、DL、DH。16位數(shù)據(jù)寄存器4個(gè)AX、BX、CX、DX。32位數(shù)據(jù)寄存器4個(gè)EAX、EBX、ECX、EDX。AL與AH、BL與BH、CL與CH、DL與DH分別對(duì)應(yīng)于AX、BX、CX和DX的低8位與高8位。AX、BX、CX和DX分別對(duì)應(yīng)于EAX、EBX、ECX和EDX的低16位。,返回本節(jié),返回本章,33,AX寄存器稱(chēng)為累加器。使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等。BX寄存器稱(chēng)為基址寄存器。常用于存放存儲(chǔ)器地址。CX寄存器稱(chēng)為計(jì)數(shù)器。一般作為循環(huán)或串操作等指令中的隱含計(jì)數(shù)器。DX寄存器稱(chēng)為數(shù)據(jù)寄存器。常用來(lái)存放雙字?jǐn)?shù)據(jù)的高16位,或存放外設(shè)端口地址。,返回本節(jié),返回本章,34,變址和指針寄存器包括SI、DI、SP、BP4個(gè)16位寄存器和ESI、EDI、ESP、EBP4個(gè)32位寄存器,主要用于存放某個(gè)存儲(chǔ)單元的偏移地址。其中SI、DI、BP和SP分別對(duì)應(yīng)于ESI、EDI、EBP和ESP的低16位。。SI是源變址寄存器,DI是目的變址寄存器,在字符串操作中,SI和DI都具有自動(dòng)增量或減量的功能。SP為堆棧指針寄存器,用于存放當(dāng)前堆棧段中棧頂?shù)钠频刂?;BP為基址指針寄存器,用于存放堆棧段中某一存儲(chǔ)單元的偏移地址。,(2)變址和指針寄存器,返回本節(jié),返回本章,35,2.段寄存器,80X86CPU的6個(gè)16位的段寄存器分別稱(chēng)為代碼段寄存器CS,數(shù)據(jù)段寄存器DS,堆棧段寄存器SS,附加數(shù)據(jù)段寄存器ES及80386起增加的FS、GS兩個(gè)段寄存器。段寄存器用來(lái)確定該段在內(nèi)存中的起始地址。代碼段用來(lái)存放程序的指令序列。CS存放代碼段的段首址,指令指針寄存器IP指示代碼段中指令的偏移地址。,返回本節(jié),返回本章,36,3.指令指針,8086CPU中的16位指令指針I(yè)P,總是保存下一次將要從主存中取出的指令的偏移地址,偏移地址的值為該指令到所在段段首址的字節(jié)距離。在目標(biāo)程序運(yùn)行時(shí),IP的內(nèi)容由微處理器硬件自動(dòng)設(shè)置,程序不能直接訪(fǎng)問(wèn)IP,但一些指令卻可改變IP的值,如轉(zhuǎn)移指令、子程序調(diào)用指令等。EIP是80386起增加的32位指令寄存器,IP是EIP的低16位。,返回本節(jié),返回本章,37,4標(biāo)志寄存器,狀態(tài)標(biāo)志通常由CPU根據(jù)指令執(zhí)行結(jié)果自動(dòng)設(shè)置,以反映指令執(zhí)行結(jié)果的特征。80X86CPU將狀態(tài)標(biāo)志作為條件判斷的依據(jù),以控制程序的執(zhí)行流程。FLAGS是8086CPU中一個(gè)很重要的16位標(biāo)志寄存器,它包含9個(gè)標(biāo)志位,主要用于保存一條指令執(zhí)行后,CPU所處狀態(tài)信息及運(yùn)算結(jié)果的特征。主要包括條件標(biāo)志和狀態(tài)控制標(biāo)志。,返回本節(jié),返回本章,38,1.條件標(biāo)志,1零標(biāo)志ZF若運(yùn)算結(jié)果為0,則ZF1,否則ZF0。2符號(hào)標(biāo)志SF若運(yùn)算結(jié)果為負(fù)數(shù),則SF1,否則SF0。3進(jìn)位標(biāo)志CF若加法時(shí)結(jié)果最高位向前有進(jìn)位或減法時(shí)最高位向前有借位,則CF1,否則CF0。4溢出標(biāo)志OF若帶符號(hào)數(shù)的運(yùn)算結(jié)果超出了補(bǔ)碼表示的范圍,則OF1,否則OF0。5輔助進(jìn)位標(biāo)志AF若加法時(shí)結(jié)果低4位向前有進(jìn)位或減法時(shí)結(jié)果低4位向前有借位,則AF1,否則AF0。6奇偶標(biāo)志PF若結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù),則PF1,否則PF0。,返回本節(jié),返回本章,39,深入認(rèn)識(shí)CF和OFCF和OF本質(zhì)上均表示溢出。CF表示無(wú)符號(hào)溢出,即運(yùn)算結(jié)果超出了無(wú)符號(hào)數(shù)的表示范圍。對(duì)于N位二進(jìn)制數(shù)來(lái)說(shuō),無(wú)符號(hào)數(shù)表示范圍為0~2N1,例如N8和16時(shí)分別為0~255和0~65535。OF表示帶符號(hào)溢出,即運(yùn)算結(jié)果超出了帶符號(hào)數(shù)的表示范圍。對(duì)于N位二進(jìn)制數(shù)來(lái)說(shuō),帶符號(hào)數(shù)表示范圍為2N1~2N11,例如,N8和16時(shí),分別為128~127和32768~32767。,返回本節(jié),返回本章,40,2.狀態(tài)控制標(biāo)志,1方向標(biāo)志DF當(dāng)DF1時(shí),每次操作后變址寄存器SI和DI減小,這樣使串處理從高地址向低地址方向處理;當(dāng)DF0時(shí),則使SI和DI增大。2中斷允許標(biāo)志IF當(dāng)IF1時(shí),允許CPU響應(yīng)可屏蔽中斷請(qǐng)求,否則關(guān)閉中斷。3追蹤標(biāo)志TF用于調(diào)試時(shí)的單步方式操作。當(dāng)TF1時(shí),每條指令執(zhí)行完后產(chǎn)生陷阱,由系統(tǒng)控制計(jì)算機(jī);當(dāng)TF0時(shí),CPU正常工作,不產(chǎn)生陷阱。,返回本節(jié),返回本章,41,15存儲(chǔ)器和端口,151存儲(chǔ)器存儲(chǔ)器是計(jì)算機(jī)的記憶部件,用來(lái)存放程序和數(shù)據(jù)。按所在的位置,存儲(chǔ)器可以分成主存儲(chǔ)器和輔助存儲(chǔ)器。主存儲(chǔ)器存放當(dāng)前正在執(zhí)行的程序和使用的數(shù)據(jù),CPU可以直接存取,它由半導(dǎo)體存儲(chǔ)器芯片構(gòu)成,其成本高,容量小,但速度快。輔助存儲(chǔ)器可用來(lái)長(zhǎng)期保存大量程序和數(shù)據(jù),CPU需要通過(guò)I/O接口訪(fǎng)問(wèn),它由磁盤(pán)或光盤(pán)構(gòu)成,其成本低,容量大,但速度較慢。,返回本章,42,152存儲(chǔ)器單元的地址和內(nèi)容計(jì)算機(jī)中信息的單位位(BIT)計(jì)算機(jī)中存儲(chǔ)信息的基本單位,可存儲(chǔ)一個(gè)二進(jìn)制數(shù)0或1。字節(jié)(BYTE)8位二進(jìn)制位。位編號(hào)從右到左為0~7,第0位為最低位,第7位為最高位。字(WORD)16位二進(jìn)制位,2個(gè)字節(jié)。位編號(hào)從右到左為0~15,第0位為最低位,第15位為最高位。位0~7為低字節(jié),位8~15為高字節(jié)。雙字(DOUBLEWORD)32位二進(jìn)制位,4個(gè)字節(jié)。位編號(hào)從右到左為0~31,第0位為最低位,第31位為最高位。位0~15為低字,位16~31為高字。,返回本節(jié),返回本章,43,左圖表明了存儲(chǔ)器中部分存儲(chǔ)單元存放信息情況。從圖可看到,地址為34560H的字節(jié)的存儲(chǔ)單元中的內(nèi)容是34H,而地址為34561H的字節(jié)存儲(chǔ)單元中的內(nèi)容是12H,表示為34560H34H34561H12H若從存儲(chǔ)單元中取一個(gè)詞,則高地址內(nèi)容在高字節(jié)。例34560H字1234H,,返回本節(jié),返回本章,存儲(chǔ)單元地址為了標(biāo)識(shí)和存取每一個(gè)存儲(chǔ)單元,給每個(gè)存儲(chǔ)單元規(guī)定一個(gè)編號(hào),這就是存儲(chǔ)單元地址。在存儲(chǔ)器里以字節(jié)為單位存儲(chǔ)信息,一個(gè)字節(jié)有惟一的地址。存儲(chǔ)單元的內(nèi)容一個(gè)存儲(chǔ)單元中存放的信息稱(chēng)為該存儲(chǔ)單元的內(nèi)容。,44,153物理地址的形成實(shí)模式下允許最大尋址空間為1MB。8086/8088CPU的地址線(xiàn)是20位的,這樣最大可尋址空間應(yīng)為2201MB,其物理地址范圍從00000H~FFFFFH。而8086CPU寄存器都是16位的。那么,這1MB空間如何用16位寄存器表達(dá)呢根據(jù)要求可把1M字節(jié)地址空間劃成若干邏輯段。每個(gè)邏輯段必須滿(mǎn)足兩個(gè)條件一是邏輯段的起始地址(簡(jiǎn)稱(chēng)段首址)必須是16的倍數(shù);二是邏輯段的最大長(zhǎng)度為64KB。按照這兩個(gè)條件,1M字節(jié)地址空間最多可劃分成64K個(gè)邏輯段,最少也要?jiǎng)澐殖?6個(gè)邏輯段。邏輯段與邏輯段可以相連,也可以不連,還可以重疊。,返回本節(jié),返回本章,45,物理地址與邏輯地址物理地址內(nèi)存單元的實(shí)際地址,也就是出現(xiàn)在地址總線(xiàn)上的地址。邏輯地址分段地址段地址段內(nèi)偏移地址段地址表示段在內(nèi)存中的起始位置,通常被保存在某個(gè)段寄存器中。段內(nèi)偏移地址表示內(nèi)存單元相對(duì)于段起始位置的位移,簡(jiǎn)稱(chēng)偏移地址,也叫有效地址EA。段地址與偏移地址都是16位。系統(tǒng)采用下列方法將邏輯地址自動(dòng)轉(zhuǎn)換為20位的物理地址物理地址段地址16偏移地址例邏輯地址為2E00H1246H物理地址2E00H161246H2E000H1246H2F246H每個(gè)內(nèi)存單元具有唯一的物理地址,但可由不同的邏輯地址描述。,返回本節(jié),返回本章,46,154端口對(duì)程序員來(lái)說(shuō),I/O接口電路由接口寄存器組成,為了區(qū)別它們,各個(gè)寄存器進(jìn)行了編號(hào),形成I/O地址。端口就是指I/O地址,是微機(jī)系統(tǒng)對(duì)I/O接口電路中與程序設(shè)計(jì)有關(guān)的寄存器的編號(hào)系統(tǒng)實(shí)際上就是通過(guò)這些端口與外設(shè)進(jìn)行通訊的通常采用十六進(jìn)制數(shù)來(lái)表達(dá)端口INTEL8086支持64K個(gè)8位端口其I/O地址可以表示為0000H~FFFFH,返回本節(jié),返回本章,47,本章小結(jié),匯編語(yǔ)言是機(jī)器語(yǔ)言的符號(hào)表示,與機(jī)器語(yǔ)言無(wú)本質(zhì)區(qū)別。計(jì)算機(jī)系統(tǒng)使用2進(jìn)制表示數(shù)據(jù)。為了描述方便,書(shū)寫(xiě)時(shí)常采用16進(jìn)制形式。數(shù)值數(shù)據(jù)分無(wú)符號(hào)數(shù)和有符號(hào)數(shù)兩種。有符號(hào)數(shù)具有原碼、反碼和補(bǔ)碼三種編碼。以補(bǔ)碼表示的帶符號(hào)數(shù)在基于不同位數(shù)時(shí),其二進(jìn)制形式可能完全不同。字符數(shù)據(jù)常用編碼有ASCII碼和BCD碼。,返回本章,48,80X86計(jì)算機(jī)由CPU、內(nèi)存和I/O子系統(tǒng)三部分組成,各部分之間由系統(tǒng)總線(xiàn)相連。80X86程序可以存取的最小數(shù)據(jù)單位是字節(jié)。例如,若要讀取的位數(shù)不足8位,則只能先讀出一個(gè)完整字節(jié),再屏蔽掉其它位。字的存儲(chǔ)采取“低字節(jié)在低地址,高字節(jié)在高地址,字的地址由低地址表示”的方式,雙字也類(lèi)似。要正確理解內(nèi)存單元的地址和值,地址表示位置,值是相應(yīng)位置處的內(nèi)容。同一地址既可以看作字節(jié)單元地址,也可以看作字甚至雙字單元地址,取決于具體的使用方式。,返回本章,49,80X86CPU具有8位、16位和32位寄存器。8位通用寄存器8個(gè)AH、AL、BH、BL、CH、CL、DH、DL。16位通用寄存器8個(gè)AX、BX、CX、DX、SI、DI、BP、SP。32位通用寄存器8個(gè)EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。16位段寄存器6個(gè)CS、DS、SS、ES、FS、GS。32位/16位指令指針1個(gè)EIP/IP。32位/16位標(biāo)志寄存器1個(gè)EFLAGS/FLAGS。其中,32位寄存器是80386CPU開(kāi)始引入的。,返回本章,50,80X86CPU有3種工作模式實(shí)模式、保護(hù)模式和虛擬8086模式。在實(shí)模式下,段地址和偏移地址均為16位。20位物理地址由16位段地址左移4位加16位偏移地址得到,只能尋址1MB的內(nèi)存空間,且每段≤64KB。在實(shí)模式、32位CPU下的程序可以使用32位寄存器和32位操作數(shù),但采用32位寄存器表示偏移地址時(shí),只使用低16位,高16位為0。CSIP總是指向下一條要執(zhí)行的指令,EIP的高16位為0。SSSP指向堆棧段的棧頂,ESP的高16位為0。狀態(tài)標(biāo)志是CPU進(jìn)行條件判斷和控制程序執(zhí)行流程的依據(jù),最常用的是4個(gè)CF、OF、SF和ZF。其中,CF表示無(wú)符號(hào)溢出,OF表示帶符號(hào)溢出。,返回本章,
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-05
      頁(yè)數(shù): 51
      3人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:第一章概述第二章C語(yǔ)言的基本原理第三章C中對(duì)象的創(chuàng)建第四章面向?qū)ο蟮木幊碳夹g(shù)第五章C編程第六章編寫(xiě)基于NET的應(yīng)用程序第七章使用ADONET訪(fǎng)問(wèn)數(shù)據(jù),第八章創(chuàng)建基于WINDOWS的應(yīng)用程序第九章在C應(yīng)用程序中使用XMLWEBSERVICE第十章創(chuàng)建WEB應(yīng)用程序十一章應(yīng)用程序設(shè)置和部署十二章進(jìn)階學(xué)習(xí)目標(biāo),C程序設(shè)計(jì)語(yǔ)言課程內(nèi)容,,C中對(duì)象的創(chuàng)建,內(nèi)容,類(lèi)的定義聲明方法構(gòu)造函數(shù)使用類(lèi)的靜態(tài)成員,C,學(xué)習(xí)完本節(jié)后,你將能夠定義類(lèi)創(chuàng)建對(duì)象使用訪(fǎng)問(wèn)修飾符定義類(lèi)成員的作用域使用命名空間來(lái)組織類(lèi),類(lèi)的定義31,萬(wàn)物皆對(duì)象世間萬(wàn)物皆為對(duì)象,狗、建筑、汽車(chē)對(duì)象都具有狀態(tài)和行為對(duì)象都有類(lèi)型任何對(duì)象都是某個(gè)類(lèi)的實(shí)例,是屬于某個(gè)類(lèi)的對(duì)象阿土仔〉人類(lèi)每個(gè)對(duì)象都利用別的對(duì)象來(lái)組建自己。汽車(chē)發(fā)動(dòng)機(jī)輪胎方向盤(pán)剎車(chē)一只蛤蟆一張嘴,兩只眼睛四條腿換言之,你通過(guò)將已有的對(duì)象打成一個(gè)包,來(lái)創(chuàng)建新的對(duì)象。由此,你可以將程序的復(fù)雜性,隱藏在對(duì)象的簡(jiǎn)單性之下,類(lèi)和對(duì)象311,類(lèi)和對(duì)象311,類(lèi)是對(duì)象的模板,它定義了對(duì)象的公共屬性和行為(方法)。屬性和方法共同稱(chēng)作類(lèi)的成員對(duì)象是類(lèi)的實(shí)例,是具體的對(duì)象必須使用NEW進(jìn)行實(shí)例化才可以使用,類(lèi)和對(duì)象311,,類(lèi)對(duì)象人類(lèi)(模板)阿土仔(具體化)姓名姓名阿土仔性別性別男使用卡片()使用“陷害卡”使用道具()使用“飛彈”,,,,,屬性,方法,類(lèi)和對(duì)象311,類(lèi)相對(duì)對(duì)象而言,類(lèi)似于模板或藍(lán)圖包含方法和數(shù)據(jù),對(duì)象是類(lèi)的實(shí)例使用關(guān)鍵字NEW創(chuàng)建對(duì)象具有狀態(tài)和行為,對(duì)象,,類(lèi),定義類(lèi)和創(chuàng)建對(duì)象313,類(lèi)是對(duì)象的模板,使用對(duì)象前必須先創(chuàng)建類(lèi)語(yǔ)法,訪(fǎng)問(wèn)修飾符CLASS類(lèi)名{字段;//描述對(duì)象的狀態(tài)方法;//實(shí)現(xiàn)對(duì)象的行為構(gòu)造函數(shù);//初始化對(duì)象},定義類(lèi)的字段313,字段是用來(lái)描述一個(gè)類(lèi)的對(duì)象的狀態(tài)和特征的,如人的名字、性別、年齡等語(yǔ)法示例,訪(fǎng)問(wèn)修飾符數(shù)據(jù)類(lèi)型字段名缺省值,CLASSPEOPLE{PUBLICSTRINGNAME//姓名字段PUBLICSTRINGSEX//性別字段},定義類(lèi)的方法313,方法是一組指令集合,用來(lái)實(shí)現(xiàn)一個(gè)類(lèi)的對(duì)象的行為,如人會(huì)“使用工具”,獅子會(huì)“咬人”語(yǔ)法,訪(fǎng)問(wèn)修飾符返回值類(lèi)型方法名(參數(shù)){指令集合;//方法體}注意有關(guān)方法的詳細(xì)介紹,將在下一節(jié)給出,定義類(lèi)的構(gòu)造函數(shù)313,構(gòu)造函數(shù)是一個(gè)特殊的方法,用來(lái)在創(chuàng)建對(duì)象時(shí)完成對(duì)象的初始化工作語(yǔ)法,訪(fǎng)問(wèn)修飾符類(lèi)名(參數(shù)){指令集合;//方法體}注意有關(guān)構(gòu)造函數(shù)的詳細(xì)介紹,將在下一節(jié)給出,定義類(lèi)和創(chuàng)建對(duì)象313,示例一個(gè)簡(jiǎn)單的類(lèi),只包含了幾個(gè)字段,CLASSPEOPLE{PUBLICSTRINGNAMEPUBLICSTRINGSEX},創(chuàng)建對(duì)象313,對(duì)象是類(lèi)的實(shí)例,是具體的。要使用對(duì)象,必須使用關(guān)鍵字NEW實(shí)例化類(lèi)的一個(gè)對(duì)象語(yǔ)法示例,NEW,PEOPLEOBJECT1NEWPEOPLE,使用對(duì)象313,實(shí)例化一個(gè)對(duì)象之后,就可以訪(fǎng)問(wèn)和使用對(duì)象的字段和方法了(成員)。使用點(diǎn)取符來(lái)訪(fǎng)問(wèn)成員示例,PEOPLEOBJECT1NEWPEOPLEOBJECT1NAME“阿土仔”O(jiān)BJECT1SEX“男”,,C中對(duì)象的創(chuàng)建,內(nèi)容,類(lèi)的定義聲明方法構(gòu)造函數(shù)使用類(lèi)的靜態(tài)成員,C,聲明方法32,學(xué)習(xí)完本章后,你將能夠編寫(xiě)方法給方法傳遞參數(shù)使用REF引用參數(shù)使用OUT輸出參數(shù)重載方法,如何編寫(xiě)方法321,語(yǔ)法,訪(fǎng)問(wèn)修飾符返回值類(lèi)型方法名(參數(shù)){指令集合;//方法體},如何編寫(xiě)方法321,返回值是指當(dāng)方法執(zhí)行結(jié)束時(shí),方法返回結(jié)果的數(shù)據(jù)類(lèi)型。例如對(duì)2個(gè)整數(shù)進(jìn)行求和的方法,其返回值類(lèi)型就是整形如果方法沒(méi)有返回值,使用VOID關(guān)鍵字參數(shù)是可選的,表示傳遞給方法中要處理的數(shù)據(jù),例如對(duì)2個(gè)整數(shù)進(jìn)行求和的方法,就需要2個(gè)整形的參數(shù)參數(shù)的聲明方法和變量一樣,如果有多個(gè)參數(shù),參數(shù)之間用,分開(kāi),如何編寫(xiě)方法321,示例給類(lèi)增加方法,CLASSPEOPLE{PUBLICSTRINGNAMEPUBLICSTRINGSEX//可以使用道具加害于人,此方法需要2個(gè)參數(shù),即道具和被加害人PUBLICVOIDUSETOOLSTRINGTOOL,PEOPLEO{CONSOLEWRITELINE“將{0}用于{1}”,TOOL,ONAME}},如何使用方法,示例方法也是類(lèi)的成員,同樣使用點(diǎn)取符來(lái)訪(fǎng)問(wèn)和使用,PEOPLEOBJECT1NEWPEOPLEOBJECT1NAME“阿土仔”O(jiān)BJECT1SEX“男”P(pán)EOPLEOBJECT2NEWPEOPLEOBJECT2NAME“孫小美”O(jiān)BJECT2SEX“女”//阿土仔投一顆飛彈給孫小美OBJECT1USETOOL“飛彈”,OBJECT2);//孫小美還阿土仔一枚臭彈OBJECT2USETOOL“臭彈”,OBJECT1,給方法傳遞參數(shù)322,當(dāng)調(diào)用方法時(shí),傳遞參數(shù)的個(gè)數(shù)、數(shù)據(jù)類(lèi)型、順序必須與方法簽名一致方法名方法的參數(shù)列表合稱(chēng)為方法簽名,,CLASSSIMPLEMATH{PUBLICINTADDINTX,INTY{RETURNXY}}//調(diào)用方法時(shí)需要傳遞參數(shù)SIMPLEMATHSUMSNEWSIMPLEMATHINTTOTALSUMSADD20,30,定義類(lèi)和創(chuàng)建對(duì)象,練習(xí),參閱教材P69頁(yè)課堂練習(xí)316,方法重載325,,在同一個(gè)類(lèi)中可以定義多個(gè)方法,它們享有相同的名字,但是方法的參數(shù)不同,或者參數(shù)類(lèi)型不同,或者參數(shù)個(gè)數(shù)不同,這就叫方法重載只有返回值類(lèi)型不同,不是方法重載,會(huì)產(chǎn)生編譯時(shí)錯(cuò)誤方法被調(diào)用時(shí),系統(tǒng)會(huì)根據(jù)你提供的參數(shù)類(lèi)型或參數(shù)個(gè)數(shù),幫你從多個(gè)方法中選擇正確的那個(gè)構(gòu)造方法也可以重載,思考題為什么使用方法重載你負(fù)責(zé)編寫(xiě)一段打印程序,要打印的數(shù)據(jù)包括整型、浮點(diǎn)型、字符串類(lèi)型、日期類(lèi)型等等,且不同數(shù)據(jù)類(lèi)型打印方法也不相同,怎么辦解決辦法只好為每一種數(shù)據(jù)類(lèi)型編寫(xiě)一個(gè)單獨(dú)的打印方法了PRINTINTPRINTFLOATPRINTSTRINGPRINTDATE,,方法重載325,思考題為什么使用方法重載呢更好的解決辦法使用一個(gè)公共的方法名PRINT,然后通過(guò)方法重載實(shí)現(xiàn)不同數(shù)據(jù)類(lèi)型的打印PRINTINTIPRINTFLOATFPRINTSTRINGSPRINTDATED所有功能相似的方法共享同一個(gè)名字,更容易記憶,,方法重載325,示例重新編寫(xiě)USETOOL方法,如果指定了被加害人,則將道具應(yīng)用于這一個(gè)人;否則將道具應(yīng)用于所有人,方法重載325,CLASSPEOPLE{//將道具應(yīng)用于指定的人PUBLICVOIDUSETOOLSTRINGTOOL,PEOPLEO{CONSOLEWRITELINE“將{0}用于{1}”,TOOL,ONAME}//將道具應(yīng)用于所有人PUBLICVOIDUSETOOLSTRINGTOOL{CONSOLEWRITELINE“將{0}用于所有人”,TOOL}},當(dāng)輸入三個(gè)///后,VSNET就會(huì)插入幾行XML代碼,可以為成員添加描述信息在代碼編輯器中,當(dāng)在對(duì)象名后面輸入“”操作符后,VSNET會(huì)顯示對(duì)象的成員列表,使用XML代碼注釋功能326,編寫(xiě)和調(diào)用方法327,練習(xí),參見(jiàn)教材P81頁(yè)327課堂練習(xí),,C中對(duì)象的創(chuàng)建,內(nèi)容,類(lèi)的定義聲明方法構(gòu)造函數(shù)使用類(lèi)的靜態(tài)成員,C,構(gòu)造函數(shù)33,構(gòu)造函數(shù)是一個(gè)很特殊的方法(因?yàn)闆](méi)有返回值)。每個(gè)類(lèi)都顯示或隱式的包涵一個(gè)構(gòu)造方法,用來(lái)初始化該類(lèi)的一個(gè)新的對(duì)象構(gòu)造函數(shù)和類(lèi)具有相同的名稱(chēng),且沒(méi)有返回值。構(gòu)造函數(shù)負(fù)責(zé)為對(duì)象分配內(nèi)存空間成員變量的初始化示例,CLASSPEOPLE{PUBLICSTRINGNAMEPUBLICSTRINGSEX//構(gòu)造函數(shù)PUBLICPEOPLE{SEX“男”}},如何初始化對(duì)象331,當(dāng)使用NEW創(chuàng)建一個(gè)新的對(duì)象時(shí),CLR會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)。示例,CLASSPEOPLE{PUBLICSTRINGNAMEPUBLICSTRINGSEX//構(gòu)造函數(shù)PUBLICPEOPLE{SEX“男”}}PEOPLEOBJNEWPEOPLE,,,,如何初始化對(duì)象331,如果沒(méi)有編寫(xiě)構(gòu)造函數(shù),C會(huì)自動(dòng)提供一個(gè)缺省的無(wú)參的構(gòu)造參數(shù)示例,CLASSPEOPLE{PUBLICSTRINGNAME}等價(jià)于CLASSPEOPLE{PUBLICSTRINGNAMEPUBLICPEOPLE{}},帶參數(shù)的構(gòu)造函數(shù)331,同其他方法一樣,構(gòu)造函數(shù)可以帶參數(shù)一旦我們定義了構(gòu)造函數(shù),C就不再提供缺省構(gòu)造函數(shù)示例,CLASSPEOPLE{PUBLICSTRINGNAME//帶參數(shù)的構(gòu)造函數(shù)PUBLICPEOPLESTRINGS{NAMES}}PEOPLEOBJNEWPEOPLE“阿土仔”P(pán)EOPLEOBJNEWPEOPLE//編譯錯(cuò)誤,重載構(gòu)造函數(shù)332,構(gòu)造函數(shù)也可以重載,這樣就能夠以多種方式創(chuàng)建對(duì)象示例,CLASSPEOPLE{PUBLICSTRINGNAME//無(wú)參的構(gòu)造函數(shù)PUBLICPEOPLE{SEX“男”}//帶參數(shù)的構(gòu)造函數(shù)PUBLICPEOPLESTRINGS{NAMES}}PEOPLEOBJ1NEWPEOPLE“阿土仔”P(pán)EOPLEOBJ2NEWPEOPLE,使用初始化列表332,思考題為什么使用初始化列表,CLASSPEOPLE{PUBLICSTRINGNAMEPUBLICINTAGEPUBLICPEOPLE//構(gòu)造函數(shù)0{NAME“UNKNOW”AGE0}PUBLICPEOPLESTRINGSNAME//構(gòu)造函數(shù)1{NAMESNAMEAGE0}PUBLICPEOPLESTRINGSNAME,INTTHEAGE//構(gòu)造函數(shù)2{NAMESNAMEAGETHEAGE}},,使用初始化列表332,多個(gè)重載的構(gòu)造函數(shù)常常很相似,大量重復(fù)代碼將公共代碼集中于一個(gè)構(gòu)造函數(shù)中,由構(gòu)造函數(shù)調(diào)用示例,CLASSPEOPLE{PUBLICSTRINGNAMEPUBLICINTAGEPUBLICPEOPLETHIS“UNKNOW”,0//構(gòu)造函數(shù)0{}PUBLICPEOPLESTRINGSNAMETHISSNAME,0//構(gòu)造函數(shù)1{}PUBLICPEOPLESTRINGSNAME,INTTHEAGE//構(gòu)造函數(shù)2{NAMESNAMEAGETHEAGE}},THIS關(guān)鍵字,THIS是一個(gè)特殊的引用(指針),它指向的是“自己”,也就是當(dāng)前對(duì)象THIS的作用點(diǎn)取成員區(qū)分同名變量將當(dāng)前對(duì)象(自己)作為參數(shù),傳遞給其他對(duì)象的方法作為方法名表示構(gòu)造方法,THIS關(guān)鍵字,CLASSPEOPLE{PUBLICSTRINGNAMEPUBLICINTAGEPUBLICPEOPLESTRINGNAME,INTAGE{NAMENAMETHISNAMENAMETHISAGEAGE},示例使用THIS區(qū)分同名變量,使用構(gòu)造函數(shù)333,練習(xí),參見(jiàn)教材P86頁(yè)333課堂練習(xí),,C中對(duì)象的創(chuàng)建,內(nèi)容,類(lèi)的定義聲明方法構(gòu)造函數(shù)使用類(lèi)的靜態(tài)成員,C,使用類(lèi)的靜態(tài)成員34,類(lèi)可以具有靜態(tài)的成員,如靜態(tài)字段、靜態(tài)方法使用STATIC關(guān)鍵字修飾靜態(tài)成員相當(dāng)于“全局”的,不依賴(lài)于某一個(gè)具體的對(duì)象,類(lèi)的靜態(tài)字段341,STATIC修飾類(lèi)的字段時(shí),在一個(gè)類(lèi)中只開(kāi)辟一塊內(nèi)存空間存儲(chǔ),并在類(lèi)的所有對(duì)象實(shí)例間共享,因此STATIC變量也稱(chēng)為類(lèi)變量,CLASSCAT{STRINGNAMESTATICSTRINGFOOD},,,,,1NAME,2NAME,3NAME,4NAME,FOOD,類(lèi)的靜態(tài)字段341,STATIC變量不依賴(lài)于具體對(duì)象,因此直接通過(guò)類(lèi)名訪(fǎng)問(wèn),而不是通過(guò)類(lèi)的對(duì)象實(shí)例訪(fǎng)問(wèn)的非靜態(tài)變量必須首先實(shí)例化類(lèi)的一個(gè)對(duì)象,再通過(guò)對(duì)象訪(fǎng)問(wèn),因此也稱(chēng)為實(shí)例變量,CLASSCAT{STRINGNAMESTATICSTRINGFOOD},STATICVOIDMAIN{CATFOOD“FISH”//OKCATNAME“KITTY”//錯(cuò)誤CATCAT1NEWCATCAT1NAME“KITTY”//OK},類(lèi)的靜態(tài)字段341,STATIC變量類(lèi)似于C語(yǔ)言的全局變量由于在所有的對(duì)象間共享,因此可以用于對(duì)象之間的通信思考題怎樣統(tǒng)計(jì)被創(chuàng)建的CAT對(duì)象的總數(shù),CLASSCAT{PUBLICSTATICINTCOUNTPUBLICSTRINGNAMEPUBLICCAT{COUNT}},,,,,,1CAT1,2CAT2,3CAT3,4CAT4,COUNT4,類(lèi)的靜態(tài)方法341,STATIC修飾的方法稱(chēng)為靜態(tài)方法,是一個(gè)類(lèi)的全局方法靜態(tài)方法也叫作類(lèi)方法,類(lèi)名方法名沒(méi)有STATIC修飾的方法叫實(shí)例方法,對(duì)象名方法名注意事項(xiàng)STATIC方法中不能直接使用非靜態(tài)成員,因?yàn)榉庆o態(tài)成員與實(shí)例相關(guān),但可以通過(guò)對(duì)象點(diǎn)取間接使用STATIC方法中不能使用THIS(與實(shí)例相關(guān))非STATIC方法中可以使用靜態(tài)成員,使用類(lèi)的靜態(tài)成員343,練習(xí),參見(jiàn)教材P91頁(yè)343課堂練習(xí),使用命名空間組織類(lèi)314,NET框架類(lèi)庫(kù)提供了幾百個(gè)類(lèi)供程序員使用,程序員也可以創(chuàng)建自己的類(lèi)如此眾多的類(lèi)該如何管理呢就如同硬盤(pán)上的文件需要文件夾來(lái)組織,也可以將功能相似或相關(guān)的類(lèi)組織到一起,這就是命名空間NAMESPACE如果有多個(gè)類(lèi)重名(不同的程序員開(kāi)發(fā)),可以將類(lèi)組織到不同的命名空間,以避免命名沖突,使用命名空間組織類(lèi)314,如同硬盤(pán)上的文件夾可以包含子文件夾一樣,一個(gè)命名空間可以再包含命名空間,形成嵌套層次硬盤(pán)上文件夾間層次用\表示,命名空間的層次用表示C\WINDOWS\SYSTEM32\INDEXHTMLNAMESPACESUBNAMESPACECLASS如SYSTEMIOFILENAMESPACENAMESPACECLASS,,,,使用命名空間組織類(lèi)314,創(chuàng)建命名空間嵌套的命名空間,NAMESPACEMICROSOFT{CLASSPEOPLE{}},NAMESPACEMICROSOFT{NAMESPACESALES{PUBLICCLASSPEOPLE{}}}//或者NAMESPACEMICROSOFTSALES{},使用命名空間組織類(lèi)314,使用完全限定的名字使用USING指定類(lèi)所在的命名空間,PEOPLEOBJNEWPEOPLE//錯(cuò)誤MICROSOFTSALESPEOPLEOBJNEWMICROSOFTSALESPEOPLE//OK,USINGSYSTEMUSINGMICROSOFTSALESPEOPLEOBJNEWPEOPLE//OK,在NET框架類(lèi)庫(kù)中的類(lèi)是通過(guò)一個(gè)命名空間層次結(jié)構(gòu)來(lái)進(jìn)行組織管理的常見(jiàn)命名空間,NET框架類(lèi)庫(kù)命名空間,,面向?qū)ο笮g(shù)語(yǔ),類(lèi)對(duì)象字段方法構(gòu)造方法命名空間,對(duì)象的模板,軟件的藍(lán)圖類(lèi)的實(shí)例,使用NEW實(shí)例化描述對(duì)象的狀態(tài)體現(xiàn)對(duì)象的行為為一個(gè)新的對(duì)象賦初值組織相關(guān)的類(lèi),,,,,,,面向?qū)ο缶幊叹褪恰袄邸卑?小憩片刻,
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-05
      頁(yè)數(shù): 53
      3人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:基于R語(yǔ)言的PLS算法的實(shí)現(xiàn)及研究,目錄,使用的開(kāi)發(fā)工具偏最小二乘的設(shè)計(jì)思想基于R語(yǔ)言、MATLAB的偏最小二乘的實(shí)現(xiàn)通徑分析測(cè)定系數(shù)實(shí)驗(yàn)分析,使用的開(kāi)發(fā)工具,R語(yǔ)言R是用于統(tǒng)計(jì)分析、繪圖的語(yǔ)言和操作環(huán)境。它是一個(gè)用于統(tǒng)計(jì)計(jì)算和統(tǒng)計(jì)制圖的優(yōu)秀工具。MATLAB它是一種以矩陣運(yùn)算為基礎(chǔ)的交互式程序語(yǔ)言。它作為一種編程語(yǔ)言和可視化工具,可解決工程、科學(xué)計(jì)算和數(shù)學(xué)學(xué)科中許多問(wèn)題。,偏最小二乘回歸法,最小二乘,偏最小二乘,1數(shù)目較少2無(wú)多重共線(xiàn)性3各解釋變量與反應(yīng)變量之間的關(guān)系易于解釋,1在自變量存在嚴(yán)重多重共線(xiàn)性時(shí)可以進(jìn)行回歸建模;2在樣本點(diǎn)個(gè)數(shù)比變量個(gè)數(shù)維數(shù)明顯過(guò)少時(shí)可以進(jìn)行回歸建模;3PLS模型可以識(shí)別系統(tǒng)信息與噪聲;4PLS模型中,每一個(gè)自變量的回歸系數(shù)容易解釋?zhuān)?PLS最終回歸模型中包含原有的所有自變量。,偏最小二乘回歸法,算法的設(shè)計(jì)思想,,①兩組潛變量分別最大程度承載自變量與因變量的變異信息;②二者之間的協(xié)方差最大化相關(guān)程度最大。,算法的設(shè)計(jì)思想,提取多少個(gè)主成分最合適,交叉性檢驗(yàn),,,00975,實(shí)例分析(基于MATLAB),實(shí)例分析,在TESTPLS01M文件中添加下列幾行代碼。以下計(jì)算決定系數(shù)的R2SSTSUMPPZ,10MU1,102SSRSUMCH0PPZ,19XISHMU1,102RRSSR/SST,得到復(fù)測(cè)定系數(shù)為R20927,由表可知,當(dāng)我們主成分取三個(gè),才能更好的擬合方程,擬合結(jié)果如下Y0091602229X102167X200964X300292X401552X510706X658149X700155X800194X9,實(shí)例分析(基于R),(1)PLS包的安裝以及載入INSTALLPACKAGES“PLS“LIBRARYPLS,(2)數(shù)據(jù)的導(dǎo)入C1C2SUMMARYPLS1,WHAT“ALL“顯示回歸結(jié)果包括PRESS與變異解釋度其中,VALIDATION“LOO“表示使用留一交叉驗(yàn)證計(jì)算PRESS,JACKKNIFETRUE,表示使用JACKKNIFE法估計(jì)回歸系數(shù)方差為后面的顯著性檢驗(yàn)做準(zhǔn)備.在沒(méi)給定成分個(gè)數(shù)的情況下,會(huì)默認(rèn)使用所有的主成分進(jìn)行回歸,因此我們需要在選擇的成分個(gè)數(shù)盡可能小的前提下,選擇使PRESS最小或幾乎不變的成分個(gè)數(shù).假設(shè)選定了成分個(gè)數(shù)為M,重新進(jìn)行回歸,并對(duì)回歸系數(shù)假設(shè)檢驗(yàn)。,其中CV即為不同主成分個(gè)數(shù)對(duì)應(yīng)的PRESS(殘差值),ADJCV為調(diào)整后的PRESS。TRAININGVARIANCEEXPLAINED一欄為主成分對(duì)各變量的累積貢獻(xiàn)率.由結(jié)果可知,主成分個(gè)數(shù)為4個(gè)時(shí),模型在經(jīng)過(guò)留一交叉驗(yàn)證法后求得的PRESS總和最小,隨著成分個(gè)數(shù)的增加,PRESS值也沒(méi)有太大改變,并且4個(gè)成分對(duì)各個(gè)因變量的累積貢獻(xiàn)率也基本達(dá)到了穩(wěn)定,因此定下回歸的成分個(gè)數(shù)M4.,,(5)指定主成分個(gè)數(shù)之后,進(jìn)行第二次線(xiàn)性曲線(xiàn)擬合,最后求出因變量和自變量的相關(guān)系數(shù)。根據(jù)成分?jǐn)?shù)M4,建立最終模型PLS2COEFPLS2得到回歸系數(shù),,4COMPS,表1因變量與自變量之間的標(biāo)準(zhǔn)回歸系數(shù),Y10147022336X10106558962X20100451920X30104259945X40059733499X50605248435X60478575361X70008575145X80015589996X9以此類(lèi)推Y2,Y3,Y4,Y5,Y6,Y7,通徑分析,概念多元線(xiàn)性回歸系數(shù)間不能直接比較各因子間的效應(yīng)大小,因?yàn)楦骰貧w系數(shù)間都帶有不同的量綱,再者多變量的關(guān)系中,往往都不是獨(dú)立的,有的還要研究XI通過(guò)XJ對(duì)因變量Y的影響,而通徑系數(shù)就能有效的表示相關(guān)變量間原因?qū)Y(jié)果的直接影響或間接影響的效應(yīng),從而區(qū)分因子的相對(duì)重要性及其關(guān)系。作用通徑分析(PATHANALYSIS)可用于分析多個(gè)自變量與因變量之間的線(xiàn)性關(guān)系,是回歸分析的拓展,可以處理較為復(fù)雜的變量關(guān)系。如當(dāng)自變量數(shù)目比較多,且自變量間相互關(guān)系比較復(fù)雜(如有些自變量間的關(guān)系是相關(guān)關(guān)系,有些自變量間則可能是因果關(guān)系)或者某些自變量是通過(guò)其他的自變量間接地對(duì)應(yīng)變量產(chǎn)生影響,這時(shí)可以采用通徑分析。,通徑分析,思路通徑分析在多元回歸的基礎(chǔ)上將相關(guān)系數(shù)分解為直接通徑系數(shù)某一自變量對(duì)因變量的直接作用和間接通徑系數(shù)該自變量通過(guò)其他自變量對(duì)因變量的間接作用。通徑分析的理論已證明,任一自變量XI與因變量Y之間的簡(jiǎn)單相關(guān)系數(shù)RIYXI與Y之間的直接通徑系數(shù)PIY所有XI與Y的間接通徑系數(shù),任一自變量XI對(duì)Y的間接通徑系數(shù)相關(guān)系數(shù)RIJ通徑系數(shù)PIJ。,實(shí)例分析,運(yùn)用SPSS軟件做逐步回歸得到通徑系數(shù)。運(yùn)用SPSS軟件只需要“ANALYZEREGRESSIONLINEAR”這一個(gè)程序就可以獲得通徑系數(shù)。我們現(xiàn)在以數(shù)據(jù)表1中藥量效關(guān)系為例,建立線(xiàn)性回歸方程并計(jì)算通徑系數(shù),2用MATLAB通過(guò)偏最小二乘回歸計(jì)算得到通徑系數(shù),測(cè)定系數(shù),通過(guò)兩種方法的到的結(jié)果如下表,結(jié)論,方法一利用SPSS的逐步回歸得到直接通徑系數(shù)后刪除變量提高方程的擬合效果沒(méi)有作用,反而使得R2值下降了,方法二基于MATLAB的偏最小二乘回歸得到直接通徑系數(shù)后刪除變量對(duì)方程的擬合效果具有提高的作用,這個(gè)實(shí)驗(yàn)說(shuō)明了篩選變量對(duì)方程的擬合效果是具有重要意義的。,謝謝觀看,
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-05
      頁(yè)數(shù): 18
      11人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:TMS320LF/LC240X(包括24X器件)具有用于高速信號(hào)處理和數(shù)字功能所必需的結(jié)構(gòu)特點(diǎn)具有豐富的外設(shè)功能用于電機(jī)控制和通信。,應(yīng)用優(yōu)化的外設(shè)單元和高性能DSP內(nèi)核的結(jié)合,可為所有的電機(jī)類(lèi)型提供高速、高效和全變速的先進(jìn)控制技術(shù)。,72TMS320LF/LC240XA片內(nèi)外設(shè)模塊,,看門(mén)狗(WD)定時(shí)器模塊數(shù)字輸入/輸出模塊(I/O)事件管理模塊(EV)模數(shù)轉(zhuǎn)換模塊(ADC)串行外設(shè)模塊(SPI)串行通信模塊(SCI)局域網(wǎng)控制器模塊CAN,72TMS320LF/LC240XA片內(nèi)外設(shè)模塊218頁(yè),721看門(mén)狗(WD)定時(shí)器模塊,V用來(lái)監(jiān)視軟件和硬件操作在軟件進(jìn)入一個(gè)不正確的循環(huán)或者CPU出現(xiàn)暫時(shí)性異常時(shí),WD定時(shí)器溢出以產(chǎn)生一個(gè)系統(tǒng)復(fù)位。,所有寄存器都是8位長(zhǎng)模塊與CPU的16位外設(shè)總線(xiàn)的低8位相連。,7211看門(mén)狗(WD)定時(shí)器模塊的結(jié)構(gòu),,2WDCLK是一個(gè)低頻時(shí)鐘2由CPU的CLKOUT產(chǎn)生2當(dāng)CPU處于低功耗模式IDLE1和IDLE2時(shí),仍能保證看門(mén)狗繼續(xù)計(jì)數(shù)2僅當(dāng)看門(mén)狗使能時(shí),WDCLK才有效,WDCLK的頻率由下式計(jì)算WDCLK(CLKOUT)/512,WD模塊有3個(gè)控制寄存器對(duì)其進(jìn)行控制和管理,(1)WD計(jì)數(shù)寄存器WDCNTR地址7023H2說(shuō)明存放WD計(jì)數(shù)器的當(dāng)前值D7~D0是一個(gè)只讀寄存器,復(fù)位后為0,寫(xiě)寄存器無(wú)效。由預(yù)定標(biāo)器的輸出提供計(jì)數(shù)時(shí)鐘,進(jìn)行增計(jì)數(shù),,讀該寄存器WDKEY并不返回最近的關(guān)鍵字值,而是返回WDCR的內(nèi)容。,2說(shuō)明復(fù)位關(guān)鍵字55AAH向WDKEY先后寫(xiě)入55AAH時(shí),將清除WDCNTR。其他任何值的結(jié)合寫(xiě)入或?qū)懭肴魏沃刀疾荒芮宄齏DCNTR。,(2)WD復(fù)位關(guān)鍵字寄存器WDKEY地址7025H,8位WDCR用來(lái)存放看門(mén)狗配置的控制位。,D7D6D5D4D3D2D1D0,RCXRWC0RW0RW0RW0RW0RW0RW0,(3)WD定時(shí)器控制寄存器WDCR地址7029H,2說(shuō)明D6WDDIS禁止看門(mén)狗位。只有當(dāng)SCSR2中的WDOVERRIDE位為1時(shí),向該位寫(xiě)有效。0使能看門(mén)狗。1禁止看門(mén)狗。D5~D3WDCHK2~WDCHK0看門(mén)狗檢查位必須向這3位寫(xiě)入101,系統(tǒng)才繼續(xù)正常工作。否則將要求一個(gè)系統(tǒng)復(fù)位。讀這3位總是000。D2~D0WDPS2~WDPS0看門(mén)狗預(yù)定標(biāo)因子選擇位選擇產(chǎn)生用于WD計(jì)數(shù)器CLK的計(jì)數(shù)器溢出抽頭,V看門(mén)狗WD定時(shí)器是通過(guò)系統(tǒng)復(fù)位來(lái)解除系統(tǒng)軟件錯(cuò)誤和CPU故障的。V復(fù)位將使系統(tǒng)返回一個(gè)已知的起點(diǎn)。,7212看門(mén)狗(WD)定時(shí)器的操作,●(1)WD計(jì)數(shù)器WDCNTR溢出或不能向WDKEY寫(xiě)入一個(gè)正確的值55AAH,,,當(dāng)系統(tǒng)正常工作時(shí)在WD計(jì)數(shù)器WDCNTR溢出前,程序正常運(yùn)行,將給復(fù)位關(guān)鍵字寄存器WDKEY寫(xiě)入一個(gè)正確值(先寫(xiě)入55H,緊接著寫(xiě)入AAH),當(dāng)系統(tǒng)不正常時(shí)WDCNTR將計(jì)滿(mǎn)溢出,并在一個(gè)WDCLK時(shí)鐘后發(fā)生系統(tǒng)復(fù)位操作。,WDCR寄存器的檢查位(WDCHK2~WDCHK0)一直和一個(gè)二進(jìn)制常量1012相比較。如果WD檢查位與這個(gè)值不匹配,就會(huì)產(chǎn)生一個(gè)系統(tǒng)復(fù)位。,●(2)使用WD檢查位,,向WDCR寫(xiě)入值時(shí)必須包括寫(xiě)到D5~D3的值1012,為了避免過(guò)早發(fā)生復(fù)位,應(yīng)在程序剛開(kāi)始時(shí)就對(duì)WD進(jìn)行配置。,當(dāng)系統(tǒng)上電復(fù)位時(shí),看門(mén)狗被使能。WD定時(shí)器被缺省為最快的WD速率。一旦復(fù)位由內(nèi)部釋放,CPU就開(kāi)始執(zhí)行程序,同時(shí)WD定時(shí)器就開(kāi)始計(jì)數(shù)。,DSP器件的數(shù)字輸入/輸出引腳均為功能復(fù)用引腳1通用I/O功能(雙向數(shù)據(jù)輸入/輸出引腳2特殊功能PWM輸出、捕獲輸入、串行輸入輸出等引腳。,722數(shù)字輸入/輸出(I/O)模塊,由I/O復(fù)用控制寄存器MCRX,X=A,B,C)來(lái)選擇控制兩種功能。,當(dāng)引腳作為通用I/O時(shí)數(shù)據(jù)和方向控制寄存器(PXDATDIR,XA,B,C,D,E,F指出各I/O引腳的數(shù)據(jù)方向(輸入還是輸出)和當(dāng)前引腳對(duì)應(yīng)的電平(高或低)。,722數(shù)字輸入/輸出(I/O)模塊,讀通用I/O引腳的電平或向引腳輸出電平,實(shí)際上是對(duì)相應(yīng)的寄存器(PXDATDIR)進(jìn)行讀寫(xiě)操作。,240XA有6個(gè)端口A、B、C、D、E、F,A,B,C,E端口有8個(gè)數(shù)字I/O引腳;F端口有7個(gè)數(shù)字I/O引腳;D端口有1個(gè)數(shù)字I/O引腳。計(jì)40個(gè)I/O引腳,IOPA07,IOPB07,IOPC07,IOPD0IOPE07,IOPF06,,D15D14D13D12D11D10D9D8,MCRA8,MCRA9,MCRA10,MCRA11,MCRA12,MCRA13,MCRA14,MCRA15,,,,,,,,,,,,R/W0R/W0RW0RW0RW0RW0RW0RW0,D7D6D5D4D3D2D1D0,MCRA0,MCRA1,MCRA2,MCRA3,MCRA4,MCRA5,MCRA6,MCRA7,,,,,,,,,,,,RW0RW0RW0RW0RW0RW0RW0RW0,,注R讀;W寫(xiě);“”后為復(fù)位值。該注適合于MCRB、MCRC寄存器。,●I/O復(fù)用控制寄存器A(MCRA)地址7090H,,7221I/O復(fù)用控制寄存器,表79I/O端口復(fù)用控制寄存器AMCRA配置,●I/O復(fù)用控制寄存器A(MCRA)地址7090H,,表710I/O端口復(fù)用控制寄存器BMCRB配置,表711I/O端口復(fù)用控制寄存器CMCRC配置,當(dāng)MCRX寄存器的相應(yīng)位為0時(shí),I/O口用做通用I/O引腳功能。6個(gè)數(shù)據(jù)和方向控制寄存器PXDATDIR(XA,B,C,D,E,F)用來(lái)設(shè)置數(shù)字I/O口的數(shù)值和方向。,7222數(shù)據(jù)和方向控制寄存器,如果這些引腳作為特殊功能使用(MCRX寄存器的相應(yīng)位為1),則PXDATDIR的設(shè)置對(duì)相應(yīng)的引腳沒(méi)有影響。,●端口A數(shù)據(jù)和方向控制寄存器(PADATDIR),,7222數(shù)據(jù)和方向控制寄存器,●端口A數(shù)據(jù)和方向控制寄存器(PADATDIR),,D15D14D13D12D11D10D9D8,A0DIR,A1DIR,A2DIR,A3DIR,A4DIR,A5DIR,A6DIR,A7DIR,,,,,,,,,,,,R/W0R/W0RW0RW0RW0RW0RW0RW0,D7D6D5D4D3D2D1D0,2說(shuō)明D7~D0IOPANI/O引腳名(N7~0)。如果ANDIR1即引腳IOPAN(N7~0)為輸出時(shí)0設(shè)置相應(yīng)的引腳使其輸出為低電平1設(shè)置相應(yīng)的引腳使其輸出為高電平,,如果ANDIR0即引腳IOPAN(N7~0)為輸入時(shí)0對(duì)應(yīng)的I/O引腳輸入的值為低電平1對(duì)應(yīng)的I/O引腳輸入的值為高電平,●端口A數(shù)據(jù)和方向控制寄存器(PADATDIR),,IOPA0,IOPA1,IOPA2,IOPA3,IOPA4,IOPA5,IOPA6,IOPA7,,,,,,,,,,,,RWRWRWRWRWRWRWRW,7223程序舉例文件名GPIO_OUTASM,將I/O端口A,B,C,E,F的I/O引腳(IOPX0~I(xiàn)OPX7,XA,B,C,E,F)輪流設(shè)置為低電平輸出。,TITLE“240XAGPIO”DATAB0WORD0FFFEHB1WORD0FFFDHB2WORD0FFFBHB3WORD0FFF7HB4WORD0FFEFHB5WORD0FFDFHB6WORD0FFBFHB7WORD0FF7FHGPR0WORD0,●GPIO_OUTASM,,●GPIO_OUTASM,,INCLUDE240XAHDEF_C_INTOTEXT_C_INTOLDP0HSETCINTMSETCCNFSPLK0000H,IMRLACCIFRSACLIFRLDP00E0HSPLK0000H,SCSR1,●GPIO_OUTASM,,INCLUDE240XAHDEF_C_INTOTEXT_C_INTOLDP0HSETCINTMSETCCNFSPLK0000H,IMRLACCIFRSACLIFRLDP00E0HSPLK0000H,SCSR1,0111000000000000,系統(tǒng)控制和狀態(tài)寄存器1(SCSR1)地址7018H(P16,D15D14D13D12D11D9D8,,R0RW0RW0RW1R0,D7D6D5D4D3D2D1D0,,RW0RW0RW0RW0RW0RW0R0RC0,SPLK006FH,WDCRLDP6HSPLK0H,GPR0OUTGPR0,WSGRLDP00E1HSPLK00000H,MCRASPLK0FF00H,MCRBSPLK00000H,MCRCSPLK0FFFFH,PADATDIR,●GPIO_OUTASM,,01101111,0111000010000000,引腳配置為輸出并為高電平,MAINLDP0LARAR0,300HLARAR1,7,SPLK0FFFFH,PBDATDIRSPLK0FFFFH,PCDATDIRSPLK0FFFFH,PEDATDIRSPLK0FFFFH,PFDATDIR,●GPIO_OUTASM,,間接尋址用P184,計(jì)數(shù)器用,LOOPMAR,AR0LACC,AR2LDP00E1HSACLPADATDIRSACLPBDATDIRSACLPCDATDIRSACLPEDATDIRSACLPFDATDIRCALLDELAYMAR,AR1,●GPIO_OUTASM,,BANZLOOPBMAINDELAYLARAR2,0FFFFHD_LOOPRPT0FFHNOPBANZD_LOOPRETPHANTOMKICK_DOGBPHANTOMEND,●GPIO_OUTASM,,KICK_DOGMACROLDP00E0HSPLK05555H,WDKEYSPLK0AAAAH,WDKEYLDP0H,若當(dāng)前ARAR1不為0轉(zhuǎn)LOOP,若當(dāng)前ARAR2不為0轉(zhuǎn)LOOP,TMS320LF240XA提供了兩個(gè)事件管理器EVA和EVB模塊,用于運(yùn)動(dòng)控制和電機(jī)控制。每個(gè)事件管理器模塊都含有,L兩個(gè)16位通用可編程定時(shí)器GPTIMER1,GPTIMER2。L3個(gè)全比較單元和與之對(duì)應(yīng)的脈寬調(diào)制電路PWM。,723事件管理器(EV)模塊,L3個(gè)捕獲單元CAP。L正交編碼脈沖(QEP)電路。L中斷邏輯。,,,,,其通用定時(shí)器可以編程為使用外部或內(nèi)部CPU時(shí)鐘引腳TCLKINA/B提供了外部時(shí)鐘輸入。引腳TDIRA/TDIRB用來(lái)指定通用定時(shí)器計(jì)數(shù)方向高電平為加計(jì)數(shù);低電平為減計(jì)數(shù)。,723事件管理器(EV)模塊,事件管理器中的所有輸入都由內(nèi)部CPU協(xié)調(diào)同步,VDSP事件管理器EVA和EVB內(nèi)部均有兩個(gè)通用定時(shí)器(GPT),EVA中為通用定時(shí)器1GPT1和2GPT2)EVB中為通用定時(shí)器3GPT3和4GPT4)計(jì)數(shù)范圍為0~65535,7231通用定時(shí)器,7231通用定時(shí)器,每個(gè)通用定時(shí)器可以各自獨(dú)立工作,也可以相互同步工作。,16位的全局通用定時(shí)器控制寄存器GPTCONAEVA中和GPTCONBEVB中用來(lái)規(guī)定這4個(gè)通用定時(shí)器在不同定時(shí)器事件中所采取的操作,并記錄它們的計(jì)數(shù)方向。,(1)一個(gè)16位可讀/寫(xiě)的定時(shí)器計(jì)數(shù)器TXCNT(X=1,2,3,4)。(2)一個(gè)16位可讀/寫(xiě)的定時(shí)器比較寄存器帶影子寄存器)TXCMPR(X1,2,3,4)。(3)一個(gè)16位可讀/寫(xiě)的定時(shí)器周期寄存器帶影子寄存器)TXPR(X1,2,3,4)。(4)一個(gè)16位可讀/寫(xiě)的定時(shí)器控制寄存器TXCON(X1,2,3,4)。,●每個(gè)通用定時(shí)器包括,,●每個(gè)通用定時(shí)器包括,,(5)一個(gè)通用定時(shí)器比較輸出引腳TXCMP,或?qū)憺門(mén)XPWM(X=1,2,3,4)。(6)用于內(nèi)部或外部時(shí)鐘輸入的可編程定標(biāo)器。(7)控制和中斷邏輯。,,當(dāng)X2時(shí),Y1且N2;當(dāng)X4時(shí),Y3且N4,事件管理器中的各寄存器均映射在數(shù)據(jù)存儲(chǔ)區(qū)域。EVA中通用定時(shí)器的9個(gè)寄存器分別映射在7400H~7408H的地址范圍中EVB中通用定時(shí)器的9個(gè)寄存器分別映射在7500H~7508H的地址范圍中。,1.通用定時(shí)器中的寄存器,GPTCONA規(guī)定EVA中通用定時(shí)器1和2的有關(guān)操作,GPTCONB規(guī)定EVB中通用定時(shí)器3和4的有關(guān)操作。兩個(gè)控制寄存器的內(nèi)容基本相同,“/”符號(hào)左邊為EVA模塊的定義,右邊為EVB模塊的定義。,●全局通用定時(shí)器控制寄存器A/B(GPTCONA/B),●全局通用定時(shí)器控制寄存器A/B(GPTCONA/B),各位定義在230頁(yè),定義每個(gè)通用定時(shí)器的操作模式T1CON和T2CON定義EVA中的通用定時(shí)器1和2T3CON和T4CON定義EVB中的通用定時(shí)器3和4,●通用定時(shí)器控制寄存器TXCONX=1,2,3,4,D15D14D13D12D11D10D8,TPS,TMODE,RESERVED,SOFT,FREE,,,,,,,,R/W0R/W0R/W0R/W0R/W0,D7D6D5D4D3D2D1D0,SELT1PR/SELT3PR,TECMP,TCLD,TCLKS,TENABLE,T2SWT1/T4SWT1,,,,,,,,,,R/W0R/W0R/W0R/W0R/W0R/W0,注“”表示在T1CON和T3CON中為保留位;R讀;W寫(xiě);“”后的值為復(fù)位值。,●通用定時(shí)器控制寄存器TXCONX=1,2,3,4,每個(gè)通用定時(shí)器都有一個(gè)計(jì)數(shù)器,存放開(kāi)始計(jì)數(shù)時(shí)的初值,當(dāng)進(jìn)行計(jì)數(shù)時(shí)存放當(dāng)前計(jì)數(shù)值。計(jì)數(shù)器的初值可以是0000H~FFFFH中的任意值。,計(jì)數(shù)器可以進(jìn)行增1或減1計(jì)數(shù),由控制寄存器TXCON的D12~D11確定其計(jì)數(shù)模式。,●通用定時(shí)器計(jì)數(shù)器TXCNT(X=1,2,3,4),●比較寄存器TXCMPR(X=1,2,3,4),每個(gè)通用定時(shí)器都有一個(gè)比較寄存器,存放與計(jì)數(shù)器TXCNT進(jìn)行比較的值。如果設(shè)置控制寄存器TXCON中的D1位為1,即允許比較操作,則當(dāng)計(jì)數(shù)器的值計(jì)到與比較寄存器值相等時(shí)產(chǎn)生比較匹配,將有以下事件發(fā)生,(1)EVA/EVB中斷標(biāo)志寄存器中相應(yīng)的比較中斷標(biāo)志位在匹配后的一個(gè)CPU時(shí)鐘周期后被置位。,(2)在匹配后的一個(gè)CPU時(shí)鐘周期后,根據(jù)全局通用定時(shí)器控制器GPTCONA/B中的D3~D2或D1~D0位的配置,相應(yīng)地比較輸出TXPWM引腳將發(fā)生跳變。,●比較寄存器TXCMPR(X=1,2,3,4),(3)當(dāng)GPTCONA/B的D10~D9或D8~D7位設(shè)置為由比較中斷標(biāo)志啟動(dòng)模數(shù)轉(zhuǎn)換ADC時(shí)模數(shù)轉(zhuǎn)換被啟動(dòng)。,(4)如果比較中斷未被屏蔽,則產(chǎn)生一個(gè)外設(shè)中斷請(qǐng)求。,V每個(gè)通用定時(shí)器都對(duì)應(yīng)一個(gè)周期寄存器,周期寄存器的值決定了定時(shí)器的周期。,V當(dāng)定時(shí)器的計(jì)數(shù)值與周期寄存器的值相等時(shí)產(chǎn)生周期匹配,此時(shí)通用定時(shí)器停止操作并保持當(dāng)前計(jì)數(shù)值,然后根據(jù)計(jì)數(shù)器的計(jì)數(shù)方式執(zhí)行復(fù)位操作或遞減計(jì)數(shù)。,●周期寄存器TXPR(X=1,2,3,4),通用定時(shí)器在模塊EVA和EVB的中斷標(biāo)志寄存器EVAIFRA,EVAIFRB,EVBIFRA,EVBIFRB中有16個(gè)中斷標(biāo)志(參見(jiàn)7235)。,2.通用定時(shí)器的中斷和仿真中斷,每個(gè)通用定時(shí)器可根據(jù)以下4種事件產(chǎn)生中斷,(2)下溢定時(shí)計(jì)數(shù)器的值達(dá)到0000H時(shí),產(chǎn)生下溢事件中斷。此時(shí)標(biāo)志寄存器中的TXUFINF位(X1,2,3,4)置1。,(3)比較匹配當(dāng)通用定時(shí)計(jì)數(shù)器的值與比較寄存器的值相等時(shí),產(chǎn)生定時(shí)器比較匹配事件中斷。此時(shí)標(biāo)志寄存器中的TXCINT位X1,2,3,4置1。,(4)周期匹配當(dāng)通用定時(shí)計(jì)數(shù)器的值與周期寄存器的值相等時(shí),產(chǎn)生定時(shí)器周期匹配事件中斷。此時(shí)標(biāo)志寄存器中的TXPINT位(X1,2,3,4)置1。,●每個(gè)通用定時(shí)器可根據(jù)以下4種事件產(chǎn)生中斷,(1)上溢定時(shí)計(jì)數(shù)器的值達(dá)到FFFFH時(shí),產(chǎn)生上溢事件中斷此時(shí)標(biāo)志寄存器中的TXOFINF位(X1,2,3,4)置1,上述4種事件中斷還可由全局通用定時(shí)器控制寄存器GPTCONA/B的D10~D7位規(guī)定作為模數(shù)轉(zhuǎn)換器的啟動(dòng)轉(zhuǎn)換信號(hào)。,仿真中斷期間的通用定時(shí)器操作模式由通用定時(shí)器的控制寄存器(TXCON的D15~D14)定義。當(dāng)仿真中斷發(fā)生時(shí),通用定時(shí)器可被設(shè)置為立即停止計(jì)數(shù)、當(dāng)前計(jì)數(shù)周期完成后停止計(jì)數(shù)、不受仿真中斷影響持續(xù)運(yùn)行三種狀態(tài)中的任一種。,通用定時(shí)器控制寄存器TXCON的D12~D11位定義了每個(gè)通用定時(shí)器的4種操作模式(1)停止/保持模式(2)連續(xù)增計(jì)數(shù)模式(3)定向增/減計(jì)數(shù)模式(4)連續(xù)增/減計(jì)數(shù)模式如果TXCON的D6位為1即允許定時(shí)器操作,則計(jì)數(shù)器按上述模式之一開(kāi)始計(jì)數(shù)。,3.通用定時(shí)器的計(jì)數(shù)操作,,●通用定時(shí)器的4種操作模式,停止/保持模式,通用定時(shí)器在定標(biāo)的輸入時(shí)鐘的上升沿從初值開(kāi)始進(jìn)行加1計(jì)數(shù),直到計(jì)數(shù)器的值與周期寄存器的值相等之后在下一個(gè)輸入時(shí)鐘的上升沿,通用定時(shí)器復(fù)位為0并開(kāi)始另一個(gè)計(jì)數(shù)周期。,●通用定時(shí)器的4種操作模式,,2連續(xù)增計(jì)數(shù)模式,如果設(shè)定計(jì)數(shù)器的初值(0000H~FFFFH中的任意值)大于周期寄存器的值則計(jì)數(shù)器進(jìn)行加1計(jì)數(shù)至FFFFH后置上溢中斷標(biāo)志;再加1計(jì)滿(mǎn)為0后,從0開(kāi)始繼續(xù)計(jì)數(shù)直到等于周期寄存器的值,此時(shí)產(chǎn)生周期匹配,并設(shè)置周期中斷標(biāo)志和下溢中斷標(biāo)志,且計(jì)數(shù)器復(fù)位為0;然后再?gòu)?開(kāi)始繼續(xù)計(jì)數(shù)(像初值為0一樣),直到等于周期寄存器的值,重復(fù)上述操作。,,,2連續(xù)增計(jì)數(shù)模式,,,如果設(shè)定時(shí)計(jì)數(shù)器的初值小于周期寄存器的值,則計(jì)數(shù)器從初值開(kāi)始加1計(jì)數(shù)直到等于周期寄存器的值,然后復(fù)位為0,再?gòu)?開(kāi)始計(jì)數(shù),同時(shí)設(shè)置周期中斷和下溢中斷標(biāo)志,重復(fù)上述操作。,,,2連續(xù)增計(jì)數(shù)模式,,圖718通用定時(shí)器連續(xù)增計(jì)數(shù)模式假設(shè)計(jì)數(shù)器的初始值為5,周期寄存器的值為3,通用定時(shí)器在定標(biāo)的輸入時(shí)鐘上升沿開(kāi)始計(jì)數(shù),計(jì)數(shù)方向由輸入引腳TDIRA/B確定。,引腳為高時(shí),進(jìn)行增計(jì)數(shù),增計(jì)數(shù)與連續(xù)增計(jì)數(shù)模式完全相同;,定向增/減計(jì)數(shù)模式,,●通用定時(shí)器的4種操作模式,,2定向增/減計(jì)數(shù)模式,引腳為低時(shí),進(jìn)行減計(jì)數(shù),從初值(0000H~FFFFH中的任何值)開(kāi)始減計(jì)數(shù)直到計(jì)數(shù)值為0,此時(shí)如果TDIRA/B引腳仍保持為低,定時(shí)器的計(jì)數(shù)器將重新裝入周期寄存器的值,開(kāi)始新的減計(jì)數(shù)。,讀GPTCONA/B寄存器中的D14和D1位,可以監(jiān)測(cè)定時(shí)器的計(jì)數(shù)方向。,周期下溢和上溢中斷的產(chǎn)生方式與連續(xù)增計(jì)數(shù)模式相同初始化編程與連續(xù)增計(jì)數(shù)模式方法相同。僅TXCON寄存器的TMODE為11。,2定向增/減計(jì)數(shù)模式,,圖719通用定時(shí)器定向增/減計(jì)數(shù)模式計(jì)數(shù)初值為FFFDH,周期寄存器的值為3,該模式與定向增/減計(jì)數(shù)模式基本相同。區(qū)別是計(jì)數(shù)方向不受引腳TDIRA/B的狀態(tài)影響,而是在計(jì)數(shù)值達(dá)到周期寄存器的值時(shí)或FFFFH(初值大于周期寄存器的值)時(shí),才從增計(jì)數(shù)變?yōu)闇p計(jì)數(shù);在計(jì)數(shù)值為0時(shí),從減計(jì)數(shù)變?yōu)樵鲇?jì)數(shù)。如圖720所示。,連續(xù)增/減計(jì)數(shù)模式,●通用定時(shí)器的4種操作模式,,圖720通用定時(shí)器連續(xù)增/減計(jì)數(shù)模式,連續(xù)增/減計(jì)數(shù)模式適用于產(chǎn)生對(duì)稱(chēng)的PWM波形,該波形廣泛應(yīng)用于電機(jī)/運(yùn)動(dòng)控制和電力電子設(shè)備中。,2連續(xù)增/減計(jì)數(shù)模式,時(shí)鐘源可采用內(nèi)部時(shí)鐘或外部時(shí)鐘輸入TCLKINA/B,或正交編碼器脈沖電路Q(chēng)EP,由每個(gè)通用定時(shí)器的控制寄存器TXCON的D5~D4位選擇決定,并通過(guò)D10~D8位選擇8種輸入時(shí)鐘的預(yù)定標(biāo)系數(shù)。,(1)時(shí)鐘輸入,4.通用定時(shí)器的輸入和輸出信號(hào),當(dāng)使用外部時(shí)鐘時(shí),要求其最大頻率是CPU時(shí)鐘頻率的1/4在定向增/減計(jì)數(shù)器模式下,EVA模塊中的通用定時(shí)器2和EVB中的通用定時(shí)器4可用于正交編碼脈沖(QEP)電路,此時(shí)正交編碼脈沖電路不僅為定時(shí)器2/4提供時(shí)鐘,而且還提供輸入方向。,當(dāng)通用定時(shí)器處于定向增/減計(jì)數(shù)模式時(shí),輸入引腳TDIRA/B決定了計(jì)數(shù)的方向TDIRA/B為高電平時(shí),規(guī)定為增計(jì)數(shù);TDIRA/B為低電平時(shí),規(guī)定為減計(jì)數(shù)。讀全局控制寄存器GPTCONA/B的TXSTAT位可檢查通用定時(shí)器的計(jì)數(shù)方向狀態(tài)。,4.通用定時(shí)器的輸入和輸出信號(hào),(2)方向輸入,比較輸出引腳TXPWM由全局通用定時(shí)器控制寄存器GPTCONA/B的D3~D2位和D1~D0位規(guī)定為強(qiáng)制高、強(qiáng)制低、高有效或低有效。,(3)比較輸出,每個(gè)通用定時(shí)器都可以獨(dú)立地提供一個(gè)PWM輸出通道。所以通用定時(shí)器可提供4個(gè)PWM輸出TXPWM(或稱(chēng)比較輸出TXCMP,X=1,2,3,4)。,4.通用定時(shí)器的輸入和輸出信號(hào),當(dāng)通用定時(shí)器工作在連續(xù)增/減計(jì)數(shù)模式時(shí),產(chǎn)生對(duì)稱(chēng)波形;當(dāng)通用定時(shí)器工作在連續(xù)增計(jì)數(shù)模式時(shí),產(chǎn)生非對(duì)稱(chēng)波形。,強(qiáng)制高/低若GPTCONA/B的相應(yīng)位規(guī)定PWM輸出為強(qiáng)制高/低后,輸出引腳TXPWM立即變?yōu)楦唠娖?低電平。,,高有效/低有效若GPTCONA/B的相應(yīng)位規(guī)定PWM輸出為高有效/低有效后,則可以產(chǎn)生非對(duì)稱(chēng)或?qū)ΨQ(chēng)波形,,4.通用定時(shí)器的輸入和輸出信號(hào),PWM輸出在以下事件的影響下發(fā)生變化,(1)計(jì)數(shù)操作開(kāi)始前,輸出引腳TXPWM保持無(wú)效狀態(tài)。(2)當(dāng)?shù)谝淮伪容^匹配發(fā)生時(shí),輸出引腳TXPWM跳變?yōu)橛行顟B(tài),同時(shí)產(chǎn)生觸發(fā)。(3)如果通用定時(shí)器工作在連續(xù)增/減計(jì)數(shù)模式,則在第二次比較匹配時(shí)TXPWM變?yōu)闊o(wú)效狀態(tài),并一直保持到下一個(gè)周期的第一次比較匹配發(fā)生。如圖721所示,該波形稱(chēng)為對(duì)稱(chēng)波形,4.通用定時(shí)器的輸入和輸出信號(hào),PWM輸出在以下事件的影響下發(fā)生變化,如果通用定時(shí)器工作在連續(xù)增計(jì)數(shù)模式,則在周期匹配時(shí)TXPWM變?yōu)闊o(wú)效狀態(tài),并一直保持到下一個(gè)周期的比較匹配發(fā)生。如圖722所示,該波形稱(chēng)為非對(duì)稱(chēng)波形,4.通用定時(shí)器的輸入和輸出信號(hào),,圖721連續(xù)增/減計(jì)數(shù)模式下的比較輸出(TXPWM),,返回,,,PWM,圖722連續(xù)增計(jì)數(shù)模式下的比較輸出(TXPWM),程序舉例,(4)如果比較值在一個(gè)周期開(kāi)始時(shí)為0,則在整個(gè)周期PWM輸出為有效狀態(tài);如果下一周期比較值仍為0,則PWM輸出將不再改變,繼續(xù)保持有效狀態(tài);如果比較值大于或等于周期值,則在整個(gè)周期PWM輸出為無(wú)效狀態(tài),直到比較值小于周期值并發(fā)生比較匹配時(shí),PWM輸出才發(fā)生跳變。,4.通用定時(shí)器的輸入和輸出信號(hào),PWM輸出在以下事件的影響下發(fā)生變化,輸出信號(hào)的跳變時(shí)間由比較寄存器的值決定,改變比較寄存器中的值就可以改變TXPWM輸出脈沖的寬度。,如上所述,在一個(gè)正常的計(jì)數(shù)模式下,如果比較已被使能,則通用定時(shí)器的TXPWM輸出如表713所示。,4.通用定時(shí)器的輸入和輸出信號(hào),PWM輸出在以下事件的影響下發(fā)生變化,,表713連續(xù)增和連續(xù)增/減計(jì)數(shù)模式下的通用定時(shí)器比較輸出,基于定時(shí)器計(jì)數(shù)模式和輸出邏輯的非對(duì)稱(chēng)和對(duì)稱(chēng)波形的產(chǎn)生同樣適用于比較單元。,同一模塊的通用定時(shí)器可以實(shí)現(xiàn)同步。即EVA模塊中定時(shí)器2和1可以同步EVB模塊中定時(shí)器4和3可以實(shí)現(xiàn)同步,5.通用定時(shí)器的同步,實(shí)現(xiàn)同步的方法如下(1)置T1CONEVA模塊或T3CONEVB模塊寄存器中的TENABLE位為1,且置T2CONEVA中的T2SWT1或T4CONEVB寄存器中的T4SWT3位為1,此時(shí)將同時(shí)啟動(dòng)本模塊中的兩個(gè)計(jì)數(shù)器。,5.通用定時(shí)器的同步,實(shí)現(xiàn)同步的方法如下(2)在啟動(dòng)同步操作前,可將本模塊的兩個(gè)計(jì)數(shù)器初始化成不同的值。,(3)置T2CON/T4CON寄存器中的SELT1PR/SELT3PR位為1。使通用定時(shí)器1/3的周期寄存器也作為通用定時(shí)器2/4的周期寄存器而忽略2/4自身的周期寄存器。,該程序檢查EVA中定時(shí)器1的操作。定時(shí)器的模式為連續(xù)增/減計(jì)數(shù),X/128。輸出對(duì)應(yīng)于上溢、下溢、比較、周期中斷進(jìn)入相應(yīng)的中斷服務(wù)程序SISR2X中,使通用I/O引腳IOPB0上溢時(shí),IOPB1(下溢時(shí)),IOPB2(比較匹配發(fā)生時(shí)),IOPB3(周期匹配發(fā)生時(shí))輸出高電平。,6通用定時(shí)器程序舉例(程序名為EV_T1INTASM),INCLUDE“240XAH”INCLUDE“240XAVECTORH”DEF_C_INTOTEXT_C_INTOLDP0HSETCINTMSPLK0000H,IMRLACCIFRSACLIFRLDP00E0H,6通用定時(shí)器程序舉例(程序名為EV_T1INTASM),SPLK0004H,SCSR1SPLK006FH,WDCRMAR,AR0LDP0E1HSPLK0FF00H,PBDATDIR裝入通用定時(shí)器1LDP00E8HSPLK0000H,GPTCONASPLK0000H,T1CNTSPLK0F42H,T1CON,6通用定時(shí)器程序舉例(程序名為EV_T1INTASM),SPLK0FFFFH,T1P
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-05
      頁(yè)數(shù): 134
      0人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇,第1章C語(yǔ)言概述,2024年3月17日,課程教學(xué)目標(biāo),以C語(yǔ)言為平臺(tái),介紹程序設(shè)計(jì)的思想和方法。通過(guò)學(xué)習(xí),使學(xué)生不但掌握高級(jí)編程語(yǔ)言的知識(shí)、編程技術(shù)和基本算法,更重要的是掌握程序設(shè)計(jì)的思想和方法,具備利用計(jì)算機(jī)求解實(shí)際問(wèn)題的基本能力,能靈活應(yīng)用高級(jí)語(yǔ)言進(jìn)行程序設(shè)計(jì)。,2024年3月17日,教學(xué)內(nèi)容與教學(xué)環(huán)節(jié),教學(xué)內(nèi)容包括“程序設(shè)計(jì)”和“語(yǔ)言知識(shí)”兩部分,在教學(xué)過(guò)程中被分為若干個(gè)主題,以程序設(shè)計(jì)做為貫穿各主題的主線(xiàn)。對(duì)教學(xué)內(nèi)容的詳細(xì)描述見(jiàn)教學(xué)大綱。課程教學(xué)環(huán)節(jié)包括課堂教學(xué)、課外自學(xué)、上機(jī)實(shí)踐、答疑討論和考核。,2024年3月17日,教學(xué)環(huán)節(jié),(1)課堂教學(xué)教師通過(guò)案例分析,重點(diǎn)講解程序設(shè)計(jì)的思想和方法,輔以必要的語(yǔ)言知識(shí)介紹。(2)課外自學(xué)學(xué)生根據(jù)自己的實(shí)際情況,自主學(xué)習(xí)不同層次的學(xué)習(xí)資料。(3)上機(jī)實(shí)踐學(xué)生必須完成大量的上機(jī)練習(xí),包括基本訓(xùn)練(自測(cè)作業(yè)和主題作業(yè))和綜合訓(xùn)練大型作業(yè)通過(guò)大型作業(yè),從而達(dá)到在實(shí)踐中掌握知識(shí),培養(yǎng)程序設(shè)計(jì)能力的目的。,2024年3月17日,本課程學(xué)習(xí)分三個(gè)階段,基礎(chǔ)篇5周第1章C語(yǔ)言概述第2章C語(yǔ)言簡(jiǎn)單程序設(shè)計(jì)㈠順序、選擇控制結(jié)構(gòu)第3章C語(yǔ)言簡(jiǎn)單程序設(shè)計(jì)㈡循環(huán)控制結(jié)構(gòu)第4章數(shù)組第5章算法,2024年3月17日,本課程學(xué)習(xí)分三個(gè)階段,基礎(chǔ)篇5周進(jìn)階篇7周第1章數(shù)據(jù)類(lèi)型與輸入輸出(二)第2章運(yùn)算符和表達(dá)式第3章函數(shù)(一)第4章預(yù)編譯與C程序工程文件期中測(cè)試第5章指針(一)第6章數(shù)組(二),2024年3月17日,本課程學(xué)習(xí)分三個(gè)階段,基礎(chǔ)篇5周進(jìn)階篇7周提高篇5周第1章指針與函數(shù)(2)第2章結(jié)構(gòu)體第3章文件第4章位運(yùn)算,C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇,第1章C語(yǔ)言概述,2024年3月17日,11C語(yǔ)言簡(jiǎn)介111程序設(shè)計(jì)語(yǔ)言的發(fā)展,第一代機(jī)器語(yǔ)言是一種CPU機(jī)器語(yǔ)言。由數(shù)字0、1組合而成。優(yōu)點(diǎn)機(jī)器可直接執(zhí)行,速度快。缺點(diǎn)程序長(zhǎng),難記,難理解,不易查錯(cuò)。第二代匯編語(yǔ)言用助記符描述的指令系統(tǒng)。如MOVAX,BP4PUSHDL優(yōu)點(diǎn)比機(jī)器語(yǔ)言較易理解,執(zhí)行速度快。缺點(diǎn)難度大,非專(zhuān)業(yè)人士難以掌握。,2024年3月17日,111程序設(shè)計(jì)語(yǔ)言的發(fā)展,第三代面向過(guò)程的高級(jí)語(yǔ)言或稱(chēng)算法語(yǔ)言。如FORTRAN,BASIC,PASCAL,C等等。優(yōu)點(diǎn)靈活,易于理解,容易查錯(cuò)。缺點(diǎn)對(duì)大型程序而言維護(hù)性較差,對(duì)“擬定”好的程序難以擴(kuò)充,修改(所謂牽一而動(dòng)百)。第四代非過(guò)程化的高級(jí)語(yǔ)言是一種面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言,如C,JAVA等等。優(yōu)點(diǎn)靈活、易于理解、維護(hù)、修改、擴(kuò)充。缺點(diǎn)掌握難度較大。第五代可視化多媒體程序設(shè)計(jì)工具。具有面向?qū)ο蟮乃枷?,如VISUALC,VISUALBASIC,DELPHE等等。,2024年3月17日,112C語(yǔ)言發(fā)展過(guò)程,1960年出現(xiàn)了ALGOL60語(yǔ)言。1967年,MATINRICHARDS對(duì)CPL進(jìn)行改進(jìn)、簡(jiǎn)化、推出了BCPL。1970年,美國(guó)貝爾實(shí)驗(yàn)室KENTHOMSON以BCPL為基礎(chǔ),再次簡(jiǎn)化推出了B語(yǔ)言,并寫(xiě)了第一個(gè)UNIX系統(tǒng)。1972年美國(guó)貝爾實(shí)驗(yàn)室DMRITCHIE在B語(yǔ)言基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言,并用其將UNIX系統(tǒng)全部改寫(xiě)并實(shí)現(xiàn)。經(jīng)進(jìn)一步改進(jìn),至1977年出現(xiàn)了與具體機(jī)器無(wú)關(guān)的C編譯文本,從而使C語(yǔ)言廣泛應(yīng)用,各種機(jī)器皆可使用。,2024年3月17日,112C語(yǔ)言發(fā)展過(guò)程,1978年,美國(guó)BRAINWKERNIGHAN與DENNISMRITCHIE聯(lián)合出版一書(shū)THECPROGRAMMINGLANGUAGE成為ANSIC之基礎(chǔ)。1983年,美國(guó)標(biāo)準(zhǔn)化協(xié)會(huì)ANSI制定了ANSIC。以ANSIC為基礎(chǔ)不同機(jī)器有不同版本,尤其是函數(shù)均應(yīng)參考相應(yīng)的機(jī)器。C語(yǔ)言的編譯環(huán)境有多種,如DOS/WINDOWS平臺(tái)BORLAND/TURBOC,MICROSOFTC等UNIX/LINUX平臺(tái)GNUC,2024年3月17日,112C語(yǔ)言發(fā)展過(guò)程,在C的基礎(chǔ)上,一九八三年又由貝爾實(shí)驗(yàn)室推出了C。C進(jìn)一步擴(kuò)充和完善了C語(yǔ)言,成為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。C是C的基礎(chǔ),C語(yǔ)言和C語(yǔ)言在很多方面是兼容的。因此,掌握了C語(yǔ)言,再進(jìn)一步學(xué)習(xí)C就能以一種熟悉的語(yǔ)法來(lái)學(xué)習(xí)面向?qū)ο蟮恼Z(yǔ)言,從而達(dá)到事半功倍的目的。,2024年3月17日,12C語(yǔ)言的特點(diǎn),應(yīng)用面廣C語(yǔ)言是一種過(guò)程化的語(yǔ)言。既可編寫(xiě)系統(tǒng)軟件如DOS、WINDOWS、UNIX;又可編寫(xiě)應(yīng)用軟件。,2024年3月17日,12C語(yǔ)言的特點(diǎn),簡(jiǎn)潔、緊湊、方便、表達(dá)能力強(qiáng)32個(gè)關(guān)鍵字,9種控制語(yǔ)句,主要用小寫(xiě)字母。,2024年3月17日,12C語(yǔ)言的特點(diǎn),運(yùn)算符豐富共有34種運(yùn)算符。除了最基本的+、-、、÷、等運(yùn)算外,還將括號(hào)、賦值、類(lèi)型強(qiáng)制轉(zhuǎn)換等均作為運(yùn)算符。數(shù)據(jù)類(lèi)型豐富,結(jié)構(gòu)化程度高除基本類(lèi)型外,有指針,結(jié)構(gòu)體、共同體等類(lèi)型。語(yǔ)法嚴(yán)格,靈活如數(shù)據(jù)類(lèi)型可相互通用整型、字符型通用。,2024年3月17日,12C語(yǔ)言的特點(diǎn),可與機(jī)器硬件打交道直接訪(fǎng)問(wèn)內(nèi)存地址,具有“高”、“低”級(jí)語(yǔ)言的功能。生成目標(biāo)代碼質(zhì)量高,執(zhí)行效率高。語(yǔ)言簡(jiǎn)潔,可移植性好可移植性?xún)?yōu)于匯編語(yǔ)言。,2024年3月17日,13簡(jiǎn)單的C程序介紹,為了更好、更快地掌握C程序,我們先看幾個(gè)C語(yǔ)言程序【例11】HELLO,WORLDINCLUDEINTMAIN{PRINTF“HELLO,WORLD\N“RETURN0},運(yùn)行結(jié)果HELLO,WORLD,2024年3月17日,【例12】加法,/EXAMPLEFORADDPROGRAM/INCLUDEINTMAIN{INTA,B,SUM/這是定義變量/A123B456/給變量賦值/SUMAB/求兩個(gè)數(shù)之和/PRINTF“ABD\N“,SUMRETURN0},運(yùn)行結(jié)果AB579,2024年3月17日,【例13】求兩數(shù)中較大者,/EXAMPLEFORFUNCTIONPROGRAM/INCLUDEINTMAXINTX,INTY/對(duì)形參X、Y作類(lèi)型定義/{INTZ/MAX函用到的變量Z,也要加以定義/ZYIFXYZXRETURNZ/將Z的值返回,通過(guò)MAX帶回調(diào)用處/}INTMAIN/主函數(shù)/{INTA,B,C/定義變量/SCANF“D,D“,/輸入變量A和B的值/CMAXA,B/調(diào)用MAX函數(shù),將得到的值賦給C/PRINTF“MAXD\N“,C/輸出C的值/RETURN0},運(yùn)行結(jié)果12,34MAX34,2024年3月17日,通過(guò)實(shí)例,初步看到C的程序結(jié)構(gòu),C程序全部由一個(gè)一個(gè)的函數(shù)構(gòu)成。至少有且僅有一個(gè)主函數(shù)MAIN,也稱(chēng)為主程序,其內(nèi)容在其后的一對(duì)花括號(hào){}內(nèi),其它函數(shù)可被主函數(shù)調(diào)用或相互調(diào)用。其它函數(shù)可為C函數(shù)庫(kù)中函數(shù),也可為用戶(hù)定義的函數(shù)。,2024年3月17日,一個(gè)函數(shù)有兩部分組成函數(shù)的首部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類(lèi)型、函數(shù)參數(shù)形參名和參數(shù)類(lèi)型。INTMAXINTX,INTY↓↓↓↓↓↓函數(shù)類(lèi)型函數(shù)名參數(shù)類(lèi)型參數(shù)名參數(shù)類(lèi)型參數(shù)名一個(gè)函數(shù)名后面必須跟一對(duì)圓括弧,函數(shù)參數(shù)可以沒(méi)有,如MAIN。,2024年3月17日,一個(gè)函數(shù)有兩部分組成函數(shù)體,即函數(shù)首部下面的大括弧{}內(nèi)的部分。如果一個(gè)函數(shù)內(nèi)有多個(gè)大括弧,則最外層的一對(duì){}為函數(shù)體的范圍。函數(shù)體一般包括聲明部分在這部分中定義所用到的變量,如果需要,也要對(duì)所調(diào)用的函數(shù)進(jìn)行聲明。執(zhí)行部分有若干個(gè)語(yǔ)句組成。在某些情況下也可以沒(méi)有聲明部分,甚至可以既無(wú)聲明部分,也無(wú)執(zhí)行部分。如DUMP{},2024年3月17日,一個(gè)C程序總是從MAIN函數(shù)開(kāi)始執(zhí)行的,而不論MAIN函數(shù)在整個(gè)程序中的位置如何MAIN函數(shù)可以放在程序最前頭,也可以放在程序的最后面,或在一些函數(shù)之前,在另一些函數(shù)之后。C程序書(shū)寫(xiě)格式自由,一行也可以寫(xiě)幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以寫(xiě)在多行上。但為了程序的閱讀和理解,C程序書(shū)寫(xiě)需按照某些書(shū)寫(xiě)規(guī)則,稍后將介紹。,2024年3月17日,每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。C語(yǔ)言本身沒(méi)有輸入、輸出語(yǔ)句。輸入和輸出的操作是由庫(kù)函數(shù)SCANF和PRINTF等函數(shù)來(lái)完成??梢杂?/對(duì)C程序中的任何部分作注釋。,2024年3月17日,為便于閱讀,養(yǎng)成良好的程序書(shū)寫(xiě)風(fēng)格,每一對(duì){}上下對(duì)齊;每一對(duì){}都對(duì)應(yīng)于段首和段尾;每一行只寫(xiě)一條語(yǔ)句;每一對(duì){}內(nèi)的語(yǔ)句左對(duì)齊;不同的語(yǔ)句段采用縮進(jìn)格式以示區(qū)別;關(guān)鍵語(yǔ)句要有注釋。,C語(yǔ)言程序?qū)嵗CAPACHEHTTP服務(wù)器源代碼片段,INCLUDE“APRH“INCLUDE“APR_STRINGSH“INCLUDE“APR_GETOPTH“INCLUDE“APR_GENERALH“INCLUDE“APR_LIBH“INCLUDE“APR_MD5H“DEFINEAPR_WANT_STDIODEFINEAPR_WANT_STRFUNCINCLUDE“APR_WANTH“DEFINECORE_PRIVATEINCLUDE“AP_CONFIGH“INCLUDE“HTTPDH“INCLUDE“HTTP_MAINH“INCLUDE“HTTP_LOGH“INCLUDE“HTTP_CONFIGH“INCLUDE“HTTP_COREH“INCLUDE“HTTP_VHOSTH“INCLUDE“APR_URIH“INCLUDE“UTIL_EBCDICH“INCLUDE“AP_MPMH“INCLUDE“MPM_COMMONH“/WARNINGWIN32BINDSHTTP_MAINCDYNAMICALLYTOTHESERVERPLEASEPLACEEXTERNFUNCTIONSANDGLOBALDATAINANOTHERAPPROPRIATEMODULEMOSTSIGNIFICANTMAINGLOBALDATACANBEFOUNDINHTTP_CONFIGC/,STATICVOIDSHOW_MPM_SETTINGSVOID{INTMPM_QUERY_INFOAPR_STATUS_TRETVALPRINTF“SERVERMPMS\N“,AP_SHOW_MPMRETVALAP_MPM_QUERYAP_MPMQ_IS_THREADED,IFRETVALAPR_SUCCESS{PRINTF“THREADED“IFMPM_QUERY_INFOAP_MPMQ_DYNAMIC{PRINTF“YESVARIABLETHREADCOUNT\N“}ELSEIFMPM_QUERY_INFOAP_MPMQ_STATIC{PRINTF“YESFIXEDTHREADCOUNT\N“}ELSE{PRINTF“NO\N“}}RETVALAP_MPM_QUERYAP_MPMQ_IS_FORKED,IFRETVALAPR_SUCCESS{PRINTF“FORKED“IFMPM_QUERY_INFOAP_MPMQ_DYNAMIC{PRINTF“YESVARIABLEPROCESSCOUNT\N“}ELSEIFMPM_QUERY_INFOAP_MPMQ_STATIC{PRINTF“YESFIXEDPROCESSCOUNT\N“}ELSE{PRINTF“NO\N“}}},INTMAININTARGC,CONSTCHARCONSTARGV{CHARCINTCONFIGTESTONLY0CONSTCHARCONFNAMESERVER_CONFIG_FILECONSTCHARDEF_SERVER_ROOTHTTPD_ROOTCONSTCHARTEMP_ERROR_LOGNULLCONSTCHARERRORPROCESS_RECPROCESSSERVER_RECSERVER_CONFAPR_POOL_TPGLOBALAPR_POOL_TPCONFAPR_POOL_TPLOG/POOLOFLOGSTREAMS,RESET_AFTER_EACHREADOFCONF/APR_POOL_TPTEMP/POOLFORTEMPORARYCONFIGSTUFF,RESETOFTEN/APR_POOL_TPCOMMANDS/POOLFORD,CANDCSWITCHES/APR_GETOPT_TOPTAPR_STATUS_TRVMODULEMODCONSTCHAROPTARGAPR_OPTIONAL_FN_TYPEAP_SIGNAL_SERVERSIGNAL_SERVERAP_MONCONTROL0/TURNOFFPROFILINGOFSTARTUP/APR_APP_INITIALIZEPROCESSCREATE_PROCESSARGC,ARGVPGLOBALPROCESSPOOLPCONFPROCESSPCONFAP_SERVER_ARGV0PROCESSSHORT_NAMEIFAPR_CHARSET_EBCDICIFAP_INIT_EBCDICPGLOBALAPR_SUCCESS{DESTROY_AND_EXIT_PROCESSPROCESS,1}ENDIF,APR_POOL_CREATEAPR_POOL_TAGPCOMMANDS,“PCOMMANDS“AP_SERVER_PRE_READ_CONFIGAPR_ARRAY_MAKEPCOMMANDS,1,SIZEOFCHARAP_SERVER_POST_READ_CONFIGAPR_ARRAY_MAKEPCOMMANDS,1,SIZEOFCHARAP_SERVER_CONFIG_DEFINESAPR_ARRAY_MAKEPCOMMANDS,1,SIZEOFCHARERRORAP_SETUP_PRELINKED_MODULESPROCESSIFERROR{AP_LOG_ERRORAPLOG_MARK,APLOG_STARTUP|APLOG_EMERG,0,NULL,“SS“,AP_SERVER_ARGV0,ERRORDESTROY_AND_EXIT_PROCESSPROCESS,1}AP_RUN_REWRITE_ARGSPROCESS/MAINTAINAP_SERVER_BASEARGSLISTINHTTP_MAINHTOALLOWTHEMPMTOSAFELYPASSONOURARGSFROMITSREWRITE_ARGSHANDLER/APR_GETOPT_INITWHILERVAPR_GETOPTOPT,AP_SERVER_BASEARGS,SWITCHC{CASECNEWCHARAPR_ARRAY_PUSHAP_SERVER_POST_READ_CONFIGNEWAPR_PSTRDUPPCOMMANDS,OPTARGBREAKCASECNEWCHARAPR_ARRAY_PUSHAP_SERVER_PRE_READ_CONFIGNEWAPR_PSTRDUPPCOMMANDS,OPTARGBREAK,CASEDDEF_SERVER_ROOTOPTARGBREAKCASEDNEWCHARAPR_ARRAY_PUSHAP_SERVER_CONFIG_DEFINESNEWAPR_PSTRDUPPCOMMANDS,OPTARG/SETTINGDDUMP_VHOSTSISEQUIVALENTTOSETTINGS/IFSTRCMPOPTARG,“DUMP_VHOSTS“0CONFIGTESTONLY1/SETTINGDDUMP_MODULESISEQUIVALENTTOSETTINGM/IFSTRCMPOPTARG,“DUMP_MODULES“0CONFIGTESTONLY1BREAK}}/BADCMDLINEOPTIONTHENWEDIE/IFRVAPR_EOF||OPTINDARGC{USAGEPROCESS}APR_POOL_CREATEAPR_POOL_TAGPLOG,“PLOG“APR_POOL_CREATEAPR_POOL_TAGPTEMP,“PTEMP“/NOTETHATWEPREFLIGHTTHECONFIGFILEONCEBEFOREREADINGIT_AGAIN_INTHEMAINLOOPTHISALLOWSTHINGS,LOGFILESCONFIGURATIONFOREXAMPLE,TOSETTLEDOWN/,AP_SERVER_ROOTDEF_SERVER_ROOTIFTEMP_ERROR_LOG{AP_REPLACE_STDERR_LOGPROCESSPOOL,TEMP_ERROR_LOG}SERVER_CONFAP_READ_CONFIGPROCESS,PTEMP,CONFNAME,IFSERVER_CONF{DESTROY_AND_EXIT_PROCESSPROCESS,1}IFAP_RUN_PRE_CONFIGPCONF,PLOG,PTEMPOK{AP_LOG_ERRORAPLOG_MARK,APLOG_STARTUP|APLOG_ERR,0,NULL,“PRECONFIGURATIONFAILED“DESTROY_AND_EXIT_PROCESSPROCESS,1}RVAP_PROCESS_CONFIG_TREESERVER_CONF,AP_CONFTREE,PROCESSPCONF,PTEMPIFRVOK{AP_FIXUP_VIRTUAL_HOSTSPCONF,SERVER_CONFAP_FINI_VHOST_CONFIGPCONF,SERVER_CONFAPR_HOOK_SORT_ALLIFCONFIGTESTONLY{AP_RUN_TEST_CONFIGPCONF,SERVER_CONFAP_LOG_ERRORAPLOG_MARK,APLOG_STARTUP,0,NULL,“SYNTAXOK“DESTROY_AND_EXIT_PROCESSPROCESS,0}}APR_POOL_LOCKPCONF,0DESTROY_AND_EXIT_PROCESSPROCESS,0RETURN0/TERMINATIONOK/},2024年3月17日,14C程序的上機(jī)步驟,目前流行的C語(yǔ)言有以下幾種MICROSOFTCBORLANDCGNUC這些C語(yǔ)言版本不僅實(shí)現(xiàn)了ANSIC標(biāo)準(zhǔn),而且在此基礎(chǔ)上各自作了一些擴(kuò)充,使之更加方便、完美。,2024年3月17日,MICROSOFTVISUALC60使用簡(jiǎn)介,新建項(xiàng)目PROJECT新建文件C語(yǔ)言程序編輯文件編譯連接運(yùn)行調(diào)試,2024年3月17日,MICROSOFTVISUALC60使用簡(jiǎn)介,桌面快捷方式,新建項(xiàng)目打開(kāi)FILE菜單,點(diǎn)擊NEW菜單項(xiàng)。,,新建項(xiàng)目選擇PROJECTS為WIN32CONSOLEAPPLICATION,輸入項(xiàng)目名稱(chēng),及選擇項(xiàng)目文件存放的目錄,然后點(diǎn)OK按鈕,,,,新建項(xiàng)目選擇CONSOLEAPPLICATION的類(lèi)型為ANEMPTYPROJECT,然后點(diǎn)FINISH按鈕。,,新建項(xiàng)目點(diǎn)OK按鈕,系統(tǒng)將按照前面選擇的類(lèi)型創(chuàng)建一個(gè)新的項(xiàng)目。,新建C源程序打開(kāi)FILE菜單,點(diǎn)擊NEW菜單項(xiàng),彈出NEW對(duì)話(huà)框。選擇FILES類(lèi)型為CSOURCEFILE,文件名FILE的擴(kuò)展名為C,如下圖中為SAMPLEC,其他項(xiàng)目不要改變。,,,輸入C源程序在下圖中的文件編輯窗口中輸入C語(yǔ)言源程序。,,編譯、連接和運(yùn)行C程序點(diǎn)工具條上的按鈕,系統(tǒng)提示是否BUILD,點(diǎn)是Y按鈕開(kāi)始編譯、連接,創(chuàng)建可執(zhí)行程序,并運(yùn)行程序。,,,程序運(yùn)行結(jié)果如果程序正確,編譯、連接后將自動(dòng)運(yùn)行程序。圖中的CONSOLE窗口中顯示了程序運(yùn)行結(jié)果,按任何鍵關(guān)閉該窗口。,修改程序錯(cuò)誤當(dāng)程序存在錯(cuò)誤,編譯、連接過(guò)程將停止,并將錯(cuò)誤信息顯示在信息窗口中。雙擊錯(cuò)誤信息,光標(biāo)將跳到發(fā)生錯(cuò)誤的語(yǔ)句。,,,
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-07
      頁(yè)數(shù): 44
      4人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:1,第2章C語(yǔ)言數(shù)據(jù)及數(shù)據(jù)運(yùn)算,2,第2章C語(yǔ)言數(shù)據(jù)及數(shù)據(jù)運(yùn)算,21C語(yǔ)言中的常量22C語(yǔ)言中的變量23C語(yǔ)言的數(shù)據(jù)類(lèi)型24C語(yǔ)言的運(yùn)算符及表達(dá)式25數(shù)據(jù)類(lèi)型轉(zhuǎn)換26如何輸入數(shù)據(jù)27如何輸出數(shù)據(jù)28數(shù)據(jù)運(yùn)算及數(shù)據(jù)輸入、輸出程序?qū)嵗?9小結(jié),3,21C語(yǔ)言中的常量,211定義C語(yǔ)言常量212什么是符號(hào)常量,4,211定義C語(yǔ)言常量,常量是在內(nèi)存中開(kāi)辟有固定值的空間,常量的意思就是不可改變的量,是一個(gè)常數(shù)。常量在程序中經(jīng)常直接出現(xiàn),例如123、3.14159、‘A’、“COMPUTER”,5,212什么是符號(hào)常量,常量定義是指定義符號(hào)常量,用一個(gè)標(biāo)識(shí)符來(lái)代表一個(gè)常量,通過(guò)宏定義預(yù)處理指令來(lái)實(shí)現(xiàn)。格式DEFINE標(biāo)識(shí)符常量【例21】輸出圓的面積,通過(guò)它可簡(jiǎn)單說(shuō)明常量的用法。,6,22C語(yǔ)言中的變量,221C語(yǔ)言變量的定義222C語(yǔ)言變量的命名223C語(yǔ)言變量賦值224C語(yǔ)言變量的作用域225C語(yǔ)言變量的EXTERN聲明方式,7,221C語(yǔ)言變量的定義,變量是用標(biāo)識(shí)符標(biāo)識(shí)且在程序運(yùn)行過(guò)程中允許被改變的量。定義變量的一般形式是TYPEVARIABLE_LIST,8,222C語(yǔ)言變量的命名,符合標(biāo)識(shí)符的命名規(guī)則。C變量名中字母可大小寫(xiě),但有大小寫(xiě)之分,SUM、SUM被視為不同的變量。在實(shí)際應(yīng)用中命名應(yīng)盡量見(jiàn)名知義。,9,223C語(yǔ)言變量賦值,在C語(yǔ)言里,使用等號(hào)“”進(jìn)行變量的賦值,把等號(hào)右邊的變量值賦給等號(hào)左邊的變量名。例如SUM20【例22】實(shí)現(xiàn)變量的賦值和初始化,通過(guò)它說(shuō)明變量的定義和變量的賦值可以分開(kāi)進(jìn)行。,10,224C語(yǔ)言變量的作用域,C語(yǔ)言中變量的作用域有局部和全局之分。變量的作用域決定了程序中的哪些語(yǔ)句可以使用它。1.局部作用域?qū)τ诰哂芯植孔饔糜虻淖兞?,只是在變量本身的函?shù)里可以訪(fǎng)問(wèn)它們,也就是局部變量?!纠?3】定義變量自加函數(shù)ADD,并在MAIN函數(shù)中調(diào)用ADD函數(shù),通過(guò)變量NUM在ADD函數(shù)和MAIN函數(shù)的值的不同,來(lái)對(duì)變量的局部作用域進(jìn)行說(shuō)明。2.全局作用域?qū)τ诰哂腥肿饔糜虻淖兞浚梢栽诔绦虻娜魏挝恢迷L(fǎng)問(wèn)它們。當(dāng)一個(gè)變量是在所有函數(shù)的外部聲明,也就是在程序的開(kāi)頭聲明,那么這個(gè)變量就是全局變量。【例24】定義變量自加的函數(shù)ADD,并在MAIN函數(shù)中調(diào)用ADD函數(shù),通過(guò)變量NUM在ADD函數(shù)和MAIN函數(shù)中的輸出,可說(shuō)明變量如何作用于全局。,11,225C語(yǔ)言變量的EXTERN聲明方式,EXTERN來(lái)聲明外部變量,以擴(kuò)展外部變量的作用域?!纠?5】實(shí)現(xiàn)兩個(gè)整數(shù)的加法運(yùn)算,通過(guò)在MAIN函數(shù)用到EXTERN變量,輸出相加結(jié)果來(lái)說(shuō)明EXTERN聲明變量的用法。,12,23C語(yǔ)言的數(shù)據(jù)類(lèi)型,231整型數(shù)據(jù)232實(shí)型數(shù)據(jù)233字符型數(shù)據(jù),13,231整型數(shù)據(jù),整型數(shù)據(jù)主要分為整型常量和整型變量?jī)深?lèi)。整型常量整型常量就是整常數(shù),可以用3種進(jìn)制形式表示(1)十進(jìn)制數(shù)以非0數(shù)字開(kāi)頭的數(shù),其每個(gè)數(shù)字位可以是09。例如123,123(2)八進(jìn)制數(shù)以數(shù)字0開(kāi)頭的數(shù),其每個(gè)數(shù)字位可以是07。例如0123,0123(3)十六進(jìn)制數(shù)以0X(或0X)開(kāi)頭的數(shù),其每個(gè)數(shù)字位可以是0~9、A~F(或A~F)。,14,231整型數(shù)據(jù),整型變量一個(gè)整型變量用來(lái)保存整數(shù)。整型變量分為基本型、短整型、長(zhǎng)整型、無(wú)符號(hào)整型、無(wú)符號(hào)短整型和無(wú)符號(hào)長(zhǎng)整型6類(lèi)?!纠?6】定義整型變量A、短整型變量B、長(zhǎng)整型變量C和無(wú)符號(hào)長(zhǎng)整型變量S。并通過(guò)給這4個(gè)變量賦值,同時(shí)相加求和,來(lái)說(shuō)明整型變量的定義和引用。,15,232實(shí)型數(shù)據(jù),實(shí)型數(shù)據(jù)主要分為實(shí)型常量和實(shí)型變量?jī)深?lèi)實(shí)型常量實(shí)型常量在C語(yǔ)言中又稱(chēng)為實(shí)數(shù)或浮點(diǎn)數(shù)。它通常是帶有小數(shù)點(diǎn)的,或者帶有指數(shù)的,又或者既帶小數(shù)點(diǎn)又帶指數(shù)的十進(jìn)制數(shù)。它有兩種表示形式(1)十進(jìn)制形式。這種形式的數(shù)由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成。例如112,0225,2340,100,00(2)指數(shù)形式。這種形式由3部分組成實(shí)數(shù)部分、字母E或E和整數(shù)部分。例如5X10(30)可以表示為5E30或5E30,16,232實(shí)型數(shù)據(jù),實(shí)型變量C語(yǔ)言中實(shí)型變量分單精度(FLOAT型)和雙精度(DOUBLE型)兩類(lèi)。如表22所示,在TURBOC中單精度型占4個(gè)字節(jié)(32位)內(nèi)存空間。雙精度型占8個(gè)字節(jié)(64位)內(nèi)存空間?!纠?7】求圓面積、周長(zhǎng)和體積。分別定義了單精度型變量和雙精度型變量,對(duì)變量賦值并引用。這個(gè)例子說(shuō)明了實(shí)型變量的定義和引用方法?!纠?8】對(duì)實(shí)型變量求和,并通過(guò)求和結(jié)果的輸出,對(duì)實(shí)型數(shù)據(jù)的舍入誤差進(jìn)行說(shuō)明。,17,233字符型數(shù)據(jù),字符型數(shù)據(jù)包括字符常量和字符變量?jī)深?lèi)。字符常量C語(yǔ)言中的字符常量是用單引號(hào)“’”括起來(lái)的一個(gè)字符。例如‘A’、’A’、’’、’3’字符型變量字符型變量用來(lái)存放單個(gè)字符,因此占用一個(gè)字節(jié)的內(nèi)存空間。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。【例210】分別以整數(shù)和字符型數(shù)輸出字符,通過(guò)它說(shuō)明字符型變量的定義和引用。,18,24C語(yǔ)言的運(yùn)算符及表達(dá)式,241什么是運(yùn)算符和表達(dá)式242賦值相關(guān)的運(yùn)算符及表達(dá)式243算術(shù)運(yùn)算相關(guān)的運(yùn)算符及表達(dá)式244關(guān)系運(yùn)算相關(guān)的運(yùn)算符及表達(dá)式245邏輯運(yùn)算相關(guān)的運(yùn)算符及表達(dá)式246條件運(yùn)算相關(guān)的運(yùn)算符及表達(dá)式247逗號(hào)運(yùn)算符及逗號(hào)表達(dá)式248C語(yǔ)言的運(yùn)算符優(yōu)先級(jí),19,241什么是運(yùn)算符和表達(dá)式,用于代表各種運(yùn)算的符號(hào)即運(yùn)算符??梢院?jiǎn)單地將表達(dá)式理解為用于計(jì)算的公式,它由運(yùn)算符(例如/)、運(yùn)算量(也稱(chēng)操作數(shù),可以是常量,也可以是變量)和括號(hào)組成。,20,242賦值相關(guān)的運(yùn)算符及表達(dá)式,C語(yǔ)言中賦值運(yùn)算符有“”、“”、“–”、“?”、“/”和“”。用賦值運(yùn)算符將運(yùn)算對(duì)象連接而成的表達(dá)式稱(chēng)為賦值表達(dá)式。,21,243算術(shù)運(yùn)算相關(guān)的運(yùn)算符及表達(dá)式,C語(yǔ)言中算術(shù)運(yùn)算符有“”、“”、“”、“/”、“”、“”和“”。算術(shù)表達(dá)式的值是一個(gè)數(shù)值,具體的數(shù)據(jù)類(lèi)型由運(yùn)算符和操作數(shù)決定。,22,244關(guān)系運(yùn)算相關(guān)的運(yùn)算符及表達(dá)式,C語(yǔ)言中比較兩個(gè)量的運(yùn)算符稱(chēng)為關(guān)系運(yùn)算符。關(guān)系運(yùn)算符都是二元運(yùn)算符,其結(jié)合性均為左結(jié)合。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。C語(yǔ)言中關(guān)系運(yùn)算符有6種“”、“”、“”、“”。,23,245邏輯運(yùn)算相關(guān)的運(yùn)算符及表達(dá)式,C語(yǔ)言提供了3種邏輯運(yùn)算符“【例213】實(shí)現(xiàn)了利用SCANF函數(shù)輸入數(shù)據(jù)的操作。通過(guò)這段代碼演示了SCANF的一般格式。,32,262字符數(shù)據(jù)輸入,GETCHAR函數(shù)的功能是從鍵盤(pán)上輸入一個(gè)字符。通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語(yǔ)句。其一般形式為GETCHAR【例214】是一個(gè)輸入單個(gè)字符的例子;【例215】是利用GETCHAR函數(shù)達(dá)到暫停效果的例子;【例216】演示了輸入3個(gè)小寫(xiě)字母,輸出其ASCII碼和相應(yīng)大寫(xiě)字母。通過(guò)這3個(gè)例子,簡(jiǎn)單介紹函數(shù)GETCHAR的用法。,33,27如何輸出數(shù)據(jù),271一般數(shù)據(jù)的格式化輸出272字符數(shù)據(jù)的輸出,34,271一般數(shù)據(jù)的格式化輸出,PRINTF函數(shù)是格式化輸出函數(shù),一般用于向標(biāo)準(zhǔn)輸出設(shè)備按規(guī)定格式輸出信息。在編寫(xiě)程序時(shí)經(jīng)常會(huì)用到此函數(shù)。PRINTF函數(shù)的一般形式為PRINTF格式控制,輸出項(xiàng)列表【例217】通過(guò)PRINTF函數(shù)輸出數(shù)據(jù)。通過(guò)這段代碼說(shuō)明PRINTF的一般格式?!纠?18】是一個(gè)用PRINTF函數(shù)輸出整型、實(shí)型和字符型數(shù)據(jù)的例子。,35,272字符數(shù)據(jù)的輸出,PUTCHAR函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出單個(gè)字符。其一般形式為PUTCHARA//輸出大寫(xiě)字母APUTCHARA//輸出字符變量A的值【例219】是一個(gè)利用PUTCHAR函數(shù)輸出字符和轉(zhuǎn)義字符的例子。通過(guò)它簡(jiǎn)單介紹PUTCHAR函數(shù)的用法。,36,28數(shù)據(jù)運(yùn)算及數(shù)據(jù)輸入、輸出程序?qū)嵗?【例220】用號(hào)輸出字母C的圖案。程序分析可先用“”號(hào)在紙上寫(xiě)出字母C,找出它的特點(diǎn),再分行輸出?!纠?21】從鍵盤(pán)輸入華氏溫度,在屏幕上輸出相應(yīng)的攝氏溫度。程序分析轉(zhuǎn)換計(jì)算公式是攝氏溫度華氏溫度325/9?!纠?22】輸入球體半徑R,計(jì)算球的體積V和表面積S。程序分析計(jì)算球體表面積和體積的公式為球體表面積S4314RR,體積V4/3314RRR。,37,29小結(jié),本章主要介紹數(shù)據(jù)類(lèi)型、變量和常量、運(yùn)算符和表達(dá)式、輸入輸出等最基本也是最重要的概念。C語(yǔ)言中的基本數(shù)據(jù)類(lèi)型包括整型、單精度浮點(diǎn)型、雙精度浮點(diǎn)型和字符型。整型分為短整型、整型、長(zhǎng)整型,每種整型又可分為有符號(hào)型和無(wú)符號(hào)型。單精度浮點(diǎn)型和雙精度浮點(diǎn)型變量可以存儲(chǔ)實(shí)數(shù),但雙精度型取值范圍要比單精度型大的多。字符型變量可以存儲(chǔ)單個(gè)字符,其值是該字符的ASCII碼。C語(yǔ)言中定義了豐富的運(yùn)算符,如算數(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符等等。由運(yùn)算符和操作數(shù)連接起來(lái)的式子是表達(dá)式。這些表達(dá)式是編程計(jì)算的最基本要素。C語(yǔ)言本身沒(méi)有輸入輸出功能,而是通過(guò)輸入輸出函數(shù)(SCANF、PUTCHAR、PRINTF和GETCHAR)完成I/O操作。,
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-05
      頁(yè)數(shù): 37
      16人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:第3章ADS開(kāi)發(fā)環(huán)境和ARM匯編語(yǔ)言,2,主要內(nèi)容,31ADS開(kāi)發(fā)環(huán)境311ADS軟件組成介紹312使用ADS創(chuàng)建工程313用AXD進(jìn)行代碼調(diào)試32ARM匯編程序設(shè)計(jì),3,31ADS開(kāi)發(fā)環(huán)境,在這一節(jié)里,將介紹ARM開(kāi)發(fā)軟件ADSARMDEVELOPERSUITE。通過(guò)學(xué)習(xí)如何在CODEWARRIORIDE集成開(kāi)發(fā)環(huán)境下編寫(xiě),編譯一個(gè)工程的例子,使讀者能夠掌握在ADS軟件平臺(tái)下開(kāi)發(fā)和調(diào)試ARM匯編程序。本節(jié)內(nèi)容311ADS軟件組成介紹312使用ADS創(chuàng)建工程313用AXD進(jìn)行代碼調(diào)試,4,311ADS軟件組成介紹,ARMADS全稱(chēng)為ARMDEVELOPERSUITE。是ARM公司推出的新一代ARM集成開(kāi)發(fā)工具?,F(xiàn)在ADS的最新版本是12,它取代了早期的ADS11和ADS10。它除了可以安裝在WINDOWSNT4,WINDOWS2000,WINDOWS98和WINDOWS95操作系統(tǒng)下,還支持WINDOWSXP和WINDOWSME操作系統(tǒng)。ADS由命令行開(kāi)發(fā)工具,ARM時(shí)實(shí)庫(kù),GUI開(kāi)發(fā)環(huán)境CODEWARRIOR和AXD,實(shí)用程序和支持軟件組成。有了這些部件,用戶(hù)就可以為ARM系列的RISC處理器編寫(xiě)和調(diào)試自己的開(kāi)發(fā)應(yīng)用程序了。,5,311命令行開(kāi)發(fā)工具,ADS提供下面的命令行開(kāi)發(fā)工具ARMCCARMC編譯器,默認(rèn)工具ARMCPPARMC編譯器TCCTHUMBC編譯器TCPPTHUMBC編譯器ARMASMARM和THUMB的匯編器ARMLINKARM連接器ARMSDARM和THUMB的符號(hào)調(diào)試器,6,312ARM運(yùn)行時(shí)庫(kù),ANSIC庫(kù)函數(shù)這個(gè)C函數(shù)庫(kù)是由以下幾部分組成1在ISOC標(biāo)準(zhǔn)中定義的函數(shù);2在SEMIHOSTED環(huán)境下SEMIHOSTING是針對(duì)ARM目標(biāo)機(jī)的一種機(jī)制,它能夠根據(jù)應(yīng)用程序代碼的輸入/輸出請(qǐng)求,與運(yùn)行有調(diào)試功能的主機(jī)通訊。這種技術(shù)允許主機(jī)為通常沒(méi)有輸入和輸出功能的目標(biāo)硬件提供主機(jī)資源用來(lái)實(shí)現(xiàn)C庫(kù)函數(shù)的與目標(biāo)相關(guān)的函數(shù);3被C和C編譯器所調(diào)用的支持函數(shù)。ARMC庫(kù)提供了額外的一些部件支持C,并為不同的結(jié)構(gòu)體系和處理器編譯代碼。C庫(kù)函數(shù)包含由ISOC庫(kù)標(biāo)準(zhǔn)定義的函數(shù)。,7,庫(kù)路徑,庫(kù)路徑是在ADS軟件安裝路徑的LIB目錄下ARMLIB和CPPLIB的兩個(gè)子目錄。與這些庫(kù)相應(yīng)的頭文件安裝在\ADSV1_2\INCLUDE目錄下環(huán)境變量ARMLIB必須被設(shè)置成指向庫(kù)路徑。另外一種指定ARMC和ARMC庫(kù)路徑的方法是,在鏈接的時(shí)候使用操作選項(xiàng)LIBPATHDIRECTORYDIRECTORY代表庫(kù)所在的路徑,來(lái)指明要裝載的庫(kù)的路徑。無(wú)需對(duì)ARMLIB和CPPLIB這兩個(gè)庫(kù)路徑分開(kāi)指明,鏈接器會(huì)自動(dòng)從用戶(hù)所指明的庫(kù)路徑中找出這兩個(gè)子目錄。,8,313GUI開(kāi)發(fā)環(huán)境CODEWARRIOR和AXD,CODEWARRIORFORARM是一套完整的集成開(kāi)發(fā)工具,充分發(fā)揮了ARMRISC的優(yōu)勢(shì),使產(chǎn)品開(kāi)發(fā)人員能夠很好的應(yīng)用尖端的片上系統(tǒng)技術(shù)該工具是專(zhuān)為基于ARMRISC的處理器而設(shè)計(jì)的,它可加速并簡(jiǎn)化嵌入式開(kāi)發(fā)過(guò)程中的每一個(gè)環(huán)節(jié),使得開(kāi)發(fā)人員只需通過(guò)一個(gè)集成軟件開(kāi)發(fā)環(huán)境就能研制出ARM產(chǎn)品,在整個(gè)開(kāi)發(fā)周期中,開(kāi)發(fā)人員無(wú)需離開(kāi)CODEWARRIOR開(kāi)發(fā)環(huán)境,因此節(jié)省了在操做工具上花的時(shí)間,使得開(kāi)發(fā)人員有更多的精力投入到代碼編寫(xiě)上來(lái),CODEWARRIOR集成開(kāi)發(fā)環(huán)境IDE為管理和開(kāi)發(fā)項(xiàng)目提供了簡(jiǎn)單多樣化的圖形用戶(hù)界面。用戶(hù)可以使用ADS的CODEWARRIORIDE為ARM和THUMB處理器開(kāi)發(fā)用C,C,或ARM匯編語(yǔ)言的程序代碼。,9,3132ADS調(diào)試器,調(diào)試器本身是一個(gè)軟件,用戶(hù)通過(guò)這個(gè)軟件使用DEBUGAGENT可以對(duì)包含有調(diào)試信息的,正在運(yùn)行的可執(zhí)行代碼進(jìn)行比如變量的查看,斷點(diǎn)的控制等調(diào)試操作。ADS中包含有3個(gè)調(diào)試器1AXDARMEXTENDEDDEBUGGERARM擴(kuò)展調(diào)試器;2ARMSDARMSYMBOLICDEBUGGERARM符號(hào)調(diào)試器;3DEBUGTARGETAXD可以在WINDOWS和UNIX下,進(jìn)行程序的調(diào)試。它為用C,C,和匯編語(yǔ)言編寫(xiě)的源代碼提供了一個(gè)全面的WINDOWS和UNIX環(huán)境。,10,314ADS實(shí)用程序,FROMELF這是ARM映像文件轉(zhuǎn)換工具。該命令將ELF格式的文件作為輸入文件,將該格式轉(zhuǎn)換為各種輸出格式的文件,包括PLAINBINARYBIN格式映像文件,MOTOROLA32BITSRECORDFORMATMOTOROLA32位S格式映像文件,INTELHEX32FORMATINTEL32位格式映像文件,和VERILOGLIKEHEXFORMATVERILOG16進(jìn)制文件。ARMARARM庫(kù)函數(shù)生成器將一系列ELF格式的目標(biāo)文件以庫(kù)函數(shù)的形式集合在一起,用戶(hù)可以把一個(gè)庫(kù)傳遞給一個(gè)鏈接器以代替幾個(gè)ELF文件。FLASHDOWNLOADER用于把二進(jìn)制映像文件下載到ARM開(kāi)發(fā)板上的FLASH存儲(chǔ)器的工具,11,315ADS支持的軟件,ADS為用戶(hù)提供下面的軟件,使用戶(hù)可以在軟件仿真的環(huán)境下或者在基于ARM的硬件環(huán)境調(diào)試用戶(hù)應(yīng)用程序。ARMULATOR這是一個(gè)ARM指令集仿真器,集成在ARM的調(diào)試器AXD中,它提供對(duì)ARM處理器的指令集的仿真,為ARM和THUMB提供精確的模擬。用戶(hù)可以在硬件尚未做好的情況下,開(kāi)發(fā)程序代碼。,12,32使用ADS創(chuàng)建工程,321建立一個(gè)工程在CODEWARRIOR中新建一個(gè)工程的方法有兩種,可以在工具欄中單擊“NEW”按鈕,也可以在“FILE”菜單中選擇“NEW”菜單。這樣就會(huì)打開(kāi)一個(gè)如圖所示的對(duì)話(huà)框。,13,提供了7種可選擇的工程類(lèi)型,ARMEXECUTABLIMAGE用于由ARM指令的代碼生成一個(gè)ELF格式的可執(zhí)行映像文件;ARMOBJECTLIBRARY用于由ARM指令的代碼生成一個(gè)ARMAR格式的目標(biāo)文件庫(kù);EMPTYPROJECT用于創(chuàng)建一個(gè)不包含任何庫(kù)或源文件的工程;MAKEFILEIMPORTERWIZARD用于將VISUALC的NMAKE或GNUMAKE文件轉(zhuǎn)入到CODEWARRIORIDE工程文件;THUMBARMEXECUTABLEIMAGE用于由ARM指令和THUMB指令的混和代碼生成一個(gè)可執(zhí)行的ELF格式的映像文件;THUMBEXECUTABLEIMAGE用于由THUMB指令創(chuàng)建一個(gè)可執(zhí)行的ELF格式的映像文件;THUMBOBJECTLIBRARY用于由THUMB指令的代碼生成一個(gè)ARMAR格式的目標(biāo)文件庫(kù)。在這里選擇ARMEXECUTABLEIMAGE,在“PROJECTNAME”中輸入工程文件名,點(diǎn)擊“LOCATION”文本框的“SET”按鈕,瀏覽選擇想要將該工程保存的路徑,將這些設(shè)置好后,點(diǎn)擊“確定”即可。,14,這個(gè)時(shí)候會(huì)出現(xiàn)LEDCIRCLEMCP的窗口,如圖82所示,有三個(gè)標(biāo)簽頁(yè),分別為FILES,LINKORDER,TARGET默認(rèn)的是顯示第一個(gè)標(biāo)簽頁(yè)FILES。通過(guò)在該標(biāo)簽頁(yè)點(diǎn)擊鼠標(biāo)右鍵,選中“ADDFILES”可以把要用到的源程序添加到工程中。,,15,對(duì)于本例,由于所有的源文件都還沒(méi)有建立,所以首先需要新建源文件。在“FILE”菜單中選擇“NEW”,在打開(kāi)的如圖81所示的對(duì)話(huà)框中,選擇標(biāo)簽頁(yè)FILE,在FILENAME中輸入要?jiǎng)?chuàng)建的文件名,輸入“HELLOWORLDS”,點(diǎn)擊“確定”關(guān)閉窗口。在這里還有一個(gè)細(xì)節(jié)。在建立好一個(gè)工程時(shí),默認(rèn)的TARGET是DEBUGREL,還有另外兩個(gè)可用的TARGET,分別為REALSE和DEBUG,這三個(gè)TARGET的含義分別為DEBUGREL使用該目標(biāo),在生成目標(biāo)的時(shí)候,會(huì)為每一個(gè)源文件生成調(diào)試信息;DEBUG使用該目標(biāo)為每一個(gè)源文件生成最完全的調(diào)試信息;RELEASE使用該目標(biāo)不會(huì)生成任何調(diào)試信息。在本例中,使用默認(rèn)的DEBUGREL目標(biāo)。,16,322編譯和鏈接工程前的配置,點(diǎn)擊EDIT菜單,選擇“DEBUGRELSETTINGS”本課程實(shí)驗(yàn)程序都使用默認(rèn)配置即可更多詳細(xì)配置說(shuō)明請(qǐng)看“ARMADS集成開(kāi)發(fā)環(huán)境的使用DOC”,17,33用AXD進(jìn)行代碼調(diào)試,AXDARMEXTENDEDDEBUGGER是ADS軟件中獨(dú)立于CODEWARRIORIDE的圖形軟件,打開(kāi)AXD軟件,默認(rèn)是打開(kāi)的目標(biāo)是ARMULATOR。這個(gè)也是調(diào)試的時(shí)候最常用的一種調(diào)試工具,本節(jié)主要是結(jié)合ARMULATOR介紹在AXD中進(jìn)行代碼調(diào)試的方法和過(guò)程,使讀者對(duì)AXD的調(diào)試有初步的了解。,18,編譯,調(diào)試,運(yùn)行,,19,調(diào)試過(guò)程中查看內(nèi)存數(shù)據(jù)情況,,20,調(diào)試過(guò)程中查看寄存器數(shù)據(jù)情況,,21,,提綱,1,3,2,ARM微處理器指令的分類(lèi),ARM微處理器指令的尋址方式,32ARM指令分類(lèi)及尋址方式,ARM微處理器指令的條件域,22,ARM微處理器的指令系統(tǒng),ARM微處理器的指令集是加載/存儲(chǔ)型的,也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對(duì)系統(tǒng)存儲(chǔ)器的訪(fǎng)問(wèn)則需要通過(guò)專(zhuān)門(mén)的加載/存儲(chǔ)指令來(lái)完成。ARM微處理器的指令集可以分為六大類(lèi)跳轉(zhuǎn)指令數(shù)據(jù)處理指令程序狀態(tài)寄存器(PSR)處理指令加載/存儲(chǔ)指令協(xié)處理器指令和異常產(chǎn)生指令,ARM微處理器指令的分類(lèi),23,ARM微處理器指令表1,ARM微處理器指令的分類(lèi),24,ARM微處理器指令表2,ARM微處理器指令的分類(lèi),25,ARM微處理器指令表3,ARM微處理器指令的分類(lèi),26,ARM微處理器指令表4,ARM微處理器指令的分類(lèi),27,ARM微處理器指令表5,ARM微處理器指令的分類(lèi),28,指令的條件域,當(dāng)處理器工作在ARM狀態(tài)時(shí),幾乎所有的指令均根據(jù)CPSR中條件碼的狀態(tài)和指令的條件域有條件的執(zhí)行。當(dāng)指令的執(zhí)行條件滿(mǎn)足時(shí),指令被執(zhí)行,否則指令被忽略。每一條ARM指令包含4位的條件碼,位于指令的最高4位3128。條件碼共有16種,每種條件碼可用兩個(gè)字符表示,這兩個(gè)字符可以添加在指令助記符的后面和指令同時(shí)使用。例如,跳轉(zhuǎn)指令B可以加上后綴EQ變?yōu)锽EQ表示“相等則跳轉(zhuǎn)”,即當(dāng)CPSR中的Z標(biāo)志置位時(shí)發(fā)生跳轉(zhuǎn)。,ARM微處理器指令的條件域,29,指令的條件域表1,ARM微處理器指令的條件域,30,指令的條件域表2,ARM微處理器指令的條件域,31,ARM指令的尋址方式,ARM指令系統(tǒng)支持如下幾種常見(jiàn)的尋址方式立即尋址寄存器尋址寄存器間接尋址基址變址尋址多寄存器尋址相對(duì)尋址堆棧尋址,ARM微處理器指令的尋址方式,32,ARM指令系統(tǒng),詳見(jiàn)常用ARM指令集及匯編PDF,33,例子ARM程序設(shè)計(jì),ARM匯編選擇排序詳見(jiàn)示例程序EXAMPLE/ADS_EXAMPLE/選擇排序/SELECTSORTARM匯編冒泡排序詳見(jiàn)示例程序EXAMPLE/ADS_EXAMPLE/冒泡排序/BUBBLESORT其他示例,
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-05
      頁(yè)數(shù): 33
      2人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:2007年度語(yǔ)言文字工作會(huì)議簡(jiǎn)介3538,報(bào)告人鄭澤之2007年3月16日,
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-05
      頁(yè)數(shù): 16
      7人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:51程序設(shè)計(jì)語(yǔ)言511程序設(shè)計(jì)語(yǔ)言的分類(lèi),1機(jī)器語(yǔ)言第一代語(yǔ)言2匯編語(yǔ)言第二代語(yǔ)言3高級(jí)語(yǔ)言第三代語(yǔ)言4第四代語(yǔ)言,51程序設(shè)計(jì)語(yǔ)言512程序設(shè)計(jì)語(yǔ)言的選擇,對(duì)高級(jí)語(yǔ)言選擇需綜合考慮以下幾個(gè)方面的因素來(lái)決定。(1)系統(tǒng)的應(yīng)用領(lǐng)域(2)軟件執(zhí)行環(huán)境(3)用戶(hù)要求(4)程序編寫(xiě)人員目前具備的知識(shí),52程序設(shè)計(jì)風(fēng)格521程序內(nèi)部的文檔,1標(biāo)識(shí)符標(biāo)識(shí)符的選擇不僅要滿(mǎn)足各種程序設(shè)計(jì)語(yǔ)言的語(yǔ)法限制,更重要的是名字要有鮮明的含義,使它能正確的表達(dá)它所代表的程序?qū)ο蟮膶?shí)際意義,以便于閱讀者理解程序。,52程序設(shè)計(jì)風(fēng)格521程序內(nèi)部的文檔,2注釋一類(lèi)是出現(xiàn)在模塊首部的序言性注釋?zhuān)?jiǎn)要描述了模塊的全名、模塊的功能和性能、主要算法、接口特點(diǎn)、重要的數(shù)據(jù)、調(diào)用格式、開(kāi)發(fā)歷史。另一類(lèi)注釋是插在整個(gè)程序的中間,在每個(gè)具有獨(dú)立功能的程序段之前的功能性注釋?zhuān)怯靡悦枋鱿旅娴倪@段程序的功能,也就是解釋下面所要做的工作是什么,或是執(zhí)行了下面語(yǔ)句后會(huì)產(chǎn)生怎樣的結(jié)果。,52程序設(shè)計(jì)風(fēng)格521程序內(nèi)部的文檔,3視覺(jué)組織(1)利用空行將自然的程序段分開(kāi)(2)利用縮進(jìn)形成階梯式層次結(jié)構(gòu),52程序設(shè)計(jì)風(fēng)格522數(shù)據(jù)說(shuō)明,(1)數(shù)據(jù)說(shuō)明次序標(biāo)準(zhǔn)化。數(shù)據(jù)說(shuō)明語(yǔ)句應(yīng)集中放在每個(gè)程序或模塊的可執(zhí)行部分之前,而且為了數(shù)據(jù)屬性更容易尋找,有利于測(cè)試、糾錯(cuò)和維護(hù),應(yīng)將數(shù)據(jù)說(shuō)明的次序固定下來(lái)。(2)當(dāng)多個(gè)變量名在同一個(gè)語(yǔ)句中說(shuō)明時(shí),應(yīng)該按字母順序排列這些變量。(3)對(duì)于一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)加注釋?zhuān)哉f(shuō)明用程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)時(shí)的方法和特點(diǎn);對(duì)容易混淆又不方便改變的變量名,也應(yīng)加注釋?zhuān)f(shuō)明變量名的作用以示區(qū)別。,52程序設(shè)計(jì)風(fēng)格523語(yǔ)句構(gòu)造,(1)不要為了節(jié)省空間而把多個(gè)語(yǔ)句寫(xiě)在一行上。(2)避免使用否定的邏輯條件。(3)使用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序更清晰。(4)避免使用臨時(shí)變量而使可讀性下降。(5)充分利用庫(kù)函數(shù)。,52程序設(shè)計(jì)風(fēng)格523語(yǔ)句構(gòu)造,(6)避免大量使用循環(huán)嵌套和條件嵌套。(7)避免不必要的轉(zhuǎn)移和使用GOTO語(yǔ)句。(8)盡量用公用過(guò)程或子程序去代替重復(fù)的功能代碼段。(9)按照初始化、數(shù)據(jù)處理、結(jié)果輸出順序安排程序。,52程序設(shè)計(jì)風(fēng)格524輸入和輸出,1輸入方面1采用統(tǒng)一的輸入格式,力求輸入格式簡(jiǎn)單。2對(duì)所有的輸入數(shù)據(jù)進(jìn)行有效性檢驗(yàn),從而識(shí)別錯(cuò)誤的輸入。3檢查輸入項(xiàng)重要組合的合法性。4使用數(shù)據(jù)結(jié)束標(biāo)志或文件結(jié)束標(biāo)志終止一批數(shù)據(jù)的輸入。5用統(tǒng)一方式對(duì)待文件結(jié)束條件。,52程序設(shè)計(jì)風(fēng)格524輸入和輸出,6輸入數(shù)據(jù)時(shí)允許使用自由格式輸入,也允許使用默認(rèn)值。7設(shè)計(jì)交互式輸入方式時(shí),應(yīng)明確提示輸入請(qǐng)求,詳細(xì)說(shuō)明可選擇數(shù)值類(lèi)型和范圍等有關(guān)信息。(8)當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)輸入格式有嚴(yán)格的要求時(shí),就保持輸入格式與輸入語(yǔ)句的一致性。2輸出方面1給所有輸出數(shù)據(jù)加標(biāo)志,并加以必要的說(shuō)明。2設(shè)計(jì)具有良好格式的輸出報(bào)表。,52程序設(shè)計(jì)風(fēng)格525面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格,1提高可復(fù)用性(1)提高方法的內(nèi)聚度,降低耦合度。(2)控制方法的規(guī)模。(3)保持方法的一致性。2提高可擴(kuò)充性(1)封裝實(shí)現(xiàn)策略(2)慎用公有方法(3)控制方法的規(guī)模,52程序設(shè)計(jì)風(fēng)格525面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格,3提高健壯性(1)預(yù)防用戶(hù)的操作錯(cuò)誤(2)檢查參數(shù)的合法性(3)使用動(dòng)態(tài)內(nèi)存分配機(jī)制(4)先測(cè)試后優(yōu)化,53程序的效率531程序運(yùn)行時(shí)間,(1)編碼前先化簡(jiǎn)算術(shù)表達(dá)式和邏輯表達(dá)式;(2)仔細(xì)檢查算法中嵌套的循環(huán),以確定是否有語(yǔ)句可以從內(nèi)層向外移;(3)盡量不使用多維數(shù)組;(4)盡量不使用指針和復(fù)雜的表;,53程序的效率531程序運(yùn)行時(shí)間,(5)使用執(zhí)行時(shí)間短的算術(shù)運(yùn)算;(6)在表達(dá)式中盡量避免出現(xiàn)不同的數(shù)據(jù)類(lèi)型;(7)盡量使用整數(shù)算術(shù)表達(dá)式和布爾表達(dá)式;(8)選用等效的高效率算法。,53程序的效率532存儲(chǔ)器效率,要選用有緊縮存儲(chǔ)器特性的編譯程序,生成較短目標(biāo)代碼,在必要時(shí)可以使用匯編語(yǔ)言。在大中型計(jì)算機(jī)系統(tǒng)中,一般來(lái)說(shuō),使用能保持功能域結(jié)構(gòu)化的控制結(jié)構(gòu),以減少頁(yè)面調(diào)度,減少內(nèi)外存之間的交換,是提高效率的好方法。提高程序執(zhí)行效率的技術(shù)也能提高存儲(chǔ)器效率。提高存儲(chǔ)器效率的關(guān)鍵在于程序的簡(jiǎn)單性。,53程序的效率533輸入/輸出的效率,(1)輸入/輸出的請(qǐng)求易于理解;(2)為減少通信的額外開(kāi)銷(xiāo),所有輸入/輸出都應(yīng)有適當(dāng)?shù)木彌_;(3)對(duì)輔存(如磁盤(pán))的訪(fǎng)問(wèn)應(yīng)選擇盡可能簡(jiǎn)單的方式;(4)對(duì)輔存的輸入/輸出應(yīng)以塊為單位進(jìn)行;,53程序的效率533輸入/輸出的效率,(5)任何不易理解的“超高效”的輸入/輸出,則不能采用;(6)應(yīng)考慮輸入輸出設(shè)備(如終端或打印機(jī)等)的特性,盡量改善其輸入/輸出質(zhì)量和速度;(7)好的輸入/輸出設(shè)計(jì)風(fēng)格對(duì)提高輸入/輸出效率會(huì)有明顯的效果。,54程序復(fù)雜性度量541MCCABE度量法,MCCABE度量法需要畫(huà)出程序圖。用這種度量方法得出的結(jié)果稱(chēng)為程序的環(huán)路復(fù)雜度。具體數(shù)值可由以下公式計(jì)算出V(G)MNP其中V(G)是有向圖G中的環(huán)數(shù);M是有向圖G中的有向弧數(shù)(包括強(qiáng)連通的輔助虛?。?54程序復(fù)雜性度量541MCCABE度量法,N是有向圖G中的節(jié)點(diǎn)數(shù);P是有向圖G中分離部分的數(shù)目,對(duì)一個(gè)正常程序而言,在程序圖中從入口點(diǎn)可達(dá)任何一個(gè)節(jié)點(diǎn),因此程序圖總是連通的,則P1。MCCABE度量法是對(duì)程序控制流復(fù)雜性的度量,而不考慮數(shù)據(jù)流。,54程序復(fù)雜性度量542HALSTEAD方法,HALSTEAD方法可根據(jù)其中的運(yùn)算符和操作數(shù)的總數(shù)來(lái)度量程序的復(fù)雜程度。設(shè)N1為程序中運(yùn)算符出現(xiàn)的總次數(shù),N2為操作數(shù)出現(xiàn)的總次數(shù),則程序長(zhǎng)度N為NN1N2設(shè)N1為程序中出現(xiàn)的不同操作符的個(gè)數(shù),N2為程序中出現(xiàn)的不同操作數(shù)的個(gè)數(shù),很顯然,N1,N2將隨著程序規(guī)模增大而增大,HALSTEAD給出預(yù)測(cè)程序長(zhǎng)度H的公式HN1LOG2N1N2LOG2N2,54程序復(fù)雜性度量542HALSTEAD方法,HN1LOG2N1N2LOG2N2經(jīng)過(guò)多次實(shí)驗(yàn)證明,預(yù)測(cè)長(zhǎng)度H與實(shí)際長(zhǎng)度N非常接近。HALSTEAD還給出了預(yù)測(cè)程序中包含錯(cuò)誤個(gè)數(shù)E的公式ENLOG2N1N2/3000HALSTEAD度量法只考慮程序的數(shù)據(jù)流而不考慮程序的控制流。,55用戶(hù)手冊(cè)和操作手冊(cè)551用戶(hù)手冊(cè)編寫(xiě),1引言編寫(xiě)目的,背景,定義,參考資料2用途功能,性能,安全保密3運(yùn)行環(huán)境硬設(shè)備,支持軟件,數(shù)據(jù)結(jié)構(gòu)4使用過(guò)程安裝與初始化,輸入,輸出,文卷查詢(xún),出錯(cuò)處理和恢復(fù),終端操作,55用戶(hù)手冊(cè)和操作手冊(cè)552操作手冊(cè)編寫(xiě),1引言編寫(xiě)目的,背景,定義,參考資料2軟件概述軟件的結(jié)構(gòu),程序表,文卷表3安裝與初始化4運(yùn)行說(shuō)明運(yùn)行表,運(yùn)行步驟,運(yùn)行1(標(biāo)識(shí)符)說(shuō)明,運(yùn)行2(標(biāo)識(shí)符)說(shuō)明5非常規(guī)過(guò)程6遠(yuǎn)程操作,
      下載積分: 6 賞幣
      上傳時(shí)間:2024-01-05
      頁(yè)數(shù): 23
      4人已閱讀
      ( 4 星級(jí))
    關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服客服 - 聯(lián)系我們

    機(jī)械圖紙?jiān)创a,實(shí)習(xí)報(bào)告等文檔下載

    備案號(hào):浙ICP備20018660號(hào)