亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

循環(huán)語句

  • 單片機(jī)入門基礎(chǔ)知識(shí)大全免費(fèi)下載

    單片機(jī)入門基礎(chǔ)知識(shí)大全免費(fèi)下載 單片機(jī)第八課(尋址方式與指令系統(tǒng)) 通過前面的學(xué)習(xí),我們已經(jīng)了解了單片機(jī)內(nèi)部的結(jié)構(gòu),并且也已經(jīng)知道,要控制單片機(jī),讓它為我們干學(xué),要用指令,我們已學(xué)了幾條指令,但很零散,從現(xiàn)在開始,我們將要系統(tǒng)地學(xué)習(xí)8051的指令部份。 一、概述 1、指令的格式 我們已知,要讓計(jì)算機(jī)做事,就得給計(jì)算機(jī)以指令,并且我們已知,計(jì)算機(jī)很“笨”,只能懂得數(shù)字,如前面我們寫進(jìn)機(jī)器的75H,90H,00H等等,所以指令的第一種格式就是機(jī)器碼格式,也說是數(shù)字的形式。但這種形式實(shí)在是為難我們?nèi)肆耍y記了,于是有另一種格式,助記符格式,如MOV P1,#0FFH,這樣就好記了。 這兩種格式之間的關(guān)系呢,我們不難理解,本質(zhì)上它們完全等價(jià),只是形式不一樣而已。 2、匯編 我們寫指令使用匯編格式,而計(jì)算機(jī)只懂機(jī)器碼格式,所以要將我們寫的匯編格式的指令轉(zhuǎn)換為機(jī)器碼格式,這種轉(zhuǎn)換有兩種方法:手工匯編和機(jī)器匯編。手工匯編實(shí)際上就是查表,因?yàn)檫@兩種格式純粹是格式不同,所以是一一對(duì)應(yīng)的,查一張表格就行了。不過手工查表總是嫌麻煩,所以就有了計(jì)算機(jī)軟件,用計(jì)算機(jī)軟件來替代手工查表,這就是機(jī)器匯編。 二、尋址 讓我們先來復(fù)習(xí)一下我們學(xué)過的一些指令:MOV P1,#0FFH,MOV R7,#0FFH這些指令都是將一些數(shù)據(jù)送到相應(yīng)的位置中去,為什么要送數(shù)據(jù)呢?第一個(gè)因?yàn)樗腿氲臄?shù)可以讓燈全滅掉,第二個(gè)是為了要實(shí)現(xiàn)延時(shí),從這里我們可以看出來,在用單片機(jī)的編程語言編程時(shí),經(jīng)常要用到數(shù)據(jù)的傳遞,事實(shí)上數(shù)據(jù)傳遞是單片機(jī)編程時(shí)的一項(xiàng)重要工作,一共有28條指令(單片機(jī)共111條指令)。下面我們就從數(shù)據(jù)傳遞類指令開始吧。 分析一下MOV P1,#0FFH這條指令,我們不難得出結(jié)論,第一個(gè)詞MOV是命令動(dòng)詞,也就是決定做什么事情的,MOV是MOVE少寫了一個(gè)E,所以就是“傳遞”,這就是指令,規(guī)定做什么事情,后面還有一些參數(shù),分析一下,數(shù)據(jù)傳遞必須要有一個(gè)“源”也就是你要送什么數(shù),必須要有一個(gè)“目的”,也就是你這個(gè)數(shù)要送到什么地方去,顯然在上面那條指令中,要送的數(shù)(源)就是0FFH,而要送達(dá)的地方(目的地)就是P1這個(gè)寄存器。在數(shù)據(jù)傳遞類指令中,均將目的地寫在指令的后面,而將源寫在最后。 這條指令中,送給P1是這個(gè)數(shù)本身,換言之,做完這條指令后,我們可以明確地知道,P1中的值是0FFH,但是并不是任何時(shí)候都可以直接給出數(shù)本身的。例如,在我們前面給出的延時(shí)程序例是這樣寫的: MAIN: SETB P1.0     ;(1)    LCALL DELAY ;(2)     CLR P1.0      ;(3)    LCALL DELAY   ;(4)     AJMP MAIN    ;(5) ;以下子程序 DELAY: MOV R7,#250   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8)    DJNZ R7,D1   ;(9)    RET        ;(10)    END        ;(11)     表1  MAIN: SETB P1.0     ;(1)    MOV 30H,#255     LCALL DELAY ;     CLR P1.0      ;(3)     MOV 30H,#200     LCALL DELAY   ;(4)     AJMP MAIN    ;(5) ;以下子程序 DELAY: MOV R7,30H   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8)    DJNZ R7,D1   ;(9)    RET        ;(10)    END        ;(11) 表2    這樣一來,我每次調(diào)用延時(shí)程序延時(shí)的時(shí)間都是相同的(大致都是0.13S),如果我提出這樣的要求:燈亮后延時(shí)時(shí)間為0.13S燈滅,燈滅后延時(shí)0.1秒燈亮,如此循環(huán),這樣的程序還能滿足要求嗎?不能,怎么辦?我們可以把延時(shí)程序改成這樣(見表2):調(diào)用則見表2中的主程,也就是先把一個(gè)數(shù)送入30H,在子程序中R7中的值并不固定,而是根據(jù)30H單元中傳過來的數(shù)確定。這樣就可以滿足要求。 從這里我們可以得出結(jié)論,在數(shù)據(jù)傳遞中要找到被傳遞的數(shù),很多時(shí)候,這個(gè)數(shù)并不能直接給出,需要變化,這就引出了一個(gè)概念:如何尋找操作數(shù),我們把尋找操作數(shù)所在單元的地址稱之為尋址。在這里我們直接使用數(shù)所在單元的地址找到了操作數(shù),所以稱這種方法為直接尋址。除了這種方法之外,還有一種,如果我們把數(shù)放在工作寄存器中,從工作寄存器中尋找數(shù)據(jù),則稱之為寄存器尋址。例:MOV A,R0就是將R0工作寄存器中的數(shù)據(jù)送到累加器A中去。提一個(gè)問題:我們知道,工作寄存器就是內(nèi)存單元的一部份,如果我們選擇工作寄存器組0,則R0就是RAM的00H單元,那么這樣一來,MOV A,00H,和MOV A,R0不就沒什么區(qū)別了嗎?為什么要加以區(qū)分呢?的確,這兩條指令執(zhí)行的結(jié)果是完全相同的,都是將00H單元中的內(nèi)容送到A中去,但是執(zhí)行的過程不同,執(zhí)行第一條指令需要2個(gè)周期,而第二條則只需要1個(gè)周期,第一條指令變成最終的目標(biāo)碼要兩個(gè)字節(jié)(E5H 00H),而第二條則只要一個(gè)字節(jié)(E8h)就可以了。 這么斤斤計(jì)較!不就差了一個(gè)周期嗎,如果是12M的晶振的話,也就1個(gè)微秒時(shí)間了,一個(gè)字節(jié)又能有多少? 不對(duì),如果這條指令只執(zhí)行一次,也許無所謂,但一條指令如果執(zhí)行上1000次,就是1毫秒,如果要執(zhí)行1000000萬次,就是1S的誤差,這就很可觀了,單片機(jī)做的是實(shí)時(shí)控制的事,所以必須如此“斤斤計(jì)較”。字節(jié)數(shù)同樣如此。 再來提一個(gè)問題,現(xiàn)在我們已知,尋找操作數(shù)可以通過直接給的方式(立即尋址)和直接給出數(shù)所在單元地址的方式(直接尋址),這就夠了嗎? 看這個(gè)問題,要求從30H單元開始,取20個(gè)數(shù),分別送入A累加器。 就我們目前掌握的辦法而言,要從30H單元取數(shù),就用MOV A,30H,那么下一個(gè)數(shù)呢?是31H單元的,怎么取呢?還是只能用MOV A,31H,那么20個(gè)數(shù),不是得20條指令才能寫完嗎?這里只有20個(gè)數(shù),如果要送200個(gè)或2000個(gè)數(shù),那豈不要寫上200條或2000條命令?這未免太笨了吧。為什么會(huì)出現(xiàn)這樣的狀況?是因?yàn)槲覀冎粫?huì)把地址寫在指令中,所以就沒辦法了,如果我們不是把地址直接寫在指令中,而是把地址放在另外一個(gè)寄存器單元中,根據(jù)這個(gè)寄存器單元中的數(shù)值決定該到哪個(gè)單元中取數(shù)據(jù),比如,當(dāng)前這個(gè)寄存器中的值是30H,那么就到30H單元中去取,如果是31H就到31H單元中去取,就可以解決這個(gè)問題了。怎么個(gè)解決法呢?既然是看的寄存器中的值,那么我們就可以通過一定的方法讓這里面的值發(fā)生變化,比如取完一個(gè)數(shù)后,將這個(gè)寄存器單元中的值加1,還是執(zhí)行同一條指令,可是取數(shù)的對(duì)象卻不一樣了,不是嗎。通過例子來說明吧。    MOV R7,#20    MOV R0,#30H LOOP:MOV A,@R0    INC R0    DJNZ R7,LOOP 這個(gè)例子中大部份指令我們是能看懂的,第一句,是將立即數(shù)20送到R7中,執(zhí)行完后R7中的值應(yīng)當(dāng)是20。第二句是將立即數(shù)30H送入R0工作寄存器中,所以執(zhí)行完后,R0單元中的值是30H,第三句,這是看一下R0單元中是什么值,把這個(gè)值作為地址,取這個(gè)地址單元的內(nèi)容送入A中,此時(shí),執(zhí)行這條指令的結(jié)果就相當(dāng)于MOV A,30H。第四句,沒學(xué)過,就是把R0中的值加1,因此執(zhí)行完后,R0中的值就是31H,第五句,學(xué)過,將R7中的值減1,看是否等于0,不等于0,則轉(zhuǎn)到標(biāo)號(hào)LOOP處繼續(xù)執(zhí)行,因此,執(zhí)行完這句后,將轉(zhuǎn)去執(zhí)行MOV A,@R0這句話,此時(shí)相當(dāng)于執(zhí)行了MOV A,31H(因?yàn)榇藭r(shí)的R0中的值已是31H了),如此,直到R7中的值逐次相減等于0,也就是循環(huán)20次為止,就實(shí)現(xiàn)了我們的要求:從30H單元開始將20個(gè)數(shù)據(jù)送入A中。 這也是一種尋找數(shù)據(jù)的方法,由于數(shù)據(jù)是間接地被找到的,所以就稱之為間址尋址。注意,在間址尋址中,只能用R0或R1存放等尋找的數(shù)據(jù)。 二、指令 數(shù)據(jù)傳遞類指令 1) 以累加器為目的操作數(shù)的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 第一條指令中,Rn代表的是R0-R7。第二條指令中,direct就是指的直接地址,而第三條指令中,就是我們剛才講過的。第四條指令是將立即數(shù)data送到A中。 下面我們通過一些例子加以說明: MOV A,R1 ;將工作寄存器R1中的值送入A,R1中的值保持不變。 MOV A,30H ;將內(nèi)存30H單元中的值送入A,30H單元中的值保持不變。 MOV A,@R1 ;先看R1中是什么值,把這個(gè)值作為地址,并將這個(gè)地址單元中的值送入A中。如執(zhí)行命令前R1中的值為20H,則是將20H單元中的值送入A中。 MOV A,#34H ;將立即數(shù)34H送入A中,執(zhí)行完本條指令后,A中的值是34H。 2)以寄存器Rn為目的操作的指令 MOV Rn,A   MOV Rn,direct   MOV Rn,#data 這組指令功能是把源地址單元中的內(nèi)容送入工作寄存器,源操作數(shù)不變。

    標(biāo)簽: 單片機(jī) 免費(fèi)下載 基礎(chǔ)知識(shí)

    上傳時(shí)間: 2013-10-13

    上傳用戶:3294322651

  • 驅(qū)動(dòng)程序與應(yīng)用程序的接口

    有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語言的訪問設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問的第一步就是打開一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開一個(gè)設(shè)備的句柄為了打開一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類KunitizedName來構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開句柄用這種方式打開一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫提供兩個(gè)助手類來使獲得對(duì)該接口的訪問容易一些,這兩個(gè)類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個(gè)實(shí)例來獲得一個(gè)或更多的CdeviceInterface類的實(shí)例。CdeviceInterface類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來打開設(shè)備。下面用一個(gè)小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(yīng)關(guān)系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶級(jí)句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問的時(shí)候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會(huì)在打開設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒有特權(quán)的用戶企圖打開這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過調(diào)用Kirp::Mdl來存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個(gè)單一的緩沖來作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪問通過調(diào)用KIrp::Mdl來實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫訪問權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執(zhí)行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口

    上傳時(shí)間: 2013-10-17

    上傳用戶:gai928943

  • 4位八段數(shù)碼管的十進(jìn)制加計(jì)數(shù)仿真實(shí)驗(yàn)(含電路圖和仿真文件)

    4位八段數(shù)碼管的十進(jìn)制加計(jì)數(shù)仿真實(shí)驗(yàn),程序采用匯編語言編寫。此程序在仿真軟件上與EDN-51實(shí)驗(yàn)板上均通過。仿真圖中的數(shù)碼管位驅(qū)動(dòng)采用74HC04,如按EDN-51板上用想同的PNP三極管驅(qū)動(dòng)在仿真軟件上則無法正常顯示。程序共分5塊,STAR0為數(shù)據(jù)初始化,STAR2為計(jì)數(shù)子程序,STAR3為4位數(shù)碼管動(dòng)態(tài)顯示子程序,STAR4為按鍵掃描子程序,STS00是延時(shí)子程序。由于EDN-51實(shí)驗(yàn)板上沒裝BCD譯碼器,所以編寫程序比較煩瑣。 程序如下: ORG 0000H                LJMP STAR0                        ;轉(zhuǎn)程序 SRAR0ORG 0200H                                          ;程序地址 0200HSTAR0:   CLR 00                                  ;位 00 清 0               MOV P1,#0FFH                    ;#0FFH-->P1               MOV P2,#0FH                      ;#0FH-->P2               MOV P0,#0FFH                    ;#0FFH-->P0               MOV 30H,#00H                    ;#00H-->30H               MOV 31H,#00H                    ;#00H-->30H               MOV 32H,#00H                    ;#00H-->30H               MOV 33H,#00H                    ;#00H-->30H               LJMP STAR3                        ;轉(zhuǎn)程序 SRAR3STAR2:   MOV A,#0AH                       ;#0AH-->A               INC 30H                                ;30H+1               CJNE A,30H,STJE                 ;30H 與 A 比較,不等轉(zhuǎn)移 STJE               MOV 30H,#00H                    ;#00H-->30H               INC 31H                                ;31H+1               CJNE A,31H,STJE                 ;31H 與 A 比較,不等轉(zhuǎn)移 STJE               MOV 31H,#00H                    ;#00H-->31H               INC 32H                                ;32H+1               CJNE A,32H,STJE                 ;32H 與 A 比較,不等轉(zhuǎn)移 STJE               MOV 32H,#00H                    ;#00H-->32H               INC 33H                                ;33H+1               CJNE A,33H,STJE                 ;33H 與 A 比較,不等轉(zhuǎn)移 STJE               MOV 33H,#00H                    ;#00H-->33H               MOV 32H,#00H                    ;#00H-->32H               MOV 31H,#00H                    ;#00H-->31H               MOV 30H,#00H                    ;#00H-->30HSTJE:      RET                                        ;子程序調(diào)用返回STAR3:   MOV R0,#30H                      ;#30H-->R0                MOV R6,#0F7H                   ;#0F7H-->R6SMG0:    MOV P1,#0FFH                    ;#0FFH-->P1                MOV A,R6                            ;R6-->A                MOV P1,A                            ;A-->P1                RR A                                     ;A向右移一位                MOV R6,A                           ;A-->R6                MOV A,@R0                       ;@R0-->A                ADD A,#04H                        ;#04H-->A                MOVC A,@A+PC               ;A+PC-->                MOV P0,A                            ;A-->P0                AJMP SMG1                        ;轉(zhuǎn)程序 SMG1SDATA:   DB 0C0H,0F9H,0A4H,0B0H,99H                DB 92H,82H,0F8H,80H,90H SMG1:     LCALL STAR4                    ;轉(zhuǎn)子程序 SRAR4                LCALL STS00                     ;轉(zhuǎn)子程序 STS00                INC R0                                 ;R0+1                CJNE R6,#07FH,SMG0       ;#07FH 與 R6 比較,不等轉(zhuǎn)移 SMG0                AJMP STAR3                       ;轉(zhuǎn)程序 SRAR3STAR4:    JNB P2.0,ST1                      ;P2.0=0 轉(zhuǎn) ST1                CLR 00                                 ;位 00 清 0                SJMP ST3                            ;轉(zhuǎn)ST3ST1:         JNB 00,ST2                          ;位 00=0 轉(zhuǎn) ST2                SJMP ST3                            ;轉(zhuǎn) ST3ST2:         LCALL STAR2                    ;調(diào)子程序 STAR2                SETB 00                               ;位 00 置 1ST3:         RET                                      ;子程序調(diào)用返回ORG 0100H                                         ;地址 0100HSTS00:     MOV 60H,#003H                ;#003H-->60H  (211)DE001:     MOV 61H,#0FFH               ;#0FFH-->61H (255)DE002:     DJNZ 61H,DE002               ;61H 減 1 不等于 0 轉(zhuǎn) DE002                 DJNZ 60H,DE001               ;60H 減 1 不等于 0 轉(zhuǎn) DE001                 RET                                     ;子程序調(diào)用返回                 END                                    ;結(jié)束 上次的程序共有293句,經(jīng)小組成員建議,本人經(jīng)幾天的研究寫了下面的這個(gè)程序,現(xiàn)在的程序用了63句,精簡(jiǎn)了230句。功能沒有減。如誰有更簡(jiǎn)練的程序,請(qǐng)發(fā)上來,大家一起學(xué)習(xí)。 4位八段數(shù)碼管的十進(jìn)制加計(jì)數(shù)仿真實(shí)驗(yàn)(含電路圖和仿真文件)

    標(biāo)簽: 數(shù)碼管 十進(jìn)制 仿真實(shí)驗(yàn) 仿真

    上傳時(shí)間: 2013-10-11

    上傳用戶:sssl

  • 微機(jī)原理與接口課件

    微處理器及微型計(jì)算機(jī)的發(fā)展概況  第一代微處理器是以Intel公司1971年推出的4004,4040為代表的四位微處理機(jī)。      第二代微處理機(jī)(1973年~1977年),典型代表有:Intel 公司的8080、8085;Motorola公司的M6800以及Zlog公司的Z80。     第三代微處理機(jī) 第三代微機(jī)是以16位機(jī)為代表,基本上是在第二代微機(jī)的基礎(chǔ)上發(fā)展起來的。其中Intel公司的8088。8086是在8085的基礎(chǔ)發(fā)展起來的;M68000是Motorola公司在M6800 的基礎(chǔ)發(fā)展起來的;     第四代微處理機(jī) 以Intel公司1984年10月推出的80386CPU和1989年4月推出的80486CPU為代表,     第五代微處理機(jī)的發(fā)展更加迅猛,1993年3月被命名為PENTIUM的微處理機(jī)面世,98年P(guān)ENTIUM 2又被推向市場(chǎng)。 INTEL CPU 發(fā)展歷史Intel第一塊CPU 4004,4位主理器,主頻108kHz,運(yùn)算速度0.06MIPs(Million Instructions Per Second, 每秒百萬條指令),集成晶體管2,300個(gè),10微米制造工藝,最大尋址內(nèi)存640 bytes,生產(chǎn)曰期1971年11月. 8085,8位主理器,主頻5M,運(yùn)算速度0.37MIPs,集成晶體管6,500個(gè),3微米制造工藝,最大尋址內(nèi)存64KB,生產(chǎn)曰期1976年 8086,16位主理器,主頻4.77/8/10MHZ,運(yùn)算速度0.75MIPs,集成晶體管29,000個(gè),3微米制造工藝,最大尋址內(nèi)存1MB,生產(chǎn)曰期1978年6月. 80486DX,DX2,DX4,32位主理器,主頻25/33/50/66/75/100MHZ,總線頻率33/50/66MHZ,運(yùn)算速度20~60MIPs,集成晶體管1.2M個(gè),1微米制造工藝,168針PGA,最大尋址內(nèi)存4GB,緩存8/16/32/64KB,生產(chǎn)曰期1989年4月 Celeron一代, 主頻266/300MHZ(266/300MHz w/o L2 cache, Covington芯心 (Klamath based),300A/333/366/400/433/466/500/533MHz w/128kB L2 cache, Mendocino核心 (Deschutes-based), 總線頻率66MHz,0.25微米制造工藝,生產(chǎn)曰期1998年4月) Pentium 4 (478針),至今分為三種核心:Willamette核心(主頻1.5G起,FSB400MHZ,0.18微米制造工藝),Northwood核心(主頻1.6G~3.0G,FSB533MHZ,0.13微米制造工藝, 二級(jí)緩存512K),Prescott核心(主頻2.8G起,FSB800MHZ,0.09微米制造工藝,1M二級(jí)緩存,13條全新指令集SSE3),生產(chǎn)曰期2001年7月. 更大的緩存、更高的頻率、 超級(jí)流水線、分支預(yù)測(cè)、亂序執(zhí)行超線程技術(shù) 微型計(jì)算機(jī)組成結(jié)構(gòu)單片機(jī)簡(jiǎn)介單片機(jī)即單片機(jī)微型計(jì)算機(jī),是將計(jì)算機(jī)主機(jī)(CPU、    內(nèi)存和I/O接口)集成在一小塊硅片上的微型機(jī)。 三、計(jì)算機(jī)編程語言的發(fā)展概況 機(jī)器語言  機(jī)器語言就是0,1碼語言,是計(jì)算機(jī)唯一能理解并直接執(zhí)行的語言。匯編語言  用一些助記符號(hào)代替用0,1碼描述的某種機(jī)器的指令系統(tǒng),匯編語言就是在此基礎(chǔ)上完善起來的。高級(jí)語言  BASIC,PASCAL,C語言等等。用高級(jí)語言編寫的程序稱源程序,它們必須通過編譯或解釋,連接等步驟才能被計(jì)算機(jī)處理。 面向?qū)ο笳Z言  C++,Java等編程語言是面向?qū)ο蟮恼Z言。 1.3 微型計(jì)算機(jī)中信息的表示及運(yùn)算基礎(chǔ)(一) 十進(jìn)制ND有十個(gè)數(shù)碼:0~9,逢十進(jìn)一。 例 1234.5=1×103 +2×102 +3×101 +4×100 +5×10-1加權(quán)展開式以10稱為基數(shù),各位系數(shù)為0~9,10i為權(quán)。 一般表達(dá)式:ND= dn-1×10n-1+dn-2×10n-2 +…+d0×100 +d-1×10-1+… (二) 二進(jìn)制NB兩個(gè)數(shù)碼:0、1, 逢二進(jìn)一。 例 1101.101=1×23+1×22+0×21+1×20+1×2-1+1×2-3 加權(quán)展開式以2為基數(shù),各位系數(shù)為0、1, 2i為權(quán)。 一般表達(dá)式:  NB = bn-1×2n-1 + bn-2×2n-2 +…+b0×20 +b-1×2-1+… (三)十六進(jìn)制NH十六個(gè)數(shù)碼0~9、A~F,逢十六進(jìn)一。 例:DFC.8=13×162 +15×161 +12×160 +8×16-1 展開式以十六為基數(shù),各位系數(shù)為0~9,A~F,16i為權(quán)。 一般表達(dá)式: NH= hn-1×16n-1+ hn-2×16n-2+…+ h0×160+ h-1×16-1+… 二、不同進(jìn)位計(jì)數(shù)制之間的轉(zhuǎn)換 (二)二進(jìn)制與十六進(jìn)制數(shù)之間的轉(zhuǎn)換  24=16 ,四位二進(jìn)制數(shù)對(duì)應(yīng)一位十六進(jìn)制數(shù)。舉例:(三)十進(jìn)制數(shù)轉(zhuǎn)換成二、十六進(jìn)制數(shù)整數(shù)、小數(shù)分別轉(zhuǎn)換   1.整數(shù)轉(zhuǎn)換法“除基取余”:十進(jìn)制整數(shù)不斷除以轉(zhuǎn)換進(jìn)制基數(shù),直至商為0。每除一次取一個(gè)余數(shù),從低位排向高位。舉例: 2. 小數(shù)轉(zhuǎn)換法“乘基取整”:用轉(zhuǎn)換進(jìn)制的基數(shù)乘以小數(shù)部分,直至小數(shù)為0或達(dá)到轉(zhuǎn)換精度要求的位數(shù)。每乘一次取一次整數(shù),從最高位排到最低位。舉例:  三、帶符號(hào)數(shù)的表示方法 機(jī)器數(shù):機(jī)器中數(shù)的表示形式。真值: 機(jī)器數(shù)所代表的實(shí)際數(shù)值。舉例:一個(gè)8位機(jī)器數(shù)與它的真值對(duì)應(yīng)關(guān)系如下:  真值: X1=+84=+1010100B     X2=-84= -1010100B   機(jī)器數(shù):[X1]機(jī)= 01010100    [X2]機(jī)= 11010100(二)原碼、反碼、補(bǔ)碼最高位為符號(hào)位,0表示 “+”,1表示“-”。 數(shù)值位與真值數(shù)值位相同。 例  8位原碼機(jī)器數(shù):  真值:   x1  = +1010100B     x2    =- 1010100B      機(jī)器數(shù): [x1]原  = 01010100  [x2]原 = 11010100原碼表示簡(jiǎn)單直觀,但0的表示不唯一,加減運(yùn)算復(fù)雜。 正數(shù)的反碼與原碼表示相同。       負(fù)數(shù)反碼符號(hào)位為 1,數(shù)值位為原碼數(shù)值各位取反。 例 8位反碼機(jī)器數(shù):          x= +4: [x]原= 00000100 [x]反= 00000100     x= -4: [x]原= 10000100  [x]反= 111110113、補(bǔ)碼(Two’s Complement)正數(shù)的補(bǔ)碼表示與原碼相同。       負(fù)數(shù)補(bǔ)碼等于2n-abs(x)8位機(jī)器數(shù)表示的真值四、 二進(jìn)制編碼例:求十進(jìn)制數(shù)876的BCD碼 876= 1000 0111 0110 BCD  876= 36CH = 1101101100B 2、字符編碼    美國標(biāo)準(zhǔn)信息交換碼ASCII碼,用于計(jì)算      機(jī)與計(jì)算機(jī)、計(jì)算機(jī)與外設(shè)之間傳遞信息。 3、漢字編碼 “國家標(biāo)準(zhǔn)信息交換用漢字編碼”(GB2312-80標(biāo)準(zhǔn)),簡(jiǎn)稱國標(biāo)碼。 用兩個(gè)七位二進(jìn)制數(shù)編碼表示一個(gè)漢字 例如“巧”字的代碼是39H、41H漢字內(nèi)碼例如“巧”字的代碼是0B9H、0C1H1·4  運(yùn)算基礎(chǔ) 一、二進(jìn)制數(shù)的運(yùn)算加法規(guī)則:“逢2進(jìn)1”       減法規(guī)則:“借1當(dāng)2”       乘法規(guī)則:“逢0出0,全1出1”二、二—十進(jìn)制數(shù)的加、減運(yùn)算        BCD數(shù)的運(yùn)算規(guī)則 循十進(jìn)制數(shù)的運(yùn)算規(guī)則“逢10進(jìn)1”。但計(jì)算機(jī)在進(jìn)行這種運(yùn)算時(shí)會(huì)出現(xiàn)潛在的錯(cuò)誤。為了解決BCD數(shù)的運(yùn)算問題,采取調(diào)整運(yùn)算結(jié)果的措施:即“加六修正”和“減六修正”例:10001000(BCD)+01101001(BCD)        =000101010111(BCD)                1 0 0 0 1 0 0 0       +  0 1 1 0 1 0 0 1           1 1 1 1 0 0 0 1        +  0 1 1 0 0 1 1 0     ……調(diào)整          1 0 1 0 1 0 1 1 1                                        進(jìn)位  例:  10001000(BCD)- 01101001(BCD)= 00011001(BCD)                   1 0 0 0 1 0 0 0            -   0 1 1 0 1 0 0 1             0 0 0 1 1 1 1 1         -                    0 1 1 0   ……調(diào)整             0 0 0 1 1 0 0 1  三、 帶符號(hào)二進(jìn)制數(shù)的運(yùn)算 1.5 幾個(gè)重要的數(shù)字邏輯電路編碼器譯碼器計(jì)數(shù)器微機(jī)自動(dòng)工作的條件程序指令順序存放自動(dòng)跟蹤指令執(zhí)行1.6 微機(jī)基本結(jié)構(gòu)微機(jī)結(jié)構(gòu)各部分組成連接方式1、以CPU為中心的雙總線結(jié)構(gòu);2、以內(nèi)存為中心的雙總線結(jié)構(gòu);3、單總線結(jié)構(gòu)CPU結(jié)構(gòu)管腳特點(diǎn)  1、多功能;2、分時(shí)復(fù)用內(nèi)部結(jié)構(gòu)  1、控制; 2、運(yùn)算; 3、寄存器; 4、地址程序計(jì)數(shù)器堆棧定義 1、定義;2、管理;3、堆棧形式

    標(biāo)簽: 微機(jī)原理 接口

    上傳時(shí)間: 2013-10-17

    上傳用戶:erkuizhang

  • Linux下一種高性能定時(shí)器池的實(shí)現(xiàn)

    提出Linux用戶空間下的一種高性能定時(shí)器池的實(shí)現(xiàn)方法。主要基于時(shí)間輪、紅黑樹及Linux內(nèi)核提供了一種利于管理的定時(shí)器句柄Timerfd。結(jié)合紅黑樹、位圖、時(shí)間輪等技術(shù),設(shè)計(jì)一種高性能級(jí)定時(shí)器池。池中定時(shí)器的粒度可達(dá)到40 ms,滿足用戶空間低延時(shí)的應(yīng)用需求,同時(shí)又可以方便地管理一定數(shù)量的定時(shí)器。

    標(biāo)簽: Linux 性能 定時(shí)器

    上傳時(shí)間: 2014-12-29

    上傳用戶:lht618

  • LINUX系統(tǒng)分析與高級(jí)編程技術(shù)

    本書介紹Linux環(huán)境下的編程方法,內(nèi)容包括Linux系統(tǒng)命令、 Shell腳本、編程語言(gawk、Perl)、系統(tǒng)內(nèi)核、安全體系、X Window等,內(nèi)容豐富、論述全面,涵蓋了Linux系統(tǒng)的方方面面。本書附帶光盤包括了RedHat Linux系統(tǒng)的最新版本,及安裝方法,還包括本書的大量程序代碼,極大地方便了讀者,為使用和將要使用Linux系統(tǒng)的技術(shù)人員提供了較全面的參考。    目      錄前言第一篇   Linux系統(tǒng)介紹第1章   Linux簡(jiǎn)介 …11.1   Linux 的起源 11.2   自由軟件基金會(huì)的GNU計(jì)劃 11.3   Linux 的發(fā)音 21.4   Linux 的特點(diǎn) 21.5   基本硬件要求 31.6   如何獲得Linux 31.6.1   從網(wǎng)上下載Linux 31.6.2   從光盤獲得Linux 31.7   涉及Linux 的Web 網(wǎng)址和新聞?dòng)懻摻M 61.8   Linux 的不足之處 7第2章   外殼及常用命令 82.1   登錄和退出 82.2   Linux 系統(tǒng)的外殼 82.3   外殼的常用命令 92.3.1   更改帳號(hào)密碼 92.3.2   聯(lián)機(jī)幫助 92.3.3   遠(yuǎn)程登錄 92.3.4   文件或目錄處理 92.3.5   改變工作目錄 102.3.6   復(fù)制文件 102.3.7   移動(dòng)或更改文件、目錄名稱 102.3.8   建立新目錄 102.3.9   刪除目錄 112.3.10   刪除文件 112.3.11   列出當(dāng)前所在的目錄位置 112.3.12   查看文件內(nèi)容 112.3.13   分頁查看文件內(nèi)容 112.3.14   查看目錄所占磁盤容量 112.3.15   文件傳輸 112.3.16   文件權(quán)限的設(shè)定 122.3.17   檢查自己所屬的工作組名稱 132.3.18   改變文件或目錄工作組所有權(quán) 132.3.19   改變文件或目錄的最后修改時(shí)間 132.3.20   文件的鏈接 132.3.21   文件中字符串的查尋 142.3.22   查尋文件或命令的路徑 142.3.23   比較文件或目錄的內(nèi)容 142.3.24   文件打印輸出 142.3.25   一般文件的打印 142.3.26   troff 文件的打印 142.3.27   打印機(jī)控制命令 142.3.28   進(jìn)程控制 152.3.29   外殼變量 162.3.30   環(huán)境變量 162.3.31   別名 162.3.32   歷史命令 172.3.33   文件的壓縮 172.3.34   管道命令的使用 172.3.35   輸入/輸出控制 182.3.36   查看系統(tǒng)中的用戶 182.3.37   改變用戶名 182.3.38   查看用戶名 182.3.39   查看當(dāng)前系統(tǒng)上所有工作站       的用戶 192.3.40   與某工作站上的用戶交談 192.3.41   檢查遠(yuǎn)程系統(tǒng)是否正常 192.3.42   電子郵件的使用簡(jiǎn)介 19第3章   Linux系統(tǒng)的網(wǎng)絡(luò)功能 213.1   Linux支持的網(wǎng)絡(luò)協(xié)議 213.1.1   TCP/IP 213.1.2   TCP/IP 版本 6 213.1.3   IPX/SPX 213.1.4   AppleTalk 協(xié)議集 213.1.5   廣域網(wǎng) 223.1.6   ISDN 223.1.7   PPP、SLIP及PLIP 223.1.8   業(yè)余無線電 223.1.9   ATM 223.2   Linux系統(tǒng)下的文件共享和打印共享 223.2.1   Machintosh 環(huán)境 223.2.2   Windows 環(huán)境 223.2.3   Novell 環(huán)境 233.2.4   UNIX 環(huán)境 233.3   Linux系統(tǒng)中的Internet/Intranet功能 233.3.1   郵件 233.3.2   Web 服務(wù)器 243.3.3   Web 瀏覽器 243.3.4   FTP 服務(wù)器和客戶機(jī) 243.3.5   新聞服務(wù) 243.3.6   域名系統(tǒng) 243.3.7   DHCP和 bootp 243.3.8   NIS 243.4   Linux系統(tǒng)下應(yīng)用程序的遠(yuǎn)程執(zhí)行 243.4.1   Telnet 253.4.2   遠(yuǎn)程命令 253.4.3   X Window 253.5   Linux系統(tǒng)的網(wǎng)絡(luò)互連功能 253.5.1   路由器 253.5.2   網(wǎng)橋 253.5.3   IP偽裝 253.5.4   IP統(tǒng)計(jì) 263.5.5   IP 別名 263.5.6   流量限制器 263.5.7   防火墻 263.5.8   端口下傳 263.5.9   負(fù)載平衡 263.5.10   EQL 273.5.11   代理服務(wù)器 273.5.12   按需撥號(hào) 273.5.13   管道、移動(dòng)IP和虛擬個(gè)人網(wǎng)絡(luò) 273.6   Linux系統(tǒng)中的網(wǎng)絡(luò)管理 273.6.1   Linux系統(tǒng)下的網(wǎng)絡(luò)管理應(yīng)用程序 273.6.2   SNMP 283.7   企業(yè)級(jí)Linux網(wǎng)絡(luò) 283.7.1   高可用性 283.7.2   RAID 283.7.3   冗余網(wǎng)絡(luò) 28第4章   Linux系統(tǒng)管理簡(jiǎn)介 294.1   root 帳號(hào) 294.2   啟動(dòng)和關(guān)閉系統(tǒng) 294.2.1   從軟盤啟動(dòng) 294.2.2   使用LILO 啟動(dòng) 294.2.3   關(guān)閉Linux系統(tǒng) 304.3   掛接文件系統(tǒng) 304.3.1   掛接軟盤 304.3.2   創(chuàng)建新的文件系統(tǒng) 304.3.3   卸載文件系統(tǒng) 314.4   檢查文件系統(tǒng) 314.5   使用文件作為交換區(qū) 314.6   系統(tǒng)和文件的備份 324.7   設(shè)置系統(tǒng) 334.7.1   設(shè)置系統(tǒng)名 334.7.2   使用維護(hù)磁盤 334.7.3   重新設(shè)置root 帳號(hào)口令 334.7.4   設(shè)置登錄信息 33第二篇   Linux高級(jí)語言及管理編程第5章   外殼編程 355.1   創(chuàng)建和運(yùn)行外殼程序 355.1.1   創(chuàng)建外殼程序 355.1.2   運(yùn)行外殼程序 355.2   使用外殼變量 365.2.1   給變量賦值 365.2.2   讀取變量的值 375.2.3   位置變量和其他系統(tǒng)變量 375.2.4   引號(hào)的作用 375.3   數(shù)值運(yùn)算命令 385.4   條件表達(dá)式 405.4.1   if 表達(dá)式 405.4.2   case 表達(dá)式 415.5   循環(huán)語句 425.5.1   for 語句 435.5.2   while 語句 435.5.3   until 語句 445.6   shift 命令 445.7   select 語句 455.8   repeat 語句 465.9   子函數(shù) 46第6章   gawk語言編程 486.1   gawk的主要功能 486.2   如何執(zhí)行g(shù)awk程序 486.3   文件、記錄和字段 486.4   模式和動(dòng)作 496.5   比較運(yùn)算和數(shù)值運(yùn)算 506.6   內(nèi)部函數(shù) 506.6.1   隨機(jī)數(shù)和數(shù)學(xué)函數(shù) 516.6.2   字符串的內(nèi)部函數(shù) 516.6.3   輸入輸出的內(nèi)部函數(shù) 526.7   字符串和數(shù)字 526.8   格式化輸出 526.9   改變字段分隔符 546.10   元字符 546.11   調(diào)用gawk程序 556.12   BEGIN和END 556.13   變量 566.14   內(nèi)置變量 566.15   控制結(jié)構(gòu) 576.15.1   if 表達(dá)式 576.15.2   while 循環(huán) 576.15.3   for 循環(huán) 586.15.4   next 和 exit 586.16   數(shù)組 586.17   用戶自定義函數(shù) 586.18   幾個(gè)實(shí)例 59第7章   Perl語言編程 607.1   什么是Perl 607.2   Perl的現(xiàn)狀 607.3   初試Perl 607.4   Perl變量 607.4.1   標(biāo)量 607.4.2   數(shù)組 637.4.3   相關(guān)數(shù)組 657.5   文件句柄和文件操作 657.6   循環(huán)結(jié)構(gòu) 667.6.1   foreach循環(huán) 667.6.2   判斷運(yùn)算 667.6.3   for循環(huán) 677.6.4   while 和 until循環(huán) 677.7   條件結(jié)構(gòu) 677.8   字符匹配 687.9   替換和翻譯 697.9.1   替換 697.9.2   翻譯 707.10   子過程 707.10.1   子過程的定義 707.10.2   參數(shù) 707.10.3   返回值 707.11   Perl程序的完整例子 71第三篇   Linux系統(tǒng)內(nèi)核分析第8章   Linux內(nèi)核簡(jiǎn)介 738.1   系統(tǒng)初始化 738.2   系統(tǒng)運(yùn)行 738.3   內(nèi)核提供的各種系統(tǒng)調(diào)用 748.3.1   進(jìn)程的基本概念和系統(tǒng)            的基本數(shù)據(jù)結(jié)構(gòu) 748.3.2   創(chuàng)建和撤消進(jìn)程 748.3.3   執(zhí)行程序 748.4   存取文件系統(tǒng) 75第9章   系統(tǒng)進(jìn)程 769.1   什么是進(jìn)程 769.2   進(jìn)程的結(jié)構(gòu) 769.3   進(jìn)程調(diào)度 789.4   進(jìn)程使用的文件 799.5   進(jìn)程使用的虛擬內(nèi)存 809.6   創(chuàng)建進(jìn)程 819.7   進(jìn)程的時(shí)間和計(jì)時(shí)器 819.7.1   實(shí)時(shí)時(shí)鐘 819.7.2   虛擬時(shí)鐘 819.7.3   形象時(shí)鐘 819.8   程序的執(zhí)行 829.8.1   ELF文件 829.8.2   腳本文件 82第10章   內(nèi)存管理 8310.1   內(nèi)存管理的作用 8310.2   虛擬內(nèi)存的抽象模型 8310.3   按需裝入頁面 8410.4   交換 8510.5   共享虛擬內(nèi)存 8510.6   存取控制 8510.7   高速緩存 8610.7.1   緩沖區(qū)高速緩存 8610.7.2   頁面高速緩存 8610.7.3   交換高速緩存 8610.7.4   硬件高速緩存 8610.8   系統(tǒng)頁面表 8610.9   頁面的分配和釋放 8710.9.1   頁面的分配 8810.9.2   頁面的釋放 8810.10   內(nèi)存映射 8810.11   請(qǐng)求調(diào)頁 8910.12   頁面高速緩存 8910.13   內(nèi)核交換守護(hù)進(jìn)程 90第11章   進(jìn)程間通信 9111.1   信號(hào)機(jī)制 9111.2   管道機(jī)制 9211.3  System V IPC 機(jī)制  9311.3.1   信息隊(duì)列 9311.3.2   信號(hào)量 9411.3.3   共享內(nèi)存 96第12章   PCI 9812.1   PCI 系統(tǒng) 9812.2   PCI地址空間 9812.3   PCI設(shè)置頭 9912.4   PCI I/O 和 PCI 內(nèi)存地址 10012.5   PCI-ISA橋 10012.6   PCI-PCI 橋 10012.7   PCI初始化 10112.7.1   Linux系統(tǒng)內(nèi)核有關(guān)PCI的      數(shù)據(jù)結(jié)構(gòu) 10112.7.2   PCI 設(shè)備驅(qū)動(dòng)程序 10212.7.3   PCI BIOS 函數(shù) 10512.7.4   PCI Fixup 105第13章   中斷和中斷處理 10613.1   中斷 10613.2   可編程中斷控制器 10613.3   初始化中斷處理的數(shù)據(jù)結(jié)構(gòu) 10713.4   中斷處理 108第14章   設(shè)備驅(qū)動(dòng)程序 10914.1   硬件設(shè)備的管理 10914.2   輪詢和中斷 11014.3   直接內(nèi)存存取 11014.4   內(nèi)存 11114.5   設(shè)備驅(qū)動(dòng)程序和內(nèi)核之間的接口 11114.5.1   字符設(shè)備 11214.5.2   塊設(shè)備 11314.6   硬盤 11314.6.1   IDE 硬盤 11514.6.2   初始化IDE 硬盤子系統(tǒng) 11514.6.3   SCSI 硬盤 11514.6.4   初始化 SCSI 磁盤子系統(tǒng) 11614.6.5   傳遞塊設(shè)備請(qǐng)求 11814.7   網(wǎng)絡(luò)設(shè)備 11814.7.1   網(wǎng)絡(luò)設(shè)備文件名 11814.7.2   總線信息 11814.7.3   網(wǎng)絡(luò)接口標(biāo)記 11914.7.4   協(xié)議信息 11914.7.5   初始化網(wǎng)絡(luò)設(shè)備 119第15章   文件系統(tǒng) 12115.1   Linux文件系統(tǒng)概述 12115.2   ext2文件系統(tǒng) 12215.2.1   ext2的索引節(jié)點(diǎn) 12215.2.2   ext2超級(jí)塊 12415.2.3   ext2 數(shù)據(jù)塊組描述符 12415.2.4   ext2 中的目錄 12515.2.5   在ext2 文件系統(tǒng)中查找文件 12515.2.6   改變ext2 文件系統(tǒng)中文件             的大小 12615.3   VFS 12715.3.1   VFS 超級(jí)塊 12815.3.2   VFS 索引節(jié)點(diǎn) 12915.3.3   登記文件系統(tǒng) 12915.3.4   掛接文件系統(tǒng) 13015.3.5   在VFS中查找文件 13115.3.6   撤消文件系統(tǒng) 13115.3.7   VFS 索引節(jié)點(diǎn)緩存 13215.3.8   VFS目錄緩存 13215.4   緩沖區(qū)緩存 13315.5   /proc 文件系統(tǒng) 135第16章   網(wǎng)絡(luò)系統(tǒng) 13616.1   TCP/IP 網(wǎng)絡(luò)簡(jiǎn)介 13616.2   TCP/IP網(wǎng)絡(luò)的分層 13716.3   BSD 套接口 13816.4   INET套接口層 14016.4.1   創(chuàng)建BSD 套接口 14116.4.2   給INET BSD 套接口指定地址 14116.4.3   在INET BSD套接口上創(chuàng)建連接 14216.4.4   監(jiān)聽INET BSD 套接口 14216.4.5   接收連接請(qǐng)求 14316.5   IP 層 14316.5.1   套接口緩沖區(qū) 14316.5.2   接收IP數(shù)據(jù)包 14416.5.3   發(fā)送IP數(shù)據(jù)包 14416.5.4   數(shù)據(jù)碎片 14416.6   地址解析協(xié)議 145第17章   系統(tǒng)內(nèi)核機(jī)制 14717.1   Bottom Half處理 14717.2   任務(wù)隊(duì)列 14817.3   計(jì)時(shí)器 14917.4   等待隊(duì)列 14917.5   信號(hào)量 150第四篇   Linux系統(tǒng)高級(jí)編程第18章   Linux內(nèi)核模塊編程 15118.1   一個(gè)簡(jiǎn)單程序Hello World 15118.2   設(shè)備文件 15218.3    /proc文件系統(tǒng) 15618.4   使用/proc輸入 15818.5   與設(shè)備文件通信 16218.6   啟動(dòng)參數(shù) 16918.7   系統(tǒng)調(diào)用 17018.8   阻塞進(jìn)程 17218.9   替換printk 17718.10   調(diào)度任務(wù) 178第19章   有關(guān)進(jìn)程通信的編程 18119.1   進(jìn)程間通信簡(jiǎn)介 18119.2   半雙工UNIX管道 18119.2.1   基本概念 18119.2.2   使用C語言創(chuàng)建管道 18219.2.3   創(chuàng)建管道的簡(jiǎn)單方法 18519.2.4   使用管道的自動(dòng)操作 18719.2.5   使用半雙工管道時(shí)的注意事項(xiàng) 18819.3   命名管道 18819.3.1   基本概念 18819.3.2   創(chuàng)建FIFO 18819.3.3   FIFO操作 18919.3.4   FIFO的阻塞 19019.3.5    SIGPIPE信號(hào) 19019.4   System V IPC 19019.4.1   基本概念 19019.4.2   消息隊(duì)列基本概念 19119.4.3   系統(tǒng)調(diào)用msgget() 19419.4.4   系統(tǒng)調(diào)用msgsnd() 19519.4.5   系統(tǒng)調(diào)用msgctl() 19719.4.6   一個(gè)msgtool的實(shí)例 19919.5   使用信號(hào)量編程 20119.5.1   基本概念 20119.5.2   系統(tǒng)調(diào)用semget() 20219.5.3   系統(tǒng)調(diào)用semop() 20319.5.4   系統(tǒng)調(diào)用semctl() 20419.5.5   使用信號(hào)量集的實(shí)例:semtool 20519.6   共享內(nèi)存 20919.6.1   基本概念 20919.6.2   系統(tǒng)內(nèi)部用戶數(shù)據(jù)結(jié)構(gòu)             shmid_ds 20919.6.3   系統(tǒng)調(diào)用shmget() 21019.6.4   系統(tǒng)調(diào)用shmat() 21119.6.5   系統(tǒng)調(diào)用shmctl() 21119.6.6   系統(tǒng)調(diào)用shmdt() 21219.6.7   使用共享內(nèi)存的實(shí)例:shmtool 212第20章   高級(jí)線程編程 21520.1   線程的概念和用途 21520.2   一個(gè)簡(jiǎn)單的例子 21520.3   線程同步 21720.4   使用信號(hào)量協(xié)調(diào)程序 21820.5   信號(hào)量的實(shí)現(xiàn) 22020.5.1   Semaphore.h 22020.5.2   Semaphore.c 221第21章   Linux系統(tǒng)網(wǎng)絡(luò)編程 22521.1   什么是套接口 22521.2   兩種類型的Internet套接口 22521.3   網(wǎng)絡(luò)協(xié)議分層 22521.4   數(shù)據(jù)結(jié)構(gòu) 22521.5   IP地址和如何使用IP地址 22621.5.1   socket() 22621.5.2   bind() 22621.5.3   connect() 22721.5.4   listen() 22821.5.5   accept() 22821.5.6   send() 和 recv() 22921.5.7   sendto() 和 recvfrom() 23021.5.8   close() 和 shutdown() 23021.5.9   getpeername() 23121.5.10   gethostname() 23121.6   DNS 23121.7   客戶機(jī)/服務(wù)器模式 23221.8   簡(jiǎn)單的數(shù)據(jù)流服務(wù)器程序 23221.9   簡(jiǎn)單的數(shù)據(jù)流客戶機(jī)程序 23421.10   數(shù)據(jù)報(bào)套接口 23521.11   阻塞 237第22章   Linux I/O端口編程 24022.1   如何在 C 語言下使用I/O端口 24022.1.1   一般的方法 24022.1.2   另一個(gè)替代方法: /dev/port 24122.2   硬件中斷 與 DMA 存取 24122.3   高精確的時(shí)間 24122.3.1   延遲時(shí)間 24122.3.2   時(shí)間的量測(cè) 24322.4   使用其他程序語言 24322.5   一些有用的 I/O 端口 24322.5.1   并行端口 24322.5.2   游戲端口 24422.5.3   串行端口 245第五篇   Linux系統(tǒng)安全分析第23章   系統(tǒng)管理員安全 24723.1   安全管理 24723.2   超級(jí)用戶 24723.3   文件系統(tǒng)安全 24723.3.1   Linux文件系統(tǒng)概述 24723.3.2   設(shè)備文件 24823.3.3   /etc/mknod命令 24923.3.4   安全考慮 24923.3.5   find命令 25023.3.6   secure程序 25023.3.7   ncheck命令 25023.3.8   安裝和拆卸文件系統(tǒng) 25023.3.9   系統(tǒng)目錄和文件 25123.4   作為root運(yùn)行的程序 25123.4.1   啟動(dòng)系統(tǒng) 25123.4.2   init進(jìn)程 25123.4.3   進(jìn)入多用戶 25223.4.4   shutdown命令 25223.4.5   系統(tǒng)V的cron程序 25223.4.6   系統(tǒng)V版本2之后的cron程序 25223.4.7   /etc/profile 25323.5   /etc/passwd文件 25323.5.1   口令時(shí)效 25323.5.2   UID和GID 25423.6   /etc/group文件 25423.7   增加、刪除和移走用戶 25423.7.1   增加用戶 25423.7.2   刪除用戶 25523.7.3   將用戶移到另一個(gè)系統(tǒng) 25523.8   安全檢查 25523.8.1   記帳 25523.8.2   其他檢查命令 25623.8.3   安全檢查程序的問題 25623.8.4   系統(tǒng)泄密后怎么辦 25723.9   加限制的環(huán)境 25823.9.1   加限制的外殼 25823.9.2   用chroot()限制用戶 25823.10   小系統(tǒng)安全 25923.11   物理安全 25923.12   用戶意識(shí) 26023.13   系統(tǒng)管理員意識(shí) 26123.13.1   保持系統(tǒng)管理員個(gè)人的               登錄安全 26123.13.2   保持系統(tǒng)安全 261第24章   系統(tǒng)程序員安全 26324.1   系統(tǒng)子程序 26324.1.1   I/O子程序 26324.1.2   進(jìn)程控制 26324.1.3   文件屬性 26424.1.4   UID和GID的處理 26524.2   標(biāo)準(zhǔn)C程序庫 26524.2.1   標(biāo)準(zhǔn)I/O 26524.2.2   /etc/passwd的處理 26624.2.3   /etc/group的處理 26724.2.4   加密子程序 26824.2.5   運(yùn)行外殼 26824.3   編寫安全的C程序 26824.3.1   需要考慮的安全問題 26824.3.2   SUID/SGID程序指導(dǎo)準(zhǔn)則 26924.3.3   編譯、安裝SUID/SGID程序             的方法 26924.4   root用戶程序的設(shè)計(jì) 270第25章   Linux系統(tǒng)的網(wǎng)絡(luò)安全 27225.1   UUCP系統(tǒng)概述 27225.1.1   UUCP命令 27225.1.2   uux命令 27225.1.3   uucico程序 27325.1.4   uuxqt程序 27325.2   UUCP的安全問題 27325.2.1   USERFILE文件 27325.2.2   L.cmds文件 27425.2.3   uucp登錄 27425.2.4   uucp使用的文件和目錄 27425.3   HONEYDANBER UUCP 27525.3.1   HONEYDANBER UUCP與           老UUCP的差別 27525.3.2   登錄名規(guī)則 27625.3.3   MACHINE規(guī)則 27725.3.4   組合MACHINE和LOGNAME             規(guī)則 27825.3.5   uucheck命令 27825.3.6   網(wǎng)關(guān) 27825.3.7   登錄文件檢查 27925.4   其他網(wǎng)絡(luò) 27925.4.1   遠(yuǎn)程作業(yè)登錄 27925.4.2   NSC網(wǎng)絡(luò)系統(tǒng) 28025.5   通信安全 28025.5.1   物理安全 28025.5.2   加密 28125.5.3   用戶身份鑒別 28225.6   SUN OS系統(tǒng)的網(wǎng)絡(luò)安全 28325.6.1   確保NFS的安全 28325.6.2   NFS安全性方面的缺陷 28425.6.3   遠(yuǎn)程過程調(diào)用鑒別 28425.6.4   Linux鑒別機(jī)制 28425.6.5   DES鑒別系統(tǒng) 28525.6.6   公共關(guān)鍵字的編碼 28625.6.7   網(wǎng)絡(luò)實(shí)體的命名 28625.6.8   DES鑒別系統(tǒng)的應(yīng)用 28725.6.9   遺留的安全問題 28725.6.10   性能 28825.6.11   啟動(dòng)和setuid程序引起的問題 28825.6.12   小結(jié) 289第26章   Linux系統(tǒng)的用戶安全性 29026.1   口令安全 29026.2   文件許可權(quán) 29026.3   目錄許可 29126.4   umask命令 29126.5   設(shè)置用戶ID和同組用戶ID許可 29126.6   cp mv ln和cpio命令 29126.7   su和newgrp命令 29226.7.1   su命令 29226.7.2   newgrp命令 29226.8   文件加密 29226.9   其他安全問題 29326.9.1   用戶的.profile文件 29326.9.2   ls -a 29326.9.3   .exrc文件 29326.9.4   暫存文件和目錄 29326.9.5   UUCP和其他網(wǎng)絡(luò) 29326.9.6   特洛伊木馬 29426.9.7   誘騙 29426.9.8   計(jì)算機(jī)病毒 29426.9.9   要離開自己已登錄的終端 29426.9.10   智能終端 29426.9.11   斷開與系統(tǒng)的連接 29426.9.12   cu命令 29526.10   保持帳戶安全的要點(diǎn) 295第六篇   X window系統(tǒng)的內(nèi)部結(jié)構(gòu)和使用第27章  X Window系統(tǒng)的基本知識(shí) 29727.1   X Window系統(tǒng)介紹 29727.1.1   X的特點(diǎn) 29727.1.2   什么是窗口系統(tǒng) 29827.1.3   X發(fā)展的歷史 29927.1.4   X的產(chǎn)品 29927.1.5   MIT發(fā)行的X 29927.2   X的基本結(jié)構(gòu) 30227.2.1   X 的基本元素 30327.2.2   服務(wù)程序和客戶程序如何             交互通信 30427.2.3   X 的網(wǎng)絡(luò)概況 30627.3   從用戶界面的角度概觀X 30727.3.1   管理界面:窗口管理器 30727.3.2   應(yīng)用程序界面和工具箱 30927.3.3   其他系統(tǒng)角度 30927.4   術(shù)語和符號(hào) 31027.4.1   術(shù)語 31027.4.2   符號(hào) 31127.5   啟動(dòng)和關(guān)閉X 31227.5.1   啟動(dòng)X 31227.5.2   執(zhí)行X程序的方式 31327.5.3   關(guān)閉X 31427.6   窗口管理器基礎(chǔ)—uwm 31527.6.1   什么是窗口管理器 31527.6.2   啟動(dòng)uwm 31527.6.3   基本窗口操作 —uwm             的菜單 31527.6.4   移動(dòng)窗口 31627.6.5   重定窗口大小 31627.6.6   建立新窗口 31627.6.7   管理屏幕空間 31827.6.8   中止應(yīng)用程序窗口 32027.6.9   激活uwm菜單的其他方式 32027.7   使用 x的網(wǎng)絡(luò)設(shè)備 32027.7.1   指定遠(yuǎn)程終端機(jī)—display             選項(xiàng) 32127.7.2   實(shí)際使用遠(yuǎn)程的顯示器 32227.7.3   控制存取顯示器—xhost 32227.8   終端機(jī)模擬器—詳細(xì)介紹xterm 32327.8.1   選擇xterm功能—菜單與       命令行選項(xiàng) 32327.8.2   滾動(dòng)xterm屏幕 32427.8.3   記錄與終端機(jī)的交互過程—寫           記錄 32527.8.4   剪貼文本 32527.8.5   使用Tektronix模擬功能 32627.8.6   使用不同的字體 32727.8.7   使用顏色 32727.8.8   其他xterm選項(xiàng) 32727.8.9   設(shè)定終端機(jī)鍵盤 328第28章   實(shí)用程序和工具 32928.1   實(shí)用程序 32928.2   保存、顯示和打印屏幕圖像 33028.3   使用X的應(yīng)用程序 33228.3.1   文字編輯器—Xedit 33328.3.2   郵件/信息處理系統(tǒng)—xmh 33628.4   示例和游戲程序 33628.4.1   找出通過隨機(jī)迷宮的             路徑—maze 33628.4.2   擔(dān)任鼠標(biāo)指針的大眼睛—             xeyes 33628.4.3   智慧盤游戲—puzzle 33728.4.4   打印一個(gè)大X標(biāo)志—xlogo 33728.4.5   跳動(dòng)的多面體—ico 33728.4.6   動(dòng)態(tài)幾何圖案—muncher與             plaid 33728.7   顯示信息和狀態(tài)的程序 33728.7.1   列出X服務(wù)程序的特征—    xdpyinfo 33828.7.2   獲取有關(guān)窗口的信息 33828.7.3   觀察X的事件—xev 340第29章   定制X Window系統(tǒng) 34129.1   使用X的字體和顏色 34129.1.1   字體初步 34129.1.2   字體命名 34229.1.3   觀察特定字體的內(nèi)容—xfd 34329.1.4   保存字體和位置 34329.1.5   例子:在你的服務(wù)程序中      增加新字體 34529.1.6   使用X的顏色 34629.2   定義和使用圖形 34729.2.1   系統(tǒng)圖形程序庫 34729.2.2   交互編輯圖形—bitmap 34729.2.3   編輯圖形的其他方法 34929.2.4   定制根窗口—xsetroot 34929.3   定義應(yīng)用程序的缺省選項(xiàng)—           Resources 35029.3.1   什么是資源 35029.3.2   XToolkit 35129.3.3   管理資源—資源管理器 35329.3.4   資源的類型—如何指定值 35829.4   實(shí)際使用資源 35929.4.1   在何處保存資源的缺省值 35929.4.2   在服務(wù)程序上保存缺省值—    xrdb 36329.4.3   常見的錯(cuò)誤和修正 36629.5   定制鍵盤和鼠標(biāo) 36729.5.1   實(shí)際使用轉(zhuǎn)換 36829.5.2   轉(zhuǎn)換—格式和規(guī)則 37429.5.3   轉(zhuǎn)換規(guī)范中常見的問題 37729.6   鍵盤和鼠標(biāo)—對(duì)應(yīng)和參數(shù) 37929.6.1   鍵盤和鼠標(biāo)映射—xmodmap 37929.6.2   鍵盤和鼠標(biāo)參數(shù)設(shè)定—xset 38229.7   進(jìn)一步介紹和定制uwm 38429.7.1   uwm的新特征 38429.7.2   定制uwm 38629.8   顯示器管理器—xdm 39029.8.1   需要做些什么 39029.8.2   xdm 39129.8.3   xdm的更多信息 39229.8.4   uwm配置 395附錄A   Gcc使用介紹 396附錄B   安裝X Window窗口系統(tǒng) 410

    標(biāo)簽: LINUX 系統(tǒng)分析 高級(jí)編程

    上傳時(shí)間: 2013-11-10

    上傳用戶:changeboy

  • ARM經(jīng)典300問與答

    第1 章 體系結(jié)構(gòu) ARM經(jīng)典300問與答第1 問:Q:請(qǐng)問在初始化CPU 堆棧的時(shí)候一開始在執(zhí)行mov r0, LR 這句指令時(shí)處理器是什么模式A:復(fù)位后的模式,即管理模式.第2 問:Q:請(qǐng)教:MOV 中的8 位圖立即數(shù),是怎么一回事 0xF0000001 是怎么來的A:是循環(huán)右移,就是一個(gè)0—255 之間的數(shù)左移或右移偶數(shù)位的來的,也就是這個(gè)數(shù)除以4一直除, 直到在0-255 的范圍內(nèi)它是整數(shù)就說明是可以的!A:8 位數(shù)(0-255)循環(huán)左移或循環(huán)右移偶數(shù)位得到的,F0000001 既是0x1F 循環(huán)右移4 位,符合規(guī)范,所以是正確的.這樣做是因?yàn)橹噶铋L度的限制,不可能把32 位立即數(shù)放在32 位的指令中.移位偶數(shù)也是這個(gè)原因.可以看一看ARM 體系結(jié)構(gòu)(ADS 自帶的英文文檔)的相關(guān)部分.第3 問:Q:請(qǐng)教:《ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)》2.2.1 節(jié)關(guān)于第2 個(gè)操作數(shù)的描述中有這么一段:#inmed_8r 常數(shù)表達(dá)式.該常數(shù)必須對(duì)應(yīng)8 位位圖,即常熟是由一個(gè)8 位的常數(shù)循環(huán)移位偶數(shù)位得到.合法常量:0x3FC,0,0xF0000000,200,0xF0000001.非法常量:0x1FE,511,0xFFFF,0x1010,0xF0000010.常數(shù)表達(dá)式應(yīng)用舉例:......LDR R0,[R1],#-4 ;讀取 R1 地址上的存儲(chǔ)器單元內(nèi)容,且 R1 = R1-4針對(duì)這一段,我的疑問:1. 即常數(shù)是由一個(gè)8 位的常數(shù)循環(huán)移位偶數(shù)位得到,這句話如何理解2. 該常數(shù)必須對(duì)應(yīng)8 位位圖,既然是8 位位圖,那么取值為0-255,怎么0x3FC 這種超出255 的數(shù)是合法常量呢3. 所舉例子中,合法常量和非法常量是怎么區(qū)分的 如0x3FC 合法,而0x1FE 卻非法0xF0000000,0xF0000001 都合法,而0xF0000010 又變成了非法4. 對(duì)于匯編語句 LDR R0,[R1],#-4,是先將R1 的值減4 結(jié)果存入R1,然后讀取R1 所指單元的 值到R0,還是先讀取R1 到R0,然后再將R1 減4 結(jié)果存入R1A:提示,任何常數(shù)都可用底數(shù)*2 的n 次冪 來表示.1. ARM 結(jié)構(gòu)中,只有8bits 用來表示底數(shù),因此底數(shù)必須是8 位位圖.2. 8 位位圖循環(huán)之后得到常數(shù),并非只能是8 位.3. 0xF0000010 底數(shù)是9 位,不能表示.4. LDR R0, [R1], #-4 是后索引,即先讀,再減.可以看一看ARM 體系結(jié)構(gòu)對(duì)相關(guān)尋址方式的說明.

    標(biāo)簽: ARM 300

    上傳時(shí)間: 2013-11-22

    上傳用戶:1109003457

  • C與C++程序中的內(nèi)存分配

    你是否曾經(jīng)這樣定義過變量:int a[50]; ?或許你會(huì)說,這是一句再普通不過的代碼了。那么int a[1000000]; 呢?int a[512][512]; 呢?用了這么久的VC,直到今天才發(fā)現(xiàn),自己連最基本的東西還沒弄清楚。

    標(biāo)簽: 程序 內(nèi)存分配

    上傳時(shí)間: 2014-04-06

    上傳用戶:15736969615

  • wnwb_800_50萬能五筆(輸入法工具)

    萬能五筆是一種輸入法工具,特點(diǎn)是:軟件小,功能齊,特別是能反查字根,對(duì)于字根需要練習(xí)的朋友,用它即可,能拼音、五筆同時(shí)打。 同時(shí)對(duì)字、詞、句能同時(shí)顯示字根、拼音和聯(lián)想。 個(gè)人覺得不錯(cuò),給需要的朋友

    標(biāo)簽: wnwb 800 50 萬能五筆

    上傳時(shí)間: 2013-10-19

    上傳用戶:jqy_china

  • wnwb_800_50萬能五筆(輸入法工具)

    萬能五筆是一種輸入法工具,特點(diǎn)是:軟件小,功能齊,特別是能反查字根,對(duì)于字根需要練習(xí)的朋友,用它即可,能拼音、五筆同時(shí)打。 同時(shí)對(duì)字、詞、句能同時(shí)顯示字根、拼音和聯(lián)想。 個(gè)人覺得不錯(cuò),給需要的朋友

    標(biāo)簽: wnwb 800 50 萬能五筆

    上傳時(shí)間: 2013-11-10

    上傳用戶:ccclll

主站蜘蛛池模板: 扎赉特旗| 湾仔区| 秭归县| 秦皇岛市| 泸西县| 东光县| 平潭县| 随州市| 乌拉特中旗| 梁河县| 西畴县| 临沭县| 房山区| 崇左市| 温州市| 霍邱县| 论坛| 布尔津县| 滨州市| 名山县| 垦利县| 唐河县| 墨脱县| 沐川县| 慈溪市| 电白县| 西乡县| 定南县| 崇阳县| 顺义区| 华亭县| 新竹县| 将乐县| 山阳县| 东乌| 吴桥县| 体育| 临颍县| 郧西县| 厦门市| 蕲春县|