分類:尋址方式從大的方面可以分成直接尋址和間接尋址。
直接尋址就像甲要和乙說話直接叫乙的名字就可以了,甲直接和乙建立聯(lián)。
間接尋址就像甲要和乙說話,而乙在另外一個(gè)城市,甲就寫了一封信通過郵遞員送給乙,甲通過郵遞員間接和乙建立聯(lián)系,這就叫間接尋址。間接尋址中指針就充當(dāng)了郵遞員的角色。
直接尋址分為:絕對(duì)地址尋址,符號(hào)尋址
間接尋址分為:存儲(chǔ)器間接尋址,寄存器間接尋址。
一、直接尋址
直接尋址是最簡單的尋址方法,也是編程中最常用的尋址方式。
①絕對(duì)地址尋址
絕對(duì)地址尋址就是直接調(diào)用要使用的地址
示例:
I0.0 Q1.0 MW0
②符號(hào)尋址
符號(hào)尋址就是通過符號(hào)表中的絕對(duì)地址的命名進(jìn)行尋址
示例:
用下圖中的I_Motor_Start進(jìn)行尋址。
二、間接尋址
間接尋址是比較復(fù)雜的尋址方式,也是我們這里重點(diǎn)講解的地方,間接尋址需重點(diǎn)理解指針的概念。
指針:理解指針主要需要理解指針的兩個(gè)特性。
A.存儲(chǔ)性:存儲(chǔ)性指的是指針也是一段存儲(chǔ)空間,它的存儲(chǔ)內(nèi)容是地址。
B.指向性:因?yàn)橹羔槾娣诺膬?nèi)容是地址,那么指針中存放的是哪一個(gè)地址,我們就說指針指向了這個(gè)地址所對(duì)應(yīng)的存儲(chǔ)空間,這就是指針的指向性。
A.存儲(chǔ)器間接尋址
【A1】16位指針尋址:
1)、16位指針存儲(chǔ)空間
16位指針存儲(chǔ)空間是16位,2個(gè)字節(jié),通過這2個(gè)字節(jié)的空間來存放變量的地址。
2)、16位指針尋址范圍
16位指針只能對(duì)計(jì)時(shí)器(T),計(jì)數(shù)器(C),數(shù)據(jù)塊(DB,DI)的號(hào),程序塊(FB,FC)的號(hào)進(jìn)行尋址,也就是這2個(gè)字節(jié)的存儲(chǔ)空間中只能存放計(jì)時(shí)器的編號(hào),計(jì)數(shù)器的編號(hào),數(shù)據(jù)塊的編號(hào),程序塊的編號(hào)。
3)、16位指針尋址表示格式
16位指針尋址表示格式為:區(qū)域標(biāo)示符[16位地址指針]
示例:
DB [MW0] //表示對(duì)DB塊進(jìn)行尋址,MW0中如果存儲(chǔ)的是1,那么該尋址結(jié)果為DB1,也就是通過該指令找到了DB1數(shù)據(jù)塊。
T [MW2] //表示對(duì)計(jì)時(shí)器進(jìn)行尋址,MW2中如果存放的是2,那么該尋址結(jié)果為T2,也就是通過該指令找到了計(jì)時(shí)器T2。
4)、16位指針尋址程序示例
例1:
L 2//將2進(jìn)行裝載
T MW 0//將2傳送到MW0
A I 0.0//如果I0.0 = True
L S5T#10S//裝載時(shí)間
SD T [MW0]//T開始計(jì)時(shí)
例2:
L 1//將1進(jìn)行裝載
T MW 0//將1傳送到MW0
OPN DB [MW 0]//打開DB1
L 10//將10進(jìn)行裝載
T DBW 0//將10傳送到DB1.DBW0中
L DBW 0//將DB1.DBW0進(jìn)行裝載
T MW 2//將DB1.DBW0傳送到MW2中
【A2】32位指針尋址
1)、32位指針存儲(chǔ)空間
32位指針存儲(chǔ)空間是32位,4個(gè)字節(jié),通過這4個(gè)字節(jié)的空間來存放變量的地址。
2)、32位指針尋址范圍
32位指針能對(duì)I、Q、M、L、數(shù)據(jù)塊的位、字節(jié)、字、雙字進(jìn)行尋址,也就是這4個(gè)字節(jié)的存儲(chǔ)空間中能對(duì)上述存儲(chǔ)類型中的位、字節(jié)、字、雙字的地址進(jìn)行存儲(chǔ)。
3)、32位指針存儲(chǔ)格式
4)、32位指針尋址表示格式
32位指針尋址表示格式為:地址存儲(chǔ)器標(biāo)示符[32位地址指針]
示例:
I[MD0]//I表示輸入存儲(chǔ)區(qū),MD0存儲(chǔ)地址信息。
Q[MD4]//Q表示輸出存儲(chǔ)區(qū),MD4存儲(chǔ)地址信息。
5)、32位指針三種尋址方法
①直接輸入10進(jìn)制數(shù)尋址(最復(fù)雜最不直觀的尋址方式,不推薦使用)。
②將輸入的10進(jìn)制數(shù)左移3位進(jìn)行尋址(比較直觀的尋址方式)。
③利用 P#字節(jié).位 格式進(jìn)行尋址(最直觀最方便的尋址方式,推薦使用)。
6)、32位指針三種尋址方法舉例
例1:直接輸入10進(jìn)制數(shù)尋址
該程序?qū)崿F(xiàn)的是兩個(gè)數(shù)相加的功能。
這里我們要重點(diǎn)理解為什么第六句將10傳送到了MW4中,而不是MW32中,為什么第八句將15傳送到了MW6中,而不是MW48中。
這是因?yàn)?2,和48存放到指針中是按照32位二進(jìn)制數(shù)進(jìn)行存放的,下面我們通過將48存放到MD24來進(jìn)行舉例說明
由上圖可知將48放進(jìn)MD24則MW[MD24]指向了MW6
例2:左移3為進(jìn)行尋址
由于將10進(jìn)制數(shù)對(duì)應(yīng)的2進(jìn)制數(shù)左移三位后,字節(jié)存儲(chǔ)區(qū)的二進(jìn)制數(shù)和該10進(jìn)制數(shù)對(duì)應(yīng)的2進(jìn)制數(shù)又相同了,而位存儲(chǔ)區(qū)變?yōu)?,所以這樣的尋址要比例1的尋址方式顯得更為直觀,便于使用和理解。
例3:以 P#字節(jié).位 格式進(jìn)行尋址
通過這個(gè)實(shí)例我們可以發(fā)現(xiàn)直接使用P#字節(jié).位的尋址方式是最直觀方便的。
B.寄存器間接尋址
寄存器間接尋址使用的是CPU的地址寄存器AR1和AR2
B1)、尋址格式
區(qū)域標(biāo)示符[AR1/AR2,P#X]
注:
①AR1/AR2表示地址寄存器AR1或者AR2,地址寄存器中只能存放地址。
②P#X表示偏移量X是偏移具體數(shù)值。
B2)、寄存器間接尋址示例
-
程序
+關(guān)注
關(guān)注
117文章
3787瀏覽量
81072 -
尋址方式
+關(guān)注
關(guān)注
2文章
24瀏覽量
9962
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論