㈠ 簡述51單片機的存儲器邏輯空間分布,並說明當存儲器地址發生重疊時應如何處
MCS-51單片機存儲器結構
1、 程序存儲器
MCS-51具有64kB程序存儲器定址空間,它是用於存放用戶程序、數據和表格等信息。對於內部無ROM的8031單片機,它的程序存儲器必須外接,空間地址為64kB,此時單片機的端必須接地。強制CPU從外部程序存儲器讀取程序。對於內部有ROM的8051等單片機,正常運行時,則需接高電平,使CPU先從內部的程序存儲中讀取程序,當PC值超過內部ROM的容量時,才會轉向外部的程序存儲器讀取程序。
8051片內有4kB的程序存儲單元,其地址為0000H—0FFFH,單片機啟動復位後,程序計數器的內容為0000H,所以系統將從0000H單元開始執行程序。但在程序存儲中有些特殊的單元,這在使用中應加以注意:
其中一組特殊是0000H—0002H單元,系統復位後,PC為0000H,單片機從0000H單元開始執行程序,如果程序不是從0000H單元開始,則應在這三個單元中存放一條無條件轉移指令,讓CPU直接去執行用戶指定的程序。
另一組特殊單元是0003H—002AH,這40個單元各有用途,它們被均勻地分為五段,它們的定義如下:
0003H—000AH 外部中斷0中斷地址區。
000BH—0012H 定時/計數器0中斷地址區。
0013H—001AH 外部中斷1中斷地址區。
001BH—0022H 定時/計數器1中斷地址區。
0023H—002AH 串列中斷地址區。
可見以上的40個單元是專門用於存放中斷處理程序的地址單元,中斷響應後,按中斷的類型,自動轉到各自的中斷區去執行程序。因此以上地址單元不能用於存放程序的其他內容,只能存放中斷服務程序。但是通常情況下,每段只有8個地址單元是不能存下完整的中斷服務程序的,因而一般也在中斷響應的地址區安放一條無條件轉移指令,指向程序存儲器的其它真正存放中斷服務程序的空間去執行,這樣中斷響應後,CPU讀到這條轉移指令,便轉向其他地方去繼續執行中斷服務程序。
2、 數據存儲器
數據存儲器也稱為隨機存取數據存儲器。MCS-51單片機的數據存儲器在物理上和邏輯上都分為兩個地址空間,一個是內部數據存儲區和一個外部數據存儲區。MCS-51內部RAM有128或256個位元組的用戶數據存儲(不同的型號有分別),它們是用於存放執行的中間結果和過程數據的。MCS-51的數據存儲器均可讀寫,部分單元還可以位定址。
8051內部RAM共有256個單元,這256個單元共分為兩部分。其一是地址從00H—7FH單元(共128個位元組)為用戶數據RAM。從80H—FFH地址單元(也是128個位元組)為特殊寄存器(SFR)單元。從圖1中可清楚地看出它們的結構分布。
在00H—1FH共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以R0—R7來命名,我們常稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0—R7,那麼在程序中怎麼區分和使用它們呢?聰明的INTEL工程師們又安排了一個寄存器——程序狀態字寄存器(PSW)來管理它們,CPU只要定義這個寄存的PSW的第3和第4位(RS0和RS1),即可選中這四組通用寄存器。對應的編碼關系如圖2所示。
內部RAM的20H—2FH單元為位定址區,既可作為一般單元用位元組定址,也可對它們的位進行定址。位定址區共有16個位元組,128個位,位地址為00H—7FH。位地址分配如表1所示,CPU能直接定址這些位,執行例如置「1」、清「0」、求「反」、轉移,傳送和邏輯等操作。我們常稱MCS-51具有布爾處理功能,布爾處理的存儲空間指的就是這些為定址區。
㈡ 通用寄存器有哪些
1、數據寄存器
數據寄存器主要用來保存操作數和運算結果等信息,從而節省讀取操作數所需佔用匯流排和訪問存儲器的時間。
2、變址寄存器
32位CPU有2個32位通用寄存器ESI和EDI。其低16位對應先前CPU中的SI和DI,對低16位數據的存取,不影響高16位的數據。
3、指針寄存器
32位CPU有2個32位通用寄存器EBP和ESP。其低16位對應先前CPU中的SBP和SP,對低16位數據的存取,不影響高16位的數據。
4、段寄存器
段寄存器是根據內存分段的管理模式而設置的。內存單元的物理地址由段寄存器的值和一個偏移量組合而成的,這樣可用兩個較少位數的值組合成一個可訪問較大物理空間的內存地址。
5、指令指針寄存器
32位CPU把指令指針擴展到32位,並記作EIP,EIP的低16位與先前CPU中的IP作用相同。 指令指針EIP、IP(Instruction Pointer)是存放下次將要執行的指令在代碼段的偏移量。
(2)bh是什麼存儲器擴展閱讀
寄存器是CPU內部重要的數據存儲資源,用來暫存數據和地址,是匯編程序員能直接使用的硬體資源之一。由於寄存器的存取速度比內存快,所以,在用匯編語言編寫程序時,要盡可能充分利用寄存器的存儲功能。
寄存器一般用來保存程序的中間結果,為隨後的指令快速提供操作數,從而避免把中間結果存入內存,再讀取內存的操作。在高級語言(如:C/C++語言)中,也有定義變數為寄存器類型的,這就是提高寄存器利用率的一種可行的方法。
另外,由於寄存器的個數和容量都有限,不可能把所有中間結果都存儲在寄存器中,所以,要對寄存器進行適當的調度。根據指令的要求,如何安排適當的寄存器,避免操作數過多的傳送操作是一項細致而又周密的工作。
參考資料來源:網路-通用寄存器
㈢ 匯編語言寄存器都叫什麼
1、寄存器
32位寄存器有16個,分別是:
4個數據寄存器(EAX、EBX、ECX、EDX)。
2個變址和指針寄存器(ESI和EDI);2個指針寄存器(ESP和EBP)。
6個段寄存器(ES、CS、SS、DS、FS、GS)。
1個指令指針寄存器(EIP);1個標志寄存器(EFlags)。
2、數據寄存器
數據寄存器主要用來保存操作數和運算結果等信息,從而節省讀取操作數所需佔用匯流排和訪問存儲器猛基的時間。
32位CPU有4個32位通用寄存器:EAX、EBX、ECX和EDX。對低16位數據的取存,不會影響高16
位的數據,這些低16位寄存器分別命名為AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4個16位寄存器又可分割成8個獨立的8位寄存器(AX:ah~al、BX:bh~bl、CX:ch~cl:DX:dh~dl)。
每個寄存器都有自己的名稱,可獨立存取。程序員可利用數據寄存器的這種「可合可分」的特性,靈活地處理字/
位元組的信息。
AX和al通常稱為累加器,用累加器進行的操作可能需要更少時間,累加器可用於乘、除、輸入/輸出等操作,
它們的使用頻率很高。
BX稱為基地址寄存器,它可作為存儲器指針來使用。
CX稱為計數寄存器,在循環和字元串操作時,要用它來控制循環次數;在位操作中,當移多位時,要用cl來
指明位移的位數。
DX稱為數據寄存器,在進行乘、除運算時,枝巧謹它可以為默認的操作數參與運算,也可用於存放I/O的埠地址。
在16位CPU中,AX、BX、CX和DX不能作為基址和變址寄存器來存放存儲單元的地址,但在32位CPU
中,寬核其32位寄存器EAX、EBX、ECX和EDX不僅可傳送數據、暫存數據、保存算術邏輯運算結果,而且也可
作為指針寄存器,所以,這些32位寄存器更具有通用性。
3、變址寄存器
32位CPU有2個32位通用寄存器ESI和EDI,其低16位對應先前CPU中的SI和DI,對低16位數據的
存取,不影響高16位的數據。
ESI、EDI、SI和DI稱為變址寄存器,它們主要用於存放存儲單元在段內的偏移量,用它們可實現多種存儲器
操作數的定址方式,為以不同的地址形式訪問存儲單元提供方便。
變址寄存器不可分割成8位寄存器,作為通用寄存器,也可存儲算術邏輯運算的操作數和運算結果。
它們可作一般的存儲器指針使用,在字元串操作指令的執行過程中,對它們有特定的要求,而且還具有特殊的
功能。
4、指針寄存器
32位CPU有2個32位通用寄存器EBP和ESP,其低16位對應先前CPU中的BP和SP,對低16位數
據的存取,不影響高16位的數據。
EBP、ESP、BP和SP稱為指針寄存器,主要用於存放堆棧內存儲單元的偏移量,用它們可實現多種存儲器
操作數的定址方式,為以不同的地址形式訪問存儲單元提供方便。
指針寄存器不可分割成8位寄存器,作為通用寄存器,也可存儲算術邏輯運算的操作數和運算結果。
它們主要用於訪問堆棧內的存儲單元,並且規定:
BP為基指針寄存器,用它可直接存取堆棧中的數據。
SP為堆棧指針寄存器,用它只可訪問棧頂。
5、段寄存器
段寄存器是根據內存分段的管理模式而設置的。內存單元的物理地址由段寄存器的值和一個偏移量組合而成
的,這樣可用兩個較少位數的值組合成一個可訪問較大物理空間的內存地址。
32位CPU有6個段寄存器,分別如下:
CS:代碼段寄存器 ES:附加段寄存器
DS:數據段寄存器 FS:附加段寄存器
SS:堆棧段寄存器 GS:附件段寄存器
在16位CPU系統中,只有4個段寄存器,所以,程序在任何時刻至多有4個正在使用的段可直接訪問,在
32位微機系統中,它有6個段寄存器,所以在此環境下開發的程序最多可同時訪問6個段。
32位CPU有兩個不同的工作方式:實方式和保護方式。在每種方式下,段寄存器的作用是不同的,有關規定
簡單描述如下:
實方式:段寄存器CS、DS、ES和SS與先前CPU中的所對應的段寄存器的含義完全一致,內存單元的邏輯
地址仍為「段地址:偏移地址」的形式,為訪問某內存段內的數據,必須使用該段寄存器和存儲單元的偏移地址。
保護方式:在此方式下,情況要復雜得多,裝入段寄存器的不再是段值,而是稱為「選擇子」的某個值。
6、指令指針寄存器
32位CPU把指令指針擴展到32位,並記作EIP,EIP的低16位與先前CPU中的IP作用相同。
指令指針EIP、IP是存放下次將要執行的指令在代碼段的偏移地址,在具有預取指令功能的系統中,下次要執
行的指令通常已被預取到指令隊列中,除非發生轉移情況,所以,在理解它們的功能時不考慮存在指令隊列的情
況。
在實方式下,由於每個段的最大范圍為64KB,所以,EIP的高16位肯定都為0,此時,相當於只用其低16
位的IP來反映程序中的指令的執行次序。
7、標志寄存器
1.運算結果標志位。一共6個,包括:CF進位標志位、PF奇偶標志位、AF輔助進位標志位、ZF零標志位、
SF符號標志位、OF溢出標志位。
2.狀態控制標志位。一共3個,包括:TF追蹤標志位、IF中斷允許標志位、DF方向標志位。
以上標志位在第7章里都講過了,在這里就不再解釋了,現在講講32位標志寄存器增加的4個標志位。
1. I/O特權標志IOPL。
IOPL用兩位二進制位來表示,也稱為I/O特權級欄位,該欄位指定了要求執行I/O指令的特權級,如果當前
的特權級別在數值上小於等於IOPL的值,那麼,該I/O指令可執行,否則將發生一個保護異常。
2. 嵌套任務標志NT。
NT用來控制中斷返回指令IRET的執行。具體規定如下:
(1) 當NT=0,用堆棧中保存的值恢復EFlags、CS和EIP,執行常規的中斷返回操作。
(2) 當NT=1,通過任務轉換實現中斷返回。
3. 重啟動標志RF。
RF用來控制是否接受調試故障。規定:RF=0時,表示接受,否則拒絕。
4. 虛擬8086方式標志VM。
如果VM=1,表示處理機處於虛擬的8086方式下的工作狀態,否則,處理機處於一般保護方式下的工作狀態。
8、32位地址的定址方式
最後說一下32位地址的定址方式。在前面我們學習了16位地址的定址方式,一共有5種,在32位微機系統
中,又提供了一種更靈活、方便但也更復雜的內存定址方式,從而使內存地址的定址范圍得到了進一步擴大。
在用16位寄存器來訪問存儲單元時,只能使用基地址寄存器(BX和BP)和變址寄存器(SI和DI)來作為
偏移地址的一部分,但在用32位寄存器定址時,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、
EDX、ESI、EDI、EBP、和ESP)都可以是偏移地址的一個組成部分。
當用32位地址偏移量進行定址時,偏移地址可分為3部分:
1. 一個32位基址寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP)。
2. 一個可乘以1、2、4、8的32位變址寄存器(EAX、EBX、ECX、EDX、ESI、EDI和EBP)。
3. 一個8位~32位的偏移常量。
比如,指令:mov ebx, [eax+edx*2+300]
Eax就是基址寄存器,edx就是變址寄存器,300H就是偏移常量。
上面那3部分可進行任意組合,省去其中之一或之二。
下面列舉幾個32位地址定址指令:
Mov ax, [123456]
Mov eax, [ebx]
Mov ebx, [ecx*2]
Mov ebx, [eax+100]
Mov ebx, [eax*4+200]
Mov ebx, [eax+edx*2]
Mov ebx, [eax+edx*4+300]
Mov ax, [esp]
由於32位定址方式能使用所有的通用寄存器,所以,和該有效地址相組合的段寄存器也就有新的規定,具體
規定如下:
1. 地址中寄存器的書寫順序決定該寄存器是基址寄存器還是變址寄存器。
如:[ebx+ebp]中的ebx是基址寄存器,ebp是變址寄存器,而[ebp+ebx]中的ebp是基址寄存器,ebx是變
址寄存器,可以看出,左邊那個是基址寄存器,另一個是變址寄存器。
2. 默認段寄存器的選用取決於基址寄存器。
3. 基址寄存器是ebp或esp時,默認的段寄存器是SS,否則,默認的段寄存器是DS。
4. 在指令中,如果顯式地給出段寄存器,那麼顯式段寄存器優先。
下面列舉幾個32位地址定址指令及其內存操作數的段寄存器。
指令列舉: 訪問內存單元所用的段寄存器
mov ax, [123456] ;默認段寄存器為DS。
mov ax, [ebx+ebp] ;默認段寄存器為DS。
mov ebx, [ebp+ebx] ;默認段寄存器為SS。
mov ebx, [eax+100] ;默認段寄存器為DS。
mov edx, ES:[eax*4+200] ;顯式段寄存器為ES。
mov [esp+edx*2], ax ;默認段寄存器為SS。
mov ebx, GS:[eax+edx*8+300] ;顯式段寄存器為GS。
mov ax, [esp] ;默認段寄存器為SS。
㈣ 匯編語言存儲器操作數是什麼
對,家方括弧的就是存儲器。存儲器內放的是十六進制的數,一個16進制的數化為2進制數就是4位,【1200H】是佔16位,【BX】是存儲器,BX就是16位寄存器了,BX由8位寄存器BH和BL組成,多看看書就會明白的
㈤ 匯編語言的AX,BX,CX,DX,分別表示什麼
AX寄存器稱為累加器(Accumulator),使用時主要用於存放數據,如存放算術、邏輯運算中的操作數或結果。也可臨時時用於存放地址。
BX寄存器稱為基址寄存器(BaseRegister),常用來存放訪問存儲器時的地址。
CX寄存器稱為計數寄存器(CountRegister),常用於保存計算值,如在移位指令,循環(loop)和串處理指令中用作隱含的計數器。
DX寄存器稱為數據寄存器(DataRegister),常用於數據傳遞。在寄存器間接定址中的I/O指令中存放I/O埠的地址。
(5)bh是什麼存儲器擴展閱讀:
匯編語言中的AX、BX、CX、DX作為CPU內部的通用寄存器中的數據寄存器助記符用來存放參與運算的數據或是存儲運算的結果。這四個數據寄存器都是16位的,實際由兩個8位寄存器組合而成,這是為了靈活處理8位數據。
AX、BX、CX、DX每個寄存器可以將高、低8位分別作為獨立的8位寄存器使用。其中的高8位用AH、BH、CH、DH表示,低8位用AL、BL、CL、DL表示。
㈥ 單片機內部數據儲存地址中的00H 和0FH,FFH代表什麼意思。。。F 和0是什麼
表示十六進制數的意思。
00H,0FH,FFH是一個十六進制數,它等於0,0FH=15,FFH=255,用於內部數據存儲的內存。
00H~FFH相當於小數0~255
例如:二進制十六進制十進制
00000000b000h
0000000101h1b
0000001002bh2
00001001b09h9
00001010b010
000010110bh11b
000011000ch12b
00001101b0dh13
00001110b014
00001111b0fh15
(6)bh是什麼存儲器擴展閱讀:
注意事項:
8051系列單片機有兩個定時器:T0和T1,分別稱為定時器和T1定時器,這兩個定時器是16位定時器/計數器,8052系列單片機新增第三定時器/計數器T2,具有定時或事件計數功能,常用於時間控制,延時,外部時間計數和檢測等。
8051單片機的兩個定時器T0和T1分別由兩個特殊的功能寄存器組成,T0由專用寄存器TH0和TL0組成,T1由TH1和TL1組成。
當作為定時器使用時,定時器對8051單片機晶元振盪器輸出的脈沖數進行12分頻後計數,即每台機器周期使定時器T0/T1的寄存器值自動累加1,直到溢出,之後循環計數從0開始;所以,定時器的解析度是時鍾頻率的1/12。
當用作計數器時,外部脈沖信號按引腳T0(P3.4)或T1(P3.5)計數,當輸入的外部脈沖信號從1跳到0時,計數器的值自動增加1,計數器的最大頻率通常是時鍾頻率的1/24。
由此可以看出,無論是定時器還是計數器的工作方式,定時器T0和T1都不佔用CPU時間,除非定時器/計數器T0和T1溢出,否則它可能導致CPU中斷,然後執行中斷處理程序,因此定時器/計數器是一種單片機高效、靈活的工作元件。
㈦ 企業使用的存儲系統有哪些
推薦使用華錄藍光存儲系統。
華錄藍光光碟庫具有長壽命、高可靠性、兼容性、低成本、人性化、管理便捷等產品特點非常適用於存儲這類低訪問頻次而具有高重要性」的冷數據(二八定律:在數據被存儲後,經常被訪問的數據被稱為熱數據,而極少被訪問的數據被稱為冷數據)。
中國華錄擁有國內唯一一條300G藍光光碟生產線,在盤材質、製作工藝、質量檢測等方面都執行嚴格的質量標准,保證存儲介質的高品質特性。華錄藍光光碟庫產品陣容包括:企業級藍光存儲系統DA-BH7010、DA-BH8010、DA-BH9010、小型藍光光碟庫CA-BH10。