存儲器的操作數有哪幾種定址方式
㈠ 存儲器定址方式有哪些
存儲器定址可進一步分為直接定址、寄存器間接定址、寄存器相對定址、基址變址定址、相對基址變址定址
㈡ 什麼是直接定址,什麼是間接定址,什麼是存儲器定址
一、直接定址方式
指令所要的操作數存放在內存中,在指令中直接給出該操作數的有效地址,這種定址方式為直接定址方式。
在通常情況下,操作數存放在數據段中,所以,其物理地址將由數據段寄存器DS和指令中給出的有效地址直接形成,但如果使用段超越前綴,那麼,操作數可存放在其它段。
如
MOV
BX,
[1234H]
二、寄存器間接定址方式
操作數在存儲器中,操作數的有效地址用SI、DI、BX和BP等四個寄存器之一來指定,稱這種定址方式為寄存器間接定址方式。
在不使用段超越前綴的情況下,有下列規定:
若有效地址用SI、DI和BX等之一來指定,則其預設的段寄存器為DS;
若有效地址用BP來指定,則其預設的段寄存器為SS(即:堆棧段)。
如
MOV
BX,[DI]
㈢ 計算機中常用的定址方式有哪幾種
存取數據有關的定址方式:立即定址 、寄存器定址、直接定址、寄存器間接定址、寄存器相對定址、基址變址定址、相對基址變址定址與程序控制有關的定址方式:段內直接定址、段間直接定址、段內間接定址、段間間接定址。
定址方式是指尋找指令或操作數有效地址的方式,也就是指確定本條指令的數據地址,以及下一條將要執行的指令地址的方式。
(3)存儲器的操作數有哪幾種定址方式擴展閱讀:
指令中的地址碼欄位並不代表操作數的真實地址,稱為形式地址(A)。用形式地址並結合定址方式,可以計算出操作數在存儲器中的真實地址,稱為有效地址(EA)。尋找下一條要執行的指令地址稱為指令定址,尋找操作數的地址稱為數據定址。
1、指令定址
指令定址方式分為順序定址方式和跳躍定址方式。
1)順序定址方式可通過程序計數器PC加1,自動形成下一條指令的地址。
2)跳躍定址則通過轉移指令實現。所謂跳躍,是指下條指令的地址碼不是由程序計數器給出的,而是由本條指令給出。
2、數據定址
數據定址是如何在指令中表示一個操作數的地址,如何用這種表示得到操作數或怎樣計算出操作數的地址。
數據定址方式的種類較多,為了區別各種方式,通常在指令中設一個欄位,用來指明屬於屬於那種定址方式。
㈣ 基本指令集對存儲器操作數的定址方式有哪些
. 立即定址 . 直接定址 . 變址定址 . 基址定址 追問: 這幾個尋址方式你能幫我簡單歸納一下嗎。
滿意請採納
㈤ 訪問程序存儲器中的常數數據,可以使用哪些定址方式
1立即數定址;2寄存器定址;3.主存定址。
直接在指令中給出操作數,不需要存儲單元,執行速度快,但是顯然數據也不能冗長,通用型性就差,一般用來指定一些要求不高的整形整數。操作數來源於寄存器,結果也寫回寄存器。顯然這個主要用到寄存器,這也是他的名字的由來。
指令特點
MCS-51的指令系統由111條指令組成。如果按位元組數分類,有49條單位元組指令,46條雙位元組指令和16條三位元組指令,以單位元組指令為主;如果按照指令執行時間分類,有64條單周期指令、45條雙周期指令和2條四周期指令,以單周期指令為主。存儲效率高、執行速度快,可以進行直接地址到直接地址的數據傳送,能把一個並行I/O口中的內容傳送到內部RAM單元中而不必經過累加器A或工作寄存器Rn。這樣可以大大提高傳送速度和緩解累加器A的瓶頸效應。
㈥ 簡述三種不同的定址方式及其操作數來源。
1、定址方式:
立即定址、寄存器定址、直接定址。
2、操作數來源:
立即數、寄存器操作數、內存操作數。
定址方式分為兩類,即指令定址方式和數據定址方式,前者比較簡單,後者比較復雜。值得注意的是,在傳統方式設計的計算機中,內存中指令的定址與數據的定址是交替進行的。
(6)存儲器的操作數有哪幾種定址方式擴展閱讀
順序定址方式
由於指令地址在內存中按順序安排,當執行一段程序時,通常是一條指令接一條指令地順序進行。也就是說,從存儲器取出第1條指令,然後執行這條指令;接著從存儲器取出第2條指令,再執行第二條指令;接著再取出第3條指令。
跳躍定址方式
當程序轉移執行的順序時,指令的定址就採取跳躍定址方式。所謂跳躍,是指下條指令的地址碼不是由程序計數器給出,而是由本條指令給出。注意,程序跳躍後,按新的指令地址開始順序執行。因此,程序計數器的內容也必須相應改變,以便及時跟蹤新的指令地址。
㈦ 匯編語言中操作數定址方式有哪些,各自有什麼特點,怎麼區分呢
形成操作數的有效地址的方法,稱為操作數的定址方式。
例如,一種單地址指令的結構如下所示,其中用X、I、D各欄位組成該指令的操作數地址。操作碼OP 變址X 間址I 形式地址D
指令中操作數欄位的地址碼是由形式地址和定址方式特徵位等組合形成,因此,一般來說,指令中所給出的地址碼,並不是操作數的有效地址。因此,定址過程就是把操作數的形式地址,變換為操作數的有效地址的過程。
一、隱含定址
在指令中不明顯的給出而是隱含著操作數的地址。例如,單地址的指令格式,沒有在地址欄位中指明第
二操作數地址,而是規定累加寄存器AC作為第二操作數地址,AC對單地址指令格式來說是隱含地址。
二、立即定址
指令的地址欄位指出的不是操作數的地址,而是操作數本身。這種方式的特點是指令執行時間很短,不需要訪問內存取數。
例如:單地址的移位指令格式為 OP(移位) F D
這里D不是地址,而是一個操作數。F為標志位,當F=1,操作數進行右移;當F=0時,操作數進行左移。
三、直接定址
直接定址特點是:在指令格式的地址欄位中直接指出操作數在內存的地址D。點擊演示
採用直接定址方式時,指令字中的形式地址D就是操作數的有效地址E,既E=D。因此通常把形式地址。 點擊演示
D又稱為直接地址。此時,由定址模式給予指示。 如果用S表示操作數,那麼直接定址的邏輯表達式為
S=(E)=(D)
四、間接定址
間接定址的情況下,指令地址欄位中的形式地址D不是操作數的真正地址,而是操作數地址的指示器,D單元的內容才是操作數的有效地址。
如果把直接定址和間接定址結合起來,指令有如下形式:操作碼 I D
定址特徵位I=0,表示直接定址,這時有效地址E=D;I=1,表示間接定址,這時有效地址E=(D)。
間接定址方式是早期計算機中經常採用的方式,但由於兩次訪存,影響指令執行速度,現在已不大使用。
五、寄存器定址方式和寄存器間接定址方式
當操作數不放在內存中,而是放在CPU的通用寄存器中時,可採用寄存器定址方式。此時指令中給出的操作數地址不是內存的地址單元號,而是通用寄存器的編號。
寄存器間接定址方式與寄存器定址方式的區別在於:指令格式中的寄存器內容不是操作數,而是操作數的地址,該地址指明的操作數在內存中。
六、相對定址方式
相對定址是把程序計數器PC的內容加上指令格式中的形式地址D而形成操作數的有效地址。程序計數器的內容就是當前指令的地址。「相對」定址,就是相對於當前的指令地址而言。 點擊演示
採用相對定址方式的好處是程序員無須用指令的絕對地址編程,所編程序可以放在內存任何地方。
此時形式地址D通常稱為偏移量,其值可正可負,相對於當前指令地址進行浮動。
七、基址定址方式
基址定址方式是將CPU中基址寄存器的內容加上指令格式中的形式地址而形成操作數的有效地址。點擊演示
它的優點是可以擴大定址能力。同形式地址相比,基址寄存器的位數可以設置得很長,從而可以在較大的存儲空間中定址。
八、變址定址方式
變址定址方式與基址定址方式計算有效地址的方法很相似,它把CPU中某個變址寄存器的內容與偏移量D相加來形成操作數有效地址。 但使用變址定址方式的目的不在於擴大定址空間,而在於實現程序塊的規律性變化。
九、塊定址方式
塊定址方式經常用在輸入輸出指令中,以實現外存儲器或外圍設備同內存之間的數據塊傳送。塊定址方式在內存中還可用於數據塊搬家。 塊定址時,通常在指令中指出數據塊的起始地址(首地址)和數據塊的長度(字數或位元組數)。
如果數據塊是變長的,可用三種方法指出它的長度:
(1)指令中劃出欄位指出長度;
(2)指令格式中指出數據塊的首地址與末地址;
(3)由塊結束字元指出數據塊長度。 操作碼 首地址 標志位 末地址
十、段定址方式
微型機中採用了段定址方式,例如它們可以給定一個20位的地址,從而有1M存儲空間的直接定址能力。為此將整個1M空間存儲器以64K為單位劃分成若干段。在定址一個內存具體單元時,由一個基地址再加上某些寄存器提供的16位偏移量來形成實際的20位物理地址。這個基地址就是CPU中的段寄存器。在形成20位物理地址時,段寄存器中的16位數會自動左移4位,然後以16位偏移量相加,即可形成所需的內存地址。
這種定址方式的實質還是基址定址。 點擊演示
㈧ 指令定址方式主要是哪兩種
指令定址可以細分為順序定址和跳躍定址。
1、順序定址方式
程序中的指令序列在主存中是順序存放的。因此,程序執行時,從該程序的第一條指令開始,逐條取出並逐條執行的。這種程序的順序執行過程,稱為順序定址方式。順序定址可通過程序計數器PC加1,自動形成下一條指令的地址。
2、跳躍定址方式
跳躍定址則需要通過程序轉移類指令實現。跳躍定址的轉移地址形成方式有3種:直接(絕對)、相對和間接定址。
(8)存儲器的操作數有哪幾種定址方式擴展閱讀
在存儲器中,操作數或指令字寫入或讀出的方式,有地址指定方式、相聯存儲方式和堆棧存取方式。幾乎所有的計算機,在內存中都採用地址指定方式。當採用地址指定方式時,形成操作數或指令地址的方式稱為定址方式。
定址方式分為兩類,即指令定址方式和數據定址方式,前者比較簡單,後者比較復雜。值得注意的是,在傳統方式設計的計算機中,內存中指令的定址與數據的定址是交替進行的。
㈨ ip定址方式有哪幾種
七種定址方式「
1、立即定址方式:
操作數就包含在指令中。作為指令的一部分,跟在操作碼後存放在代碼段。
這種操作數成為立即數。立即數可以是8位的,也可以是16位的。
例如:
指令: MOV AX,1234H
則: AX = 1234H
2、寄存器定址方式:
操作數在CPU內部的寄存器中,指令指定寄存器號。
對於16位操作數,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。
對於8位操作數,寄存器可以是AL 、AH、BL、BH、CL、CH、DL、DH。
這種定址方式由於操作數就在寄存器中,不需要訪問存儲器來取得操作數
因而可以取得較高的運算數度。
3、直接定址方式:
操作數在寄存器中,指令直接包含有操作數的有效地址(偏移地址)
註:操作數一般存放在數據段
所以操作數的地址由DS加上指令中直接給出的16位偏移得到。如果採用
段超越前綴,則操作數也可含在數據段外的其他段中。
例如:
MOV AX,[8054]
如(DS) = 2000H,
則執行結果為(AX) = 3050H
(物理地址=20000+8054=28054H)
28054H里的內容為3050H
在匯編語言指令中,可以用符號地址代替數值地址
如:MOV AX,VALUE
此時VALUE為存放操作數單元的符號地址。
如寫成:MOV AX,[VALUE]也是可以的,兩者是等效的。
如VALUE在附加段中,則應指定段超越前綴如下:
MOV AX,ES:VALUE 或 MOV AX,ES:[VALUE]
4、寄存器間接定址方式:
操作數在寄存器中,操作數有效地址在SI、DI、BX、BP
這四個寄存器之一中。在一般情況下,如果有效地址在
SI、DI和BX中,則以DS段寄存器中的內容為段值。如果
有效地址在BP中,則以SS段寄存器中的內容為段值
例如:
MOV AX,[SI]
如果(DS) = 5000H (SI) = 1234H
則物理地址 = 50000 + 1234 = 51234H
51234H地址中的內容為:6789H
執行該指令後,(AX) = 6789H
5、寄存器相對定址方式:
操作數在存儲器中,操作數的有效地址是一個基址寄存器(BX、BP)
或變址寄存器(SI、DI)的內容加上指令中給定的8位或16位位移量之和
BX 8位 位移量
EA(有效地址) = BP +
SI 16位 位移量
DI
在一般情況下,如果SI、DI、或BX中的內容作為有效地址的一部分,那麼
引用的段寄存器是DS;如果BP中的內容作為有效地址的一部分,那麼引用的
段寄存器是SS。
物理地址 = 16d × (DS) + (BX) + 8
或(SI)或16位位移量
或(DI)
物理地址 = 16d × (SS) + (BP) + 8位位移量
或16位位移量
在指令中給定的8位或16位位移量採用補碼形式表示。在計算有效地址時,如
位移量是8位,則被帶符號擴展成16位。
例如:
MOV AX,[DI+1223H]
假設,(DS) = 5000H,(DI) = 3678H
則物理地址 = 50000 + 3678 + 1233 = 5489BH
5489BH地址中的內容:55AAH
執行該指令後AX = 55AAH
下面指令中,源操作數採用寄存器相對定址,引用的段寄存器是SS: MOV BX,[BP-4]
下面指令中,目的操作數採用寄存器相對定址,引用的段寄存器是ES: MOV ES:[BX+5],AL
指令:MOV AX,[SI+3]與MOV AX,3[SI]是等價的
6、基址加變址定址方式:
操作數在寄存器中,操作數的有效地址由:
基址寄存器之一的內容與變址寄存器之一的內容相加
BX SI
即: EA = +
BP DI
在一般情況下,如果BP之內容作為有效地址的一部分,則以SS之內容為段值,否則已DS
為段值。
例如:
MOV AX,[BX][DI]
如:(DS)=2100H,
(BX)=0158H,
(DI)=10A5H
則EA=0158 + 10A5 = 11FD
物理地址=21000 + 11FD = 221FDH
221FDH地址中的內容:1234H
執行該指令後AX = 1234H
下面指令中,目的操作數採用基址加變址定址,
引用的段寄存器是DS: MOV DS:[BP+SI],AL
下面指令中,源操作數採用基址加變址定址,
引用的段寄存器ES: MOV AX,ES:[BX+SI]
這種定址方式使用與數組或表格處理。用基址寄存器存放數組首地址,而用變地寄存器
來定位數組中的各元素,或反之。由於兩個寄存器都可改變,所以能更加靈活地訪問數
組或表格中的元素。
下面的兩種表示方法是等價的:
MOV AX,[BX+DI]
MOV AX,[DI][BX]
7、相對基址加變址定址方式:
操作數在存儲器中,操作數的有效地址由於基址寄存器之一的內容與變址寄存器之一的
內容及指令中給定的8位或16位位移量相加得到。
BX SI 8位
即: EA = + + 位移量
BP DI 16位
在一般情況下,如果BP中的內容作為有效地址的一部分,則以SS段寄存器中的內容為段
值,否則以DS段寄存器中的內容為段值。
在指令中給定的8位或16位位移量採用補碼形式表示。
在計算有效地址時,如果位移量是8位,那麼被帶符號擴展成16位。
當所得的有效地址操作FFFFH時,就取其64K的模
例如:
MOV AX,[BX+DI-2]
假設,(DS) = 5000H, (BX) = 1223H, DI = 54H, (51275) = 54H, (51276) = 76H
物理地址= 50000 + 1223 + 0054 + FFFE(-2 各位取反末位加一) = 51275H
執行該指令後 (AX) = 7654H
相對基址加變址這種定址方式的表示方法多種多樣,以下四種方法均是等價的:
MOV AX,[BX+DI+1234H], MOV AX,1234H[BX][DI]
MOV AX 1234H[BX+DI], MOV AX,1234H[DI][BX]