一区二区三区成人-一区二区三区www-一区二区三区 日韩-一区二区日韩欧美-一区二区日韩精品中文字幕-一区二区日韩

uthman
QQ:3749615
級別: 家園?
精華主題: 1 篇
發帖數量: 460 個
工控威望: 821 點
下載積分: 2741 分
在線時間: 791(小時)
注冊時間: 2007-10-25
最后登錄: 2025-08-14
查看uthman的 主題 / 回貼
樓主  發表于: 2025-03-07 18:49
以下是三菱8bit*8bit乘法器實現代碼(教學用)
LD SM400
DMOV K0 K8B20
MOV K0 Z0
FOR K8
LD SM400
MOV K0 Z1
MOV Z0 Z2
DMOV K0 K8B40
LD B10Z0
CALL P1
LD SM400
CALL P2
LD SM400
DMOV K8B60 K8B20
LD SM400
INC Z0
NEXT
LD SM400
DMOV K8B20 D10
FEND
P1
FOR K8
LD B0Z1
OUT B40Z2
LD SM400
INC Z1
INC Z2
NEXT
RET
P2
LD SM400
MOV K0 Z5
DMOV K0 K8B60
ANI SM400
OUT M100
FOR K16
LDI B20Z5
AND B40Z5
LD B20Z5
ANI B40Z5
ORB
ANI M100
LDI B20Z5
ANI B40Z5
LD B20Z5
AND B40Z5
ORB
AND M100
ORB
OUT B60Z5
LD B20Z5
AND B40Z5
LDI B20Z5
AND B40Z5
LD B20Z5
ANI B40Z5
ORB
AND M100
ORB
OUT M100
LD SM400
INC Z5
NEXT
RET
END
解釋代碼,k8b0 代表8*4bit連續的32bit(b0-b0f,b10-b1f),其中軟元件編號是16進制的(b0-b0f),b0是一個bit.
以上是向大模型提問,結果如下
深度思考:
嗯,我現在得仔細看看這個三菱PLC的代碼,然后解釋它的功能。首先,用戶已經給出了一些代碼,并且提到k8b0代表的是8組4位連續的32位,比如B0到B0F,B10到B1F等等,其中軟元件編號是十六進制的,每個B0是一個單獨的位。我需要一步一步分析這段代碼的結構和執行流程,理解每個指令的作用,然后總結整個程序的功能。

首先,代碼的結構看起來分為主程序部分、子程序P1和P2,最后結束。主程序從LD SM400開始,SM400是常ON的特殊繼電器,所以接下來的指令會在每個掃描周期執行。

主程序部分:
1. DMOV K0 K8B20:這是雙字傳送指令,把K0(即0)傳送到K8B20。根據用戶的說明,K8B20代表8組4位,也就是32位,即B20到B2F這16個位,但每個是4位?可能這里的K8B20指的是從B20開始的8個4位組,也就是B20到B5F?或者可能K8B20表示連續32位,即B20開始的32個位,例如B20到B3F?這點可能需要更仔細確認。比如,如果是每個B后面是十六進制的編號,那么B20是單獨的位,接著是B21,B22...到B2F,然后B30到B3F,這樣K8B20可能代表從B20開始的8*4=32位?比如,每個K4是16位,所以K8就是32位?這里可能需要明確三菱的指令格式。通常,K8B20可能指的是從B20開始的8個字節(即B20到B27,每個字節4位的話可能不是,這可能需要更仔細理解用戶給出的定義。根據用戶的說明,k8b0代表8*4位連續的32位,也就是每個K8Bx代表32位,比如B0到B0F(16位)加上B10到B1F(另外16位)?或者可能用戶的意思是每個K8B是8個4位,即8*4=32位。例如,K8B0對應B0到B3F?可能這里每個K8B后面的數字是起始地址,例如K8B20就是從B20開始,連續的8個4位塊,即B20, B24, B28, B2C, B30, B34, B38, B3C,每個4位,共32位?或者可能這里的K8B20代表的是從B20開始的8個位,但用戶提到是連續的32位,所以可能需要每個K8B對應32位,即起始地址為B20的32個連續位,即B20到B3F(因為32位是4個字節,每個字節8位?這可能需要確認三菱的軟元件地址結構,但用戶特別說明是B0到B0F(16位)和B10到B1F(另一個16位),所以K8B0對應的是B0到B0F(16位)加上B10到B1F(另外16位),總共有32位。因此,K8B20可能指的是從B20到B2F(16位)加上B30到B3F(16位)共32位。這可能是正確的。不過,可能用戶在這里的表示方式可能不同,但按用戶說明,k8b0是8*4=32位連續的,比如每4位為一組,共8組,總32位。例如,可能每個4位對應一個十六進制的半字節,所以起始地址是B0,接下來的4位是B0到B3,然后下一組是B4到B7,直到第8組。但用戶給出的例子是k8b0對應B0-B0F(即B0到B15?這似乎有矛盾,因為B0F是B0到B15?如果是十六進制的話,B0到B0F是16個位,每個十六進制數字代表4位,比如B0代表第0位,B1是第1位,直到B0F是第15位?可能這里的B后面的數字是十六進制的,所以B0到B0F是16位,B10到B1F是另外16位,共32位。那么K8B0指的是從B0開始的8個4位塊,即每個塊是4位,所以每增加4位就是一個塊。例如,塊0是B0-B3,塊1是B4-B7,塊2是B8-BB,塊3是BC-BF,塊4是B10-B13,依此類推,直到第8塊。但可能用戶的意思更簡單,即K8B0代表從B0開始連續的32位,也就是B0到B1F(32位)。比如,K8表示8個字節(每個字節4位?這可能不太對),或者K8表示8組4位,共32位。這個時候,K8B20代表的是從B20開始的32位,即B20到B3F(假設每個地址是四位的話,可能需要再計算)。這個部分可能需要更仔細的分析。

不過,在代碼中,K8B20可能被用作一個32位的存儲區域,用來存儲數據。例如,DMOV K0 K8B20將0傳送到K8B20的32位中,即清零這個區域。

接下來是MOV K0 Z0,將0傳送到Z0寄存器。Z寄存器是變址寄存器,通常用于間接尋址。

然后進入一個FOR循環,循環次數是K8,也就是循環8次。循環體內,首先LD SM400,然后MOV K0 Z1,將0傳給Z1,接著MOV Z0 Z2,將Z0的值傳給Z2。然后DMOV K0 K8B40,同樣清零K8B40的32位。

接下來是LD B10Z0,這里可能是一個位狀態加載,B10是基地址,加上Z0的值作為偏移。例如,如果Z0是0,那么就是B10;如果Z0是1,就是B11,依此類推。然后調用子程序P1。

接下來,CALL P2,調用子程序P2。然后DMOV K8B60 K8B20,將K8B60的32位數據傳送到K8B20。然后INC Z0,Z0自增1。之后NEXT結束循環,總共循環8次。

循環結束后,DMOV K8B20 D10,將K8B20的32位數據傳送到數據寄存器D10(雙字)。然后FEND結束主程序。

接下來是子程序P1。在P1中,有一個FOR K8循環,即循環8次。循環體內,LD B0Z1,加載B0加上Z1偏移的位狀態。例如,Z1初始為0,所以第一次是B0,然后Z1自增,變為1,就是B1,依此類推。然后OUT B40Z2,將結果輸出到B40加上Z2的偏移地址。例如,如果Z2初始是Z0的值,假設Z0初始是0,那么第一次Z2是0,所以B40。之后,INC Z1和INC Z2,每次循環增加Z1和Z2的值。NEXT循環8次,最后RET返回。

子程序P2則比較復雜。首先MOV K0 Z5,將0傳給Z5。然后DMOV K0 K8B60,清零K8B60的32位。接著ANI SM400,SM400是常ON的,所以ANI SM400相當于取反,得到OFF,然后OUT M100,將M100置為OFF。接下來是FOR K16循環,循環16次。在循環體內:

LDI B20Z5:加載非B20+Z5的狀態。
AND B40Z5:與B40+Z5的狀態相與。
然后:
LD B20Z5:加載B20+Z5的狀態。
ANI B40Z5:與B40+Z5的非狀態相與。
ORB:將上述兩個結果進行或操作。
ANI M100:與M100的非狀態相與。
接著另一部分:
LDI B20Z5:加載非B20+Z5的狀態。
ANI B40Z5:與非B40+Z5的狀態相與。
LD B20Z5:加載B20+Z5的狀態。
AND B40Z5:與B40+Z5的狀態相與。
ORB:將這兩個結果或操作。
AND M100:與M100的狀態相與。
然后ORB:將上述兩個大塊的結果再進行或操作。
OUT B60Z5:輸出到B60+Z5的位。
接下來:
LD B20Z5 AND B40Z5:B20和B40對應位的與。
LDI B20Z5 AND B40Z5:非B20與B40的與?或者LDI B20Z5,然后AND B40Z5?可能需要更仔細看代碼。
代碼可能是:
LD B20Z5
AND B40Z5
LDI B20Z5
AND B40Z5
LD B20Z5
ANI B40Z5
ORB
AND M100
ORB
OUT M100
這部分可能是在計算某種邏輯,比如半加器或者全加器的進位?

然后INC Z5,循環16次,最后RET返回。

現在需要把這些邏輯綜合起來,理解整個程序的功能。

首先主程序循環8次,每次循環中,調用P1和P2,然后將K8B60的數據移動到K8B20,最后將最終結果存入D10。

子程序P1的功能可能是將B0開始的位,經過某種處理復制到B40開始的區域。因為P1中的循環次數是8次,每次將B0Z1的值輸出到B40Z2。因為Z1和Z2在每次循環中自增,所以可能是在將B0到B7的位復制到B40到B47的位置?或者如果Z0的值在變化的話,可能每次主循環中Z0遞增,從而處理不同的位?

主循環中的Z0初始為0,然后每次循環INC Z0,總共循環8次,所以Z0的值從0到7。

在調用P1時,B10Z0作為觸發條件,即當B10+Z0的位為ON時,調用P1。例如,當Z0=0時,檢查B10;Z0=1時檢查B11,依此類推。如果B10+Z0為ON,則執行P1。

P1的作用可能是在每個主循環中,根據Z0的值,將B0開始的8個位復制到B40的某個區域。例如,當主循環中的Z0為n,則Z2初始是Z0的值,所以P1中的Z2從n開始,每次循環增加,可能將B0到B7的位復制到B40+n的位置?或者具體要看Z0和循環次數。

可能主循環中的每個循環處理一個不同的部分,例如,處理不同的位組,每次調用P1可能將一組8位數據從B0區域移動到B40區域的一個偏移位置,然后P2處理這些數據進行某種邏輯運算,結果存入K8B60,之后移動到K8B20,最后保存到D10。

P2的循環次數是16次,每次處理不同的位,可能進行的是按位的邏輯運算,例如異或或者加法,并處理進位。例如,M100可能作為進位標志,用來處理加法過程中的進位。每次循環處理B20Z5和B40Z5的位,可能進行加法或者異或操作,結果存入B60Z5,并更新進位M100。

綜合起來,整個程序可能是在進行某種位操作或算術運算,例如將兩個32位數(來自K8B20和K8B40)進行按位的邏輯運算,并將結果存入K8B60,然后移動到K8B20,最終結果存入D10。而主循環的8次循環可能處理不同的數據塊,或者分步處理數據。

可能的流程如下:

1. 初始化K8B20和Z0為0。
2. 主循環8次,每次循環:
   a. 清零K8B40。
   b. 如果B10+Z0為ON,調用P1,將B0開始的位復制到B40區域。
   c. 調用P2,處理K8B20和K8B40的數據,結果存入K8B60,并更新進位。
   d. 將K8B60的數據移動到K8B20。
   e. Z0遞增。
3. 循環結束后,將K8B20的數據存入D10。

其中,P1可能用于加載數據到B40區域,而P2進行某種運算,如加法或邏輯運算,結合進位處理。例如,P2可能是一個16位的加法器,每次處理一位,并處理進位,但需要詳細分析P2的邏輯。

在P2中,Z5從0到15循環,每次處理B20Z5和B40Z5的位,可能進行加法運算:

每個位的和是(B20Z5 XOR B40Z5 XOR M100),而新的進位是(B20Z5 AND B40Z5) OR (B20Z5 AND M100) OR (B40Z5 AND M100)。但需要看代碼中的邏輯。

但根據代碼中的結構,可能P2中的邏輯比較復雜:

在P2的循環中,首先計算兩個部分:

第一部分:
- LDI B20Z5 AND B40Z5 → (NOT B20Z5) AND B40Z5
- ORB之后可能是((NOT B20Z5 AND B40Z5) OR (B20Z5 AND NOT B40Z5)) → 即B20Z5 XOR B40Z5
然后 ANI M100 → (B20 XOR B40) AND NOT M100

第二部分:
- (NOT B20Z5 AND NOT B40Z5) OR (B20Z5 AND B40Z5) → 即 (B20 AND B40) OR (NOT B20 AND NOT B40) → 即 XNOR
然后 AND M100 → XNOR結果與 M100(即進位)相與

然后將這兩個部分相或,輸出到B60Z5。這可能是在計算當前位的和,考慮進位的情況。

同時,另一部分計算新的進位:
可能計算(B20Z5 AND B40Z5) OR ((B20Z5 XOR B40Z5) AND M100),即全加器的進位輸出。

所以整體來說,P2可能是在執行兩個32位數的加法運算,其中每個循環處理一個位,并考慮進位。因此,整個程序可能是一個32位加法器,分8次循環處理,每次處理4位?或者可能主循環的8次循環處理不同的數據塊,而每個P2處理16位,總共處理32位?

不過可能主循環的8次循環用于某種移位或其他操作,而P2每次處理16位,但需要更詳細的分析。

總之,這段代碼可能的功能是:將兩個32位數(存儲在K8B20和K8B40)進行加法或其他邏輯運算,結果存儲在K8B60,然后移動到K8B20,最終結果存入D10。主循環可能用于處理進位或其他分步操作,而子程序P1用于加載數據到K8B40,P2執行實際的運算。

回答:


這段三菱PLC程序主要實現了一個32位數據的處理過程,涉及數據移動、邏輯運算及循環控制。以下是對代碼的詳細解釋:

---

### **主程序流程**
1. **初始化**
   - `DMOV K0 K8B20`:將32位區域K8B20(B20-B3F)清零。
   - `MOV K0 Z0`:變址寄存器Z0初始化為0,用于控制主循環的偏移。

2. **主循環(8次)**
   ```plaintext
   FOR K8 ... NEXT
   ```
   - **每次循環執行以下操作**:
     - `MOV K0 Z1` 和 `MOV Z0 Z2`:初始化Z1為0,Z2為Z0的值,用于子程序P1的尋址。
     - `DMOV K0 K8B40`:清零32位區域K8B40(B40-B5F)。
     - `LD B10Z0`:根據B10+Z0的值決定是否調用P1(條件加載)。
     - `CALL P1`:調用子程序P1,將B0-B7的位復制到B40區域。
     - `CALL P2`:調用子程序P2,進行邏輯運算(類似全加器)。
     - `DMOV K8B60 K8B20`:將運算結果(K8B60)移動到K8B20。
     - `INC Z0`:Z0遞增,控制下一輪循環的偏移。

3. **最終存儲**
   - `DMOV K8B20 D10`:將最終結果(K8B20的32位數據)存入雙字寄存器D10。

---

### **子程序P1:數據復制**
```plaintext
P1 ... RET
```
- **功能**:將B0開始的8個位復制到B40區域,偏移由Z2(即Z0)控制。
- **循環8次**:
  - `LD B0Z1`:加載B0+Z1的位狀態(如Z1=0時為B0)。
  - `OUT B40Z2`:輸出到B40+Z2的位(如Z2=0時為B40)。
  - 每次循環遞增Z1和Z2,實現連續復制。

---

### **子程序P2:邏輯運算(類似全加器)**
```plaintext
P2 ... RET
```
1. **初始化**
   - `MOV K0 Z5`:Z5初始化為0,用于位運算的循環控制。
   - `DMOV K0 K8B60`:清零結果區域K8B60(B60-B7F)。
   - `OUT M100`:復位進位標志M100。

2. **循環16次(處理16位)**
   ```plaintext
   FOR K16 ... NEXT
   ```
   - **計算當前位的和**:
     - 邏輯組合:`(B20Z5 XOR B40Z5) & ¬M100 | (B20Z5 XNOR B40Z5) & M100`
       等價于 `B20Z5 + B40Z5 + M100` 的當前位值,結果存入B60Z5。
   - **更新進位M100**:
     - 新進位:`(B20Z5 & B40Z5) | ((B20Z5 ^ B40Z5) & M100)`。
   - `INC Z5`:處理下一位。

---

### **關鍵軟元件說明**
- **K8Bxx**:表示32位連續區域,如K8B20對應B20-B3F的32個位。
- **Z0-Z5**:變址寄存器,用于動態尋址。
- **SM400**:常ON特殊繼電器,確保指令在每個掃描周期執行。
- **M100**:進位標志,用于多精度運算的進位傳遞。

---

### **程序功能總結**
- **主循環**:分8次處理32位數據,每次處理4位(由P2的16次循環推測為雙字運算)。
- **P1**:動態復制輸入數據到運算區域(B40)。
- **P2**:實現32位加法運算,支持進位傳遞,結果存入B60。
- **最終結果**:通過D10保存運算后的32位數據。

該程序可能用于高精度計算(如加密、校驗和等),通過循環和位操作實現復雜的邏輯處理。
uthman
QQ:3749615
級別: 家園常客
精華主題: 1 篇
發帖數量: 460 個
工控威望: 821 點
下載積分: 2741 分
在線時間: 791(小時)
注冊時間: 2007-10-25
最后登錄: 2025-08-14
查看uthman的 主題 / 回貼
1樓  發表于: 2025-03-07 18:57
解釋代碼,k8b0 代表8*4bit連續的32bit(b0-b0f,b10-b1f),其中軟元件編號是16進制的(b0-b0f),b0是一個bit.
修改提示詞:分析代碼作用,k8b0 代表8*4bit連續的32bit(b0-b0f,b10-b1f),其中軟元件編號是16進制的(b0-b0f),b0是一個bit.
好的,我現在需要分析用戶提供的這段PLC代碼的作用。首先,用戶已經給出了一些關鍵點,比如K8B20代表8組連續的4位,也就是32位,從B20開始,每個塊是B20-B2F這樣的結構。另外,軟元件編號是十六進制的,B0是一個單獨的位。

首先,我需要仔細閱讀代碼,理解每一部分的邏輯?赡苌婕暗窖h、子程序調用以及位操作等。讓我先通讀一遍代碼,然后逐步拆解。

代碼的大致結構如下:

主程序部分:
- DMOV K0 K8B20:將0傳送到以K8B20開始的32位區域,即B20-B2F清零。
- MOV K0 Z0:將Z0寄存器置0。
- FOR K8:開始一個8次的循環。
- 在循環內部:
  - LD SM400(常閉觸點,一直導通)
  - MOV K0 Z1:Z1置0。
  - MOV Z0 Z2:Z2的值等于Z0。
  - DMOV K0 K8B40:B40-B4F清零。
  - LD B10Z0:加載B10加上Z0偏移的位。例如,Z0=0時是B10,Z0=1時是B11,以此類推。
  - CALL P1:調用子程序P1。
  - 接著調用P2。
  - DMOV K8B60 K8B20:將K8B60(B60-B6F)的內容傳送到K8B20(B20-B2F)。
  - INC Z0:Z0自增1。
- 循環結束后,DMOV K8B20 D10:將K8B20的內容傳送到D10。

子程序P1:
- FOR K8循環8次。
  - 每次循環中,LD B0Z1:加載B0加上Z1偏移的位。
  - OUT B40Z2:將結果輸出到B40加上Z2偏移的位置。
  - 然后Z1和Z2自增。
- 返回RET。

子程序P2:
- 初始化Z5為0,K8B60清零。
- 使用M100作為中間變量。
- FOR K16循環16次:
  - 處理B20Z5和B40Z5的位,進行邏輯運算,結果存到B60Z5和M100。
  - Z5自增。
- 返回RET。

現在需要理解每個子程序的作用,以及整個程序的功能。

首先,主程序中的FOR K8循環執行8次。每次循環開始時,Z0的值從0到7。然后調用P1和P2。之后將K8B60(處理后的結果)傳送到K8B20,覆蓋原來的值。最后將最終的K8B20傳送到D10。

子程序P1:看起來是將B0開始的位,根據Z1的偏移,傳送到B40開始的位。每次循環移動一個位,循環8次。由于主程序中Z0被用作偏移,Z2等于Z0,所以可能P1是在將B0開始的某部分數據復制到B40的某個區域,具體位置由Z0決定。

子程序P2:處理B20和B40的對應位,進行某種邏輯運算,結果存入B60和M100。可能是在進行按位的邏輯操作,比如異或、與、或等,但需要詳細分析。

接下來,具體分析每個子程序。

首先主程序部分:

初始時,B20-B2F被清零,Z0=0。進入循環,8次循環。

每次循環:
- Z1=0,Z2=Z0。例如,第一次循環Z0=0,所以Z2=0,第二次Z0=1,Z2=1,依此類推。
- B40-B4F被清零。
- 檢查B10+Z0的狀態,如果為ON,則調用P1。
- 調用P2。
- 將B60的內容復制到B20,覆蓋原值。
- Z0自增。

P1子程序:

循環8次,每次:
- 將B0+Z1的位狀態輸出到B40+Z2的位置。例如,當Z1=0,Z2=0時,B0的值傳到B40;當Z1=1,Z2=1時,B1傳到B41,以此類推。但主程序中每次調用P1時,Z2初始值是Z0的值,而循環中Z2會自增。例如,假設主循環中Z0=0,那么Z2從0開始,循環8次,每次Z2增加1,所以P1會將B0到B7的位復制到B40到B47的位置。如果主循環中Z0=1,那么Z2從1開始,B0到B7會被復制到B41到B48的位置?

不過這可能有問題,因為B40的塊是K8B40,即8組4位,共32位。所以B40到B4F。而Z2的可能取值范圍?主循環中Z0從0到7,每次調用P1時,Z2初始為Z0,然后在P1循環中Z2增加到Z0+7。例如,當Z0=0時,Z2從0到7,對應B40到B47。當Z0=1時,Z2從1到8,對應B41到B48,但B48可能超出了K8B40的范圍?或者這里的地址是十六進制,比如B40到B4F共16位,但用戶說明是每個K8B是8組4位,即32位,可能需要更仔細的理解。

可能這里的每個K8B代表8個4位的塊,比如K8B20表示從B20開始的8個4位塊,即B20-B23(第1塊),B24-B27(第2塊),直到B3C-B3F(第8塊),總共32位。但用戶說明中提到,軟元件編號是十六進制的,比如B0到B0F是連續的位地址,其中每個塊是4位。例如,B0到B03是第一個4位塊,B04到B07是第二個,依此類推。所以K8B20應該是從B20開始的8個4位塊,即B20-B23, B24-B27, ..., B3C-B3F,共32位。

但是子程序P1中的操作是每次處理一個位。例如,B0Z1中的Z1是位偏移,假設B0是起始地址,Z1從0到7,那么B0Z1依次是B0, B1, ..., B7。同樣,B40Z2是B40, B41, ..., B47(當Z2從0到7時)。這可能意味著每個4位塊中的每個位被單獨處理。例如,當將B0的位復制到B40的位置,這可能是在處理位級別的數據。

而主程序中調用P1的條件是當B10+Z0為ON時。例如,第一次循環中,如果B10(即B1 0,可能是指B10地址的位)為ON,則執行P1。但主程序中Z0在循環中從0到7,因此B10+Z0對應的位是B10到B17(如果Z0是0到7的話)。這可能是一個條件判斷,根據不同的循環次數,檢查不同的B10+Z0位是否為真,決定是否調用P1。

接下來,子程序P2的處理比較復雜。在P2中,首先清零K8B60,即B60-B6F。然后使用M100作為中間變量,進行16次循環。每次循環中,處理B20Z5和B40Z5的位:

邏輯運算部分:

第一部分:
LDI B20Z5       ; 取B20Z5的非
AND B40Z5       ; 和B40Z5相與
結果為 (NOT B20Z5) AND B40Z5

第二部分:
LD B20Z5        ; 取B20Z5
ANI B40Z5       ; 與B40Z5的非相與
結果為 B20Z5 AND (NOT B40Z5)

然后將這兩部分OR起來,得到 ((NOT B20Z5) AND B40Z5) OR (B20Z5 AND (NOT B40Z5)),這其實就是B20Z5 XOR B40Z5的結果。

接著,這部分的結果再與M100的非相與: ANI M100,所以如果M100為OFF,則保留結果;否則結果為0。

第三部分:
LDI B20Z5       ; NOT B20Z5
ANI B40Z5       ; 與B40Z5的非相與,得到 (NOT B20Z5) AND (NOT B40Z5)
LD B20Z5        
AND B40Z5       ; B20Z5 AND B40Z5
ORB              ; 將這兩部分OR,得到 (NOT B20Z5 AND NOT B40Z5) OR (B20Z5 AND B40Z5),即 XNOR 的結果
AND M100        ; 與M100相與,所以只有當M100為ON時,這部分才可能為真

然后將這兩部分OR起來,得到最終的輸出到B60Z5的值。這相當于:

B60Z5 = ( (B20Z5 XOR B40Z5) AND NOT M100 ) OR ( (B20Z5 XNOR B40Z5) AND M100 )

同時,接下來的部分計算新的M100:

計算:
B20Z5 AND B40Z5 → 第一部分
LDI B20Z5 AND B40Z5 → 取反,即 NOT (B20Z5 AND B40Z5)
然后與之前的 ORB 結果結合,可能這部分代碼有點復雜,可能需要更仔細的分析。

不過看起來,P2子程序中的邏輯可能是在實現某種加法器的進位處理,比如全加器的進位鏈,其中M100作為進位標志;蛘呤窃谶M行按位的邏輯運算,比如異或和與操作,用于某種計算,比如乘法或位移。

結合主程序中的結構,每次循環調用P1和P2,然后將結果從B60復制到B20,這可能是一個迭代處理的過程,比如進行8次循環,每次處理不同的位,最終結果存儲在D10中。

現在,綜合所有信息,可能的程序功能是什么?

主程序循環8次,每次可能處理一個位的位置(因為Z0從0到7)。在每次循環中,可能將B0的某個部分復制到B40,然后與B20中的數據進行某種邏輯運算,結果存入B60,再覆蓋B20。經過8次循環后,最終結果存入D10。

可能的整體功能是:將B0中的某個數據與B20中的數據進行某種運算(比如乘法、異或、循環移位等),經過8次迭代后得到結果存儲在D10中。

例如,如果B0中的某部分數據被復制到B40,然后和B20的數據進行異或和與操作,可能在進行某種位操作,比如乘法或者移位相加的過程,類似于硬件乘法器的實現。

另外,注意到在每次主循環中,調用P1的條件是當B10Z0為ON時。這可能是在控制是否進行某種操作,比如如果B10Z0為真,則執行P1,將B0的某些位復制到B40中。否則,可能B40保持清零。這可能對應于一個條件判斷,例如根據不同的循環次數,選擇是否加載某個數據到B40。

例如,假設B10到B17的位控制每次循環是否將B0到B7的數據加載到B40的不同位置,從而進行某種位移操作。而P2中的處理可能是在執行加法或者異或操作,結合進位處理,最終結果存儲在B60,并覆蓋到B20,進行下一次循環。

可能的例子:進行8次循環,每次循環處理一個字節或字的某一位,比如進行乘法操作,其中每次循環將部分積相加,并移位。

例如,假設B20初始為0,每次循環中將B0的數據(可能是一個乘數)根據當前循環次數的位(由B10Z0判斷是否置位)決定是否加到中間結果中,然后進行移位,最終得到乘法結果存儲在D10中。

但需要更多的細節來確認這一點。

另一種可能是,該程序實現的是兩個32位數的按位邏輯運算,比如異或,并且經過某種處理,最后將結果存入D10;蛘哌M行循環移位,每次循環處理一個位,經過8次循環后得到結果。

或者,更有可能的是,該程序實現的是兩個32位數的乘法運算,其中每次循環處理乘數的一個位,如果該位為1,則將被乘數(可能存放在B0開始的區域)左移相應的位數后加到中間結果中。

例如,在乘法運算中,乘數的每一位如果是1,則將被乘數左移相應的位數后加到結果中。這里主程序循環8次,每次處理乘數的一個位(由B10Z0是否為1判斷),如果是1,則調用P1將被乘數(B0開始的區域)復制到B40的相應位置,然后P2進行加法操作,其中處理進位。

不過P2中的邏輯運算可能更復雜,需要進一步分析。

另一種思路:P1可能將被乘數左移Z0位,然后將結果存放在B40中。例如,當Z0=0時,被乘數原樣復制到B40;當Z0=1時,左移1位(即每個位都移動到更高一位的位置),依此類推。而P2可能將B20(當前的部分積)與B40(被乘數左移后的值)相加,結果存入B60,然后覆蓋到B20,以便下一次循環使用。經過8次循環后,得到最終的乘積,存入D10。

這種情況下,每次循環對應乘數的一個位,如果該位為1(由B10Z0是否為1判斷),則將被乘數左移相應的位數并加到部分積中。

但需要詳細分析P1和P2的邏輯是否符合這種操作。

例如,P1中,當調用時,會將B0Z1(被乘數的各個位)復制到B40Z2的位置,其中Z2初始為Z0,每次循環Z1和Z2自增。假設在每次主循環中,Z0從0到7,這樣在P1中,B0的各個位會被復制到B40的偏移為Z0的位置,也就是被乘數左移了Z0位。例如,當Z0=0時,B0的位被復制到B40的相同位置(不移位);當Z0=1時,被復制到B40+1的位置,相當于左移1位。這樣,每次調用P1時,B40中的內容相當于被乘數左移了Z0位。

然后,P2中將B20(當前部分積)與B40(被乘數左移后的值)相加,處理進位,結果存入B60,覆蓋到B20。這樣,經過8次循環后,B20中存儲的就是乘積結果,最后存入D10。

這種情況下,該程序可能實現的是32位乘法,其中被乘數存放在B0開始的區域,乘數的每一位存放在B10開始的區域(B10到B17),每次循環處理乘數的一個位,如果是1,則將被乘數左移相應的位數后加到部分積中。最終結果存放在D10中。

驗證這一假設:

主程序中,每次循環Z0從0到7,對應乘數的每一位B10到B17。如果當前位為1,則調用P1,將被乘數左移Z0位,存入B40。然后P2執行加法,將部分積(B20)與B40相加,結果存入B60,覆蓋B20。

例如,第一次循環(Z0=0)時,如果B10為1,則P1將B0的位復制到B40的相同位置(不移位)。然后P2將B20(初始為0)加上B40(被乘數),結果存入B20。下一次循環,Z0=1,如果B11為1,則P1將被乘數左移1位存入B40,然后P2將當前部分積加上左移后的被乘數,以此類推。經過8次循環,最終得到被乘數乘以乘數的結果,其中乘數的每一位由B10到B17控制。

如果這樣,那么P2中的邏輯運算實際上是在執行帶進位的加法。因為每次處理兩個位(B20Z5和B40Z5)以及進位M100,計算當前位的和和新的進位。具體來說,加法器的邏輯是:

當前位的和 = (A XOR B XOR CarryIn)
CarryOut = (A AND B) OR (A AND CarryIn) OR (B AND CarryIn)

但需要看P2中的邏輯是否符合這一模式。

在P2的代碼中:

每次循環處理B20Z5(A)和B40Z5(B),以及進位M100(CarryIn)。

根據代碼中的邏輯:

計算B60Z5的值:
- 第一部分:(A XOR B) AND NOT M100
- 第二部分:(A XNOR B) AND M100
然后OR起來,得到的結果是:

如果M100為0,則結果是A XOR B;如果M100為1,則結果是A XNOR B,即 NOT (A XOR B)。這似乎和加法器的邏輯不符。

或者可能代碼中存在錯誤,或者我的分析有誤。需要重新分析P2中的邏輯。

在P2的代碼中,每個循環處理位的位置由Z5從0到15,共16次循環,可能處理每個4位塊的每一位?

或者,可能是處理32位中的每一位?不過主程序中的循環是8次,而這里的循環是16次,可能與數據長度有關。

可能我需要更仔細地逐行分析P2的代碼。

子程序P2:

LD SM400
MOV K0 Z5           ; Z5 = 0
DMOV K0 K8B60       ; B60-B6F清零
ANI SM400           ; SM400是常閉觸點,ANI SM400即AND NOT SM400,但SM400總為ON,所以這里的結果是OFF,可能是一個錯誤?或者可能代碼中的指令有誤?
OUT M100            ; 將結果(OFF)輸出到M100,即M100=OFF
FOR K16             ; 循環16次
LDI B20Z5           ; 加載NOT B20Z5
AND B40Z5           ; 與B40Z5,得到 (NOT A) AND B
LD B20Z5            ; 加載A
ANI B40Z5           ; 與NOT B,得到 A AND (NOT B)
ORB                 ; 將兩部分OR,得到 (NOT A AND B) OR (A AND NOT B) = A XOR B
ANI M100            ; 與 NOT M100(因為M100之前被設為OFF?或者這里的邏輯可能有問題)
LDI B20Z5           ; NOT A
ANI B40Z5           ; NOT B
LD B20Z5            ; A
AND B40Z5           ; B
ORB                 ; (NOT A AND NOT B) OR (A AND B) = A XNOR B
AND M100            ; 與M100
ORB                 ; 將這兩部分OR
OUT B60Z5           ; 輸出到B60Z5

接下來,處理進位:
LD B20Z5            ; A
AND B40Z5           ; B,得到 A AND B
LDI B20Z5           ; NOT A
AND B40Z5           ; B,得到 NOT A AND B
LD B20Z5            ; A
ANI B40Z5           ; NOT B,得到 A AND NOT B
ORB                 ; (NOT A AND B) OR (A AND NOT B) = A XOR B
AND M100            ; 與M100
ORB                 ; 結合之前的A AND B
OUT M100            ; 設置新的M100

這部分似乎是在計算新的進位M100?赡艿倪壿嬍牵

新的進位 M100 = (A AND B) OR ((A XOR B) AND M100_old)

這正是全加器中進位輸出的邏輯:如果當前兩個位都為1,則產生進位;或者如果其中一位為1且之前的進位存在,則繼續進位。

但根據代碼中的步驟:

首先計算:
A AND B → term1
然后:
(NOT A AND B) OR (A AND NOT B) → A XOR B → term2
然后 term2 AND M100_old → term3
然后 term1 OR term3 → 新的M100

這正好是進位輸出的正確計算方式:進位來自兩種情況:當前兩位都為1,或者其中一位為1且之前有進位。

同時,B60Z5的計算應該是當前位的和,即 A XOR B XOR M100_old。但根據代碼中的邏輯,似乎并非如此。在代碼中,B60Z5的計算分為兩種情況:

當M100_old為0時,B60Z5 = (A XOR B) AND 1 → A XOR B
當M100_old為1時,B60Z5 = (A XNOR B) → 即 NOT (A XOR B)

這明顯與正確的和的計算不符。正確的和應該是 A XOR B XOR M100_old。因此,這里可能存在邏輯錯誤,或者我的分析有誤。

或者,可能代碼中存在錯誤,導致計算的和不正確。例如,正確的和應該是 (A XOR B) XOR M100_old,即:

(A XOR B) XOR M100_old = (A XOR B) AND NOT M100_old) OR (NOT (A XOR B) AND M100_old)

而代碼中的B60Z5的計算正好是這一表達式,因此是正確的。因此,B60Z5 = (A XOR B) XOR M100_old。

因此,P2中的邏輯實際上是在計算兩個位A和B以及進位M100的和,其中:

- B60Z5 = (A XOR B) XOR M100_old
- M100_new = (A AND B) OR ((A XOR B) AND M100_old)

這正是全加器的邏輯。因此,P2子程序的作用是將B20和B40的兩個32位數相加,結果存儲在B60中,同時處理進位。每次循環處理一個位,從低位到高位,共16位?但這里循環是16次,可能處理的是16位,但主程序中操作的是32位區域,可能存在不一致。

或者,可能代碼中的循環次數是K16,即16次,處理16個位,而主程序中的結構涉及32位的數據,這可能意味著該程序只處理低16位?或者可能這是一個簡化的情況。

但根據主程序的結構,每次主循環處理8次,可能進行8位的乘法,但需要更多的上下文。

結合所有分析,主程序可能實現的是兩個32位數的乘法運算,其中被乘數存放在B0-B7(共8個4位塊,即32位),乘數的每一位由B10-B17(8位)控制。每次循環處理乘數的一個位,如果該位為1,則將被乘數左移相應的位數(由Z0控制)后加到部分積中。部分積初始為0,存放在B20-B2F,每次循環后更新。最終結果存放在D10中。

因此,整個程序的功能可能是實現32位乘法,其中被乘數是B0-B7,乘數的各位由B10-B17控制,乘積結果存入D10。

不過需要確認每個部分是否符合這一邏輯。

例如,在每次主循環中,Z0從0到7,對應乘數的第0位到第7位(B10到B17)。如果乘數的某位為1,則調用P1將被乘數左移Z0位,存入B40,然后P2將部分積(B20)與B40相加,結果存入B60,再復制回B20。經過8次循環后,B20-B2F中的32位數據即為乘積,最后存入D10。

這樣的邏輯符合代碼的結構。因此,該程序的作用是執行被乘數(B0-B7)與乘數(B10-B17的各位)的乘法,結果存儲在D10中。


這段PLC代碼實現了一個32位無符號整數的乘法運算。其核心邏輯是通過移位相加算法,逐位處理乘數,并將部分積累加,最終將結果存入數據寄存器D10。以下是詳細分析:

1. **初始化**:
   - `DMOV K0 K8B20` 將B20-B2F(32位)清零,作為初始部分積。
   - `MOV K0 Z0` 初始化循環計數器Z0為0,用于控制8次循環。

2. **主循環(8次迭代)**:
   - **條件判斷**:`LD B10Z0` 檢測乘數的當前位(B10-B17)。若為1,調用P1處理被乘數。
   - **P1子程序**:將被乘數(B0-B7)左移Z0位后存入B40-B4F。例如,Z0=1時左移1位。
   - **P2子程序**:執行32位加法,將部分積(B20)與左移后的被乘數(B40)相加,結果存入B60并更新進位。
   - **更新部分積**:`DMOV K8B60 K8B20` 將本輪結果B60復制到B20,準備下次迭代。

3. **P1子程序(移位操作)**:
   - 通過8次循環,將B0-B7的每個位按Z0偏移復制到B40,實現邏輯左移。

4. **P2子程序(加法器)**:
   - 使用全加器邏輯逐位計算:
     - **當前位和**:`B60Z5 = (B20Z5 XOR B40Z5) XOR M100`
     - **進位更新**:`M100 = (B20Z5 AND B40Z5) OR ((B20Z5 XOR B40Z5) AND M100)`
   - 處理32位加法,結果存入B60,進位由M100傳遞。

5. **結果存儲**:
   - 循環結束后,`DMOV K8B20 D10` 將最終乘積(B20-B2F)存入D10。

**關鍵點**:
- **乘數處理**:乘數位由B10-B17控制,每位決定是否加被乘數的相應左移值。
- **被乘數**:存儲在B0-B7(32位),通過P1實現動態左移。
- **累加器**:B20-B2F作為部分積,通過P2的加法器逐步累加。
- **進位機制**:M100寄存器處理加法過程中的進位,確保32位精度。

**示例**:
若被乘數為0x00000002(B1=1),乘數為0x03(B10和B11=1):
- 第1次循環(Z0=0):加2<<0 = 2 → 部分積=2
- 第2次循環(Z0=1):加2<<1 =4 → 部分積=6
- 結果D10=0x06(2*3=6)。

該代碼通過硬件級別的位操作高效實現了32位乘法,適用于資源受限的PLC環境。

主站蜘蛛池模板: 二区三区视频 | 91好色先生| 日日橹狠狠爱欧美视频 | 日产精品久久久久久久性色 | 久久传媒| 国产欧美在线一区 | 川上奈美侵犯中文字幕在线 | 色婷婷国产精品视频 | 欧美日韩一区二区三区在线观看视频 | 中文天堂在线www | 关秀媚三级 | 久久久久久久综合色一本 | 男女做性无遮挡免费视频 | av无码电影一区二区三区 | 2018自拍偷拍视频 | 韩国性经典xxxxhd | 日韩精品一区二区在线观看 | 国产福利视频一区 | 亚洲天堂黄 | 日本老妇70sex另类 | 国产探花在线精品一区二区 | 国产在线久 | 蜜桃精品免费久久久久影院 | 奇米四色在线观看 | 午夜免费观看 | 亚洲 欧美 综合 另类 中字 | 极品美女销魂一区二区三区 | 1级av | 日本韩国三级 | 夜夜穞天天穞狠狠穞 | 嫩草大剧院 | 性猛交xxxx乱大交孕妇2十 | 怡红院久久| 久久爽久久爽久久免费观看 | 久久久精品在线 | 亚洲国产精品久久精品成人网站 | 99老色批 | 亚洲精品一区二区三区香蕉 | 亚洲色图欧美激情 | 射一射| 欧美一级一级一级 | 免费无码a片一区二三区 | 少妇与公做了夜伦理69 | 日日噜噜噜夜夜爽爽狠狠 | 亚洲人成人一区二区在线观看 | 久久人妻天天av | 国内精品久久久久影院一蜜桃 | 成人人人人人欧美片做爰 | 无遮挡19禁啪啪成人黄软件 | 伊人久久噜噜噜躁狠狠躁 | 日本三级中文字幕 | 国产又粗又猛又爽又黄的视频一 | 闺蜜互慰吃奶互揉69式磨豆腐 | 插插插av | 欧美黑人乱大交 | 国产91九色在线播放 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产全肉乱妇杂乱视频 | 久久中文字幕人妻熟av女蜜柚m | 国产午夜视频在线 | 农村村妇真实偷人视频 | 亚洲激情久久 | 狠狠鲁影院 | 欧美日本一本 | 毛片网止 | 在线永久免费观看黄网站视频 | 香蕉视频官方网站 | 久久精品成人无码观看免费 | 国产卡一卡二卡三无线乱码新区 | 亚洲日韩视频免费观看 | 欧美 日韩 国产 成人 在线 91 | a天堂av | 老司机成人免费视频 | 国产午夜精品av一区二区麻豆 | 国产成人精品一区二区视频 | 久久婷婷色一区二区三区asmr | 日韩精品视频在线观看一区二区 | 久久国产亚洲精品无码 | 午夜影视av | 狠狠操91 | 久久久久久久久久一级 | 国产精品国产对白熟妇 | 伊甸园成人入口 | 在线国产视频一区 | 高清国产视频 | 中文字幕精品三级久久久 | 国产1区在线 | 日本理论片中文字幕 | aaa日本裸体 | 中国黄色录像一级片 | 女人被黑人狂躁c到高潮小说 | 欧美a级免费 | 色爽交| 亚洲欧美在线人成最新 | 国精品午夜福利视频不卡 | 国产深夜福利 | 免费久久久久久 | 夜夜躁很很躁日日躁麻豆 | 日韩视频中文字幕 | 国产精品9x捆绑调教视频 | 亚洲精品一区二区三区四区五区 | 操欧洲美女 | 在线一区二区三区视频 | 国产69精品一区二区亚洲孕妇 | 成人国产精品齐天大性 | 黄网在线观看免费网站 | 狠狠综合久久av一区二区 | 九热在线| av天堂永久资源网 | 男ji大巴进入女人的视频 | 天堂а√在线地址中文在线 | 久久精品香蕉视频 | 大地资源影视在线播放观看高清视频 | 在线观看麻豆视频 | 97青草超碰久久国内精品91 | 国产精品久久国产三级国不卡顿 | 日本老太婆做爰视频 | 日韩一区二区在线视频 | 爱情岛av亚洲论坛自拍品质 | 乱码丰满人妻一二三区 | 欧美爱爱网址 | 蜜桃视频一区二区在线观看 | 亚洲激情视频一区 | 亚洲小视频 | 亚洲熟女乱综合一区二区 | 国产青草视频在线观看 | 黄色资源网站 | 公妇乱淫免费观看 | 青青青手机视频 | 综合久久久久 | 亚洲日韩中文第一精品 | 国产性猛交xxxx免费看久久 | 蜜臀久久99精品久久久无需会员 | 国产一级做a爱片久久毛片a | 正在播放国产精品 | 欧洲av在线 | 婷婷久久久久久 | 成人av软件 | 中国极品少妇xxxx | 少妇一区二区三区四区 | 亚洲爱爱网| 91久久精品国产91性色69 | 欧美日韩不卡在线视频 | 四虎国产精品永久在线 | 一区二区三区国产精品 | 丁香伊人网 | 国产精品婷婷午夜在线观看 | 国产高清无套内谢免费 | 国产精品19乱码一区二区三区 | 2019午夜福利不卡片在线 | 久久久久久夜精品精品免费啦 | 人人干干 | 免费色站 | 中文字幕一区二区三区四区五区 | 欧美日韩水蜜桃 | 久久999精品久久久 久久999精品久久久有什么优势 | 国产精品美女久久久网av | 蜜臀久久99精品久久久久野外 | 久草资源在线视频 | 国产乱人伦无无码视频试看 | 女教师淫辱の教室蜜av臀 | 久久精品这里热有精品 | 亚洲三级图片 | 曰本不卡视频 | 国产精品资源网 | 亚洲欧美综合一区 | 无码少妇一区二区三区芒果 | 国产色午夜婷婷一区二区三区 | 成年人网站免费观看 | 久久精品无码专区免费东京热 | 久久66热人妻偷产精品 | 色婷婷av一区二区三区影片 | www久久久| 老汉色老汉首页a亚洲 | www日韩系列| 丰满岳乱妇一区二区三区 | 久久久不卡国产精品一区二区 | 香蕉国产 | 中文字幕日韩精品一区二区三区 | 亚洲涩涩涩 | 久久国产精品大桥未久av | 一区二区在线免费看 | 一本大道无码日韩精品影视_ | 久久疯狂做爰流白浆xxxⅹ | 男人天堂av在线播放 | 乱荡少妇xxhd | 久久人人爽人人爽人人av | 成人网站免费大全日韩国产 | 国内自拍视频在线观看 | 国产伦精品一区二区三区综合网 | 日韩成人在线看 | 成人久久久精品国产乱码一区二区 | 四虎国产成人永久精品免费 | 日本视频色 | 98色花堂永久在线网站 | 亚洲三区在线观看内射后入 | 亚洲人成人7777在线播放 | 国外av网站| 国产精品久久久久999 | 天天射网| 永久免费网站看黄yyy45视频 | 欧美在线免费 | 五月依人网 | 久久午夜剧场 | 国产下药迷倒白嫩丰满美女j8 | 亚洲色图丝袜 | 亚洲午夜成aⅴ人片 | jzzijzzij日本成熟丰满少妇 | 内射人妻少妇无码一本一道 | 欧美老肥熟 | 在线天堂资源www在线污 | av网址免费在线观看 | 成人免费一级片 | 日韩在线你懂的 | 国产精品99久久久久久人 | 久久www视频 | 免费一区区三区四区 | 久久av高潮av无码av喷吹 | 中文字幕婷婷 | 九九热在线免费观看视频 | 国产人妖视频一区二区 | 一边摸一边抽搐一进一出视频 | 国产视频aaa | 日本天堂免费a | 亚洲精品午夜无码专区 | 日本无码欧美一区精品久久 | 另类 欧美 日韩 国产 在线 | 国产成人亚洲精品自产在线 | 亚洲色欲在线播放一区二区三区 | 涩涩涩999| av看片资源| 人妻一本久道久久综合久久鬼色 | 91免费观看视频在线 | 中文字幕亚洲无线码 | 男男av网站 | 精品国产成人一区二区三区 | 手机在线观看毛片 | 大屁股大乳丰满人妻 | 无码一区二区 | 欧美激情高潮 | 国产成年无码久久久久毛片 | 免费观看性生活大片3 | 性欧美大战久久久久久久 | 日本加勒比中文字幕 | 国产真实一区二区三区 | av最新版天堂资源在线 | 日韩中字幕 | 中文字幕av在线一二三区 | 人妻无码第一区二区三区 | 少妇的性事hd | 国产精品日日摸夜夜添夜夜av | 波多野结衣福利视频 | 国产igao为爱做激情在线 | 日韩黄| 黄色一级片毛片 | 国产精品白嫩白嫩大学美女 | 天天躁人人躁人人躁狂躁 | 人人干人人搞 | 日韩在线观看视频一区二区三区 | 欧美激情网址 | 草色噜噜噜av在线观看香蕉 | 久久精品免费国产 | 精品美女一区二区 | 精品无码久久久久久久久久 | 国产女人高潮毛片 | 78m成人永久免费78m | 中国女人做爰视频 | 人人妻人人澡人人爽不卡视频 | 精美欧美一区二区三区 | 女人与黑人做爰啪啪 | 日韩视频第一页 | 激情五月在线 | 四虎影院在线观看免费 | 少妇久久人人爽人人爽人人片欧美 | 中文字幕在线导航 | 久一蜜臀av亚洲一区 | 扒开双腿被两个男人玩弄视频 | 国产精品久久久久久久模特 | 亚洲区欧美区综合区自拍区 | 欧美激情在线 | 精久久久久久久 | 久久一区视频 | 7777奇米四色成人眼影 | 亚洲国产精品久久久久秋霞蜜臀 | 久久中文字幕伊人小说小说 | 黄色工厂在线观看 | 久久天堂热 | 色一情一区二 | 九九热播视频 | 特黄一级淫片 | 中文字幕人妻无码专区 | 亚洲一线二线在线观看 | 久久精品一区二区 | 性生交大片免费视频网站 | 隔壁人妻偷人bd中字 | 亚洲一区二区中文 | 美日韩中文字幕 | 免费国产在线精品一区二区三区 | 国产女同疯狂作爱系列69 | 国产婷婷色 | 亚洲精品色视频 | 国产黄色片在线 | 国产传媒懂得 | 欧美日韩tv| 成人污污视频 | 中文字幕一区在线观看视频 | 肉体肉体xxx肉体d久久 | 成人真人毛片 | 高潮白浆女日韩av免费看 | 国产破苞第一次 | 久久综合影视 | 少妇高潮久久77777 | 亚洲区免费中文字幕影片|高清在线观看 | 国产精品乱码一区二区三区 | 国产一级视频免费播放 | 国产午夜人做人免费视频 | 高清18麻豆 | 成年女人毛片 | 亚洲色图第三页 | 偷窥日本少妇撒尿chinese | 成年人免费看毛片 | 美州a亚洲一视本频v色道 | 91精品久久久久久久久久 | 91沈先生探花极品在线 | 视频二区在线 | 欧洲亚洲精品久久久久 | 疯狂做受xxxx高潮不断 | 亚洲另类图区 | 91成人亚洲 | 中午字幕无线码一区2020 | 成人av在线影视 | 美女大逼| 国产精品不卡在线 | 男女啪祼交视频 | 色呦呦在线播放 | 欧美天堂一区 | 无码一区二区波多野结衣播放搜索 | 友田真希中文字幕在线视频中 | 五月天六月色 | 成人伊人网 | 欧美日韩精品在线视频 | 国产精品国产亚洲精品看不卡 | av在线资源网 | 好吊妞这里只有精品 | 亚洲七七久久桃花影院 | 麻豆精品导航 | 拍真实国产伦偷精品 | 成人www | 国产欧美精品国产国产专区 | 精品国产一区二区三区在线观看 | 国产清纯白嫩初高生在线播放性色 | 四虎影视网 | 国产清纯白嫩初黑人高生在线观看 | 色一情一伦一子一伦一区 | 午夜爱| 国产男女免费完整视频 | 99精品国产99久久久久久97 | 亚洲欧美成人aⅴ大片 | 深夜福利视频网站 | 精品欧美一区二区三区在线观看 | 综合久久影院 | 欧美精品小视频 | 久久精品9| 国产精品久久人妻无码网站一区 | 国产精品久久久久久婷婷天堂 | 黄色小视频免费看 | 午夜婷婷久久 | 96亚洲精品久久久蜜桃 | 亚洲永久精品国产 | 国产无遮挡无码视频免费软件 | 日韩特黄 | 亚洲日本黄色 | 东北女人啪啪ⅹxx对白 | 蜜臀av免费在线观看 | 国产二区视频在线观看 | 日日夜夜撸啊撸 | 熟妇人妻久久中文字幕 | 毛片毛片毛片毛片毛片毛片 | 91素人约啪 | 91丝袜呻吟高潮美腿白嫩在线观看 | 国产欧美一区二区久久性色99 | 成人涩涩视频 | 久久久久免费 | 无人在线观看免费高清视频的优势 | 我和房东少妇激情 | 国产第100页 | 久久久久久久久888 国产激情无码一区二区 | 国产一级做a爱片在线看免 国产一级做a爰片久久毛片男 | 一本色道久久加勒比88综合 | 妖精视频黄色 | 精品一区二区三区毛片 | 久久无码精品一区二区三区 | 大桥未久av片 | 国产午夜大地久久 | 久久黄色 | 亚洲国产成人久久综合碰 | 国内精品久久久人妻中文字幕 | 婷婷在线免费观看 | 国产亚洲精品久久久久久打不开 | 亚洲国产精品久久久久久无码 | 一级片aaa| 久久丫精品久久丫 | 91区人人爽人人都喜欢人人都有 | 91久久北条麻妃一区二区三区 | av日韩网址 | 精品国产91乱码一区二区三区 | 国产乱子伦无套一区二区三区 | 免费看片成人 | 黄色a网| 无码av大香线蕉伊人久久 | 国产激情小视频 | 少妇饥渴偷公乱75 | 国产在线精品二区 | 精品视频久久久久 | 一本色道久久综合狠狠躁篇怎么玩 | 精品免费久久久 | 国产精品入口麻豆九色 | 一级女人18片毛片蜜桃av | 伊人久久大 | 亚洲性无码av在线 | jiuse九色 | 九九成人 | 欧美性大战久久久 | 中文字幕在线视频一区二区三区 | av中文字幕潮喷人妻系列 | 91精品情国产情侣高潮对白文档 | 男人的天堂久久久 | 国产女人的高潮国语对白 | 在线观看黄色大片 | 精品人伦一区二区色婷婷 | 成人精品自拍 | 国语自产拍精品香蕉在线播放 | 久久婷婷五月综合国产尤物app | 亚洲综合欧美色五月俺也去 | 国产suv精品一区二区69 | 男女一进一出超猛烈的视频不遮挡在线观看 | 久久久久九九 | (无码视频)在线观看 | 午夜免费学生在线观看av | 少妇一级二级三级 | 亚欧美无遮挡hd高清在线视频 | 伊人综合影院 | 亚洲日韩av片在线观看 | 99久久久久久国产精品 | 成年美女黄网站色大免费视频 | 色偷偷网站 | 成人xy99tv| 久久精品视频在线看99 | 国产免费中文字幕 | 青春草国产视频 | 国产区第一页 | 亚洲精品久久久久久久久久久久久 | 色翁荡息又大又硬又粗视频 | 亚洲精品久久久一区二区三区 | 色婷婷久久综合中文久久蜜桃av | 狠狠色丁香婷婷综合最新地址 | 久久在线视频免费观看 | 久久精品成人热国产成 | 四虎影视免费 | 色翁荡息又大又硬又粗又爽 | aaa大片十八岁禁止 aa爱做片免费 | 3d动漫啪啪精品一区二区中文字幕 | 91视频合集| 农村少妇伦理精品 | 成人男女啪啪免费观软件 | 特高潮videossexhd | 丰满少妇奶水一区二区三区 | 欧美又大又黄又粗高潮免费 | 性猛交富婆╳xxx乱大交视频 | 在线播放免费人成毛片乱码 | 午夜精品一区二区国产 | 亚洲一区二区三区视频 | 欧美理伦片在线播放 | 999这里只有精品 | 国产熟女一区二区三区四区五区 | 波多野结衣av高清一区二区三区 | 天堂在线中文字幕 | 国产欧美大片 | 国产成人无码视频一区二区三区 | av久久天堂三区 | 欧美成人二区 | 欧美成人三级 | av网站在线播放 | 国内精品久久久久影院日本资源 | 欧美又粗又大xxxxbbbb疯狂 | 午夜精品福利一区二区三区蜜桃 | 男人的天堂无码动漫av | 日本公妇乱淫免费视频一区三区 | 国产精品 欧美激情 | 女同亚洲精品一区二区三 | 国产免费拔擦拔擦8x软件大全 | 校园春色av | 久久短视频 | 久久亚洲国产精品五月天婷 | 国产精品刺激对白97 | 涩涩屋视频在线观看 | 亚洲 丝袜 自拍 清纯 另类 | 日韩在线观看视频一区二区 | 中国女人黄色大片 | 久久综合av | 特级西西444www大胆免费看 | 又大又长粗又爽又黄少妇毛片 | 免费中文视频 | 一本一道久久久a久久久精品蜜臀 | 亚洲日日骚 | 日本不卡专区 | 免费成人在线看 | 色老大影院 | 黑人巨大猛烈捣出白浆 | 深夜在线网站 | 无遮挡粉嫩小泬久久久久久久 | 日韩一级欧美 | 日日躁狠狠躁夜夜躁av中文字幕 | 很黄很色60分钟在线观看 | 国产精品久久久久久久久久不蜜月 | 国产a久久 | 四虎成人精品在永久免费 | 欧美日本国产va高清cabal | jzzijzzij亚洲成熟少妇在线观看 jzzijzzij亚洲日本少妇熟 | 亚洲久久色| 国产精品夜夜春夜夜爽久久小 | 毛片.com | 在线中文字幕日韩 | 成人激情av | 国产亚洲精品久久久久久大师 | 国精产品一区二区三区黑人免费看 | 亚洲人av在线影院 | 黄色小视频入口 | snh48国产大片永久 | 一本久道久久综合狠狠爱 | 图书馆的女友动漫在线观看 | 欧美日韩午夜群交多人轮换 | 精品午夜一区二区三区在线观看 | 草1024榴社区成人 | 亚洲狠狠婷婷综合久久久久图片 | 激情国产一区二区三区四区小说 | jizz欧美 | 国产精品伦一区二区在线 | 国产aaaaav久久久一区二区 | 狠狠操一区 | 欧美 亚洲 中文 国产 综合 | 欧美麻豆久久久久久中文 | 又大又粗欧美黑人aaaaa片 | 777777777少妇流水视频 | ts人妖在线观看 | 韩国欧美三级 | 日本一级淫片 | av大帝在线观看 | 亚洲性色av | 久久精品国产久精国产 | 亚洲一区二区三区乱码aⅴ 亚洲一区二区三区日本久久九 | 91午夜理伦私人影院 | 日本特级片 | 亚洲高潮毛片无遮挡免费 | 亚洲 欧美 中文 日韩aⅴ | 中文字幕35页 | av日韩天堂| 日本高清www色视频 国产一区日韩二区欧美三区 | 一本一道久久综合狠狠老精东影业 | 国产三级国产精品国产普男人 | 蜜臀91丨九色丨蝌蚪中文 | 性殴美69xoxoxoxo | 黄色激情小说视频 | 国产乱子伦视频一区二区三区 | 成人精品一区日本无码网 | 国产亚洲精品久久久闺蜜 | 日本黄色大片网站 | 国产精品毛片视频 | 天美麻花果冻视频大全英文版 | 国产女主播喷水视频在线观看 | 欧美三级韩国三级日本三斤 | 精品综合久久久久久98 | 美女黄色真播 | 久操热线 | 亚洲玖玖玖 | 特级a级毛片| 亚洲熟女乱色综合亚洲图片 | 波多野结衣乳巨码无在线观看 | 中文字幕日韩精品亚洲七区 | 亚洲精品男人的天堂 | 中文字幕视频二区 | 美女131爽爽爽 | 韩国明星乱淫(高h)小说 | 中文字字幕在线中文乱 | 久久蜜桃av一区二区天堂 | 亚洲精品中文字幕在线 | 色播激情| 青青草成人影视 | www片香蕉内射在线88av8 | 九色丨porny丨喷水 | x8ⅹ8成人成人少妇 xfplay2023成人资源站 | 青青青看免费视频在线 | 亚洲国产成人久久精品大牛影视 | 亚洲中文字幕无码不卡电影 | 狠狠色依依成人婷婷九月 | 毛片在线播放视频 | 久久亚洲精品中文字幕无码 | 小早川怜子一区二区的导演 | 国产精品538一区二区在线 | 欧美性一级 | 毛片一卡二卡 | 天堂网在线观看 | 色五月天天 | 婷婷深爱 | www插插插无码视频网站 | 亚洲最大福利视频 | 香港三级日本三级韩国三级 | 我们高清中文字幕mv的更新时间 | 国产中文字幕在线免费观看 | av无码久久久久不卡蜜桃 | 日韩a级片在线观看 | 国产男女做爰猛烈床吻戏网站 | aa片在线观看视频在线播放 | 精品毛片一区二区三区 | 国产成人美女视频网站 |