間接定址有什麼作用啊,彙編的間接定址怎麼理解呢?

時間 2022-03-25 21:05:11

1樓:匿名使用者

間接定址:你需要的運算元是存在儲存器中的,每個儲存單元有個位址編碼,當你把這個位址編碼存到某個通用暫存器中(如bx,ax,di,si。。。)意思就是現在暫存器中存放的是你需要的運算元在記憶體(儲存器)中的位置,即儲存單元位址,當你使用指令通過這個暫存器呼叫這個資料的時候就是暫存器間接定址了 過程基本上就是「通過暫存器找到儲存器中的單元位址,再通過這個位址找到該單元裡面的資料」

比如指令 mov ax,[bx] bx=0020h 儲存單元0020h裡面的內容是50d

那麼這條指令結果就是ax=50d

2樓:

使用直接定址作用是可以使儲存單元位址直接包含在指令中,也就是說,位址識別符號指明了指令所要處理數值的位址。

1,使用儲存器間接定址,要定址的變數的位址位於乙個位址(儲存單元)中。

使用儲存器間接定址的程式語句包含如下部分:

• 指令(比如:opn, a, l, 等等。)

• 位址識別符號(db,c , t , i , qw , md , 等等。)

• 以及乙個[變數],該變數必須要用方括號括起來。

2,這個變數包含指令要訪問的運算元位址(指標) 。

3,根據所使用的位址識別符號,指令將以這種特定的[變數]格式,將所儲存的資料看做成字

指標或者雙字指標。

什麼是直接定址,什麼是間接定址,什麼是儲存器定址

3樓:南京新華電腦專修學院

一、直接定址方式

指令所要的運算元存放在記憶體中,在指令中直接給出該運算元的有效位址,這種定址方式為直接定址方式。

在通常情況下,運算元存放在資料段中,所以,其實體地址將由資料段暫存器ds和指令中給出的有效位址直接形成,但如果使用段超越字首,那麼,運算元可存放在其它段。

如mov bx, [1234h]

二、暫存器間接定址方式

運算元在儲存器中,運算元的有效位址用si、di、bx和bp等四個暫存器之一來指定,稱這種定址方式為暫存器間接定址方式。

在不使用段超越字首的情況下,有下列規定:

若有效位址用si、di和bx等之一來指定,則其預設的段暫存器為ds;

若有效位址用bp來指定,則其預設的段暫存器為ss(即:堆疊段)。

如mov bx,[di]

4樓:匿名使用者

直接定址是一種基本的定址方法,其特點是:在指令格式的位址的字段中直接指出運算元在記憶體的位址。間接定址是相對於直接定址而言的,指令位址欄位的形式位址d不是運算元的真正位址,而是運算元位址的指示器,或者說是d單元的內容才是運算元的有效位址。:

儲存器定址是暫存器與儲存器間的定址方式。使用儲存器定址的指令,其運算元通常存放在**段之外的儲存區,如資料段、堆疊段和附加段。

什麼是plc直接定址和間接定址

5樓:

直接定址就是你的資料直接存放在暫存器d中。間接定址就是你的資料存放在暫存器所表示資料的位址中。

舉個例子,你的資料是10,暫存器用d0,如果用直接定址,那麼10就直接儲存到d0中。如果用間接定址,那麼d0裡面的數字是多少,你最後儲存的位址就是多少,比如d0裡面是1,那麼10就放在d1 裡,如果d0裡面是5,那麼10就放在d5裡面,看上去d5並沒有出現在程式裡,但是因為用了間接定址的關係,10就是儲存在d5裡面的。如果俗一點的解釋,間接定址有種隔山打牛的意思,你要把10放在d5裡,但是並不是直接傳送到d5,而是改變d0裡面的數字,來達到間接存放的目的。

那麼,間接定址有什麼意義?直接放到d5不就好了。我所用到的間接定址用法 有兩種情況,一種是當你有很多的資料需要存放在不同位址的時候,可以用到這個間接定址,第二種就是plc和其他裝置進行通訊校驗程式的時候,需要用到間接定址來寫程式(有的也可能不用間接定址)。

什麼是直接定址,什麼是間接定址,什麼是儲存器定址,還有什麼定址的都給我介紹一下,並都舉個例子吧?

6樓:匿名使用者

有一本《微型計算機原理》那裡就講的很清楚,有例子。是清華大學出版社的,現在最新版是第三版,主編:鄭學君、周斌

7樓:成逸仙

看來我對電腦了解太少了,看不太懂,不過感覺解釋得不錯!!

plc中為什麼要間接定址直接定址不得嗎?求解釋

8樓:娛樂小八卦啊

因為用樣的情況下,用間接定址比直接定址快。用間接定址1句話的場合,如果用直接定址,可能無法完成,或者能完成可卻要寫幾十幾百幾千句。

儲存器間接定址址給定格式是:址識別符號+指標。指標所指示儲存單元中所包含數值,就是址確切數值單元。

儲存器間接定址具有兩個指標格式:單字和雙字。單字指標是乙個16bit結構,從0-15bit,指示乙個從0-65535數值,這個數值就是被定址儲存區域編號。

擴充套件資料

暫存器間接定址為通過 cpu的位址暫存器ar1,ar2進行定址。ar1,ar2 均為 32 位暫存器,暫存器間接定址只使用 32 位指標。分為內部區域間接定址和交叉區域定址。

內部區域暫存器間接定址

指標格式與儲存器間接定址的 32 位指標相同,第 0 位~ 第 2 位作為定址操作的位位址,第 3 位~第 18 位作為定址操作的位元組位址,第 19 位 ~第 31 位沒有定義,32 位指標的格式。

交叉區域暫存器間接定址

包含有儲存器區域資訊的指標,稱為交叉區域指標。同樣,交叉區域指標為 32 位,暫存器間接定址要使用位址暫存器 ar1 或 ar2。32 位交叉區域指標,左起 0~18 位格式與 32 位內部區域指標相同,19~23 位,27~20 位未定義,31 位為交叉區域指標標識位。

24~26 位是儲存區域位址標識,8 中組合表示 8 種儲存器區域。

9樓:匿名使用者

用間接定址1句話的場合 如果用直接定址 可能無法完成 或者能完成可你卻要寫幾十幾百幾千句

10樓:匿名使用者

你應該是用的西門子的plc吧,就直接拿乙個應用的例子來解釋吧。

例如,直接定址是你直接對乙個區間的變數賦值或者搬移,例如mov 500,vb100;

間接定址是你對乙個位址賦值或者搬移,例如,你先將 vb100的位址賦給ac1,指令是

movd &vb100,ac1

然後再movd 500,*ac1。

這樣的兩種做法的結果相同;

這樣看,感覺好像直接定址更方便,其實不然,比如如果你是要根據條件賦值給vb100~vb200中的其中乙個;

如果你用直接定址,那麼你得根據條件寫一百個這樣的指令;例如mov 500,vb100;mov 500,vb101。。。。。。

如果你用間接定址,那麼你還是用上述兩句話,

movd &vb100,ac1;

這時候你的ac1就相當於有了vb100的位址,你再加一句,addd ac1,vb10;

之後再用movd 500,*ac1;以後你只需要對vb10賦值,就可以隨意的進行更改你要用的vb,例如vb10 = 1的話,就相當於給vb101賦值。這樣的用法在大規模的程式中,是非常方便的。

11樓:青青子衿

說的對。

大多數情況下都是直接定址,間接定址用的很少。

彙編的間接定址怎麼理解呢?

12樓:亂七胡說八糟亂想

可以算是指標的概念,也就你在組合語言中所用的那個暫存器中放的是乙個位址數,你這條語句所操作的是這個數的位址中的數。

13樓:匿名使用者

只需要記住,間接定址中運算元是資料的家庭住址,而不是資料本身。

(資料的)位址=指標=(所占有記憶體塊的首)位址

常用"常量[暫存器+常量表示式]",即帶有中括號與暫存器的形式出現:資料的位址=(位址)常量+暫存器值+常量表示式值;其中的「常量」通常就是定義的符號標誌,其編譯本質都是代表乙個位址常量

什麼是plc的間接定址,直接定址,指標是什麼概念?

14樓:匿名使用者

直接定址:運算元就存放在資料的位址。基本邏輯指令都是直接定址方式。

你說的間接定址應該是變址定址吧,指標:指標實際上是程式發生轉移時,轉移去的入口位址的標號,一種為p標號,用於跳轉和子程式呼叫的轉移去的入口位址,一種為i標號,稱中斷指標。專用於中斷服務子程式的入口位址。

組合語言中什麼是直接定址和間接定址?

一 直接定址方式。指令所要的運算元存放在記憶體中,在指令中直接給出該運算元的有效位址,這種定址方式為直接定址方式。在通常情況下,運算元存放在資料段中,所以,其實體地址將由資料段暫存器ds和指令中給出的有效位址直接形成,但如果使用段超越字首,那麼,運算元可存放在其它段。如。mov bx,1234h 二...

什麼叫間接接吻啊,什麼是間接接吻

一般人是不會隨便亂吃別人的食物的,當然了.你們是從小玩到大的好朋友.是這樣的,你朋友所說的間接接吻.就是說你嘴碰過的東西她也碰.你那些奇怪的感覺.是你心理作用吧.你對她?有感覺嗎? 如果是朋友就別在意這麼多,如果是想她成你的女朋友。你還是有希望的,她對你有心 你嘴巴碰了雞腿,而後,雞腿又碰了女的嘴巴...

總膽紅素和間接膽紅素稍微偏高有什麼危害

風河之水 不要緊張,如果肝功正常,就不要緊張,膽紅素指標的正常範圍只是大多數人在這個範圍,部分人群是可以稍高於這個範圍的,考慮實驗誤差可能性極大,如果您很在意這個結果,建議複查,可以換另一家醫院,最大的可能是另一家醫院測量的都正常,因為機器很容易出誤差的。你的結果又沒有其他原因可以解釋。沒有問題的,...